#MRFC522 #RFID
Ứng dụng: Xác định người, giao dịch qua thẻ từ, Ổ khóa từ.
RFID có nghĩa là nhận dạng tần số vô tuyến. RFID sử dụng các trường điện từ để chuyển dữ liệu qua khoảng cách ngắn. RFID rất hữu ích để xác định người, để thực hiện giao dịch, v.v.
Bạn có thể sử dụng hệ thống RFID để mở cửa. Ví dụ: chỉ người có đúng thẻ chứa thông tin thì mới mở cửa được .
Một hệ thống RFID sử dụng:
Tag được gắn vào đối tượng cần xác định, trong ví dụ này chúng ta có một móc khóa và một thẻ điện từ. Mỗi thẻ có nhận dạng duy nhất của riêng mình (UID).
Bộ thu phát vô tuyến hai chiều, đầu đọc, gửi tín hiệu đến thẻ và đọc giá trị của nó.
- Điện áp đầu vào: 3,3V
- Tần số: 13,56 MHz
Sơ đồ chân
Ví dụ đọc dữ liệu từ thẻ tag
Trong ví dụ này, bạn sẽ đọc dữ liệu từ thẻ RFID. Bạn sẽ ủy quyền cho một thẻ định trước và từ chối những người khác có thẻ tag không hợp lệ.
Đầu tiên bạn cần cài thư viện rfid:
https://github.com/miguelbalboa/rfid/archive/master.zip
Mở ví dụ: File -> Examples-> MFRC522 -> DumpInfo
Nạp chương trình này vào Arduino, Chương trình này giúp ta đọc được Uid của thẻ từ. Tiến hành ghi lại thẻ từ này để so khớp khi xác thực.
Thông tin được lưu trữ trong bộ nhớ được chia thành các phân đoạn và khối như bạn có thể thấy trong hình trên. Bạn có 1024 byte lưu trữ dữ liệu chia thành 16 lĩnh vực.
Tiếp viết lại chương trình xác thực
/*
*
* All the resources for this project: http://randomnerdtutorials.com/
* Modified by Rui Santos
*
* Created by FILIPEFLOP
*
*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // tạo lớp MFRC522.
void setup()
{
Serial.begin(9600); // Khởi tạo Serial Monitor
SPI.begin(); // Khởi tạo I2C
mfrc522.PCD_Init(); // Khỏi tạo MFRC522
Serial.println("Vui long dua the lai gan bo doc..");
Serial.println();
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// chọn Card
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Hiển thị UID lên serial
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("Thông tin: ");
content.toUpperCase();
if (content.substring(1) == "BD 31 15 2B") //Bạn thay đổi UID thẻ tag của bạn ở đây (BD 31 15 2B)
{
Serial.println("Cho phép truy cập");
Serial.println();
delay(3000);
}
else {
Serial.println(" Từ chối truy cập");
delay(3000);
}
}