La identificación por radiofrecuencia (RFID) es una tecnología que permite identificar objetos mediante un identificador único (UID) transmitido por ondas de radio. Un sistema RFID se compone de dos elementos principales: la etiqueta (tag o tarjeta) y el lector. El lector genera un campo electromagnético; cuando una tarjeta pasiva se acerca, se alimenta de ese campo y responde enviando su información.
Para proyectos con Arduino, los módulos más populares son el RC522 y el PN532. Vamos a verlos en detalle.
1. Módulo Lector RFID RC522
Es el caballo de batalla del maker. Usa el chip MFRC522 de NXP, un lector/escritor altamente integrado para comunicación sin contacto a 13.56 MHz.
Especificaciones técnicas (según datasheet y fabricantes):
El módulo RC522 tiene 8 pines. La nomenclatura puede variar según el fabricante, pero los más comunes son:
| Pin del módulo | Función |
|---|---|
| VCC | Alimentación 3.3V |
| GND | Tierra |
| RST | Reset del módulo |
| IRQ | Interrupción (opcional, casi siempre sin conectar) |
| MISO | SPI – Master In Slave Out |
| MOSI | SPI – Master Out Slave In |
| SCK | SPI – Clock |
| SDA (o SS) | SPI – Slave Select |
⚠️ Importante: El módulo trabaja con lógica de 3.3V, pero los pines de entrada suelen ser tolerantes a 5V en la mayoría de las placas. Sin embargo, VCC siempre debe ir a 3.3V; conectarlo a 5V puede dañarlo.
Conexión a Arduino Uno
La conexión es por SPI. Este es el esquema estándar:
| RC522 | Arduino Uno |
|---|---|
| VCC | 3.3V |
| GND | GND |
| RST | Pin 9 (o cualquier digital) |
| SDA (SS) | Pin 10 (SS por defecto) |
| MOSI | Pin 11 |
| MISO | Pin 12 |
| SCK | Pin 13 |
| IRQ | No conectar |
Para Arduino Mega, los pines SPI cambian: MOSI→51, MISO→50, SCK→52.
2. Módulo RFID/NFC PN532
El PN532 es más versátil y potente. Soporta los mismos protocolos que el RC522 (MIFARE Classic, Ultralight, NTAG) pero añade FeliCa, ISO 14443B y modo NFC peer-to-peer.
Ventajas sobre el RC522:
- Soporta más tipos de tarjetas y etiquetas.
- Se puede comunicar por SPI, I2C o UART (se selecciona con switches en la placa).
- Ideal si quieres leer etiquetas NFC de móviles o tarjetas de transporte.
Conexión por I2C (la más común):
| PN532 (I2C) | Arduino Uno |
|---|---|
| VCC | 3.3V o 5V (según modelo) |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
⚠️ Atención: algunos módulos PN532 funcionan a 3.3V y no son tolerantes a 5V, por lo que puede ser necesario un conversor de nivel lógico si se usa con Arduino Uno de 5V.
3. Tarjetas y tags RFID
Los tags son el otro lado del sistema. Los más comunes para estos módulos son:
- MIFARE Classic 1K (S50): la más popular, 1 KB de memoria, viene en formato tarjeta de crédito o llavero.
- MIFARE Ultralight: más económica, menos memoria, ideal para usos de un solo uso.
- NTAG: variante más moderna, usada en muchas etiquetas NFC comerciales.
Todas funcionan a 13.56 MHz y son pasivas: no llevan batería, se alimentan del campo del lector.
Cada tarjeta tiene un UID (Unique Identifier) de 4 o 7 bytes, que es lo que leemos en la mayoría de los proyectos sencillos.
4. Instalación de la librería
Para el RC522, la librería de referencia es MFRC522 de Miguel Balboa (la más usada y mantenida).
- Abre el Arduino IDE.
- Ve a Sketch → Include Library → Manage Libraries.
- Busca «MFRC522» e instala la última versión.
Para el PN532, la librería más común es la de Adafruit PN532.
5. Código mínimo: leer el UID de una tarjeta
Este es el «Hola Mundo» del RFID: leer el UID de cualquier tarjeta o llavero que se acerque al lector.
cpp
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Pin de reset
#define SS_PIN 10 // Pin Slave Select
MFRC522 mfrc522(SS_PIN, RST_PIN); // Creamos la instancia
void setup() {
Serial.begin(9600);
SPI.begin(); // Iniciamos el bus SPI
mfrc522.PCD_Init(); // Iniciamos el lector
Serial.println("Lector RFID RC522 listo. Acerca una tarjeta.");
}
void loop() {
// ¿Hay una nueva tarjeta?
if (!mfrc522.PICC_IsNewCardPresent()) {
return;
}
// ¿Se ha podido leer el serial?
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
// Mostramos el UID por el monitor serie
Serial.print("UID: ");
for (byte i = 0; i < mfrc522.uid.size; i++) {
if (mfrc522.uid.uidByte[i] < 0x10) {
Serial.print(" 0");
} else {
Serial.print(" ");
}
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
// Detenemos la comunicación con la tarjeta
mfrc522.PICC_HaltA();
}
Con este código, al abrir el monitor serie a 9600 baudios y acercar una tarjeta, verás su UID impreso en pantalla.
A partir de ahí, el siguiente paso natural es comparar ese UID con una lista de autorizados y activar un relé, un LED o un motor. Justo lo que necesitaba ese local de atracciones infantiles que comentabas.
6. ¿RC522 o PN532?
| Característica | RC522 | PN532 |
|---|---|---|
| Precio | Muy bajo | Medio |
| Protocolos | MIFARE Classic, Ultralight, DESFire, NTAG | Los mismos + FeliCa + NFC peer-to-peer |
| Interfaz | SPI (principal) | SPI, I2C, UART (seleccionable) |
| Distancia | ~5 cm | ~5-7 cm |
| Dificultad | Baja | Media |
| Ideal para | Control de acceso básico, proyectos económicos | Proyectos que requieran NFC o múltiples tipos de tarjeta |
Para el 90% de los proyectos con Arduino, el RC522 es más que suficiente: es barato, fácil de conseguir y la librería es estable y bien documentada.
