Obwód blokady bezpieczeństwa RFID - pełny kod programu i szczegóły testowania

Wypróbuj Nasz Instrument Do Eliminowania Problemów





W tym artykule zobaczymy, jak obwód czytnika RFID oparty na Arduino może być użyty do sterowania przekaźnikiem, który z kolei może być użyty w aplikacjach z zamkami bezpieczeństwa.

Przegląd

Jeśli nie sprawdziłeś jeszcze poprzedniego artykułu o RFID, proszę, sprawdź go, obejmował podstawy technologii RFID .



Za pomocą UID zidentyfikujemy autoryzowane tagi. W skrócie UID to unikalny numer identyfikacyjny przywieszki, kiedy skanujesz swoją kartę w biurze lub gdziekolwiek indziej, wydobywa UID z karty.

Identyfikator UID karty jest zapisywany w bazie danych Twojego biura i rozpoznaje posiadacza karty i rejestruje Twoją obecność.



Znacznik nie tylko przenosi UID, ale także przekazuje inne informacje, które są przechowywane w tagu, tagi mogą ogólnie przechowywać od 1KB do 4KB, czasem nawet więcej.

Nie będziemy rozmawiać o tym, jak przechowywać informacje w tagu, ale zostanie to omówione w kolejnym artykule. W tym poście wykorzystamy numer UID do kontrolowania przekaźnik ON / OFF .

Mottem tego projektu jest włączanie / wyłączanie urządzenia, które jest związane z danym ustawieniem na skanowaniu z autoryzowanym tagiem RFID.

UID karty jest definiowany w programie i po wykryciu autoryzowanej karty, przy pierwszym skanowaniu włączy przekaźnik, a ponowne skanowanie wyłączy przekaźnik.

Jeśli wykryta zostanie jakakolwiek nieautoryzowana karta, wyświetli komunikat o błędzie na monitorze szeregowym i przekaźnik będzie kontynuował swoje bieżące zadanie bez żadnych przerw.

Tutaj, gdy skanowana jest autoryzowana karta, przekaźnik włącza się / wyłącza, mechanizm ten można zastosować w dowolnym miejscu, np .: w systemie zamykania drzwi, gdzie należy zeskanować autoryzowaną kartę, aby otworzyć drzwi.

Jak to działa:

Obwód blokady bezpieczeństwa RFID wykorzystujący Arduino

Obwód RFID składa się z diod LED wskazujących stan przekaźnika, tranzystor BC 548 steruje przekaźnikiem, a dioda 1N4007 jest podłączona do przekaźnika, aby zatrzymać skok wysokiego napięcia w momencie przełączenia.

Jeśli chcesz podłączyć przekaźnik o wyższym napięciu (9 V lub 12 V), możesz podłączyć zewnętrzne zasilanie + Ve do przekaźnika i zasilanie –Ve do masy pinu GND arduino. Zachowaj ostrożność podczas wykonywania tego kroku, ponieważ możesz uszkodzić płytkę, jeśli połączenia nie są prawidłowe.

Następnym krokiem po zakończeniu konfiguracji sprzętu jest przesłanie kodu w celu znalezienia UID tagu.
Teraz prześlij poniższy program do arduino, otwórz monitor szeregowy i zeskanuj tag.

Program do wyszukiwania 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 ()
}

Wyjście na monitorze szeregowym (przykład):

Identyfikator UID Twojej karty to: AA: BB: CC: DD

Na monitorze szeregowym zobaczysz kod szesnastkowy, który jest UID tagu. Zanotuj to, co zostanie użyte w następnym programie do zidentyfikowania tagu.
Po zakończeniu tego kroku prześlij poniższy kod w tej samej konfiguracji.

Program do identyfikacji karty i przekaźnika sterującego:

//---------------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' // Tutaj umieść swój UID tagu.
Zastąp XX: XX: XX: XX swoim UID.

Autorski prototyp, który można skutecznie wykorzystać jako niezawodny zamek zabezpieczający RFID do drzwi i sejfów:

Po zeskanowaniu autoryzowanej karty:

Gdy skanowany jest nieautoryzowany tag:

Jeśli masz jakiekolwiek pytania dotyczące tego obwodu blokady bezpieczeństwa Arduino RFID, możesz je zadać poniżej w sekcji komentarzy.




Poprzedni: Sterowanie fazą triaka za pomocą proporcjonalnego czasu PWM Dalej: Obwód świateł bezpieczeństwa na przejściu dla pieszych