Mạch khóa bảo mật RFID - Mã chương trình đầy đủ và chi tiết kiểm tra

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài viết này, chúng ta sẽ xem cách sử dụng mạch đọc RFID dựa trên Arduino để điều khiển rơ le, từ đó có thể được sử dụng trong các ứng dụng khóa cửa an ninh.

Tổng quat

Nếu bạn chưa kiểm tra bài viết RFID trước đó, hãy tiếp tục kiểm tra, nó bao gồm khái niệm cơ bản về công nghệ RFID .



Chúng tôi sẽ xác định các thẻ được ủy quyền bằng cách sử dụng UID. Tóm lại, UID là số nhận dạng duy nhất của thẻ, khi bạn quét thẻ tại văn phòng của mình hoặc bất kỳ nơi nào khác, nó sẽ trích xuất UID từ thẻ.

UID của thẻ được lưu trên cơ sở dữ liệu của văn phòng bạn và nó sẽ nhận dạng chủ thẻ và đăng ký tham dự của bạn.



Thẻ không chỉ chuyển UID mà còn chuyển một số thông tin khác được lưu trữ trong thẻ, các thẻ thường có thể lưu trữ từ 1KB đến 4KB đôi khi thậm chí nhiều hơn.

Chúng tôi sẽ không thảo luận về cách lưu trữ thông tin trên thẻ nhưng sẽ thảo luận về vấn đề này trong một bài viết trong tương lai. Trong bài đăng này, chúng tôi sẽ sử dụng số UID để kiểm soát chuyển tiếp ON / OFF .

Phương châm của dự án này là BẬT / TẮT thiết bị được kết nối với thiết lập đã cho khi quét bằng thẻ RFID được ủy quyền.

UID của thẻ được xác định trong chương trình và khi thẻ được ủy quyền được phát hiện, nó sẽ bật rơ le trong lần quét đầu tiên và quét lại nó sẽ hủy kích hoạt rơ le.

Nếu phát hiện bất kỳ thẻ trái phép nào, nó sẽ đưa ra thông báo lỗi trên màn hình nối tiếp và rơle tiếp tục tác vụ hiện tại của nó mà không bị gián đoạn.

Ở đây khi thẻ được ủy quyền được quét, rơ le sẽ kích hoạt / hủy kích hoạt, cơ chế này có thể được sử dụng ở bất cứ đâu, ví dụ như trong: hệ thống khóa cửa, nơi thẻ được ủy quyền cần được quét để mở cửa.

Làm thế nào nó hoạt động:

Mạch khóa bảo mật RFID sử dụng Arduino

Mạch RFID bao gồm đèn LED cho biết trạng thái của rơ le, bóng bán dẫn BC 548 điều khiển rơ le và diode 1N4007 được kết nối qua rơ le để bắt điện áp cao tại thời điểm chuyển mạch.

Nếu bạn muốn kết nối rơle định mức điện áp cao hơn (9V hoặc 12V), bạn có thể kết nối nguồn cung cấp + Ve bên ngoài với rơle và nguồn –Ve với đất của chân GND của arduino. Vui lòng hết sức cẩn thận khi thực hiện bước này, vì bạn có thể làm hỏng bo mạch nếu kết nối không đúng.

Bước tiếp theo sau khi hoàn tất thiết lập phần cứng là tải lên mã để tìm UID của thẻ bạn.
Bây giờ tải chương trình dưới đây lên arduino, mở màn hình nối tiếp và quét thẻ.

Chương trình tìm UID:

#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if(piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K)
{
Serial.println(F('Your tag is not of type MIFARE Classic, your card/tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++) {
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
Serial.print('Your card's UID: ')
Serial.println(StrID)
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}

Đầu ra trên màn hình nối tiếp (ví dụ):

UID thẻ của bạn là: AA: BB: CC: DD

Trên màn hình nối tiếp, bạn sẽ thấy một số mã thập lục phân, là UID của thẻ. Ghi lại nó, sẽ được sử dụng trong chương trình tiếp theo để xác định thẻ.
Sau khi bước này hoàn tất, hãy tải lên đoạn mã dưới đây trên cùng một thiết lập.

Chương trình nhận dạng thẻ và rơle điều khiển:

//---------------Program developed by R.Girish------------//
#include
#include
#define SS_PIN 10
#define RST_PIN 9
int flag=0
int op=8
char UID[] = 'XX:XX:XX:XX' //Place your UID of your tag here.
MFRC522 rfid(SS_PIN, RST_PIN)
MFRC522::MIFARE_Key key
void setup()
{
Serial.begin(9600)
SPI.begin()
rfid.PCD_Init()
pinMode(op,OUTPUT)
}
void loop()
{
if ( ! rfid.PICC_IsNewCardPresent())
return
if ( ! rfid.PICC_ReadCardSerial())
return
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak)
if(piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F('Your tag is not of type MIFARE Classic, your tag can't be read :('))
return
}
String StrID = ''
for (byte i = 0 i <4 i ++)
{
StrID +=
(rfid.uid.uidByte[i]<0x10? '0' : '')+
String(rfid.uid.uidByte[i],HEX)+
(i!=3?':' : '' )
}
StrID.toUpperCase()
if(StrID!=UID)
{
Serial.println('This is an invalid tag :(')
Serial.println('***************************************')
delay(2000)
}
if (StrID==UID && flag==0)
{
flag=1
digitalWrite(op,HIGH)
Serial.println('This is a vaild tag :)')
Serial.println('Status: ON')
Serial.println('***************************************')
delay(2000)
}
else if(StrID==UID && flag==1)
{
flag=0
digitalWrite(op,LOW)
Serial.println('This is a vaild tag :)')
Serial.println('Status: OFF')
Serial.println('***************************************')
delay(2000)
}
rfid.PICC_HaltA ()
rfid.PCD_StopCrypto1 ()
}
//---------------Program developed by R.Girish------------//

char UID [] = 'XX: XX: XX: XX' // Đặt UID thẻ của bạn tại đây.
Thay thế XX: XX: XX: XX bằng UID của bạn.

Nguyên mẫu của tác giả có thể được sử dụng hiệu quả làm khóa bảo mật RFID chống đánh lừa cho cửa ra vào và két sắt:

Khi một thẻ được ủy quyền được quét:

Khi một thẻ trái phép được quét:

Nếu bạn có bất kỳ câu hỏi nào liên quan đến mạch khóa bảo mật Arduino RFID này, vui lòng hỏi bên dưới trong phần bình luận.




Trước: Điều khiển pha Triac sử dụng Tỷ lệ thời gian PWM Tiếp theo: Mạch đèn an toàn cho người đi bộ được chiếu sáng