Notícias & Blog

Controle de Acesso usando Leitor RFID com Arduino
Por Agosto 14, 2018 0 Comentário

Controle de Acesso usando Leitor RFID com Arduino

leitor RFID 01

As etiquetas (ou tags) RFID, podem conter vários dados sobre o proprietário do cartão, como nome e endereço e, no caso de produtos, informações sobre procedência e data de validade, apenas para citar alguns exemplos.

Como são compostas apenas por um pequeno circuito, as tags RFID podem ser embutidas facilmente em vários objetos, nos mais variados tamanhos e formatos. No caso do Kit Leitor Rfid Mfrc522 Mifare  (imagem acima), temos duas tags: uma no formato de chaveiro, outra em formato de cartão.

leitor RFID 02

Cada etiqueta/tag do leitor RFID tem a sua própria identificação (UID), e é com essa identificação que vamos montar um controle de acesso que irá ler o UID do cartão e exibir as informações de acesso num display LCD 16×2. Com pequenas alterações no programa é possível acionar as outras portas do Arduino e ligar motores, sensores, luzes e outros dispositivos.

Pinagem Leitor RFID:

O leitor RFID tem 8 pinos que seguem a seguinte sequência de ligação. Atenção à tensão de alimentação, que neste caso é de 3.3 volts

  • Pino SDA ligado na porta 10 do Arduino
  • Pino SCK ligado na porta 13 do Arduino
  • Pino MOSI ligado na porta 11 do Arduino
  • Pino MISO ligado na porta 12 do Arduino
  • Pino NC – Não conectado
  • Pino GND  ligado no pino GND do Arduino
  • Pino RST ligado na porta 9 do Arduino
  • Pino 3.3 – ligado ao pino 3.3 V do Arduino

Montagem Leitor RFID com Arduino:

Utilizamos no circuito o Display 16×2 HD44780 com ligação semelhante ao do artigo Mostrando informações de temperatura no LCD 16×2 com o DHT11. Trocamos apenas os pinos 12 do Arduino Uno pelo pino 6, e o 11 pelo 7, pois os mesmos já estão sendo utilizados pelo leitor RFID. O potenciômetro é utilizado para controlar o contraste do LCD, e no circuito foi usado um de 10 K :

Circuito RFID - LCD 16x2

Programando Arduino com Leitor RFID:

Para o programa, baixe a biblioteca MFRC522 nesse link. Descompacte o arquivo e renomeie a pasta rfid-master para MFRC522, colocando-a dentro da pasta LIBRARIES da IDE do seu Arduino.

O programa exibe na tela mensagens referentes ao cartão utilizado, sendo que no nosso caso, o display apresenta mensagem de “Acesso Liberado” para a tag no estilo chaveiro, e “Acesso Negado” para a tag no estilo cartão.

Adapte o programa às tags que você possui, alterando as linhas com “UID 1 – Chaveiro” e “UID 2 – Cartao” (Linhas 54 e 67), lembrando que o formato da UID deve ser mantido (XX YY ZZ WW).

Para descobrir o número da tag do seu dispositivo, aproxime-o do leitor RFID e verifique o serial monitor :

RFID - Identifcação tag

//Programa : RFID - Controle de Acesso leitor RFID


#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);	// Create MFRC522 instance.

LiquidCrystal lcd(6, 7, 5, 4, 3, 2); 

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();
  //Define o número de colunas e linhas do LCD:  
  lcd.begin(16, 2);  
  mensageminicial();
}

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) == "ED 78 03 CA") //UID 1 - Chaveiro
  {
    Serial.println("Ola FILIPEFLOP !");
    Serial.println();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Ola FILIPEFLOP !");
    lcd.setCursor(0,1);
    lcd.print("Acesso liberado!");
    delay(3000);
    mensageminicial();
  }

  if (conteudo.substring(1) == "BD 9B 06 7D") //UID 2 - Cartao
  {
    Serial.println("Ola Cartao !");
    Serial.println();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Ola Cartao !");
    lcd.setCursor(0,1);
    lcd.print("Acesso Negado !");
    delay(3000);
    mensageminicial();
  }
} 

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

Deixe o seu comentário