ESP32 RFID/NFC Relay

Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32, RFID/NFC và relay. Cụ thể, chúng ta sẽ học cách kích hoạt relay khi một thẻ RFID/NFC được ủy quyền chạm vào đầu đọc RFID.

Hướng dẫn này có thể được mở rộng bằng cách kết nối relay với khóa điện từ, thiết bị truyền động...

Phần Cứng Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Bộ Kit RFID/NFC RC522 (đầu đọc + thẻ)
1×Thẻ RFID Key Fob
1×Thẻ RFID Card
1×Relay
10×Dây Jumper
1×(Tùy chọn) Jack Nguồn DC
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Module RFID/NFC RC522 và Relay

Chúng tôi có các hướng dẫn chuyên biệt về Module RFID/NFC RC522 và relay. Mỗi hướng dẫn chứa thông tin chi tiết và các hướng dẫn từng bước về pinout phần cứng, nguyên lý hoạt động, kết nối dây với ESP32, code ESP32... Tìm hiểu thêm tại các liên kết sau:

ESP32 ESP32 RFID rơ le component

Cách Hoạt Động Của Module RC522

  • Một số UID được ủy quyền của các thẻ RFID/NFC được định nghĩa trước trong code ESP32
  • Khi một thẻ RFID/NFC được chạm vào đầu đọc RFID/NFC
  • ESP32 đọc UID từ đầu đọc RFID/NFC
  • ESP32 tìm kiếm UID đã đọc trong danh sách các UID được định nghĩa trước
  • Nếu danh sách các UID được định nghĩa trước chứa UID đã đọc, ESP32 sẽ kích hoạt relay.

Sơ Đồ Đấu Nối

ESP32 RFID rc522 rơ le sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

※ Lưu ý:

Thứ tự các chân có thể khác nhau tùy theo nhà sản xuất. LUÔN sử dụng các nhãn được in trên module. Hình ảnh trên hiển thị pinout của các module từ nhà sản xuất DIYables.

Code ESP32 - Một Thẻ RFID/NFC

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-rfid-nfc-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay Serial.println("Tap an RFID/NFC tag on the RFID-RC522 reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); if (rfid.uid.uidByte[0] == authorizedUID[0] && rfid.uid.uidByte[1] == authorizedUID[1] && rfid.uid.uidByte[2] == authorizedUID[2] && rfid.uid.uidByte[3] == authorizedUID[3] ) { Serial.println("Authorized Tag"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Các Bước Nhanh

  • Nếu đây là lần đầu tiên bạn sử dụng ESP32, xem ESP32 - Cài Đặt Phần Mềm.
  • Click vào biểu tượng Libraries trên thanh bên trái của Arduino IDE.
  • "MFRC522" vào ô tìm kiếm, sau đó tìm thư viện của GithubCommunity
  • Cài đặt thư viện bằng cách click vào nút Install.
ESP32 mfrc522 thư viện
  • Tìm hiểu UID của thẻ bằng cách làm theo các bước sau:
    • Copy code trên và paste vào Arduino IDE.
    • Compile và upload code lên board ESP32 bằng cách click nút Upload trên Arduino IDE
    • Mở Serial Monitor trên Arduino IDE
    how to open serial monitor on Arduino ide
    • Chạm thẻ RFID/NFC mà bạn muốn cấp quyền vào đầu đọc RFID-RC522
    • Ghi lại UID được in trên Serial Monitor
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Unauthorized Tag with UID: 2B B8 59 B1
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Cập nhật UID ở dòng 18 của code trên. Ví dụ, thay đổi byte authorizedUID[4] = {0xFF, 0xFF, 0xFF, 0xFF}; THÀNH byte authorizedUID[4] = {0x2B, 0xB8, 0x59, 0xB1};
    • Upload code lên ESP32 lần nữa
    • Chạm thẻ RFID/NFC được ủy quyền vào module RFID-RC522
    • Xem kết quả trên Serial Monitor
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Authorized Tag
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  
    • Chạm một thẻ RFID/NFC không được ủy quyền vào module RFID-RC522
    • Xem kết quả trên Serial Monitor
    COM6
    Send
    Tap an RFID/NFC tag on the RFID-RC522 reader Authorized Tag Unauthorized Tag with UID: 1C 2A 52 E3
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

Code ESP32 - Nhiều Thẻ RFID/NFC

Code ESP32 dưới đây cho phép nhiều thẻ RFID/NFC được ủy quyền để kích hoạt relay. Code lấy hai thẻ làm ví dụ. Bạn có thể thêm nhiều thẻ hơn

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-rfid-nfc-relay */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 5 // ESP32 pin GPIO5 #define RST_PIN 27 // ESP32 pin GPIO27 #define RELAY_PIN 32 // ESP32 pin GPIO32 connects to relay MFRC522 rfid(SS_PIN, RST_PIN); byte authorizedUID1[4] = {0x3A, 0xC9, 0x6A, 0xCB}; byte authorizedUID2[4] = {0x30, 0x01, 0x8B, 0x15}; void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // deactivate the relay Serial.println("Tap an RFID/NFC tag on the RFID-RC522 reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak); if (rfid.uid.uidByte[0] == authorizedUID1[0] && rfid.uid.uidByte[1] == authorizedUID1[1] && rfid.uid.uidByte[2] == authorizedUID1[2] && rfid.uid.uidByte[3] == authorizedUID1[3] ) { Serial.println("Authorized Tag 1"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else if (rfid.uid.uidByte[0] == authorizedUID2[0] && rfid.uid.uidByte[1] == authorizedUID2[1] && rfid.uid.uidByte[2] == authorizedUID2[2] && rfid.uid.uidByte[3] == authorizedUID2[3] ) { Serial.println("Authorized Tag 2"); digitalWrite(RELAY_PIN, HIGH); // activate the relay for 2 seconds delay(2000); digitalWrite(RELAY_PIN, LOW); // deactivate the relay } else { Serial.print("Unauthorized Tag with UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }

Các Bước Nhanh

  • Cập nhật UUID của hai thẻ RFID/NFC được ủy quyền vào code
  • Upload code lên ESP32
  • Chạm các thẻ được ủy quyền từng cái một vào module RFID-RC522.
  • Kết quả trên Serial Monitor:
COM6
Send
Tap an RFID/NFC tag on the RFID-RC522 reader Authorized Tag 1 Authorized Tag 2
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bạn có thể chỉnh sửa code để thêm ba, bốn, hoặc nhiều thẻ hơn.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Bình Luận