Litar Kunci Keselamatan RFID - Kod Program Lengkap dan Butiran Ujian

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam artikel ini kita akan melihat bagaimana rangkaian pembaca RFID berbasis Arduino dapat digunakan untuk mengendalikan relay, yang pada gilirannya dapat digunakan dalam aplikasi kunci pintu keselamatan.

Gambaran keseluruhan

Sekiranya anda belum memeriksa artikel RFID sebelumnya, silakan periksa, ini merangkumi asas teknologi RFID .



Kami akan mengenal pasti tag yang dibenarkan menggunakan UID. Ringkasnya UID adalah nombor pengenalan tag yang unik, apabila anda mengimbas kad anda di pejabat anda atau di tempat lain, ia mengeluarkan UID dari kad.

UID kad disimpan di pangkalan data pejabat anda dan ia akan mengenali pemegang kad dan mendaftarkan kehadiran anda.



Teg tidak hanya memindahkan UID, tetapi juga memindahkan beberapa maklumat lain yang tersimpan di dalam tag, tag pada amnya dapat menyimpan dari 1KB ke 4KB bahkan kadang-kadang lebih banyak lagi.

Kami tidak akan membincangkan cara menyimpan maklumat pada teg tetapi, ia akan dibincangkan dalam artikel akan datang. Dalam posting ini kita akan menggunakan nombor UID untuk mengawal geganti ON / OFF .

Moto projek ini adalah menghidupkan / mematikan peranti, yang dihubungkan dengan persediaan yang diberikan semasa mengimbas dengan tag RFID yang dibenarkan.

UID kad ditentukan dalam program dan apabila kad yang dibenarkan dikesan, kad ini akan menghidupkan relay pada imbasan pertama dan mengimbasnya sekali lagi akan mematikan relay.

Sekiranya ada kad yang tidak dibenarkan dikesan, ia akan mengeluarkan mesej ralat pada monitor bersiri dan geganti meneruskan tugasnya sekarang tanpa gangguan.

Di sini apabila kad yang dibenarkan diimbas, geganti mengaktifkan / menyahaktifkan, mekanisme ini boleh digunakan di mana sahaja, misalnya di: sistem penguncian pintu, di mana kad yang dibenarkan perlu diimbas untuk membuka pintu.

Bagaimana ia berfungsi:

Litar Kunci Keselamatan RFID menggunakan Arduino

Litar RFID terdiri daripada LED yang menunjukkan status relay, transistor BC 548 menggerakkan geganti dan dioda 1N4007 disambungkan merentas geganti untuk menahan lonjakan voltan tinggi pada saat beralih.

Sekiranya anda ingin menyambungkan relay bertaraf voltan tinggi (9V atau 12V), anda boleh menyambungkan bekalan + Ve luaran ke geganti dan –Ve membekalkan ke ground pin GND arduino. Berhati-hatilah semasa meneruskan langkah ini, kerana anda mungkin merosakkan papan jika sambungan tidak betul.

Langkah seterusnya setelah menyelesaikan persediaan perkakasan adalah memuat naik kod untuk mencari UID tag anda.
Sekarang muat naik program yang diberikan di bawah ini ke arduino, buka monitor bersiri dan imbas tagnya.

Program untuk mencari 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 ()
}

Keluaran pada monitor bersiri (contoh):

UID kad anda ialah: AA: BB: CC: DD

Pada monitor bersiri, anda akan melihat beberapa kod heksadesimal, yang merupakan UID teg. Catatnya, yang akan digunakan dalam program seterusnya untuk mengenal pasti tag.
Setelah langkah ini selesai, muat naik kod di bawah pada persediaan yang sama.

Program untuk mengenal pasti kad dan relay kawalan:

//---------------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' // Letakkan UID teg anda di sini.
Ganti XX: XX: XX: XX dengan UID anda.

Prototaip pengarang yang dapat digunakan dengan berkesan sebagai kunci keselamatan RFID yang tidak dapat dilupakan untuk pintu dan peti besi:

Apabila kad yang dibenarkan diimbas:

Apabila teg yang tidak dibenarkan diimbas:

Sekiranya anda mempunyai pertanyaan mengenai litar kunci keselamatan Arduino RFID ini, jangan ragu untuk bertanya di bawah di bahagian komen.




Sebelumnya: Triac Phase Control menggunakan PWM Time Proportional Seterusnya: Litar Lampu Keselamatan Crosswalk Terang