Module đọc RFID RC522

0
651

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.

Chi tiết cấu hình chân RC522

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.

Sơ đồ chân RC522

Sơ đồ chân RC522

Chân cấp nguồn / reset

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 giao tiếp SPI và UART

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.

Các đặc tính RC522

  • RFID RC522 sử dụng cảm ứng điện từ để kích hoạt thẻ và có tần số 13,56MHz để truyền dữ liệu.
  • Thẻ RFID có thể sử dụng được với cả hai mặt của module khoảng cách tối đa 5cm.
  • Điện áp 3.3V được yêu cầu để hoạt động.
  • Chế độ ngủ tự động giúp module tiêu thụ ít điện năng hơn.
  • Module có ba loại giao tiếp (UART, SPI, I2C). Do đó, có thể sử dụng được với hầu hết mọi vi điều khiển.
  • Có thể truyền dữ liệu lên đến 10Mb/s.

Lựa chọn thay thế

  • PN532
  • SM130
  • Module RFID RDM630

Ứng dụng module RFID RC522

  • RFID sử dụng như một thiết bị bảo mật.
  • Ở một số công ty, các thiết bị được sử dụng trong các mặt hàng mua sắm.
  • Một số sân bay cũng bắt đầu sử dụng RFID để xác định và kiểm tra túi xách và các vật dụng khác.
  • Hệ thống chấm công hoặc bãi đậu xe cũng sử dụng RFID.

Cách sử dụng RFID RC522

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.

Ví dụ giao tiếp với Arduino

Để sử dụng RC522 với Arduino, bảng mạch phổ biến nhất được cho ở bên dưới

Ví dụ giao tiếp với Arduino

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ó.

Lập trình RFID RC522

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.

Mã phát hiện thẻ

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ã.

Giá trị thẻ đọc

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 trạng thái thẻ RFID

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.

Dừng đọc thẻ RFID

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

  • Hệ thống an ninh cửa ra vào sử dụng RFID RC522 và Arduino
  • Hệ thống chấm công sử dụng RFID và vi điều khiển pic

Sơ đồ 2D RC522

Sơ đồ 2D RC522

>>> Mời anh em xem thêm

Tôi là một người làm việc trong lĩnh vực cơ khí, thiết bị công nghiệp....Blog là nơi tôi chia sẻ thông tin hữu ích đến các bạn đọc.
Subscribe
Notify of
0 Bình luận
Inline Feedbacks
View all comments