
Neste texto apresentarei um protótipo com o módulo RFID MFRC522 para controle de acesso. O programa apresentado poderá ser adaptado para as mais diversas situações, desde automações residenciais à projetos de controle de acesso mais complexos.
Contents
O Módulo RFID MFRC522
A sigla RFID significa Radio Frequency Identification ou Identificação por Radiofrequência. Esta tecnologia utiliza sinais de rádio frequência e uma etiqueta (tag) para leitura e gravação de dados.
O módulo RFID MFRC522 é apresentado na Figura 1 com todos seus componentes (tags e barras de pinos).

Necessitamos conhecer os pinos de conexão do módulo ao Arduino, e neste caso muita atenção pois o módulo RFID é alimentado com 3,3 V. A Figura 2 apresenta o módulo com seus pinos de conexão.

Em conjunto com o Arduino o módulo RFID utiliza a interface SPI para comunicação com o microcontrolador por meio dos pinos digitais de 9 a 13. Além disso, é necessário baixar a biblioteca MFRC522, que utilizaremos para facilitar a programação que pode ser baixada aqui.
Componentes Necessários Para Montagem
Antes de apresentar o esquema de conexão do módulo ao Arduino, vamos listar os materiais necessários para realizar esta montagem.

- Placa Arduino UNO;
- Módulo RFID MFRC522;
- 2 LEDs (vermelho e verde);
- 2 Resistores de 330 Ohms;
- Protoboard;
- Fios e jumpers para conexões.
Os componentes acima podem ser adquiridos na loja Silvatrônics, com ótimo custo-benefício.
Com todos os componentes necessários em mãos, podemos prosseguir e elaborar um esquema de conexão do módulo à placa Arduino.
Esquema de Conexão do Módulo ao Arduino
Podemos utilizar o software Fritzing e elaborar um esquema de conexão do módulo RFID ao Arduino. Nesse protótipo utilizaremos LED’s para indicar se o acesso foi permitido ou negado. Assim, com este exemplo podemos imaginar e projetar um sistema que utilize dos módulos RFID para controle de acesso ou qualquer outra situação que somente pessoas com a tag possa ter acesso.
O esquema de montagem elaborado pode ser visto na Figura 3, note que os pinos do módulo são conectados conforme apresentado na Figura 2.

Agora que temos um esquema de montagem, podemos elaborar um programa para nosso protótipo.
Veja Também:
O que é Arduino ? Tudo oque você precisa saber.
Curso de Arduino – Do zero ao avançado
Programa Para Controle de Acesso com Módulo RFID
Como mencionado anteriormente é necessário fazer o download da biblioteca MFRC522 para nos auxiliar na comunicação do Arduino com o módulo RFID.
O objetivo deste programa é ler a tag e verificar se ela possui o ID correspondente ao armazenado no código. Caso a tag seja reconhecida o LED verde se acende por determinado tempo e logo após se apaga. Porém, se a tag não for reconhecida o LED vermelho pisca por um breve tempo e logo após se apaga. E assim, o programa funciona neste loop.
O programa pode ser conferido abaixo.
// TÍTULO : Programa Para Controle de Acesso com Módulo RFID
// Autor : Ângelo Meneguini
#include <SPI.h> // Incluimos a biblioteca SPI
#include <MFRC522.h> // Incluimos a biblioteca MFRC522 para o módulo RFID
#define SS_PIN 10 // Definindo o pino para conexão do módulo RFID
#define RST_PIN 9 // Definindo o pino para conexão do módulo RFID
MFRC522 mfrc522(SS_PIN, RST_PIN); // Informa no programa quais os pinos de comunicação ao módulo
#define led_verde 3 // Define o pino 3 para conectarmos o LED verde (acesso liberado)
#define led_vermelho 2 // Define o pino 2 para conectarmos o LED vermelho (acesso negado)
char st[20]; // Cria um espaço na memória para armazenar a string
void setup()
{
pinMode(led_verde, OUTPUT); // Configura o pino que o LED verde está conectado como saída
pinMode(led_vermelho, OUTPUT); // Configura o pino que o LED vermelho está conectado com saída
Serial.begin(9600); // Inicia a comunicação serial
SPI.begin(); // Inicia a comunicação SPI
mfrc522.PCD_Init(); // Inicializa a biblioteca MFRC522
Serial.println(“Aproxime o cartao ao leitor…”); // Apresenta a frase na janela serial
Serial.println();
} // end setup()
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent()) // Aguarda o cartão ser aproximado
{
return;
} // end if()
if ( ! mfrc522.PICC_ReadCardSerial()) // Seleciona um dos cartões
{
return;
} // end if()
Serial.println(“UID da tag :”); // Apresenta o ID do cartão na comunicação serial
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));
} // end for()
Serial.println();
conteudo.toUpperCase();
if (conteudo.substring(1) == “65 5F 48 BE”) // Verifica se o cartão 1 foi lido
{
digitalWrite(led_verde, HIGH); // Acende o LED verde
Serial.println(“Cartao 1 – Acesso liberado!”); // Apresenta na serial que o acesso foi liberado
Serial.println();
delay(3000); // Espera o 3 segundos mantendo o LED aceso
digitalWrite(led_verde, LOW); // Apaga o LED verde
} // end for()
if (conteudo.substring(1) == “E5 75 23 1C”) // Verifica se o cartão 2 foi lido
{
Serial.println(“Cartao 2 – Acesso negado!!”); // Apresenta que o acesso foi negado
Serial.println();
// Pisca o led vermelho
for (int i= 1; i<5 ; i++) // Pisca o LED vermelho
{
digitalWrite(led_vermelho, HIGH);
delay(200);
digitalWrite(led_vermelho, LOW);
delay(200);
} // end for()
} // end for()
delay(1000); // Espera 1 segundo
} // end loop()
// TÍTULO : Programa Para Controle de Acesso com Módulo RFID
// Autor : Ângelo Meneguini
#include <SPI.h> // Incluimos a biblioteca SPI
#include <MFRC522.h> // Incluimos a biblioteca MFRC522 para o módulo RFID
#define SS_PIN 10 // Definindo o pino para conexão do módulo RFID
#define RST_PIN 9 // Definindo o pino para conexão do módulo RFID
MFRC522 mfrc522(SS_PIN, RST_PIN); // Informa no programa quais os pinos de comunicação ao módulo
#define led_verde 3 // Define o pino 3 para conectarmos o LED verde (acesso liberado)
#define led_vermelho 2 // Define o pino 2 para conectarmos o LED vermelho (acesso negado)
char st[20]; // Cria um espaço na memória para armazenar a string
void setup()
{
pinMode(led_verde, OUTPUT); // Configura o pino que o LED verde está conectado como saída
pinMode(led_vermelho, OUTPUT); // Configura o pino que o LED vermelho está conectado com saída
Serial.begin(9600); // Inicia a comunicação serial
SPI.begin(); // Inicia a comunicação SPI
mfrc522.PCD_Init(); // Inicializa a biblioteca MFRC522
Serial.println(“Aproxime o cartao ao leitor…”); // Apresenta a frase na janela serial
Serial.println();
} // end setup()
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent()) // Aguarda o cartão ser aproximado
{
return;
} // end if()
if ( ! mfrc522.PICC_ReadCardSerial()) // Seleciona um dos cartões
{
return;
} // end if()
Serial.println(“UID da tag :”); // Apresenta o ID do cartão na comunicação serial
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));
} // end for()
Serial.println();
conteudo.toUpperCase();
if (conteudo.substring(1) == “65 5F 48 BE”) // Verifica se o cartão 1 foi lido
{
digitalWrite(led_verde, HIGH); // Acende o LED verde
Serial.println(“Cartao 1 – Acesso liberado!”); // Apresenta na serial que o acesso foi liberado
Serial.println();
delay(3000); // Espera o 3 segundos mantendo o LED aceso
digitalWrite(led_verde, LOW); // Apaga o LED verde
} // end for()
if (conteudo.substring(1) == “E5 75 23 1C”) // Verifica se o cartão 2 foi lido
{
Serial.println(“Cartao 2 – Acesso negado!!”); // Apresenta que o acesso foi negado
Serial.println();
// Pisca o led vermelho
for (int i= 1; i<5 ; i++) // Pisca o LED vermelho
{
digitalWrite(led_vermelho, HIGH);
delay(200);
digitalWrite(led_vermelho, LOW);
delay(200);
} // end for()
} // end for()
delay(1000); // Espera 1 segundo
} // end loop()
Para utilizar o programa acima com seu módulo RFID, basta realizar a montagem conforme o esquemático apresentado e aproximar a tag ao leitor RFID, o código que será apresentado no Monitor Serial deve ser inserido no programa substituindo o código: 65 5F 48 BE. Na linha onde se encontra a seguinte condição:
if (conteudo.substring(1) == "65 5F 48 BE")
Feito a substituição do ID, compile e verifique se o Arduino identifica a tag cadastrada, onde o LED verde deverá acender. Faça o mesmo procedimento para o cartão no segundo comando.
Após compilar o programa e realizar as substituições de ID, basta agora testarmos o funcionamento do protótipo. Você ainda pode baixar o programa pelo nosso GitHub, onde você encontrará juntamente outros programas para Arduino.
Teste do Protótipo de Controle de Acesso
Após realizar a montagem conforme indicado no esquemático da Figura 3 e compilar o programa para o Arduino, devemos então testar se tudo que foi apresentado funciona como proposto.
A seguir podemos conferir duas imagens da montagem realizada nas Figuras 4 e 5.


Perceba que é tudo muito simples, apenas alguns fios para ligações e temos um protótipo para controle de acesso. Durante a leitura dos cartões, o Arduino envia pelo Monitor Serial o ID do cartão e a informação se o acesso foi liberado ou negado, conforme mostrado na Figura 6.

Para complementar, gravei um pequeno vídeo apresentando o funcionamento da montagem.
Podemos conferir no vídeo que o leitor RFID funciona muito bem e será futuramente alvo de novos projetos.
Considerações Finais
Neste texto foi apresentado um programa para ler o cartão RFID e acender ou piscar um LED indicando acesso permitido ou negado.
As aplicações que poderemos utilizar este leitor RFID são inúmeras, como por exemplo: controlar uma porta, ligar lâmpadas, gerar sinais, acionar um motor, etc. Isso significa que este programa pode ser adaptado e utilizado de diferentes formas.
Espero que tenha gostado deste protótipo utilizando o módulo RFID, em breve teremos mais projetos utilizando este protótipo, aumentando o nível de dificuldade.
Obrigado pela leitura, e até o próximo artigo!
Eu queria adicionar uma fechadura para portas , após o acesso ser liberado a fechadura ser liberada , ai e preciso adicionar mais códigos . Teria como me ajudar ?