RFID-sikkerhedslåsekreds - Fuld programkode og testoplysninger

Prøv Vores Instrument Til At Fjerne Problemer





I denne artikel vil vi se, hvordan et Arduino-baseret RFID-læser-kredsløb kunne bruges til styring af et relæ, som igen kunne bruges i sikkerhedsdørlåseanvendelser.

Oversigt

Hvis du endnu ikke har tjekket den forrige RFID-artikel, skal du tjekke den ud, den dækkede grundlæggende i RFID-teknologi .



Vi identificerer de autoriserede tags ved hjælp af UID. Kort sagt er UID det unikke identifikationsnummer på tagget, når du scanner dit kort på dit kontor eller andre steder, udtrækker det UID fra kortet.

Kortets UID gemmes i databasen på dit kontor, og det genkender kortholderen og registrerer dit fremmøde.



Tagget overfører ikke kun UID, men overfører også nogle andre oplysninger, der er gemt i tagget, tags kan generelt gemme fra 1KB til 4KB nogle gange endnu mere.

Vi diskuterer ikke, hvordan man gemmer information på tagget, men det diskuteres i en fremtidig artikel. I dette indlæg skal vi bruge UID-nummeret til at kontrollere relæ ON / OFF .

Mottoet for dette projekt er at tænde / slukke for enheden, der er forbundet med den givne opsætning ved scanning med autoriseret RFID-mærke.

Kortets UID er defineret i programmet, og når der registreres autoriseret kort, tænder det relæet ved den første scanning, og scanning igen vil deaktivere relæet.

Hvis der registreres et uautoriseret kort, vil det give fejlmeddelelse på seriel skærm og relæ fortsætte sin nuværende opgave uden afbrydelse.

Her, når det autoriserede kort scannes, aktiveres / deaktiveres relæet, denne mekanisme kan bruges overalt, for eksempel i: dørlåsesystem, hvor det autoriserede kort skal scannes for at åbne døren.

Hvordan det virker:

RFID-sikkerhedslåsekredsløb ved hjælp af Arduino

RFID-kredsløbet består af LED, der angiver status for relæet, BC 548-transistor driver relæet, og 1N4007-diode er forbundet over relæet for at standse højspændingsspidsen ved omskiftningstidspunktet.

Hvis du vil tilslutte højere spændingsrelæ (9V eller 12V), kan du tilslutte ekstern + Ve-forsyning til relæ og –Ve-forsyning til jord af arduinos GND-pin. Vær som mest forsigtig, mens du fortsætter dette trin, da du kan beskadige brættet, hvis forbindelserne ikke er rigtige.

Det næste trin efter færdiggørelse af hardwareopsætningen er at uploade koden for at finde UID for dit tag.
Upload nu nedenstående program til arduino, åbn seriel skærm og scan taggen.

Program til at finde 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 ()
}

Outputtet på seriel skærm (eksempel):

Dit korts UID er: AA: BB: CC: DD

På den serielle skærm vil du se en hexadecimal kode, som er tagets UID. Noter det, som vil blive brugt i det næste program til at identificere tagget.
Når dette trin er afsluttet, skal du uploade nedenstående kode i samme opsætning.

Program til identifikation af kortet og kontrolrelæet:

//---------------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' // Placer din UID for dit tag her.
Udskift XX: XX: XX: XX med din UID.

Forfatterens prototype, som effektivt kan bruges som en idiotsikker RFID-sikkerhedslås til døre og pengeskabe:

Når et autoriseret kort scannes:

Når et uautoriseret tag scannes:

Hvis du har spørgsmål vedrørende dette Arduino RFID-sikkerhedslåsekredsløb, er du velkommen til at spørge nedenfor i kommentarsektionen.




Forrige: Triac-fasekontrol ved hjælp af PWM-tidsproportionel Næste: Belyst Crosswalk Safety Light Circuit