Arduino

Módulo RFID: Como Usar No Arduino? [Controle De Acesso]

Olá desenvolvedor! Hoje traremos uma tecnologia cada vez mais explorada em nosso dia a dia, falaremos sobre o módulo de Identificação por Rádio Frequência, ou mais conhecido do inglês a sigla RFID (Radio Frequency Identification), aplicada amplamente em fechaduras de segurança de condomínios, em cartões de crédito pelo pagamento por aproximação e também na identificação de itens através de etiquetas.

Você vai encontrar neste artigo uma abordagem prática sobre o funcionamento desta tecnologia com o Arduino para desenvolver soluções e projetos utilizando o RFID.

Além do funcionamento básico, código e montagem do circuito, traremos um projeto especial onde construiremos um sistema de segurança que configure o Arduino para operar como um sistema de acesso.

👨‍💻 Comprar Agora – Kit Iniciante Arduino com Tutorial e + 20 Projetos

O que é o modulo RFID?

O módulo RFID é um sistema composto por uma antena (também chamada de transceptor) que recebe e armazena os dados de um token, que pode ser um cartão ou um bottom.

Veja a imagem a seguir que exemplifica o receptor e os tokens desse tipo de sistema.

Módulo RFID RC522, Bottom e Cartão RFID

O circuito, que compõem nosso RFID com o Arduino, armazena as informações que o bottom e o cartão possuem no momento em que eles são aproximados no módulo RC522.

Quais projetos utilizam o RFID?

Podemos utilizar o sistema de RFID em diversas situações que necessitam assegurar que só quem possua o token com ID correto consiga realizar a ação desejada.

Alguns exemplos dessa ação seriam:

  • o acesso à um armário com trava eletrônica;
  • o destravamento de portas e portões através do token;
  • a realização de pagamentos, e;
  • a identificação de produtos que possuam uma identificação RFID com esse formato.
Diversos códigos de barra que são elementos da tecnologia RFID

Neste artigo utilizaremos este módulo RFID RC522 junto com o Arduino para construir um sistema de acesso eletrônico, assim como os de apartamentos e condomínios fechados. Caso tenha dificuldade em criar projetos com Arduino, recomendo se matricular em algum curso de Arduino online e aprimorar suas habilidades sobre eletrônica e programação C/C++.

Você também vai se interessar:

Especificações técnicas do modulo RC522

Tensão de Operação2,5V à 3,3V
Corrente em Operação13mA à 26mA
Corrente em Standby10mA à 12mA
Frequência de Operação13,56 MHz
Frequência Máxima do SPI10 MHz
Frequência Máxima do I2C3,4 MHz
Distância Mínima de Operação50mm

Pinout do módulo

Pinout pinagem do módulo RFID RC522

Neste módulo existe a possibilidade de escolher o protocolo de comunicação utilizado aos quais são: I2C, SPI e também UART.

Na tabela a seguir vamos explicar de forma simples o que cada pino da comunicação SPI realiza. Veja:

PINODESCRIÇÃO
SS ou CS(Chip Select) seleciona o módulo ao qual deseja realizar uma comunicação
SCKOrigem do clock de sincronia entre os dispositivos
MOSIMaster Output Slave Input, é a saída de dados do Arduino
MISOMaster Input Slave Output, é a entrada de dados vindo do sensor para o Arduino.
IRQGera um pulso de interrupção para o Arduino quando o sistema detecta atividade.
GNDGround da alimentação
RSTReinicia o módulo quando inserido um pulso neste pino
VCC3.3V da alimentação

Montagem do RFID com Arduino

Para este primeiro teste a montagem é descrita pela imagem abaixo. Os pinos da ligação com Arduino também estão descritos na tabela a seguir.

RC522ARDUINO
GNDGND
VCC3V3
SSD10
SCKD13
MOSID11
MISOD12
RSTD9
Montagem elétrica do módulo RFID com o Arduino UNO

A execução deste código faz com que o Arduino aguarde até que um token RFID se aproxime do módulo RC522. Quando ele detectar um token que esteja habilitado, o Arduino exibirá na serial a mensagem de acesso permitido.

Para conseguir utilizar este módulo, antes é necessário realizar a instalação da biblioteca do RC522 através do gerenciador de bibliotecas do Arduino, a imagem a seguir ilustra o passo a ser seguido.

Biblioteca do RFID sendo acessada na IDE do Arduino

 Com o gerenciador aberto, na aba de pesquisa, digite RC522 e instale o primeiro resultado com o nome MRC522, como na imagem abaixo.

Biblioteca do RFID encontrada na IDE do Arduino

Com a biblioteca instalada, compile e execute o exemplo de programa abaixo.

//Inclui as bibliotecas do SPI e do RC522
#include <SPI.h>
#include <MFRC522.h>

//Definição dos pinos de conexão do projeto 
#define PINO_SS 10
#define PINO_RST 9

//Cria o item para configurar o módulo RC522
MFRC522 mfrc522(PINO_SS, PINO_RST); 

void setup() 
{
  // Inicializa a serial
  Serial.begin(9600);
  // Inicializa a comunicação SPI
  SPI.begin();
  // Inicializa o módulo MFRC522
  mfrc522.PCD_Init(); 
  
  // Printa mensagem na serial
  Serial.println("Sistema Inicializado: Aproxime o token");
}

void loop() 
{
  // Aguarda a aproximação do token
  if (!mfrc522.PICC_IsNewCardPresent()) return;
  // Seleciona qual token vai ser utilizado 
  if (!mfrc522.PICC_ReadCardSerial()) return;
  
  // Mostra UID do token na serial
  Serial.print("UID da tag:");

  //Cria uma variável vazia, do tipo string
  String conteudo= "";

  //Cria uma variável do tipo byte
  byte letra;
  
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     if(mfrc522.uid.uidByte[i] < 0x10){
        Serial.print(" 0");
     }
     else{
        Serial.print(" ");
     }
     // Printa a mensagem convertida em hexadecimal
     Serial.print(mfrc522.uid.uidByte[i], HEX);


     if(mfrc522.uid.uidByte[i] < 0x10){
        conteudo.concat(String(" 0"));
     }
     else{
        conteudo.concat(String(" "));
     }
     // Concatena a string convertida em hexadecimal
     conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  
  Serial.println();
  Serial.print(" Mensagem : ");
  
  //Coloca todas as letras da string em maiúscula
  conteudo.toUpperCase();
  
  // Verifica se o conteúdo do cartão coincide
  if (conteudo.substring(1) == "60 85 73 A5")
  {
    Serial.println("Acesso Permitido!");
  }
  delay(1000);
}

Projeto bônus

Projeto bônus realizado com o display LCD, Arduino e Módulo RFID todos os componentes eletrônicos em uma foto

Com o projeto bônus traremos a simulação de um sistema de segurança que permitirá o acesso de uma pessoa exclusivamente através do token configurado para o RFID.

Para isso utilizaremos o módulo RC522 junto com um display LCD 16×2 e um LED.

Caso você não saiba como utilizar o display LCD recomendo que você veja este outro artigo: Display LCD Com Arduino Uno: Como Controlar? aqui do site antes de prosseguir com este projeto do RFID Arduino.  

A proposta é a seguinte: quando o cartão com o ID correto se aproximar do módulo RFID RC522, o módulo deve detectar a atividade e reconhecer se é permitido o acesso deste cartão ou não.

Se sim for aceito o acesso, o componente deverá apresentar no display LCD 16×2 uma mensagem dizendo que a passagem está autorizada e deve acender um LED verde por 2 segundos.

Conexões da montagem bônus

Segue abaixo as conexões realizadas para o projeto bônus. Tente dar um zoom na imagem para visualizar melhor todos os fios e onde estão conectados nos componentes.

Esquema da montagem elétrica do projeto RFID com o Arduino e o Display LCD

Codigo da montagem bônus

Agora que já montou o circuito, copie e cole o código abaixo na IDE do Arduino e se caso ficar com dúvidas sobre o código, mesmo com a explicação dentro dele, é só deixar um comentário aqui abaixo do artigo que te ajudarei!

//Inclui as bibliotecas do RC522, SPI e display LCD
#include <SPI.h>
#include <MFRC522.h>
#include <LiquidCrystal.h>

//Definição dos pinos de conexão do projeto 
#define PINO_SS 10
#define PINO_RST 9
#define LED_PIN  8
#define RS  2
#define EN  3
#define D4  4
#define D5  5
#define D6  6
#define D7  7

//Cria o item para configurar o módulo RC522
MFRC522 mfrc522(PINO_SS, PINO_RST); 

// Inicializa a biblioteca associando os pinos definidos ao display LCD
LiquidCrystal lcd(RS, EN, D4, D5, D6, D7);

void setup() 
{
  // Inicializa a serial
  Serial.begin(9600);

  // Configura pino 8 do arduino como saída digital mantida em nivel baixo
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  
  // Inicializa a comunicação SPI
  SPI.begin();
  // Inicializa o módulo MFRC522
  mfrc522.PCD_Init(); 
  lcd.begin(16, 2);
  
  // Limpa todos os caracteres do display LCD
  lcd.clear();
  // Posiciona a localização do ponteiro na sexta coluna, primeira linha no display
  lcd.setCursor(1, 0); 
  // Apresenta a mensagem no display na primeira linha.
  lcd.print("SISTEMA DE");
  
  lcd.setCursor(2, 1);
  // Apresenta a mensagem no display na primeira segunda.
  lcd.print("SEGURANCA");
  delay(3000);
}

void loop() 
{
  lcd.clear();
  lcd.setCursor(0, 0); 
  lcd.print("APROXIME O TOKEN");
  // Aguarda a aproximação do token
  if (!mfrc522.PICC_IsNewCardPresent()) return;
  // Seleciona qual token vai ser utilizado 
  if (!mfrc522.PICC_ReadCardSerial()) return;
  
  //Cria uma variável vazia, do tipo string
  String conteudo= "";

  //Cria uma variável do tipo byte
  byte letra;
  
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     if(mfrc522.uid.uidByte[i] < 0x10){
        Serial.print(" 0");
     }
     else{
        Serial.print(" ");
     }
     // Printa a mensagem convertida em hexadecimal
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     Serial.print("   ");

     if(mfrc522.uid.uidByte[i] < 0x10){
        conteudo.concat(String(" 0"));
     }
     else{
        conteudo.concat(String(" "));
     }
     // Concatena a string convertida em hexadecimal
     conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
 
  //Coloca todas as letras da string em maiúscula
  conteudo.toUpperCase(); 
  // Verifica se o conteúdo do cartão coincide
  if (conteudo.substring(1) == "60 85 73 A5")
  {
      lcd.clear();
      lcd.setCursor(0, 0); 
      lcd.print("Acesso Permitido");
 
      // Acende o Led por 2 segundos 
      digitalWrite(LED_PIN,HIGH);
      delay(2000);
      digitalWrite(LED_PIN,LOW);
      lcd.clear();    
  }  
  
  delay(100);
}

Assim que tiver compilado o código e enviado para sua placa Arduino, você terá algo similar com o vídeo abaixo, veja:

Considerações finais

Como acabamos de verificar no código bônus, conseguimos liberar o acesso a um local e controlar um LED a partir do Modulo RC522.

Este LED é a generalização de uma gama de atuadores e dispositivos que podem ser controlados utilizando a mesma base que foi passada neste artigo.

Por exemplo, você pode substituir o LED Verde por travas eletromagnéticas, motores, atuadores, dentre outros componentes eletrônicos.

Agora basta você decidir qual é o propósito de seu projeto.

Veja mais projetos que utilizam o RFID no site oficial do Arduino.

Espero ter ajudado você a entender melhor sobre este módulo incrível.  

Obrigado e até a próxima!

Flávio Babos
Flávio é especialista em tecnologia, empreendedor e estudante de Engenharia Mecatrônica pela Universidade Federal de Uberlândia (UFU). Já desenvolveu diversos projetos de elétrica, eletrônica e atualmente dedica seu tempo em escolher os melhores produtos de tecnologia para ajudar sua audiência no processo de decisão de compra na internet.

Mosfet: Funcionamento, Tipos e Aplicações

Previous article

Diagrama Unifilar: Fundamentos e Exemplos Práticos

Next article

1 Comment

  1. Oi boa tarde
    Estou tentando utilizar o RFID no arduino uno, porém não está dando certo. Utilizei o exemplo colocado acima e segui o seu passo a passo, mas não deu certo. Poderia por favor me orientar?

Leave a reply

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