B24 – Kiểm tra và thử nghiệm thẻ RFID

RFID (viết tắt thuật ngữ tiếng Anh: Radio Frequency Identification), hay Nhận dạng qua tần số vô tuyến, là một công nghệ dùng kết nối sóng vô tuyến để tự động xác định và theo dõi các thẻ nhận dạng gắn vào vật thể. Trong bày này ta sẽ sử dụng Arduino để kiểm tra và thử nghiệm thẻ RFID.

Công nghệ này sử dụng một thẻ chứa thông tin được lưu trữ bằng điện tử. Thẻ có mạch thu thập năng lượng từ các sóng vô tuyến của máy đọc RFID phát ra khi truy vấn, và dùng năng lượng này phát lại sóng mang mã thông tin của thẻ. Tầm hoạt động hiệu quả cỡ vài cm. Những thẻ hoạt động có nguồn điện cục bộ (như pin) thì khoảng cách đọc hàng trăm mét.

Loại RFID được sử dụng là RC522 khá phổ biến vì rẻ tiền. Nó sử dụng giao thức MIFARE với tần số 13,56 MHz. Chip RC522 sử dụng điện áp 3,3 V nên khi kết nối cần thận trọng.

Nối dây như sau:

SDA————————Digital 10

SCK————————Digital 13

MOSI———————-Digital 11

MISO———————-Digital 12

IRQ———————— bỏ trống

GND———————–GND

RST————————Digital 9

3.3V————————3.3V

Đầu tiên, mở chương trình Arduino và bổ sung thư viện MFRC522. Sau đó mở chương trình có sẵn là DumpInfo để kiểm tra thẻ.

Với mỗi thẻ ta có một mã số UID khác nhau. Ghi lại UID của thẻ cần sử dụng. Chương trình ví dụ dưới đây kiểm tra những thẻ được cho phép và có hành động tương ứng (bật đèn LED khác nhau).

#include <SPI.h>
#include <MFRC522.h>
 
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.

int LED = 7;
int BLUE = 6;
void setup() 
{
 pinMode(LED, OUTPUT);
 pinMode(BLUE, OUTPUT);
 Serial.begin(9600); // Initiate a serial communication
 SPI.begin(); // Initiate SPI bus
 mfrc522.PCD_Init(); // Initiate MFRC522
 Serial.println("Approximate your card to the reader...");
 Serial.println();

}
void loop() 
{
 // Look for new cards
 if ( ! mfrc522.PICC_IsNewCardPresent()) 
 {
 return;
 }
 // Select one of the cards
 if ( ! mfrc522.PICC_ReadCardSerial()) 
 {
 return;
 }
 //Show UID on serial monitor
 Serial.print("UID tag :");
 String content= "";
 byte letter;
 for (byte i = 0; i < mfrc522.uid.size; i++) 
 {
 Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
 Serial.print(mfrc522.uid.uidByte[i], HEX);
 content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
 content.concat(String(mfrc522.uid.uidByte[i], HEX));
 }
 Serial.println();
 Serial.print("Message : ");
 content.toUpperCase();
 if (content.substring(1) == "36 20 4E A5") //change the UID of the card/cards
 {
 Serial.println("Authorized access: ");
 Serial.println("Hello Ant man");
 Serial.println();
 digitalWrite(LED, HIGH);
 delay(1000);
 digitalWrite(LED, LOW);
 }
 else if (content.substring(1) == "D5 92 70 8B") //change the UID of the card/cards
 {
 Serial.println("Authorized access: ");
 Serial.println("Hello Spider man");
 Serial.println();
 digitalWrite(BLUE, HIGH);
 delay(1000);
 digitalWrite(BLUE, LOW);
 }

else {
 Serial.println(" Access denied");
 delay(3000);
 }
}

Nếu dùng NodeMCU thì đổi chân, ví dụ RST –> D3. Còn các chân D5, D6, D7, D8 thì theo chức năng SPI

Xem video hướng dẫn:

Leave a Reply

Your email address will not be published. Required fields are marked *