Cách sử dụng đầu đọc RFID với Raspberry Pi Pico
Thẻ và nhãn RFID hiện diện khắp nơi! Chúng được sử dụng trong các tòa nhà để kiểm soát truy cập. Các máy in và máy photocopy có thể nhận diện nhân viên bằng chúng. Việc gắn thẻ gia súc và thẻ định danh cho thú cưng cũng sử dụng công nghệ RFID. Thiết bị đọc RFID rất rẻ, với khoảng 5 USD bạn có thể mua bộ đọc, và chỉ cần 4 USD cho một Raspberry Pi Pico để đọc ID từ thẻ. Trong hướng dẫn này, chúng ta sẽ học cách đọc thẻ và nhãn RFID sử dụng bộ đọc MFRC522 và Raspberry Pi Pico, mục tiêu là tạo ra một hệ thống kiểm soát truy cập RFID giả tưởng cho phép người dùng vào tòa nhà hoặc cảnh báo an ninh để loại bỏ họ.
Trước khi thực hiện, chúng ta cần xác định ID của thẻ RFID. Phần đầu tiên của hướng dẫn này sẽ làm điều đó, sau đó chúng ta sẽ chèn mã để điều khiển hai đèn LED mô phỏng cơ chế khóa. Để thực hiện, bạn cần có Raspberry Pi Pico chạy MicroPython, đầu đọc RFID MFRC522, bảng mạch lớn, 11 dây jumper nam-nam, một đèn LED xanh, một đèn LED đỏ và 2 điện trở 100 Ohm. Phần cứng được chia thành hai phần.
Đầu tiên là sơ đồ nối dây cho đầu đọc RFID MFRC522. Đầu đọc sử dụng giao thức SPI để giao tiếp với Raspberry Pi Pico và cần bảy chân: hai chân cho nguồn 3.3V và GND, còn lại cho SPI. Các chân được kết nối như sau: SDA (GP1) - xanh dương, SCK (GP2) - cam, MOSI (GP3) - tím, MISO (GP4) - xanh dương, GND - đen, RST (GP0) - trắng, và nguồn 3.3V - đỏ. Thứ hai là các đầu ra của chúng tôi.
Để kiểm tra thẻ RFID có đúng hay không, chúng ta cần thêm hai LED: LED đỏ cho thẻ sai và LED xanh cho thẻ đúng. Các LED sẽ kết nối với chân GPIO để điều khiển bật/tắt, và với chân GND bằng một điện trở 100 Ohm. Bạn có thể sử dụng điện trở 220 hoặc 330 Ohm, nhưng tôi có sẵn điện trở 100 Ohm. Cần xác định đúng giá trị điện trở. Hãy kiểm tra lại sơ đồ kết nối trước khi tiếp tục.
Cài đặt phần mềm đọc RFID MFRC522 là một thiết bị đọc RFID đơn giản. Để đơn giản hóa, chúng ta sẽ sử dụng mô-đun MicroPython có tên pico-rfid, do Kevin McAleer từ Tom’s Hardware phát triển, dựa trên công trình của Danjperron.
1. Kết nối Raspberry Pi Pico với máy tính và mở Thonny. Chúng tôi giả định bạn đã biết cách thiết lập Raspberry Pi Pico.
Nếu không, bạn có thể tham khảo hướng dẫn này. 2. Tạo một tệp trống mới và sao chép nội dung từ liên kết này vào tệp đó. Sau đó, lưu lại với tên mfrc522.py trên Raspberry Pi Pico. Đây là thư viện Python cho phép mã của chúng ta giao tiếp với đầu đọc RFID. Viết mã dự án: Sau khi hoàn tất cài đặt, chúng ta sẽ bắt đầu lập trình dự án. Chúng ta sẽ sử dụng Thonny để viết mã kiểm tra ID của bất kỳ thẻ RFID nào được đưa vào đầu đọc.
Trong phần đầu tiên này, chúng ta cần ghi lại ID, vì sau này sẽ sử dụng nó để kiểm tra điều kiện xem ID có khớp với giá trị cố định hay không. Nếu khớp, sẽ cho phép truy cập; nếu không, sẽ nhận thông báo "ACCESS DENIED".
1. Tạo một tệp trống mới trong Thonny.
2. Nhập ba thư viện cho việc sử dụng đầu đọc RFID MFRC522, điều khiển tốc độ mã, và sử dụng GPIO.
Dưới đây là phiên bản ngắn gọn bằng tiếng Việt:
1. Nhập các thư viện: `from mfrc522 import MFRC522`, `import utime`, `from machine import Pin`.
2. Tạo đối tượng `reader` để xác định vị trí kết nối của đầu đọc RFID: `reader = MFRC522(spi_id=0, sck=2, miso=4, mosi=3, cs=1, rst=0)`.
3. Tạo hai đối tượng cho đèn LED đỏ và xanh, xác định vị trí kết nối và chế độ xuất ra:
- Đèn LED đỏ: `red = Pin(14, Pin.OUT)`
- Đèn LED xanh: `green = Pin(15, Pin.OUT)`.
Gửi người dùng: Vui lòng đưa thẻ cho đầu đọc.
6. Tạo một danh sách gọi là “PreviousCard” và lưu giá trị 0 vào trong đó. Danh sách này sẽ được sử dụng sau này để lưu ID của thẻ hiện tại.
7. Tạo một vòng lặp while True để liên tục thực thi mã bên trong nó.
Trong vòng lặp vô hạn, đầu tiên khởi tạo thiết bị đọc để sẵn sàng sử dụng. Tạo một tuple để lưu trạng thái của thiết bị đọc và loại thẻ RFID. Nếu thiết bị đọc sẵn sàng, sẽ đọc nội dung thẻ và cập nhật thông tin vào các đối tượng stat và uid. Nếu uid của thẻ trùng với giá trị trong đối tượng PreviousCard, mã sẽ tiếp tục thực hiện.
Điều này sẽ xảy ra khi thẻ giống nhau được hiển thị nhiều lần cho đầu đọc. Nếu uid của thẻ trước đó vẫn tiếp tục, hãy tạo một câu lệnh điều kiện để kiểm tra thẻ đã đọc có hợp lệ không. Nếu đầu đọc OK, in ra thông báo cho người dùng và lưu UID của thẻ vào một đối tượng gọi là "thẻ". Sau đó, in chi tiết thẻ ra shell Python.
Cập nhật đối tượng PreviousCard với uid của thẻ hiện tại. Nếu không có thẻ nào được trình bày, sẽ có một điều kiện else được thực thi. Cập nhật đối tượng PreviousCard và thêm một khoảng dừng 50ms trước khi vòng lặp chính lặp lại. Cuối cùng, lưu mã vào Raspberry Pi Pico với tên reader.py và chạy bằng cách nhấn Run Current Script hoặc nhấn phím tắt.
Nguồn: www.tomshardware.com/raspberry-pi/raspberry-pi-pico/how-to-use-an-rfid-reader-with-a-raspberry-pi-pico