fbpx

Tutorial – Controle de Acesso via RFID e Arduino

Olá Pessoas! Nesse tutorial do Blog da Robótica será explicado como realizar um projeto ou sistema para controle de acesso utilizando a tecnologia RFID (módulo RC522) e o Arduino UNO. Espero que gostem da metodologia aplicada no vídeo.

Lista de materiais necessários:
Ou Kit completo com tudo:
Downloads:
  • Arquivos utilizados no vídeo: link1
Vídeo-aula:
Ligações entre o Módulo RFID RC522 e Arduino Uno:
Esquemático Geral das Ligações (Esquemático Corrigido em relação ao apresentado no vídeo):
Código-Fonte:
/*
-------- CONTROLE DE ACESSO VIA RFID ------------
=================================================
==   BLOG DA ROBOTICA - www.blogdarobotica.com ==
=================================================
Autor: Kleber Bastos
E-mail: contato@blogdarobotica.com
Fanpage: facebook.com/blogdarobotica
YouTube: youtube.com/user/blogdarobotica
*/
//Bibliotecas
#include 
#include 
//Pinos
#define LED_VERDE 6
#define LED_VERMELHO 7
#define BUZZER 8
#define SS_PIN 10
#define RST_PIN 9
String IDtag = ""; //Variável que armazenará o ID da Tag
bool Permitido = false; //Variável que verifica a permissão 
//Vetor responsável por armazenar os ID's das Tag's cadastradas
String TagsCadastradas[] = {"ID_1", 
                            "ID_2",
                            "ID_3"};
MFRC522 LeitorRFID(SS_PIN, RST_PIN);    // Cria uma nova instância para o leitor e passa os pinos como parâmetro
void setup() {
        Serial.begin(9600);             // Inicializa a comunicação Serial
        SPI.begin();                    // Inicializa comunicacao SPI 
        LeitorRFID.PCD_Init();          // Inicializa o leitor RFID
        pinMode(LED_VERDE, OUTPUT);     // Declara o pino do led verde como saída
        pinMode(LED_VERMELHO, OUTPUT);  // Declara o pino do led vermelho como saída
        pinMode(BUZZER, OUTPUT);        // Declara o pino do buzzer como saída
}
void loop() {  
  Leitura();  //Chama a função responsável por fazer a leitura das Tag's
}
void Leitura(){
        IDtag = ""; //Inicialmente IDtag deve estar vazia.
        
        // Verifica se existe uma Tag presente
        if ( !LeitorRFID.PICC_IsNewCardPresent() || !LeitorRFID.PICC_ReadCardSerial() ) {
            delay(50);
            return;
        }
        
        // Pega o ID da Tag através da função LeitorRFID.uid e Armazena o ID na variável IDtag        
        for (byte i = 0; i < LeitorRFID.uid.size; i++) {        
            IDtag.concat(String(LeitorRFID.uid.uidByte[i], HEX));
        }        
        
        //Compara o valor do ID lido com os IDs armazenados no vetor TagsCadastradas[]
        for (int i = 0; i < (sizeof(TagsCadastradas)/sizeof(String)); i++) {
          if(  IDtag.equalsIgnoreCase(TagsCadastradas[i])  ){
              Permitido = true; //Variável Permitido assume valor verdadeiro caso o ID Lido esteja cadastrado
          }
        }       
        if(Permitido == true) acessoLiberado(); //Se a variável Permitido for verdadeira será chamada a função acessoLiberado()        
        else acessoNegado(); //Se não será chamada a função acessoNegado()
        delay(2000); //aguarda 2 segundos para efetuar uma nova leitura
}
void acessoLiberado(){
  Serial.println("Tag Cadastrada: " + IDtag); //Exibe a mensagem "Tag Cadastrada" e o ID da tag não cadastrada
    efeitoPermitido();  //Chama a função efeitoPermitido()
    Permitido = false;  //Seta a variável Permitido como false novamente
}
void acessoNegado(){
  Serial.println("Tag NAO Cadastrada: " + IDtag); //Exibe a mensagem "Tag NAO Cadastrada" e o ID da tag cadastrada
  efeitoNegado(); //Chama a função efeitoNegado()
}
void efeitoPermitido(){  
  int qtd_bips = 2; //definindo a quantidade de bips
  for(int j=0; j

Não funcionou? Tem dúvidas? Deixa abaixo, assim que possível nós iremos responder.

Obrigado!

Atenciosamente, Kleber Bastos.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.