Raspberry Pi RFID

Hướng dẫn này sẽ hướng dẫn bạn cách sử dụng RFID/NFC với Raspberry Pi. Hệ thống RFID/NFC bao gồm hai thành phần: một reader (bộ đọc) và một tag (thẻ). Hai loại RFID/NFC reader phổ biến nhất là RC522 và PN532. Hướng dẫn này sẽ sử dụng RC522 RFID/NFC reader, có giá rẻ và dễ sử dụng.

RC522 RFID/NFC reader có thể:

Hướng dẫn này tập trung vào:

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

1×Raspberry Pi 5
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 Raspberry Pi
1×(Khuyến nghị) Raspberry Pi Prototyping Base Plate & Breadboard Kit
1×(Khuyến nghị) HDMI Touch Screen Monitor for Raspberry Pi

Or you can buy the following kits:

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

Giới Thiệu Module RFID-RC522

Sơ Đồ Chân Module RFID-RC522

Module RFID-RC522 có 8 chân, một số là chân chung và các chân khác được chia sẻ giữa ba chế độ giao tiếp: SPI, I2C và UART. Chỉ có thể sử dụng một chế độ giao tiếp tại một thời điểm. Các chân bao gồm:

  • Chân GND: Chân này cần được kết nối với GND (0V).
  • Chân VCC: Chân này cần được kết nối với VCC (3.3V).
  • Chân RST: Đây là chân reset và power-down. Khi chân này xuống mức thấp, chế độ hard power-down được kích hoạt. Ở cạnh lên, module sẽ được reset.
  • Chân IRQ: Đây là chân ngắt có thể cảnh báo cho microcontroller khi có RFID tag vào gần phạm vi hoạt động.
  • Chân MISO/SCL/TX: Chân này hoạt động như MISO khi giao diện SPI được kích hoạt, hoạt động như SCL khi giao diện I2C được kích hoạt và hoạt động như TX khi giao diện UART được kích hoạt.
  • Chân MOSI: Chân này hoạt động như MOSI khi giao diện SPI được kích hoạt.
  • Chân SCK: Chân này hoạt động như SCK khi giao diện SPI được kích hoạt.
  • Chân SS/SDA/RX: Chân này hoạt động như SS khi giao diện SPI được kích hoạt, hoạt động như SDA khi giao diện I2C được kích hoạt và hoạt động như RX khi giao diện UART được kích hoạt.
RFID-rc522 sơ đồ chân

※ Lưu ý:

  • Các chân của module có thể được sắp xếp khác nhau tùy thuộc vào nhà sản xuất. Điều quan trọng là sử dụng các nhãn được in trên module, như được thể hiện trong hình trên từ DIYables.
  • Đừng nhầm lẫn khi kết nối chân VCC với chân 5V, vì điều này có thể làm hỏng module.
  • Thư viện MFRC522 chỉ hỗ trợ chế độ SPI, vì vậy hướng dẫn này sẽ tập trung vào giao tiếp SPI.

Cách Thức Hoạt Động Của RFID/NFC

RFID/NFC bao gồm hai thành phần: reader (bộ đọc) và tag (thẻ):

  • Reader được tạo thành từ một module tần số radio và một anten tạo ra trường điện từ tần số cao.
  • Tag thường là thiết bị thụ động, không cần nguồn điện. Nó có một microchip lưu trữ và xử lý thông tin, cũng như một anten để gửi và nhận tín hiệu. Tag được sử dụng để lưu trữ thông tin bao gồm UID (Unique ID) và dữ liệu.

Tag phải ở gần reader để có thể đọc được thông tin nó chứa. Quá trình đọc diễn ra như sau:

  • Reader tạo ra trường điện từ làm cho các electron chảy qua anten của tag, cung cấp năng lượng cho chip.
  • Chip bên trong tag sau đó phản hồi bằng cách gửi thông tin được yêu cầu trả lại cho reader dưới dạng tín hiệu radio.
  • Reader phát hiện tín hiệu và chuyển đổi nó thành dữ liệu.
  • Raspberry Pi đọc dữ liệu từ reader.

Sơ Đồ Kết Nối giữa Module RFID-RC522 và Raspberry Pi

Raspberry Pi RFID rc522 sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Bảng Kết Nối Module RFID/NFC RC522 và Raspberry Pi

RC522 RFID Reader Raspberry Pi
SS Pin 24 (GPIO8)
SCK Pin 23 (GPIO11)
MOSI Pin 19 (GPIO10)
MISO Pin 21 (GPIO9)
IRQ Không kết nối (có thể để trống)
GND Bất kỳ chân GND nào
RST Pin 31 (GPIO12)
VCC Pin 1 hoặc Pin 16 (3.3V)

Code Raspberry Pi RFID/NFC

Các Bước Nhanh

  • Đảm bảo bạn đã cài đặt Raspbian hoặc bất kỳ hệ điều hành tương thích nào khác với Raspberry Pi trên Pi của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối với cùng mạng local với PC của bạn.
  • Đảm bảo Raspberry Pi của bạn được kết nối internet nếu bạn cần cài đặt một số thư viện.
  • Nếu đây là lần đầu tiên bạn sử dụng Raspberry Pi, hãy xem Raspberry Pi - Cài Đặt Phần Mềm
  • Kết nối PC của bạn với Raspberry Pi qua SSH sử dụng SSH client tích hợp trên Linux và macOS hoặc PuTTY trên Windows. Xem cách kết nối PC với Raspberry Pi qua SSH.
  • Đảm bảo bạn đã cài đặt thư viện RPi.GPIO. Nếu chưa, hãy cài đặt bằng lệnh sau:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Kích hoạt giao diện SPI trên Raspberry Pi bằng cách làm theo hướng dẫn tại Raspberry Pi - cách kích hoạt giao diện SPI
  • Đảm bảo bạn đã cài đặt thư viện spidev. Nếu chưa, hãy cài đặt bằng lệnh sau:
sudo apt-get install python3-pip python3-dev git sudo pip3 install spidev
  • Đảm bảo bạn đã cài đặt thư viện mfrc522. Nếu chưa, hãy cài đặt bằng lệnh sau:
sudo pip3 install mfrc522
  • Tạo một file script Python rc522_rfid.py và thêm đoạn code sau:
# Mã Raspberry Pi này được phát triển bởi newbiely.vn # Mã Raspberry Pi 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/raspberry-pi/raspberry-pi-rfid import RPi.GPIO as GPIO import MFRC522 # Define the SPI and RST pins for the RC522 module SPI_PORT = 0 SPI_DEVICE = 0 RST_PIN = 12 # Create an instance of the MFRC522 class MIFAREReader = MFRC522.MFRC522() # Function to read the UID from an RFID card and print it in hexadecimal format def read_uid(): # Scan for cards (status, TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL) # If a card is found if status == MIFAREReader.MI_OK: # Get the UID of the card (status, uid) = MIFAREReader.MFRC522_Anticoll() if status == MIFAREReader.MI_OK: # Convert the UID bytes to a hexadecimal string uid_hex = ''.join(['{:02X}'.format(val) for val in uid]) print("UID (Hex): " + uid_hex) # Setup GPIO and initialize the RC522 module GPIO.setmode(GPIO.BOARD) GPIO.setup(RST_PIN, GPIO.OUT) GPIO.output(RST_PIN, GPIO.HIGH) MIFAREReader.MFRC522_Init() try: print("Press Ctrl+C to exit.") while True: read_uid() except KeyboardInterrupt: print("\nExiting the program.") GPIO.cleanup()
  • Lưu file và chạy Python script bằng cách thực thi lệnh sau trong terminal:
python3 rc522_rfid.py
  • Chạm các RFID/NFC tag khác nhau vào module RFID-RC522.
  • Kiểm tra UID trên Serial Monitor.
PuTTY - Raspberry Pi
Press Ctrl+C to exit. UID (Hex): 12AB34CD UID (Hex): 567890EF

Script chạy trong vòng lặp vô hạn liên tục cho đến khi bạn nhấn Ctrl + C trong terminal.

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ài hướng dẫn liên quan