Skip to content

Controle de Acesso com RFID e Arduino

Antes de tudo, podemos dizer que o módulo RFID está se inserindo cada vez mais em nosso dia a dia: prédios com acesso através de cartões e tags, identificação de pessoas ou mercadorias, transportes públicos que usam o bilhete único. Portanto, fique até o final a aprenda como realizar o Controle de Acesso com RFID e Arduino.

Você pode se aprofundar nesse assunto fazendo parte do meu treinamento completo de Arduino através desse link

Afinal, o que significa a sigla RFID? Identificação por Radiofrequência. Sendo assim, esse módulo possui um chip e um leitor, no chip é gravada a informação de acesso, que será usada pelo leitor posteriormente.  Além disso, esse chip é muito pequeno, permitindo que você coloque ele em etiquetas adesivas, cartões e chaveiros.

Dessa forma, os dados são transferidos via ondas de rádio, ou seja, cada tag/cartão emite um conjunto de números, um código. Cada código é único, como veremos depois.

Controle de Acesso com RFID e Arduino
RFID

Agora, vamos para a prática! Em seguida, faremos um circuito básico utilizando dois LEDs, um Display com módulo I2C, a placa Arduino Uno e o módulo RFID. Mas, antes, não deixe de conferir o Treinamento Completo de Arduino!

Hardware: Controle de Acesso com RFID e Arduino

Primeiramente, vale lembrar que esse exemplo pode ser alterado para diferentes funções. Portanto, além dos LEDs, é possível incrementar o circuito RFID com o que se possa imaginar: acionamento de motores, relés, servo motor para simulação de uma cancela.

O primeiro passo é fazer as conexões. É importante lembrar que a alimentação é 3,3V! Para ligação dos outros pinos, acompanhe a tabela abaixo:

Pinos RFIDPinos Arduino
SDA10
SCK13
MOSI11
MISO12
IRQNão Conectado
GNDGND
RST9
3,3V3,3V

Continuando, conecte os LEDs nos pinos 2 e 3, coloque um resistor de 220 Ω em série com cada um deles. O LED verde indica que o acesso está liberado, o vermelho, que o acesso não foi permitido. Assim, o circuito na protoboard ficará da seguinte maneira:

Controle de Acesso com RFID e Arduino

Ademais, perceba que junto com o Display temos um módulo auxiliar: o I2C, seu uso no circuito não é essencial, entretanto, ele facilita muito as ligações. Caso você queira adquirir a sua tela de Display, clique aqui. Em seguida, vamos analisar o código.

Código

Primeiramente, precisamos instalar as bibliotecas, duas para o módulo RFID e outra para a comunicação com o Display. Essas bibliotecas são:

  • RFID: Clique aqui para baixar. Após isso, descompacte a pasta, altere o nome de rfid-master para MFRC522, copie e cole essa pasta dentro da pasta “libraries” do Arduino.

Para fazer isso, em seu computador, vá em:

  1. Documentos
  2. Arduino
  3. libraries

     Certamente, há uma outra biblioteca que utilizaremos: SPI, cuja função é fazer a comunicação entre o leitor RFID e o Arduino. Está biblioteca já vem inclusa na IDE.

Por fim, conseguimos construir os comandos para o controle de acesso:

//Bibliotecas para o Módulo RFID
#include <SPI.h>
#include <MFRC522.h>

//Biblioteca para o Display I2C
#include <LiquidCrystal_I2C.h>

#define endereco  0x27 // Endereços comuns: 0x27, 0x3F
#define colunas   16
#define linhas    2

LiquidCrystal_I2C lcd(endereco, colunas, linhas); // INSTANCIANDO OBJETOS

#define verde 2
#define vermelho 3
#define SS_PIN 10
#define RST_PIN 9

String tagID = "";
bool acessoliberado = false;


//ALTERE ESSES VALORES PARA OS DA SUA TAG/CARTÃO
String TagsLiberadas[] = {"ID1", "ID2"}; 
MFRC522 RFID(SS_PIN, RST_PIN);

void setup()
{
  Serial.begin(9600); // Comunicação Serial
  lcd.init();         // Inicia a Comunicação no Display
  lcd.backlight();    // Liga a Iluminação no Display
  SPI.begin();        // Comunicação SPI
  RFID.PCD_Init();    // Leitor RFID
  pinMode(verde, OUTPUT);
  pinMode(vermelho, OUTPUT);
  lcd.print(" Aproxime a TAG  ");

}

void loop() {
  // Verifica se existem tags/cartões
if (!RFID.PICC_IsNewCardPresent() || !RFID.PICC_ReadCardSerial() ) {
  return;
  }

  tagID = "";

  //Aqui será feita a coleta das tags pela função uid
  for (byte i = 0; i < RFID.uid.size; i++) {
    tagID.concat(String(RFID.uid.uidByte[i], HEX));
  }

//Aqui será feita a comparação das Tags analisadas com as cadastradas
  for (int i = 0; i < (sizeof(TagsLiberadas)/sizeof(String)); i++) {
    if (  tagID.equalsIgnoreCase(TagsLiberadas[i])  ) {
      acessoliberado = true; //Libera tag
    }
  }
  if (acessoliberado == true) {
    Liberado();
    Serial.println("Acesso Liberado para a TAG: " + tagID);
    lcd.clear();
    lcd.print(" Acesso Liberado  ");
    delay(5000);
    lcd.clear();
    lcd.print(" Aproxime a TAG  ");

  } 
    else {
    Negado();
    Serial.println("Acesso Negado para a TAG: " + tagID);
    lcd.clear();
    lcd.print(" Acesso Negado  ");
    delay(5000);
    lcd.clear();
    lcd.print(" Aproxime a TAG  ");
  }
  delay(1000);
}

void Liberado() {
  int avisos = 1;
  for (int j = 0; j < avisos; j++) {
    digitalWrite(verde, HIGH);
    delay(3000);
    digitalWrite(verde, LOW);
    delay(1000);
  }
  acessoliberado = false;
}

void Negado() {
  int avisos = 2;
  for (int j = 0; j < avisos; j++) {

    digitalWrite(vermelho, HIGH);
    delay(3000);
    digitalWrite(vermelho, LOW);
    delay(1000);
  }
}

Nesse sentido, vamos agora, analisar o funcionamento. Após carregar o código para a placa, aproxime a TAG e o Cartão ao Leitor, você provavelmente verá que o acesso está negado. Isso acontece pois suas chaves ainda não foram cadastradas.

Portanto, para cadastrá-las, abra o monitor serial na velocidade 9600, veja os valores que aparecem e copie eles no vetor TagsLiberadas do código:

Não esqueça de conferir o ARDUHACK: o melhor método para aprender Arduino.

Por outro lado, existem diversas maneira de utilizar o leitor RFID. Sendo assim, aqui utilizamos apenas duas chaves: a TAG e o Cartão, porém, é possível acrescentar várias outras alterando o vetor do código.

Você pode se aprofundar nesse assunto fazendo parte do meu treinamento completo de Arduino através desse link

Continue acompanhando nas redes sociais:

Instagram: @lobodarobotica

Facebook: /lobodarobotica

YouTube: /lobodarobotica

plugins premium WordPress

Semana da Automação Com Arduino

Se Cadastre e Receba Acesso a 3 aulas gratuitas na Semana da Automação com Arduino