Circuit de bloqueig de seguretat RFID: codi complet del programa i detalls de proves

Proveu El Nostre Instrument Per Eliminar Problemes





En aquest article veurem com es podria utilitzar un circuit lector RFID basat en Arduino per controlar un relé, que al seu torn es podria utilitzar en aplicacions de pany de seguretat.

Visió general

Si encara no heu comprovat l’article RFID anterior, si us plau, consulteu-lo, ja que es tractava conceptes bàsics de la tecnologia RFID .



Identificarem les etiquetes autoritzades mitjançant UID. En poques paraules, l’UID és el número d’identificació únic de l’etiqueta, quan escanegeu la targeta a la vostra oficina o en qualsevol altre lloc, extreu l’UID de la targeta.

La UID de la targeta es desa a la base de dades de la vostra oficina i reconeixerà el titular de la targeta i registrarà la vostra assistència.



L'etiqueta no només transfereix UID, sinó que també transfereix alguna altra informació que s'emmagatzema a l'etiqueta, les etiquetes generalment poden emmagatzemar des d'1 KB fins a 4KB de vegades encara més.

No discutirem com emmagatzemar informació a l’etiqueta, però sí que es discutirà en un article futur. En aquest post utilitzarem el número UID per controlar el fitxer relé ON / OFF .

El lema d’aquest projecte és encendre / apagar el dispositiu, que està connectat amb la configuració donada en escanejar amb etiqueta RFID autoritzada.

La UID de la targeta es defineix al programa i, quan es detecta la targeta autoritzada, activarà el relé en la primera exploració i, si es torna a escanejar, el relé es desactivarà.

Si es detecta alguna targeta no autoritzada, emetrà un missatge d'error al monitor sèrie i el relé continuarà la tasca actual sense interrupcions.

Aquí, quan s’escaneja la targeta autoritzada, el relé s’activa / desactiva, aquest mecanisme es pot utilitzar a qualsevol lloc, per exemple: sistema de bloqueig de porta, on s’ha d’escanejar la targeta autoritzada per obrir la porta.

Com funciona:

Circuit de bloqueig de seguretat RFID mitjançant Arduino

El circuit RFID consta de LED que indiquen l'estat del relé, el transistor BC 548 condueix el relé i el díode 1N4007 està connectat a través del relé per detenir el pic d'alta tensió en el moment de commutar.

Si voleu connectar un relé nominal de més tensió (9V o 12V), podeu connectar un subministrament extern + Ve al relé i –Ve a la terra del pin GND d’arduino. Tingueu la màxima precaució mentre continueu aquest pas, ja que pot fer malbé la placa si les connexions no són correctes.

El següent pas després de completar la configuració del maquinari és carregar el codi per trobar l'identificador UID de la vostra etiqueta.
Ara carregueu el programa que es mostra a continuació a arduino, obriu el monitor sèrie i analitzeu l'etiqueta.

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

La sortida al monitor sèrie (exemple):

L’UID de la vostra targeta és: AA: BB: CC: DD

Al monitor sèrie, veureu un codi hexadecimal, que és l’UID de l’etiqueta. Tingueu en compte que s’utilitzarà al següent programa per identificar l’etiqueta.
Un cop completat aquest pas, pengeu el codi següent a la mateixa configuració.

Programa per identificar la targeta i el relé 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' // Col·loqueu aquí el vostre UID de l'etiqueta.
Substituïu XX: XX: XX: XX pel vostre UID.

Prototip de l'autor que es pot utilitzar eficaçment com a pany de seguretat RFID infal·lible per a portes i caixes fortes:

Quan s'escaneja una targeta autoritzada:

Quan s'escaneja una etiqueta no autoritzada:

Si teniu cap pregunta sobre aquest circuit de bloqueig de seguretat RFID Arduino, no dubteu a fer-ho a continuació a la secció de comentaris.




Anterior: Control de fase del triac mitjançant el temps proporcional PWM Següent: Circuit de llum de seguretat de vianants il·luminat