Monte um leitor de cartões RFID que valida o acesso na hora: aproxime uma tag autorizada e o LED verde acende; uma tag desconhecida acende o vermelho. É a base de fechaduras eletrônicas, catracas, controle de ponto e sistemas de segurança.

O módulo RC522 lê a identificação única (UID) de cartões e tags RFID por aproximação, usando radiofrequência a 13,56 MHz. Cada cartão tem um UID diferente e impossível de duplicar facilmente — é o mesmo princípio dos crachás de empresa e cartões de transporte. O Arduino lê esse UID, compara com uma lista de cartões autorizados que você define no código e decide: se estiver na lista, acende o LED verde; se não, o vermelho. A comunicação entre o Arduino e o RC522 é feita por SPI, por isso ele usa vários fios.
Todos os componentes disponíveis na A2 Robotics — clique em cada item para comprar
Arduino Uno R3
1 unidade
Módulo RFID RC522 (com cartão e tag)
1 kit
LED difuso 5mm verde
1 unidade
LED difuso 5mm vermelho
1 unidade
Resistor 330Ω (1/4W)
2 unidades
Protoboard
1 unidade
Jumpers (cabos de ligação)
1 kit
| Pino do RC522 | Ligação no Arduino |
|---|---|
| SDA (SS) | Pino 10 |
| SCK | Pino 13 |
| MOSI | Pino 11 |
| MISO | Pino 12 |
| RST | Pino 9 |
| 3.3V | 3.3V (nunca 5V!) |
| GND | GND |
| LED verde / vermelho | Pinos 8 / 7 (com resistor 330Ω) |
Este projeto usa a biblioteca MFRC522. Na IDE do Arduino, vá em Ferramentas → Gerenciar Bibliotecas, procure por "MFRC522" (a de GithubCommunity) e clique em Instalar. Sem ela, o código não compila.
Cada cartão tem um código único (UID). Antes de montar a validação, você precisa descobrir o UID dos seus cartões. Carregue o código abaixo, abra o Monitor Serial (Ferramentas → Monitor Serial, a 9600 bauds) e aproxime cada cartão: o UID aparecerá na tela. Anote-os.
// Passo 1 — Descobrir o UID dos cartões — A2 Robotics #include <SPI.h> #include <MFRC522.h> #define PINO_SS 10 #define PINO_RST 9 MFRC522 leitor(PINO_SS, PINO_RST); void setup() { Serial.begin(9600); SPI.begin(); leitor.PCD_Init(); Serial.println("Aproxime um cartao do leitor..."); } void loop() { if (!leitor.PICC_IsNewCardPresent()) return; if (!leitor.PICC_ReadCardSerial()) return; String uid = lerUID(); Serial.print("UID do cartao: "); Serial.println(uid); leitor.PICC_HaltA(); } // Monta o UID como texto em maiusculas String lerUID() { String uid = ""; for (byte i = 0; i < leitor.uid.size; i++) { if (leitor.uid.uidByte[i] < 0x10) uid += "0"; uid += String(leitor.uid.uidByte[i], HEX); } uid.toUpperCase(); return uid; }
Agora, com os UIDs anotados, coloque-os na lista autorizados do código abaixo. Ao aproximar um cartão da lista, o LED verde acende; qualquer outro cartão acende o vermelho.
// Controle de acesso RFID — A2 Robotics #include <SPI.h> #include <MFRC522.h> #define PINO_SS 10 #define PINO_RST 9 #define LED_VERDE 8 #define LED_VERMELHO 7 MFRC522 leitor(PINO_SS, PINO_RST); // Coloque aqui os UIDs autorizados (descobertos no Passo 1) String autorizados[] = { "A3D4F231", "12AB34CD" }; const int totalAutorizados = 2; void setup() { pinMode(LED_VERDE, OUTPUT); pinMode(LED_VERMELHO, OUTPUT); Serial.begin(9600); SPI.begin(); leitor.PCD_Init(); Serial.println("Sistema pronto. Aproxime seu cartao."); } void loop() { if (!leitor.PICC_IsNewCardPresent()) return; if (!leitor.PICC_ReadCardSerial()) return; String uid = lerUID(); Serial.print("Cartao lido: "); Serial.println(uid); if (estaAutorizado(uid)) { Serial.println("ACESSO LIBERADO"); piscar(LED_VERDE); } else { Serial.println("ACESSO NEGADO"); piscar(LED_VERMELHO); } leitor.PICC_HaltA(); } // Verifica se o UID está na lista de autorizados bool estaAutorizado(String uid) { for (int i = 0; i < totalAutorizados; i++) { if (autorizados[i] == uid) return true; } return false; } // Acende um LED por 1 segundo void piscar(int pino) { digitalWrite(pino, HIGH); delay(1000); digitalWrite(pino, LOW); } // Monta o UID como texto em maiusculas String lerUID() { String uid = ""; for (byte i = 0; i < leitor.uid.size; i++) { if (leitor.uid.uidByte[i] < 0x10) uid += "0"; uid += String(leitor.uid.uidByte[i], HEX); } uid.toUpperCase(); return uid; }
Siga o mapa de pinos: SDA→10, SCK→13, MOSI→11, MISO→12, RST→9. Alimente com 3.3V e GND. Lembre: nunca use 5V no RC522.
LED verde no pino 8 e vermelho no pino 7, cada um com um resistor de 330Ω em série.
Na IDE do Arduino, em Gerenciar Bibliotecas, procure e instale a MFRC522.
Carregue o código do Passo 1, abra o Monitor Serial e aproxime seus cartões para anotar o UID de cada um.
Coloque os UIDs autorizados no código do Passo 2, carregue no Arduino e teste: cartão autorizado acende verde, os demais acendem vermelho.
Com a validação funcionando, você pode evoluir o projeto: trocar os LEDs por uma fechadura solenoide ou trava elétrica para uma porta real, adicionar um buzzer de confirmação, um display LCD mostrando "Bem-vindo", ou registrar cada acesso com data e hora. É o ponto de partida para um sistema de segurança completo.