Modulo RFID RC522
- Chip
- NXP MFRC522
- Frecuencia
- 13,56 MHz
- Alimentación
- 3,3 V (no 5 V)
- Consumo
- 13 a 26 mA
Características
Kit lector y grabador RFID de 13,56 MHz con el chip MFRC522, con una tarjeta y un llavero. Lee sin contacto, a pocos centímetros, el código único (UID) de cada tarjeta y también puede guardar datos en su memoria. Se comunica con el Arduino por SPI.
Sirve para controles de acceso, cerraduras electrónicas, registros de asistencia y juegos.
| Chip | NXP MFRC522 |
|---|---|
| Frecuencia | 13,56 MHz |
| Alimentación | 3,3 V (no 5 V) |
| Consumo | 13 a 26 mA |
| Distancia de lectura | Hasta unos 3 a 5 cm |
| Tarjetas | MIFARE Classic 1K y 4K, Ultralight y otras ISO 14443A |
| Comunicación | SPI |
| Incluye | Lector, tarjeta blanca, llavero y pines |
| Pines | SDA, SCK, MOSI, MISO, IRQ, GND, RST y 3.3V |
¿Para qué sirve?
- Control de acceso a puertas y cajones
- Registro de asistencia con tarjetas
- Juegos y proyectos que reconocen objetos con etiqueta
Diagrama de conexión de prueba
Placa usada: Arduino UNO
| Cable | Módulo | Arduino UNO | Nota |
|---|---|---|---|
| rojo | 3.3V | 3.3V | ¡No a 5V! |
| negro | GND | GND | |
| morado | RST | D9 | |
| naranja | SDA | D10 | Selección del SPI (SS) |
| verde | MOSI | D11 | |
| azul | MISO | D12 | |
| amarillo | SCK | D13 |
Código de prueba
Instala desde el Gestor de librerías del IDE de Arduino: MFRC522 (de GithubCommunity)
// Prueba del lector RFID RC522: muestra el código (UID) de cada tarjeta o
// llavero y avisa si es la tarjeta autorizada.
#include <SPI.h>
#include <MFRC522.h>
const int PIN_SS = 10;
const int PIN_RST = 9;
// Escribe aquí el UID de tu tarjeta (lo ves en el Monitor serie al acercarla)
const byte AUTORIZADA[4] = { 0xDE, 0xAD, 0xBE, 0xEF };
MFRC522 rfid(PIN_SS, PIN_RST);
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(LED_BUILTIN, OUTPUT);
Serial.println("Acerca una tarjeta o llavero al lector...");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return;
bool igual = rfid.uid.size == 4;
Serial.print("UID:");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(rfid.uid.uidByte[i], HEX);
if (i < 4 && rfid.uid.uidByte[i] != AUTORIZADA[i]) igual = false;
}
Serial.println(igual ? " -> acceso permitido" : " -> tarjeta desconocida");
if (igual) {
digitalWrite(LED_BUILTIN, HIGH); // aquí podrías activar un relé o una cerradura
delay(2000);
digitalWrite(LED_BUILTIN, LOW);
}
rfid.PICC_HaltA(); // espera a que se retire la tarjeta
}
Abre el Monitor serie a 9600 baudios y acerca la tarjeta o el llavero. Copia en AUTORIZADA el UID que aparece y vuelve a cargar el código: con esa tarjeta se encenderá el LED del Arduino 2 segundos. IRQ queda sin conectar.
Precauciones
- Aliméntalo solo con 3,3 V: con 5 V en el pin 3.3V el chip se daña.
- Sus pines de datos trabajan a 3,3 V. Con el Arduino UNO suele funcionar conectado directo, pero para un proyecto permanente conviene un conversor de nivel o una placa de 3,3 V como el ESP32.
- Para un control de acceso serio no confíes solo en el UID: algunas tarjetas se pueden copiar.
- El metal cerca de la antena reduce la distancia de lectura.
Fuentes consultadas: ShillehTek: manual del RC522 · peppe8o: RC522 con Arduino UNO · Librería MFRC522 (GitHub). Ficha preparada por Electrodrone; verifica siempre el voltaje de tu módulo antes de conectarlo.