Arduino RFID/NFC (nhận diện bằng tần số vô tuyến / giao tiếp trường gần)
Trong bài hướng dẫn này, chúng ta sẽ học cách sử dụng RFID/NFC với Arduino. Hệ thống RFID/NFC gồm hai thành phần: đầu đọc và thẻ. Có hai đầu đọc RFID/NFC phổ biến: RC522 và PN532. Bài hướng dẫn này tập trung vào đầu đọc RC522 RFID/NFC. Đầu đọc PN532 RFID/NFC sẽ được giới thiệu trong một bài hướng dẫn sắp tới.
Máy đọc RC522 RFID/NFC (còn được gọi là Module RFID-RC522) có thể:
- Đọc UID của thẻ RFID/NFC
- Thay đổi UID của thẻ RFID/NFC (chỉ khi thẻ có khả năng ghi UID)
- Ghi dữ liệu vào thẻ RFID/NFC
- Đọc dữ liệu từ thẻ RFID/NFC
Trong các khả năng trên đây, đối với Arduino, việc đọc UID là khả năng được sử dụng phổ biến nhất. Bài hướng dẫn này tập trung vào việc đọc UID của thẻ RFID/NFC. Phần còn lại sẽ được trình bày ở các bài hướng dẫn tiếp theo.
Phần cứng cần chuẩn bị
| 1 | × | Arduino Uno R3 | ||
| 1 | × | USB 2.0 cable type A/B (for USB-A PC) | ||
| 1 | × | USB 2.0 cable type C/B (for USB-C PC) | ||
| 1 | × | RFID/NFC RC522 Kit (reader + tags) | ||
| 1 | × | RFID Key Fob | ||
| 1 | × | RFID Card | ||
| 1 | × | dây jumper | ||
| 1 | × | (Khuyến nghị) Screw Terminal Block Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Breadboard Shield for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Enclosure for Arduino Uno | ||
| 1 | × | (Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO |
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Giới thiệu về mô-đun RFID-RC522
Sơ đồ chân của mô-đun RFID-RC522
RFID-RC522 có 8 chân, một số chân là chân chung, phần còn lại được chia sẻ giữa ba chế độ 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 là:
- Chân GND: cần được kết nối với GND (0V)
- Chân VCC: cần được kết nối với VCC (3.3V)
- Chân RST: là chân dùng để reset và tắt nguồn. Khi chân này ở mức thấp, kích hoạt tắt nguồn cứng. Ở cạnh lên, module được reset.
- Chân IRQ: là một chân ngắt có thể cảnh báo cho vi điều khiển khi thẻ RFID ở gần nó.
- Chân MISO/SCL/TX: hoạt động như MISO khi giao diện SPI được bật, hoạt động như SCL khi giao diện I2C được bật và hoạt động như TX khi giao diện UART được bật.
- Chân MOSI: hoạt động như MOSI khi giao diện SPI được bật.
- Chân SCK: hoạt động như SCK khi giao diện SPI được bật.
- Chân SS/SDA/RX: hoạt động như SS khi giao diện SPI được bật, hoạt động như SDA khi giao diện I2C được bật và hoạt động như RX khi giao diện UART được bật.

※ 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 nhãn in trên mô-đun. Hình ở trên cho thấy sơ đồ chân của mô-đun từ nhà sản xuất DIYables.
- Không đấu nối chân VCC với chân 5V. Việc này có thể phá hỏng mô-đun của bạn.
- Thư viện MFRC522 chỉ hỗ trợ chế độ SPI. Do đó, hướng dẫn này chỉ dùng giao tiếp SPI.
Cách hoạt động của RFID/NFC
RFID/NFC gồm hai thành phần: đầu đọc và thẻ.
- Đầu đọc gồm một mô-đun tần số vô tuyến và một ăng-ten để tạo ra trường điện từ tần số cao.
- Thẻ thường là một thiết bị thụ động, không cần nguồn điện. Thẻ chứa một vi mạch lưu trữ và xử lý thông tin, và một ăng-ten để nhận và truyền tín hiệu. Thẻ được dùng để lưu trữ thông tin: UID (Mã định danh duy nhất) và dữ liệu.

Để đọc thông tin trên thẻ, thẻ phải ở gần đầu đọc (không cần đường nhìn trực tiếp). Các quá trình đọc:
- Máy đọc sinh ra một trường điện từ khiến các electron di chuyển qua ăng-ten của thẻ và sau đó cấp nguồn cho chip.
- Chip bên trong thẻ sau đó đáp lại bằng cách gửi thông tin được yêu cầu trả về cho máy đọc ở dạng một tín hiệu vô tuyến khác.
- Máy đọc phát hiện tín hiệu và biến đổi tín hiệu thành dữ liệu.
- Arduino đọc dữ liệu từ máy đọc.
Sơ đồ kết nối giữa mô-đun RFID-RC522 và Arduino
Mô-đun RFID-RC522 được thiết kế để hoạt động ở mức 3.3V, trong khi các chân đầu ra của Arduino tạo ra mức 5V. Vậy:
- Để an toàn, nó cần điều chỉnh điện áp từ 5V từ các chân của Arduino xuống 3,3V trước khi kết nối với mô-đun RC522
- Để đơn giản và cho mục đích thử nghiệm, nó có thể kết nối trực tiếp các chân của Arduino với mô-đun RC522, nhưng làm như vậy có thể khiến Arduino hoạt động không đúng trong một số trường hợp
Hướng dẫn này cung cấp hai sơ đồ nối dây khác nhau cho cả hai trường hợp:
- Sơ đồ nối dây giữa RC522 và Arduino không dùng bộ điều chỉnh điện áp

This image is created using Fritzing. Click to enlarge image
- Sơ đồ nối dây giữa RC522 và Arduino với bộ ổn áp

This image is created using Fritzing. Click to enlarge image
Như được thể hiện trong sơ đồ nối dây ở trên, cặp điện trở 1 kΩ và 2 kΩ được sử dụng để điều chỉnh từ 5 V xuống 3,3 V. Điều này không cần điều chỉnh điện áp giữa chân của Arduino và chân MISO của module RC522. Tuy nhiên, cần điều chỉnh điện áp giữa các chân của Arduino và các chân SS, SCK, MOSI và RST trên module RC522.
Bảng kết nối của mô-đun RFID/NFC RC522 và Arduino
| RFID/NFC RC522 | Arduino |
|---|---|
| SS | → 10 |
| SCK | → 13 |
| MOSI | → 11 |
| MISO | → 12 |
| IRQ(not connected) | |
| GND | → GND |
| RST | → 5 |
| VCC | → 3.3V |
Mã Arduino RFID/NFC
Hướng dẫn từng bước
- Đi tới biểu tượng Libraries ở thanh bên trái của Arduino IDE.
- Tìm kiếm “MFRC522”, rồi tìm thư viện của GithubCommunity
- Nhấp nút Install để cài đặt thư viện MFRC522.

- Sao chép mã ở trên và mở bằng Arduino IDE
- Nhấp nút Tải lên trên Arduino IDE để tải mã lên Arduino
- Mở Serial Monitor
- Chạm một vài thẻ RFID/NFC lên module RFID-RC522
- Xem UID trên Serial Monitor
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.