RFID Güvenlik Kilidi Devresi - Tam Program Kodu ve Test Detayları

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu yazıda, Arduino tabanlı bir RFID okuyucu devresinin bir röleyi kontrol etmek için nasıl kullanılabileceğini ve bunun da güvenlik kapısı kilidi uygulamalarında kullanılabileceğini göreceğiz.

Genel Bakış

Önceki RFID makalesine henüz bakmadıysanız, lütfen devam edin, bir göz atın. RFID teknolojisinin temelleri .



Yetkili etiketleri UID kullanarak tanımlayacağız. Özetle UID, kartınızı ofisinizde veya başka bir yerde taradığınızda, etiketin benzersiz kimlik numarasıdır, UID'yi karttan çıkarır.

Kartın UID'si ofisinizin veri tabanına kaydedilir ve kart sahibini tanıyacak ve katılımınızı kaydedecektir.



Etiket yalnızca UID'yi aktarmakla kalmaz, aynı zamanda etikette depolanan bazı diğer bilgileri de aktarır, etiketler genellikle 1KB'den 4KB'ye bazen daha da fazla depolayabilir.

Etikette nasıl bilgi depolayacağımızı tartışmayacağız, ancak ilerideki bir makalede tartışılacaktır. Bu yazıda, UID numarasını kontrol etmek için kullanacağız. röle AÇIK / KAPALI .

Bu projenin sloganı, yetkili RFID etiketi ile taramada verilen kuruluma bağlı cihazı AÇMAK / KAPATMAKtır.

Kartın UID'si programda tanımlanır ve yetkili kart tespit edildiğinde ilk taramada röleyi açacak ve tekrar taraması röleyi devre dışı bırakacaktır.

Yetkisiz kart tespit edilirse seri monitörde hata mesajı verir ve röle herhangi bir kesinti olmaksızın mevcut görevine devam eder.

Burada yetkili kart tarandığında, röle etkinleştirilir / devre dışı bırakılır, bu mekanizma herhangi bir yerde kullanılabilir, örneğin: kapıyı açmak için yetkili kartın taranması gereken kapı kilitleme sistemi.

Nasıl çalışır:

Arduino kullanarak RFID Güvenlik Kilidi Devresi

RFID devresi, rölenin durumunu gösteren LED'den oluşur, BC 548 transistörü röleyi çalıştırır ve anahtarlama anında yüksek voltaj artışını durdurmak için röle boyunca 1N4007 diyot bağlanır.

Daha yüksek voltajlı röle (9V veya 12V) bağlamak istiyorsanız, harici + Ve beslemesini röleye ve –Ve beslemesini arduino’nun GND pininin toprağına bağlayabilirsiniz. Bağlantıların doğru olmaması durumunda panele zarar verebileceğiniz için lütfen bu adıma geçerken azami özen gösterin.

Donanım kurulumunu tamamladıktan sonraki adım, etiketinizin UID'sini bulmak için kodu yüklemektir.
Şimdi aşağıda verilen programı arduino'ya yükleyin, seri monitörü açın ve etiketi tarayın.

UID bulma programı:

#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 ()
}

Seri monitördeki çıktı (örnek):

Kartınızın UID'si: AA: BB: CC: DD

Seri monitörde, etiketin UID'si olan bazı onaltılık kod göreceksiniz. Bir sonraki programda etiketi tanımlamak için kullanılacak olan bir yere not edin.
Bu adım tamamlandıktan sonra, aşağıdaki kodu aynı kuruluma yükleyin.

Kartı ve kontrol rölesini tanımlama programı:

//---------------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' // Etiketinizin UID'sini buraya yerleştirin.
XX: XX: XX: XX'yi UID'nizle değiştirin.

Kapılar ve kasalar için kusursuz bir RFID güvenlik kilidi olarak etkili bir şekilde kullanılabilen yazarın prototipi:

Yetkili bir kart tarandığında:

Yetkisiz bir etiket tarandığında:

Bu Arduino RFID güvenlik kilidi devresiyle ilgili herhangi bir sorunuz varsa, lütfen aşağıdaki yorum bölümünde sormaktan çekinmeyin.




Önceki: PWM Zaman Orantılı kullanarak Triyak Faz Kontrolü Sonraki: Işıklı Yaya Geçidi Güvenlik Işık Devresi