RFID верига за заключване на сигурността - пълен програмен код и подробности за тестване

RFID верига за заключване на сигурността - пълен програмен код и подробности за тестване

В тази статия ще видим как базирана на Arduino RFID верига за четене може да се използва за управление на реле, което от своя страна може да се използва в приложения за заключване на врати за сигурност.



Общ преглед

Ако все още не сте проверили предишната статия за RFID, моля, продължете да я проверите, тя обхваща основи на RFID технологията .

Ще идентифицираме оторизираните маркери с помощта на UID. Накратко UID е уникалният идентификационен номер на етикета, когато сканирате картата си в офиса си или някъде другаде, той извлича UID от картата.





UID на картата се записва в базата данни на вашия офис и той ще разпознае притежателя на картата и ще регистрира вашето присъствие.

Маркерът не само прехвърля UID, но също така прехвърля и друга информация, която се съхранява в маркера, като етикетите обикновено могат да съхраняват от 1KB на 4KB, понякога дори повече.



Няма да обсъждаме как да съхраняваме информация върху етикета, но тя ще бъде обсъдена в бъдеща статия. В тази публикация ще използваме UID номера за контрол на реле ВКЛ. / ИЗКЛ .

Мотото на този проект е да включите / изключите устройството, което е свързано с дадената настройка за сканиране с оторизиран RFID етикет.

UID на картата е дефиниран в програмата и когато бъде открита оторизирана карта, тя ще включи релето при първото сканиране и сканирането му отново ще деактивира релето.

Ако бъде открита неоторизирана карта, тя ще изведе съобщение за грешка на серийния монитор и релето ще продължи текущата си задача без прекъсване.

Тук, когато оторизираната карта се сканира, релето се активира / деактивира, този механизъм може да се използва навсякъде, например в: система за заключване на вратата, където оторизираната карта трябва да бъде сканирана, за да се отвори вратата.

Как работи:

RFID верига за заключване на сигурността, използваща Arduino

RFID веригата се състои от светодиоди, които показват състоянието на релето, BC 548 транзисторът задвижва релето и 1N4007 диод е свързан през релето, за да спре пика на високо напрежение в момента на превключване.

Ако искате да свържете реле с по-високо напрежение (9V или 12V), можете да свържете външно захранване + Ve към релето и –Ve захранване към земята на GND щифта на arduino. Моля, внимавайте, докато продължавате тази стъпка, тъй като може да повредите платката, ако връзките не са правилни.

Следващата стъпка след завършване на хардуерната настройка е да качите кода, за да намерите UID на вашия таг.
Сега качете дадената по-долу програма в arduino, отворете сериен монитор и сканирайте маркера.

Програма за намиране на 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 ()
}

Изходът на сериен монитор (пример):

UID на вашата карта е: AA: BB: CC: DD

На серийния монитор ще видите шестнадесетичен код, който е UID на маркера. Запишете го, което ще бъде използвано в следващата програма за идентифициране на маркера.
След като тази стъпка приключи, качете долния код на същата настройка.

Програма за идентифициране на картата и контролното реле:

//---------------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' // Поставете тук своя UID на вашия таг.
Заменете XX: XX: XX: XX с вашия UID.

Авторски прототип, който може ефективно да се използва като надеждна RFID ключалка за сигурност за врати и сейфове:

Когато се сканира оторизирана карта:

Когато се сканира неоторизиран маркер:

Ако имате някакви въпроси относно тази верига за заключване на сигурността на Arduino RFID, моля не се колебайте да попитате по-долу в раздела за коментари.




Предишна: Контрол на фазата на триак с използване на ШИМ Пропорционално време Напред: Осветена верига за безопасност на пешеходна пътека