RFID-turvalukituspiiri - täydellinen ohjelmakoodi ja testauksen yksityiskohdat

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä artikkelissa näemme, kuinka Arduino-pohjaista RFID-lukijapiiriä voitaisiin käyttää releen ohjaamiseen, jota puolestaan ​​voitaisiin käyttää turvaovien lukkosovelluksissa.

Yleiskatsaus

Jos et ole vielä tarkistanut edellistä RFID-artikkelia, tarkista se, se kattoi RFID-tekniikan perusteet .



Aiomme tunnistaa valtuutetut tunnisteet UID: n avulla. Lyhyesti sanottuna UID on tunnisteen yksilöllinen tunnistenumero, kun skannatessasi korttiasi toimistossa tai muualla, se poimii UID: n kortilta.

Kortin UID tallennetaan toimistosi tietokantaan, ja se tunnistaa kortin haltijan ja rekisteröi läsnäolosi.



Tunniste siirtää UID: n lisäksi myös joitain muita tunnisteeseen tallennettuja tietoja, tunnisteet voivat yleensä tallentaa 1 kt - 4 kt, joskus jopa enemmän.

Emme keskustele siitä, miten tiedot tallennetaan tagiin, mutta siitä keskustellaan tulevassa artikkelissa. Tässä viestissä aiomme käyttää UID-numeroa hallita rele PÄÄLLE / POIS .

Tämän projektin motto on kytkeä laite päälle / pois päältä, joka on liitetty annettuun asetukseen skannattaessa valtuutetulla RFID-tagilla.

Kortin UID on määritelty ohjelmassa, ja kun valtuutettu kortti havaitaan, se kytkee releen päälle ensimmäisessä skannauksessa ja sen skannaus deaktivoi releen.

Jos luvatonta korttia havaitaan, se antaa virheilmoituksen sarjavalvonnassa ja rele jatkaa nykyistä tehtäväänsä keskeytyksettä.

Tällöin, kun valtuutettu kortti skannataan, rele aktivoituu / deaktivoituu, tätä mekanismia voidaan käyttää missä tahansa, esimerkiksi: oven lukitusjärjestelmässä, jossa valtuutettu kortti on skannattava oven avaamiseksi.

Kuinka se toimii:

RFID-suojauslukituspiiri Arduinolla

RFID-piiri koostuu LEDistä, joka ilmaisee releen tilan, BC 548 -transistori ohjaa releä ja 1N4007-diodi on kytketty releen yli suurjännitepiikin pysäyttämiseksi kytkennän yhteydessä.

Jos haluat liittää korkeamman jännitteen nimellisreleen (9 V tai 12 V), voit liittää ulkoisen + Ve-virtalähteen releeseen ja –Ve-syötteen arduinon GND-nastan maahan. Ole erittäin varovainen jatkaessasi tätä vaihetta, koska saatat vahingoittaa levyä, jos liitännät eivät ole oikein.

Seuraava vaihe laitteiston asennuksen jälkeen on ladata koodi löytääksesi tagisi UID.
Lataa nyt alla oleva ohjelma arduinoon, avaa sarjamonitori ja skannaa tagi.

Ohjelma löytää 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 ()
}

Sarjamonitorin lähtö (esimerkki):

Korttisi UID on: AA: BB: CC: DD

Sarjamonitorissa näet jonkin verran heksadesimaalikoodia, joka on tunnisteen UID. Merkitse se muistiin, jota käytetään seuraavassa ohjelmassa tunnisteen tunnistamiseksi.
Kun tämä vaihe on valmis, lataa alla oleva koodi samaan kokoonpanoon.

Ohjelma kortin ja ohjausreleen tunnistamiseksi:

//---------------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' // Sijoita tagisi UID tähän.
Korvaa XX: XX: XX: XX UID: lläsi.

Kirjoittajan prototyyppi, jota voidaan käyttää tehokkaasti ovien ja kassakaappien RFID-turvalukkoina:

Kun valtuutettu kortti skannataan:

Kun luvaton tunniste tarkistetaan:

Jos sinulla on kysyttävää tästä Arduino RFID -turvalukituspiiristä, kysy rohkeasti alla kommenttiosassa.




Edellinen: Triac-vaiheen hallinta käyttämällä PWM-ajan suhteellista osuutta Seuraava: Valaistu suojatie-turvavalopiiri