ESP32 RFID/NFC
Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 với đầu đọc RFID/NFC RC522 để đọc thông tin từ thẻ RFID/NFC.
Linh Kiện 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 | × | breadboard (bo mạch thí nghiệm) | ||
| 1 | × | Dây Jumper | ||
| 1 | × | DC Power Jack (tùy chọn) | ||
| 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) |
Giới Thiệu Về Module RFID-RC522
Sơ Đồ Chân

Module RFID-RC522 có 8 chân, một số chân được chia sẻ giữa ba giao diện giao tiếp: SPI, I2C, UART. Tại một thời điểm, chỉ có thể sử dụng một chế độ giao tiếp. Các chân bao gồm:
- Chân GND: kết nối chân này với GND (0V)
- Chân VCC: kết nối chân này với VCC (3.3V)
- Chân RST: là chân để reset và tắt nguồn. Khi chân này ở mức thấp, chế độ tắt nguồn cứng được kích hoạt. Khi có xung tăng, module sẽ được reset.
- Chân IRQ: là chân ngắt có thể cảnh báo ESP32 khi thẻ RFID vào trong phạm vi phát hiện.
- Chân MISO/SCL/TX: hoạt động như:
- Chân MISO nếu giao diện SPI được kích hoạt
- Chân SCL nếu giao diện I2C được kích hoạt
- Chân TX nếu giao diện UART được kích hoạt
- Chân MOSI: hoạt động như MOSI nếu giao diện SPI được kích hoạt
- Chân SCK: hoạt động như SCK nếu giao diện SPI được kích hoạt
- Chân SS/SDA/RX: hoạt động như:
- Chân SS nếu giao diện SPI được kích hoạt
- Chân SDA khi giao diện I2C được kích hoạt
- Chân RX khi giao diện UART được kích hoạt
- 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ị sơ đồ chân của module từ nhà sản xuất DIYables.
- Module RFID-RC522 hoạt động với 3.3V. Không kết nối chân VCC của module RFID-RC522 với 5V. 5V có thể làm hỏng module RFID-RC522.
- Hướng dẫn này sử dụng giao diện SPI để giao tiếp giữa ESP32 và module RFID-RC522.
※ Lưu ý:
Sơ Đồ Kết Nối

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.
Bảng kết nối giữa Module RFID/NFC RC522 và ESP32
| Module RFID/NFC RC522 | ESP32 |
|---|---|
| Chân SS | → (29) GPIO5 |
| Chân SCK | → (30) GPIO18 |
| Chân MOSI | → (37) GPIO23 |
| Chân MISO | → (31) GPIO19 |
| Chân IRQ (không kết nối) | |
| Chân GND | → GND |
| Chân RST | → (11) GPIO27 |
| Chân VCC | → 3.3V |
Code ESP32 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
*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 5 // ESP32 pin GPIO5
#define RST_PIN 27 // ESP32 pin GPIO27
MFRC522 rfid(SS_PIN, RST_PIN);
void setup() {
Serial.begin(9600);
SPI.begin(); // init SPI bus
rfid.PCD_Init(); // init MFRC522
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);
Serial.print("RFID/NFC Tag Type: ");
Serial.println(rfid.PICC_GetTypeName(piccType));
// print UID in Serial Monitor in the hex format
Serial.print("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 Thực Hiện
- Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
- Nhấp vào biểu tượng Libraries trên thanh bên trái của Arduino IDE.
- Gõ "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 nhấp vào nút Install.

- Sao chép code trên và dán vào Arduino IDE.
- Biên dịch và tải code lên bo mạch ESP32 bằng cách nhấp nút Upload trên Arduino IDE
- Mở Serial Monitor trên Arduino IDE

- Chạm một số thẻ RFID/NFC lên module RFID-RC522
- Xem UID được in trên Serial Monitor
COM6
Tap an RFID/NFC tag on the RFID-RC522 reader
RFID/NFC tag Type: MIFARE 1KB
UID: 2B B8 59 B1
RFID/NFC tag Type: MIFARE Ultralight or Ultralight C
UID: 15 75 46 7A 2C 5B 7E
Autoscroll
Clear output
9600 baud
Newline
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.