Arduino e RFID

Neste post vamos aprender como montar um sistema de controle de acesso por meio da tecnologia  RFID -Identificação por radiofrequência  (do inglês “Radio-Frequency IDentification” )

Onde de acordo com a wikipedia – Uma etiqueta ou tag RFID é um transponder, pequeno objeto que pode ser colocado em uma pessoa, animal, equipamento, embalagem ou produto, dentre outros. Contém chips de silício e antenas que lhe permite responder aos sinais de rádio enviados por uma base transmissora. Além das etiquetas passivas, que respondem ao sinal enviado pela base transmissora, existem ainda as etiquetas semipassivas e as ativas, dotadas de bateria, que lhes permite enviar o próprio sinal. São bem mais caras que do que as etiquetas passivas.

PARA TUTORIAIS EM VÍDEO, INSCREVA-SE NO CANAL DO YOUTUBE, BASTA CLICAR NO BOTÃO ABAIXO:

inscreva-se

Enfim, para este projeto vamos precisar de:

Uma placa Arduíno, qualquer modelo;

Um modulo relé de um canal;

Um Sensor Leitor de RFID;

Fecho eletromagnético;

Fonte de alimentação de 9 a 12 Volts;

Fios Jumper;

Visor LCD com Modulo Serial i2c (Opcional);

O projeto foi montado em uma protoboard.

As Bibliotecas e códigos de programação usados neste post podem ser baixadas clicando no botão abaixo:

Antes de começar informamos que a ligação errada dos componentes pode danificar as peças, por este motivo siga este tutorial com muita atenção, O funcionamento deste projeto é bem simples, basicamente vamos ler os cartões ou tags RFID e inserir no código Arduíno para que dessa forma o programa identifique os cartões e tags autorizadas.

Depois que você reunir todos os materiais siga o esquema de montagem a seguir para montagem do projeto:

Esquema RFID

Para auxiliar na ligação dos componentes siga a tabela abaixo:

Depois de tudo montado basta abrir a IDE do Arduíno e enviar o código abaixo para a placa:

#include SPI.h>
#include MFRC522.h>
#include LiquidCrystal_I2C.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
LiquidCrystal_I2C lcd(0x27,20,4);
int rele = 8; // led no pino 8
const int buzzer = 7;

char st[20];

void setup()
{
Serial.begin(9600); // Inicia a serial
SPI.begin(); // Inicia SPI bus
mfrc522.PCD_Init(); // Inicia MFRC522
Serial.println("Aproxime o seu cartao do leitor...");
Serial.println();
lcd.init();
lcd.init();
lcd.backlight();
lcd.clear();
lcd.print(" Aproxime o seu");
lcd.setCursor(0,1);
lcd.print("cartao ao leitor");
pinMode(rele,OUTPUT); //Define o rele como saida
digitalWrite(rele, HIGH); //Inicia o rele em modo LOW
pinMode(buzzer,OUTPUT); //Define o buzzer como saida

}

void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Mostra UID na serial
Serial.print("UID da tag :");
String conteudo= "";
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Mensagem : ");
conteudo.toUpperCase();
if (conteudo.substring(1) == "89 E3 D5 35") //ID de cartão 1
{
Serial.println("Ola Bruno !");//edite a mensagem de boas vindas
Serial.println();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Ola Bruno !"); //edite a mensagem de boas vindas
lcd.setCursor(0,1);
lcd.print("Acesso liberado!");
delay(3000);
digitalWrite(rele, LOW); // Muda o estado do rele
delay(500); // espera meio segundo
digitalWrite(rele, HIGH); // muda o estado do rele

mensageminicial();
}

//apague o (/*) caso queira adicionar mais cartões autorizados
/*if (conteudo.substring(1) == "89 E3 D5 35") //ID de cartão 1
{
Serial.println("Ola Bruno !");
Serial.println();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Ola Bruno !");
lcd.setCursor(0,1);
lcd.print("Acesso liberado!");
delay(3000);
digitalWrite(rele, LOW); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(rele, HIGH); // turn the LED off by making the voltage LOW

mensageminicial();
}*/
if (conteudo.substring(1) == "A6 31 63 8B") //Coloque o ID do cartão não autorizado
{
Serial.println("Acesso negado !");
Serial.println();
tone(buzzer,500);
delay(250);
noTone(buzzer);
delay(100);
tone(buzzer,500);
delay(250);
noTone(buzzer);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("CARTAO NAO");
lcd.setCursor(3,1);
lcd.print("AUTORIZADO !");
delay(3000);
mensageminicial();
}
} 

void mensageminicial()
{
lcd.clear();
lcd.print(" Aproxime o seu");
lcd.setCursor(0,1);
lcd.print("cartao ao leitor");
}

Depois de enviar o código abra o Serial Monitor e aproxime algum cartão ou Tag RFID

Note que o programa vai lhe apresentar a ID do cartão que você aproximou, copie esse ID e cole no campo abaixo do programa, faça novamente o envio para a placa Arduíno:

Feito todos os passos você ja vai ter um sistema de controle de Acesso por RFID funcionando, para adicionar mais cartões autorizados adicione o código abaixo alterando o campo especifico da ID do cartão:

 if (conteudo.substring(1) == "Cole Aqui o ID Gerado" ) //ID de cartão x
{
Serial.println("Ola Bruno !");//edite a mensagem de boas vindas
Serial.println();
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Ola Bruno !"); //edite a mensagem de boas vindas
lcd.setCursor(0,1);
lcd.print("Acesso liberado!");
delay(3000);
digitalWrite(rele, LOW); // Muda o estado do rele
delay(500); // espera meio segundo
digitalWrite(rele, HIGH); // muda o estado do rele

mensageminicial();
}

Se quiser mais detalhes do projeto assista o vídeo abaixo e aproveita pra se inscrever no canal NerdKing!

O post termina aqui, deixe sua duvida ou sugestão aqui nos comentários e compartilhe a iniciativa NerdKing com seus amigos, tudo de bom pra vocês e até a próxima… 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba Algo Incrível Preencha seus dados

Preencha seus dados e receba algo incrível.
Não fique fora dessa!