RC522 là Module RFID đa giao tiếp với Arduino và Vi điều khiển. RC522 còn gọi là MFRC-522 sản xuất bởi hãng vi điều khiển bán dẫn NFX. Module cho phép các nhà phát triển giao tiếp với các vi điều khiển dựa trên giao thức SPI, I2C và UART.
Module RC522 hoạt động ở tần số 13.56 MHz và đọc và ghi thẻ UID / RFID. Các thẻ RFID giao tiếp được với module ở khoảng cách ngắn với tần số vô tuyến nhờ cảm ứng điện từ lẫn nhau.
Trong các thiết bị bảo mật và thương mại, module rất phù hợp vì có thể phát hiện được các trạng thái và thông tin của thẻ RFID.
Trong module này, chỉ có hai loại chân. Vì vậy, đầu tiên là các chân nguồn và thứ hai là các chân giao tiếp. Do đó, thiết bị có thể có chip vi điều khiển nhưng nó chỉ hoạt động với thẻ RFID. Bộ vi điều khiển tích hợp sẽ không làm cho module trở thành một linh kiện độc lập.
Chân | Mô tả chi tiết | |
Chân 1 | VCC | Chân nguồn VCC. Trong một số phiên bản của RC522, chân này được ký hiệu là 3V3 thay vì VCC. |
Chân 2 | RST | Là chân reset được sử dụng để đặt lại giá trị trong trường hợp xảy ra lỗi khi thiết bị không bất kỳ phản hồi. |
Chân 3 | Ground | Chân nối đất giúp tạo mass chung với các thiết bị bên ngoài (ví dụ bộ nguồn, bi điều khiển hoặc arduino). |
Chân | Mô tả chi tiết | ||
Chân 4 | IRQ | Linh kiện có thể chuyển sang chế độ ngủ để tiết kiệm điện năng và chân IRQ sẽ khởi động lại nó | |
Chân 5 | MISO |
SCL TX |
Chân này kết nối với Arduino / Vi điều khiển để giao tiếp SPI. Truyền dữ liệu từ module sang Arduino. Chân MISO cũng có thể sử dụng cho các chức năng khác thay vì SPI. Cũng có thể giao tiếp I2C và UART Serial để giao tiếp dữ liệu với module. |
Chân 6 | MOSI | MOSI là chân đầu vào dữ liệu module RFID khi giao tiếp SPI | |
Chân 7 | SCK | Các chân SCK gửi xung clock khi giao tiếp SPI. | |
Chân 8 | SS |
SDA RX |
Chân SS là chân kích hoạt chip giao tiếp SPI. Nhận tín hiệu khi Master (Arduino) giao tiếp SPI. Chân SS của RFID có thể được sử dụng như một chân thứ hai (SDA) của giao tiếp I2C. Cũng là chân nhận dữ liệu trong quá trình giao tiếp UART. |
Việc sử dụng RC 522 vừa đơn giản vừa phức tạp. Ngay cả thư viện hỗ trợ của nó cũng có quá nhiều phức tạp để sử dụng. Trước tiên, hãy hiểu rằng các ví dụ và thư viện hỗ trợ đều cho giao thức SPI nhưng cùng một thư viện có thể sử dụng được cho các giao tiếp UART và I2C Serial khác.
Để sử dụng RC522 với Arduino, bảng mạch phổ biến nhất được cho ở bên dưới
Hầu hết các bo mạch đều có các chân cụ thể để giao tiếp SPI. Trong các chân SPI, chỉ có chân SS là có thể thay đổi được, các chân khác phải tùy theo thiết bị. Trong sơ đồ mạch trên, RFID kết nối với Arduino UNO thông qua các chân SPI cụ thể của nó.
Sau khi thiết kế mạch, cần khai báo hai thư viện sau:
#include <SPI.h> #include <MFRC522.h>
Thư viện MFRC522 giúp giải mã và mã hóa dữ liệu từ module RFID và SPI.h sẽ giúp thiết lập giao tiếp SPI. Hai thư viện này phụ thuộc vào nhau. Sau khi khởi tạo các thư viện, thì phải khai báo chân reset và chọn SS thông qua lệnh sau:
MFRC522 mfrc522 (SS_PIN, RST_PIN);
Thay đổi SS_PIN thành chân điều khiển SS của RFID tương ứng trên arduino và RST_PIN thành chân điều khiển chân reset của RFID. Bây giờ phải khai báo phần khởi tạo giao tiếp SPI và phần khởi tạo module cần được thực hiện qua 2 lệnh sau.
SPI.begin (); mfrc522.PCD_Init ();
Khi viết 2 lệnh này việc khởi tạo giao tiếp các module sẽ hoàn tất nhưng phần trên hơi phức tạp. Thư viện RC522 cung cấp nhiều lệnh nhưng để sử dụng các lệnh đó thì phải hiểu một số chức năng.
Trong RC522, thẻ RFID có thể đọc được khi có thẻ đặt gần module. Khi một thẻ được đọc thì module sẽ lưu mã trừ khi nó bị sai (có mã “FFFFFFFFFFFFh”). Lệnh sau sẽ tạo mã mặc định cho module.
MFRC522::MIFARE_Key key; for(byte i = 0; i <6; i ++) key.keyByte [i] = 0xFF;
MIFARE_Key sẽ tự động ghi vào module và vòng lặp sẽ giúp lưu mã.
Khi các giá trị mặc định của thẻ được thiết lập, các lệnh sau sẽ cho phép phát hiện thẻ mới
mfrc522.PICC_IsNewCardPresent () mfrc522.PICC_ReadCardSerial ()
Lệnh đầu tiên là để phát hiện thẻ và lệnh tiếp theo là đọc mã thẻ. Đôi khi thẻ có thể ở gần module nhưng nó không có dữ liệu mã. Do đó, lệnh thứ hai ReadCardSerial sẽ giúp phát hiện điều đó. Sau đó, sử dụng lệnh sau để xem dữ liệu để có thể giải mã:
mfrc522.PICC_DumpDetailsToSerial (& (mfrc522.uid)); mfrc522.PICC_DumpToSerial (& (mfrc522.uid));
Sử dụng lệnh đầu tiên cho hệ thập phân và lệnh hai cho hệ HEX. Giúp lưu trữ và đọc mã dữ liệu. Luôn nhớ rằng thiết bị có thể đọc và xuất / giải mã dữ liệu của 1 thẻ tại một thời điểm. Do đó, trong quá trình xử lý, thiết bị sẽ không thể đọc thẻ mới.
Có khả năng xác định thẻ bị lỗi hoặc không thể đọc được và sau đó chương trình có thể thông báo để xử lý.
Trạng thái lỗi có thể không đáng tin cậy nhưng trong một số trường hợp, nó cho phép các lập trình viên chạy các lệnh cụ thể để xóa lỗi. Vì vậy, lệnh sau sẽ giúp đọc trạng thái:
MFRC522::StatusCode status //To read the status mfrc522.PCD_Authenticate //To get the authentication mfrc522.MIFARE_Read //To read the card
Các lệnh đầu tiên chỉ đọc các ký hiệu, các lệnh còn sẽ đọc dữ liệu trạng thái.
Khi thẻ đọc các lệnh, nó sẽ không bao giờ dừng lại cho đến khi có lệnh dừng được gửi đi. Để dừng mã hóa tín hiệu, các lệnh cần được gửi từ bộ vi điều khiển. Do đó, các lệnh dừng cho cả hai chức năng đọc và mã hóa sẽ là:
mfrc522.PICC_HaltA (); // Stop reading mfrc522.PCD_StopCrypto1 (); // Stop encryption on PCD
Các lệnh trên chỉ là các lệnh đọc đơn giản, hiện nay có hàng loạt các lệnh khác có thể được thực hiện với RC522. Do đó, hãy tham khảo các hướng dẫn sau:
Bài hướng dẫn và các project
>>> 100+ Mã Sản Phẩm Dây Rút: https://mecsu.vn/san-pham/day-rut-nhua.5op
>>> 1000+ Mã Sản Phẩm Đầu Cosse: https://mecsu.vn/san-pham/dau-cosse.Q1j
>>> Mời anh em xem thêm