Circuit de blocare a securității RFID - Cod complet de program și detalii de testare

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





În acest articol vom vedea cum un circuit de citire RFID bazat pe Arduino ar putea fi utilizat pentru controlul unui releu, care la rândul său ar putea fi utilizat în aplicații de blocare a ușii de securitate.

Prezentare generală

Dacă nu ați verificat încă articolul RFID anterior, vă rugăm să continuați, verificați-l, a acoperit elementele de bază ale tehnologiei RFID .



Vom identifica etichetele autorizate folosind UID. Pe scurt, UID este numărul unic de identificare al etichetei, atunci când vă scanați cardul la birou sau oriunde altundeva, acesta extrage UID-ul de pe card.

UID-ul cardului este salvat în baza de date a biroului dvs. și va recunoaște titularul cardului și vă va înregistra prezența.



Eticheta nu numai că transferă UID, ci și transferă alte informații care sunt stocate în etichetă, etichetele pot stoca în general de la 1 KB la 4KB uneori chiar mai mult.

Nu vom discuta despre modul de stocare a informațiilor pe etichetă, dar vor fi discutate într-un articol viitor. În acest post vom folosi numărul UID pentru a controla releu PORNIT / OPRIT .

Motto-ul acestui proiect este de a porni / opri dispozitivul, care este conectat cu setarea dată la scanare cu etichetă RFID autorizată.

UID-ul cardului este definit în program și atunci când este detectat cardul autorizat, acesta va porni releul la prima scanare și scanarea acestuia din nou va dezactiva releul.

Dacă este detectat un card neautorizat, acesta va afișa un mesaj de eroare pe monitorul serial și retransmite sarcina curentă fără nicio întrerupere.

Aici, când cardul autorizat este scanat, releul se activează / dezactivează, acest mecanism poate fi utilizat oriunde, de exemplu în: sistem de blocare a ușii, unde cardul autorizat trebuie scanat pentru a deschide ușa.

Cum functioneaza:

Circuit de blocare a securității RFID folosind Arduino

Circuitul RFID constă din LED care indică starea releului, tranzistorul BC 548 acționează releul și dioda 1N4007 este conectată pe releu pentru a opri vârful de înaltă tensiune în momentul comutării.

Dacă doriți să conectați un releu de tensiune mai mare (9V sau 12V), puteți conecta sursa externă + Ve la releu și –Ve la sursa de pin a GND arduino. Vă rugăm să aveți cel mai multă grijă în timp ce continuați acest pas, deoarece puteți deteriora placa dacă conexiunile nu sunt corecte.

Următorul pas după finalizarea configurării hardware este să încărcați codul pentru a găsi UID-ul etichetei dvs.
Acum încărcați programul de mai jos pe arduino, deschideți monitorul serial și scanați eticheta.

Program pentru a găsi 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 ()
}

Ieșirea pe monitorul serial (exemplu):

UID-ul cardului dvs. este: AA: BB: CC: DD

Pe monitorul serial, veți vedea un cod hexazecimal, care este UID-ul etichetei. Rețineți-l, care va fi utilizat în următorul program pentru a identifica eticheta.
După finalizarea acestui pas, încărcați codul de mai jos pe aceeași configurare.

Program de identificare a cardului și a releului de control:

//---------------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' // Plasați UID-ul etichetei dvs. aici.
Înlocuiți XX: XX: XX: XX cu UID-ul dvs.

Prototipul autorului, care poate fi utilizat în mod eficient ca o încuietoare de securitate RFID la ușă și seifuri:

Când se scanează un card autorizat:

Când este scanată o etichetă neautorizată:

Dacă aveți întrebări cu privire la acest circuit de blocare de securitate RFID Arduino, vă rugăm să nu ezitați să întrebați mai jos în secțiunea de comentarii.




Precedent: Controlul fazei Triac folosind PWM Time Proportional Următorul: Circuit luminos de siguranță pentru treceri de lumină