La tecnología RFID (Radio Frequency Identification) permite la identificación automática de objetos y personas mediante etiquetas que transmiten un UID único (Unique Identifier) cuando se acercan a un lector. Este artículo muestra cómo conectar el lector RFID RC522 a un M-Duino PLC, leer el UID de una etiqueta y compararlo con una lista de usuarios autorizados usando el IDE de Arduino.
Qué necesitas
- M-Duino PLC
- Fuente de alimentación
- Módulo lector RFID RC522
- Etiquetas o tarjetas RFID
Conexión del RC522 al M-Duino PLC
El RC522 se comunica mediante SPI y tiene 8 pines, pero el pin IRQ no se usa en este ejemplo. Conecta los 7 pines restantes de la siguiente manera:
| RC522 | M-Duino PLC |
|---|---|
| 3.3V | 3.3V |
| RST | Pin 3 |
| GND | GND |
| IRQ | Sin conectar |
| MISO | 50 (SO) |
| MOSI | 51 (SI) |
| SCK | 52 (SCK) |
| SDA | Pin 2 |
El M-Duino tiene interruptores de hardware detrás de los pines de E/S digital. Asegúrate de que los interruptores del Pin 2 y el Pin 3 estén activados antes de subir el sketch.
Instalación de la librería MFRC522
Abre el IDE de Arduino, ve a Herramientas > Gestionar librerías (Ctrl+Shift+I), busca "MFRC522" e instala la librería de Miguel Balboa. Instala también el paquete de placas Industrial Shields para tu modelo de M-Duino:
Cómo instalar las placas Industrial Shields en el IDE de Arduino
Selecciona tu placa en Herramientas > Placa > Industrial Shields boards > M-Duino family y tu modelo en Herramientas > Modelo.
Sketch de Arduino para lectura y comparación de etiquetas RFID
El sketch siguiente detecta cualquier etiqueta RFID cerca del lector e imprime su UID en el monitor serie. Luego compara el UID con un array de usuarios almacenado. Si los UIDs coinciden, el acceso es concedido; de lo contrario, es denegado.
Antes de usar el sketch debes encontrar el UID de tu propia etiqueta RFID: sube el sketch, pasa tu etiqueta por el lector y anota el UID que aparece en el monitor serie. Sustituye los bytes del array User1 con el UID de tu etiqueta.
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 3
#define SS_PIN 2
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte ActualUID[4];
byte User1[4] = {0x31, 0x31, 0x31, 0x31}; // Sustituye por el UID de tu etiqueta
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("Reading UID");
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent()) {
if (mfrc522.PICC_ReadCardSerial()) {
Serial.print("Card UID:");
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
ActualUID[i] = mfrc522.uid.uidByte[i];
}
if (compareArray(ActualUID, User1)) Serial.println(" Access granted");
else Serial.println(" Access denied");
mfrc522.PICC_HaltA();
}
}
}
boolean compareArray(byte array1[], byte array2[]) {
for (byte i = 0; i < mfrc522.uid.size; i++) {
if (array1[i] != array2[i]) return false;
}
return true;
}Ampliar la lista de acceso
Para admitir más usuarios, añade arrays de bytes adicionales (User2, User3, etc.) e incorpora una comparación para cada uno dentro del bucle. Para grandes cantidades de etiquetas, almacenar los UIDs en una tarjeta SD es una alternativa práctica a incluirlos directamente en el sketch.

Detección de tags RFID con el lector RC522 y M-Duino PLC