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.

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 RFID | Pinos Arduino |
SDA | 10 |
SCK | 13 |
MOSI | 11 |
MISO | 12 |
IRQ | Não Conectado |
GND | GND |
RST | 9 |
3,3V | 3,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:


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:
- Documentos
- Arduino
- libraries
- Display I2C: Clique aqui para baixar
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