Circuito de bloqueio de segurança RFID - Código completo do programa e detalhes de teste

Experimente Nosso Instrumento Para Eliminar Problemas





Neste artigo, veremos como um circuito leitor RFID baseado em Arduino pode ser usado para controlar um relé, que por sua vez pode ser usado em aplicações de fechadura de segurança.

Visão geral

Se você ainda não consultou o artigo RFID anterior, vá em frente e verifique, ele cobriu o noções básicas de tecnologia RFID .



Vamos identificar as tags autorizadas usando UID. Em poucas palavras, o UID é o número de identificação exclusivo da etiqueta, quando você escaneia seu cartão no escritório ou em qualquer outro lugar, ele extrai o UID do cartão.

O UID do cartão fica guardado na base de dados do seu escritório e irá reconhecer o titular do cartão e registar o seu atendimento.



A tag não apenas transfere UID, mas também transfere algumas outras informações que são armazenadas na tag, as tags geralmente podem armazenar de 1 KB a 4 KB, às vezes até mais.

Não discutiremos como armazenar informações na tag, mas isso será discutido em um artigo futuro. Nesta postagem, vamos utilizar o número UID para controlar o relé ON / OFF .

O lema deste projeto é LIGAR / DESLIGAR o dispositivo, que está conectado com a configuração fornecida na digitalização com etiqueta RFID autorizada.

O UID do cartão é definido no programa e quando o cartão autorizado for detectado, ele ligará o relé na primeira varredura e a varredura novamente desativará o relé.

Se qualquer placa não autorizada for detectada, ele emitirá uma mensagem de erro no monitor serial e o relé continuará sua tarefa atual sem qualquer interrupção.

Aqui, quando o cartão autorizado é escaneado, o relé ativa / desativa, este mecanismo pode ser usado em qualquer lugar, por exemplo em: sistema de travamento de porta, onde o cartão autorizado precisa ser escaneado para abrir a porta.

Como funciona:

Circuito de bloqueio de segurança RFID usando Arduino

O circuito RFID consiste em LED que indicam o status do relé, o transistor BC 548 aciona o relé e o diodo 1N4007 é conectado ao relé para interromper o pico de alta tensão no momento da comutação.

Se você deseja conectar um relé com tensão nominal mais alta (9 V ou 12 V), pode conectar a alimentação + Ve externa ao relé e a alimentação -Ve ao aterramento do pino GND do Arduino Por favor, tome o máximo de cuidado ao realizar esta etapa, pois você pode danificar a placa se as conexões não estiverem corretas.

A próxima etapa depois de concluir a configuração do hardware é fazer upload do código para encontrar o UID de sua tag.
Agora carregue o programa fornecido abaixo para o arduino, abra o monitor serial e escaneie a tag.

Programa para encontrar 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 ()
}

A saída no monitor serial (exemplo):

O UID do seu cartão é: AA: BB: CC: DD

No monitor serial, você verá algum código hexadecimal, que é o UID da tag. Anote isso, que será usado no próximo programa para identificar a tag.
Após a conclusão dessa etapa, carregue o código abaixo na mesma configuração.

Programa para identificar a placa e o relé de controle:

//---------------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' // Coloque o UID da sua tag aqui.
Substitua XX: XX: XX: XX pelo seu UID.

Protótipo do autor que pode ser usado efetivamente como uma trava de segurança RFID infalível para portas e cofres:

Quando um cartão autorizado é digitalizado:

Quando uma tag não autorizada é verificada:

Se você tiver alguma dúvida sobre este circuito de bloqueio de segurança RFID Arduino, sinta-se à vontade para perguntar abaixo na seção de comentários.




Anterior: Controle de Fase Triac usando PWM Proporcional ao Tempo Próximo: Circuito de luz de segurança para passarela iluminada