Guia Completo de RFID com Arduino: Teoria, Montagem e Código

RFID (Identificação por Radiofrequência) é uma tecnologia que permite a identificação automática de objetos via ondas de rádio. Integrada ao Arduino, possibilita a criação de sistemas de controle de acesso, automação e segurança de baixo custo. Este guia combina teoria, montagem prática, programaçãoKit de experimentos científicos para estudantes usando ArduinoKit de experimentos científicos para estudantes usando ArduinoDescubra 10 projetos interdisciplinares com Arduino, kits acessíveis e aplicações em ciências, desenvolvendo habilidades e promovendo a educação inovadora. e aplicações reais para você dominar o uso do módulo RC522 e desenvolver projetos robustos.

📌 Tabela de Conteúdo🔗

Componentes Necessários🔗

ComponenteEspecificaçõesFunção no Projeto
Arduino Uno/NanoMicrocontrolador ATmega328PProcessamento central do sistema
Módulo RFID RC522Frequência: 13.56 MHzLeitura de tags RFID
Tags RFIDTipo MIFARE Classic 1KIdentificação única
LED Vermelho e Verde5mm, 20mAIndicadores de acesso liberado/negado
Buzzer Ativo5V, frequência ajustávelAlerta sonoro
Resistor 220Ω1/4WLimitar corrente dos LEDs
Fios JumpersMacho-Macho, Macho-FêmeaConexões entre componentes
Display LCD 16x2OpcionalExibir mensagens personalizadas

Funcionamento do RFID: Teoria Aplicada🔗

O sistema RFID consiste em dois elementos:

1. Leitor (RC522): Emite campo eletromagnético e comunica-se com as tags.

2. Tag (Cartão/Chaveiro): Armazena um UID (Identificador Único) em um chip passivo.

📊 Detalhes Técnicos

Montagem do Circuito🔗

Conexões do Módulo RC522

Pino RC522Pino ArduinoFunção
SDA10Comunicação SPI
SCK13Clock SPI
MOSI11Transmissão de dados
MISO12Recebimento de dados
GNDGNDTerra
RST9Reset do módulo
3.3V3.3VAlimentação

Atenção: O módulo RC522 opera com 3.3V. Não conecte-o ao 5V do ArduinoO que é Arduino: Conceito e AplicaçõesO que é Arduino: Conceito e AplicaçõesDescubra como o Arduino transforma ideias em projetos inovadores com exemplos práticos de códigos, sensores e LEDs para iniciantes e makers. para evitar danos.

LEDs, Buzzer e Display LCD (Opcional)

Programação do Sistema🔗

Bibliotecas e Configurações

#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
#define LED_VERDE 7
#define LED_VERMELHO 6
#define BUZZER 5
MFRC522 leitorRFID(SS_PIN, RST_PIN);
// UIDs autorizados (exemplo)
byte uidAutorizado1[] = {0xDE, 0xAD, 0xBE, 0xEF};
byte uidAutorizado2[] = {0x12, 0x34, 0x56, 0x78};

Setup e Loop Principal

void setup() {
  Serial.begin(9600);
  SPI.begin();
  leitorRFID.PCD_Init();
  pinMode(LED_VERDE, OUTPUT);
  pinMode(LED_VERMELHO, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  Serial.println("Aproxime a tag RFID...");
}
void loop() {
  if (!leitorRFID.PICC_IsNewCardPresent() || !leitorRFID.PICC_ReadCardSerial()) return;
  bool acessoLiberado = verificarUID(leitorRFID.uid.uidByte);
  if (acessoLiberado) {
    digitalWrite(LED_VERDE, HIGH);
    tone(BUZZER, 1000, 200);
    Serial.println("Acesso liberado!");
  } else {
    digitalWrite(LED_VERMELHO, HIGH);
    tone(BUZZER, 300, 1000);
    Serial.println("Acesso negado!");
  }
  delay(2000);
  resetarSistema();
}
bool verificarUID(byte *uid) {
  for (byte i = 0; i < 4; i++) {
    if (uid[i] != uidAutorizado1[i] && uid[i] != uidAutorizado2[i]) return false;
  }
  return true;
}
void resetarSistema() {
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_VERMELHO, LOW);
  leitorRFID.PICC_HaltA();
}

Explicação do Código

Teste e Calibração🔗

Problemas Comuns e Soluções

1. Tag não detectada:

  • Aproxime a tag lentamente.
  • Verifique a integridade da antena do RC522.

2. Falsos positivos/negativos:

3. Interferência Eletromagnética:

  • Afaste o módulo de fontes de ruído (motores, fontes chaveadas).

Validação Prática

1. Abra o Serial MonitorO que é Arduino: Conceito e AplicaçõesO que é Arduino: Conceito e AplicaçõesDescubra como o Arduino transforma ideias em projetos inovadores com exemplos práticos de códigos, sensores e LEDs para iniciantes e makers. (9600 bps).

2. Aproxime uma tag: o UID será exibido.

3. Se autorizada, o LED verde acenderá e o buzzerSimulador de efeitos climáticos controlado por ArduinoSimulador de efeitos climáticos controlado por ArduinoAprenda a criar um simulador climático com Arduino e sensores, replicando chuva, vento, relâmpagos e auroras. Ideal para educação, IoT e arte interativa. emitirá um som agudo.

Aplicações no Mundo Real🔗

1. Controle de Acesso em Empresas:

2. Gestão de Inventário:

3. Automação ResidencialO que é Arduino: Conceito e AplicaçõesO que é Arduino: Conceito e AplicaçõesDescubra como o Arduino transforma ideias em projetos inovadores com exemplos práticos de códigos, sensores e LEDs para iniciantes e makers.:

💡 Dica de SegurançaKit de experimentos científicos para estudantes usando ArduinoKit de experimentos científicos para estudantes usando ArduinoDescubra 10 projetos interdisciplinares com Arduino, kits acessíveis e aplicações em ciências, desenvolvendo habilidades e promovendo a educação inovadora.: Implemente autenticação em duas etapas (RFID + senha numérica via teclado matricial).

Código Completo🔗

#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
#define LED_VERDE 7
#define LED_VERMELHO 6
#define BUZZER 5
MFRC522 leitorRFID(SS_PIN, RST_PIN);
// UIDs autorizados (substitua pelos seus)
byte uidAutorizado1[] = {0xDE, 0xAD, 0xBE, 0xEF};
byte uidAutorizado2[] = {0x12, 0x34, 0x56, 0x78};
void setup() {
  Serial.begin(9600);
  SPI.begin();
  leitorRFID.PCD_Init();
  pinMode(LED_VERDE, OUTPUT);
  pinMode(LED_VERMELHO, OUTPUT);
  pinMode(BUZZER, OUTPUT);
  Serial.println("Sistema de controle de acesso iniciado.");
}
void loop() {
  if (!leitorRFID.PICC_IsNewCardPresent() || !leitorRFID.PICC_ReadCardSerial()) return;
  Serial.print("UID da tag: ");
  for (byte i = 0; i < leitorRFID.uid.size; i++) {
    Serial.print(leitorRFID.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(leitorRFID.uid.uidByte[i], HEX);
  }
  Serial.println();
  if (verificarUID(leitorRFID.uid.uidByte)) {
    acessoLiberado();
  } else {
    acessoNegado();
  }
  delay(2000);
  resetarSistema();
}
bool verificarUID(byte *uid) {
  for (byte i = 0; i < 4; i++) {
    if (uid[i] != uidAutorizado1[i] && uid[i] != uidAutorizado2[i]) return false;
  }
  return true;
}
void acessoLiberado() {
  digitalWrite(LED_VERDE, HIGH);
  tone(BUZZER, 1000, 200);
  Serial.println("Acesso liberado!");
}
void acessoNegado() {
  digitalWrite(LED_VERMELHO, HIGH);
  tone(BUZZER, 300, 1000);
  Serial.println("Acesso negado!");
}
void resetarSistema() {
  digitalWrite(LED_VERDE, LOW);
  digitalWrite(LED_VERMELHO, LOW);
  leitorRFID.PICC_HaltA();
}

Considerações Finais🔗

Com este guia, você está pronto para implementar sistemas RFID robustos e adaptá-los às suas necessidades. 🚀

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados