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.
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.
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:
- Sensor Ultrassônico com Arduino: Como Controlar?
- Servo Motor Arduino: Guia Prático De Uso
- PWM Arduino: Tutorial Completo (+2 Exemplos Práticos)
Especificações técnicas do modulo RC522
Tensão de Operação | 2,5V à 3,3V |
Corrente em Operação | 13mA à 26mA |
Corrente em Standby | 10mA à 12mA |
Frequência de Operação | 13,56 MHz |
Frequência Máxima do SPI | 10 MHz |
Frequência Máxima do I2C | 3,4 MHz |
Distância Mínima de Operação | 50mm |
Pinout do módulo
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:
PINO | DESCRIÇÃO |
SS ou CS | (Chip Select) seleciona o módulo ao qual deseja realizar uma comunicação |
SCK | Origem do clock de sincronia entre os dispositivos |
MOSI | Master Output Slave Input, é a saída de dados do Arduino |
MISO | Master Input Slave Output, é a entrada de dados vindo do sensor para o Arduino. |
IRQ | Gera um pulso de interrupção para o Arduino quando o sistema detecta atividade. |
GND | Ground da alimentação |
RST | Reinicia o módulo quando inserido um pulso neste pino |
VCC | 3.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.
RC522 | ARDUINO |
GND | GND |
VCC | 3V3 |
SS | D10 |
SCK | D13 |
MOSI | D11 |
MISO | D12 |
RST | D9 |
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.
Com o gerenciador aberto, na aba de pesquisa, digite RC522 e instale o primeiro resultado com o nome MRC522, como na imagem abaixo.
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
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.
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!
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?