MODULE ARDUINO & THƯ VIỆN

Hướng dẫn sửa lỗi khi kết nối RC522 và TFT LCD

Hướng dẫn sửa lỗi khi kết nối RC522 và TFT LCD

Khi kết nối mạch đọc RFID và TFT LCD trong cùng một dự án Arduino, bạn sẽ gặp vấn đề khi giao tiếp với 1 trong 2 module này.

Chuẩn giao tiếp SPI

Thông thường, trong giao tiếp SPI, bạn có thể kết nối 1 Master với nhiều Slave khác nhau. Đây là kiểu truyền thông Master-Slave, trong đó có 1 chip Master điều phối quá trình truyền thông và các chip Slaves được điều khiển bởi Master vì thế truyền thông chỉ xảy ra giữa Master và Slave ở 1 Master và 1 Slave duy nhất. SPI là một cách truyền song công (full duplex) nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời. SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường giao tiếp trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Ouput Slave Input) và SS (Slave Select).

Trong giao diện SPI có bốn tín hiệu số:

  • MOSI hay SI – cổng ra của bên Master ( Master Out Slave IN). Đây là chân dành cho việc truyền tín hiệu từ thiết bị chủ động đến thiết bị bị động.
  • MISO hay SO – Công ra bên Slave (Master IN Slave Out). Đây là chân dành cho việc truyền dữ liệu từ Slave đến Master.
  • SCLK hay SCK là tín hiệu clock đồng bộ (Serial Clock). Xung nhịp chỉ được tạo bởi Master.
  • CS hay SS là tín hiệu chọn vi mạch ( Chip Select hoặc Slave Select). SS sẽ ở mức cao khi không làm việc. Nếu Master kéo SS xuông thấp thì sẽ xảy ra quá trình giao tiếp. Chỉ có một đường SS trên mỗi slave nhưng có thể có nhiều đường điều khiển SS trên master, tùy thuộc vào thiết kế của người dùng.

Nói 1 cách vắn tắt và dễ hiểu:

  • MISO – Mang các dữ liệu từ các thiết bị SPI về arduino
  • MOSI – Mang các dữ liệu từ Arduino đến các thiết bị SPI
  • SS – Chọn thiết bị SPI cần làm việc
  • SCK – dòng đồng bộ

Thông thường, bạn vẫn có thể kết nối nhiều module Slave vào cũng SPI. Tuy nhiên, Khi kết nối mạch đọc RFID và TFT LCD trong cùng một dự án Arduino, bạn sẽ gặp vấn đề khi giao tiếp với 1 trong 2 module này. Lỗi này xảy ra do mức điện áp giao tiếp của TFT LCD là 3.3V còn RFID là 5V.

Giao tiếp RFID với Arduino qua Soft SPI

Để khắc phục lỗi này, bạn sử dụng Soft SPI để kết nối với module đọc RFID RC522 (Do các chân trên TFT Shield đã được cố định). Thư viện này sử dụng các chân SPI mềm, tức là bạn có thể khai báo bất cứ chân nào của Arduino để có thể kết nối. Nghĩa là các chân SPI của bạn không được cố định, bất kỳ pin nào của Arduino cũng có thể được cấu hình để hoạt động như những chân SPI.

Download thư viện tại đây & thư viện Digital IO: https://github.com/greiman/DigitalIO

Add thư viện vào Arduino thông qua Zip file như sau:

Sau khi đã phần mềm báo add thư viện thành công. Bạn mở file RFID.cpp theo đường dẫn: /Users/<username>/Documents/Arduino/libraries/RFID-RC522-master/

 

Thay đổi các chân theo ý bạn muốn. Bỏ qua phần SPI_MODE, chỉ thay đổi MISO, MOSI, SCK pin.

Nạp code mẫu: RFID_MRC522_SoftSPI.ino và tận hưởng thành quả.

Thư viện đã được test trên Arduino Uno và Arduino Nano.