Схема защитного замка RFID - полный программный код и подробности тестирования

Попробуйте наш инструмент устранения неполадок





В этой статье мы увидим, как схему считывателя RFID на базе Arduino можно использовать для управления реле, которое, в свою очередь, можно использовать в приложениях для защитных дверных замков.

Обзор

Если вы еще не проверили предыдущую статью о RFID, пожалуйста, ознакомьтесь с ней, она охватывает основы технологии RFID .



Мы собираемся идентифицировать авторизованные теги с помощью UID. В двух словах, UID - это уникальный идентификационный номер тега, когда вы сканируете свою карту в офисе или где-либо еще, он извлекает UID из карты.

UID карты сохраняется в базе данных вашего офиса, он распознает держателя карты и зарегистрирует ваше присутствие.



Тег не только передает UID, но также передает некоторую другую информацию, которая хранится в теге, теги обычно могут хранить от 1 КБ до 4 КБ, иногда даже больше.

Мы не будем обсуждать, как хранить информацию в теге, но это будет обсуждаться в следующей статье. В этом посте мы собираемся использовать номер UID для управления реле ВКЛ / ВЫКЛ .

Девиз этого проекта - включить / выключить устройство, которое связано с данной настройкой на сканирование с авторизованной RFID-меткой.

UID карты определяется в программе, и когда авторизованная карта обнаружена, она включит реле при первом сканировании, а повторное сканирование деактивирует реле.

Если какая-либо неавторизованная карта будет обнаружена, она выдаст сообщение об ошибке на последовательном мониторе, и реле продолжит свою текущую задачу без каких-либо перерывов.

Здесь, когда авторизованная карта сканируется, реле активируется / деактивируется, этот механизм может использоваться где угодно, например, в системе запирания дверей, где авторизованная карта должна быть отсканирована, чтобы открыть дверь.

Как это устроено:

Схема блокировки безопасности RFID с использованием Arduino

Схема RFID состоит из светодиода, который указывает состояние реле, транзистора BC 548 управляет реле и диода 1N4007, подключенного к реле, чтобы остановить выброс высокого напряжения в момент переключения.

Если вы хотите подключить реле с более высоким номинальным напряжением (9 В или 12 В), вы можете подключить внешний источник + Ve к реле, а источник -Ve к заземлению вывода GND Arduino. Пожалуйста, будьте максимально осторожны при выполнении этого шага, так как вы можете повредить плату, если соединения будут неправильными.

Следующим шагом после завершения настройки оборудования является загрузка кода для поиска UID вашего тега.
Теперь загрузите приведенную ниже программу в Arduino, откройте последовательный монитор и просканируйте тег.

Программа для поиска 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 ()
}

Вывод на серийный монитор (пример):

UID вашей карты: AA: BB: CC: DD

На последовательном мониторе вы увидите шестнадцатеричный код, который является UID тега. Запишите его, который будет использован в следующей программе для идентификации тега.
После завершения этого шага загрузите приведенный ниже код в ту же настройку.

Программа для идентификации карты и реле управления:

//---------------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' // Поместите здесь свой UID вашего тега.
Замените XX: XX: XX: XX своим UID.

Авторский прототип, который можно эффективно использовать как надежный RFID-замок для дверей и сейфов:

При сканировании авторизованной карты:

При сканировании неавторизованного тега:

Если у вас есть какие-либо вопросы относительно этой схемы защитного замка Arduino RFID, пожалуйста, не стесняйтесь спрашивать ниже в разделе комментариев.




Предыдущая: Управление фазой симистора с использованием пропорционального времени ШИМ Следующая статья: Цепь освещения пешеходного перехода