RFID saugumo užrakto grandinė - visas programos kodas ir išsami testavimo informacija

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame straipsnyje mes pamatysime, kaip „Arduino“ pagrindu veikianti RFID skaitytuvo grandinė galėtų būti naudojama relės valdymui, kuri savo ruožtu galėtų būti naudojama apsaugos durų užrakto programose.

Apžvalga

Jei dar nepatikrinote ankstesnio RDA straipsnio, patikrinkite, ar jis apėmė RDA technologijos pagrindai .



Mes nustatysime autorizuotas žymas naudodami UID. Trumpai tariant, UID yra unikalus žymos identifikavimo numeris, kai nuskaitydami kortelę biure ar bet kur kitur, jis ištraukia UID iš kortelės.

Kortelės UID yra išsaugotas jūsų biuro duomenų bazėje ir jis atpažins kortelės turėtoją ir užregistruos jūsų dalyvavimą.



Žyma ne tik perduoda UID, bet ir perduoda kitą informaciją, kuri yra saugoma žymoje, žymos paprastai gali saugoti nuo 1 KB iki 4 KB, kartais net daugiau.

Mes nediskutuosime apie tai, kaip išsaugoti informaciją žymoje, tačiau ji bus aptarta būsimame straipsnyje. Šiame įraše mes ketiname naudoti UID numerį valdyti relė ĮJUNGTA / IŠJUNGTA .

Šio projekto šūkis yra įjungti / išjungti įrenginį, kuris yra susietas su duota sąranka nuskaitymui naudojant autorizuotą RFID žymą.

Kortelės UID yra apibrėžta programoje ir aptikus autorizuotą kortelę, ji įjungs relę per pirmąjį nuskaitymą, o nuskaitymas dar kartą išjungs relę.

Aptikus bet kokią neteisėtą kortelę, ji nuosekliame monitoriuje išduos klaidos pranešimą ir relė tęsia dabartinę užduotį be jokių pertraukų.

Kai nuskaityta autorizuota kortelė, relė įsijungia / išjungiama, šį mechanizmą galima naudoti bet kur, pavyzdžiui: durų užrakinimo sistemoje, kur norint atidaryti duris reikia nuskaityti autorizuotą kortelę.

Kaip tai veikia:

RDA saugos užrakto grandinė naudojant „Arduino“

RFID grandinę sudaro šviesos diodai, rodantys relės būseną, BC 548 tranzistorius valdo relę ir 1N4007 diodas yra prijungtas per relę, kad perjungimo metu būtų sustabdytas aukštos įtampos šuolis.

Jei norite prijungti aukštesnės įtampos vardinę relę (9V arba 12V), galite prijungti išorinį + Ve maitinimą prie relės ir –Ve maitinimą prie „Arduino“ GND kaiščio žemės. Atlikdami šį veiksmą, prašau būti labai atsargūs, nes netinkami sujungimai gali sugadinti plokštę.

Kitas žingsnis baigus aparatūros sąranką yra kodo įkėlimas, kad surastumėte žymos UID.
Dabar įkelkite žemiau pateiktą programą į „arduino“, atidarykite nuoseklųjį monitorių ir nuskaitykite žymą.

Programa rasti 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 ()
}

Serijinio monitoriaus išvestis (pavyzdys):

Jūsų kortelės UID yra: AA: BB: CC: DD

Nuosekliame monitoriuje pamatysite šešioliktainį kodą, kuris yra žymos UID. Užrašykite tai, kuri bus naudojama kitoje programoje žymai identifikuoti.
Atlikę šį veiksmą, įkelkite žemiau esantį kodą į tą pačią sąranką.

Programa atpažinti kortelę ir valdymo relę:

//---------------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' // Čia įdėkite savo žymos UID.
Pakeiskite XX: XX: XX: XX savo UID.

Autoriaus prototipas, kurį galima efektyviai naudoti kaip neapsaugotą RFID durų ir seifų užraktą:

Kai nuskaityta autorizuota kortelė:

Kai nuskaitoma neteisėta žyma:

Jei turite klausimų dėl šios „Arduino“ RFID apsaugos užrakto grandinės, prašome kreiptis žemiau komentarų skyriuje.




Ankstesnis: Triac fazių valdymas naudojant PWM proporcingą laiką Kitas: Apšviesta perėjos saugos šviesos grandinė