Select Page

Para la mayoría de nuestros proyectos Arduino basados en RFID, el módulo RC522 RFID Lector/ grabador es una gran opción. Es de baja potencia, bajo costo, bastante resistente, fácil de interactuar y increíblemente popular entre los aficionados.

El módulo RFID RC522 basado en MFRC522 IC de NXP es una de las opciones de RFID más económicas que podés obtener en línea. Por lo general, viene con una etiqueta de tarjeta RFID y una etiqueta de llavero con memoria de 1 KB. Y lo mejor de todo, puede escribir una etiqueta, por lo que puede almacenar algún tipo de mensaje secreto en ella.

Qué es el RC22 RFID

El Módulo Lector RFID-RC522 RF utiliza 3.3V como voltaje de alimentación y se controla a través del protocolo SPI, así como el protocolo UART, por lo que es compatible con casi cualquier microcontrolador Arduino UNO, Arduino NANO o PIC.

El RC522 utiliza un sistema de modulación y demodulación para todo tipo de dispositivos pasivos de 13.56Mhz.   Como se hará una lectura y escritura de la tarjeta, es necesario conocer las características de los bloques de memoria una tarjeta: La tarjeta que viene con el módulo RFID cuenta con 64 bloques de memoria (0-63) donde se hace lectura y/o escritura. Cada bloque de memoria tiene la capacidad de almacenar hasta 16 Bytes.  

El número de serie consiste de 5  valores hexadecimales, se podría utilizar esto para hacer una operación dependiendo del  número de serie.

Especificaciones Técnicas

El voltaje de funcionamiento del módulo es de 2.5 a 3.3V, pero la buena noticia es que los pines lógicos son tolerantes a 5 Volts, por lo que podemos conectarlo fácilmente a un Arduino o cualquier microcontrolador lógico de 5V sin usar ningún convertidor de nivel lógico.

RC522

  • Voltaje de Operación: 3.3V DC
  • Corriente de Operación: 13-26mA/3.3V DC
  • Corriente de Standby: 10-13mA/3.3V DC
  • Corriente de Sleep: <80uA
  • Corriente pico: <30mA
  • Frecuencia de operación: 13.56 MHz
  • Transferencia de datos: Max. 10Mbit/s
  • Tipos de tarjetas compatibles: Mifare1 S50, S70 Mifare1, MIFARE Ultralight, Mifare Pro, Mifare DESFire, Mifare Classic.
  • Dimensiones RFID-RC522: 40 mm x 60 mm
  • Dimensiones Tarjeta: 85 mm x 54 mm
  • Temperatura de funcionamiento: -20 a 80 grados centígrados
  • Temperatura de almacenamiento: -40 a 85 grados centígrados
  • Humedad relativa: 5% hasta 95 %
  • La tasa de transmisión por defecto: 9600bps, velocidad de transferencia máxima : 1228800bps

Características de la tarjeta IC:

  • Chip: Philips Mifare 1 S50
  • Capacidad: 8Kbit EEPROM
  • Cada tarjeta tiene un único numero de serie de 32-bit
  • Incorpora mecanismo de anti-colisión lo que permite concurrencia en la lectura
  • No requiere de conexión a fuente de alimentación externa.
  • Cuenta con un período de almacenamiento de 10 años, puede sobreescribirse 100000 veces y leerse ilimitadamente.
  • Temperatura de operación: -20 ℃ ~ 50 ℃.
  • Humedad: 90%.
  • Frecuencia de operación: 13.56MHz
  • Protocolo RF: ISO14443A
  • Velocidad de comunicación: 106KBPS
  • Distancia de lectura/escritura : ≤ 10cm

Características del llavero NFC:

También llamados tags RFID.

  • Chip: Philips Mifare 1 S50
  • Capacidad de almacenamiento: 8Kbit
  • Frecuencia de operación: 13.56 MHz
  • Velocidad de comunicación: 106Kbps
  • Distancia de lectura/escritura: 2.5 ~ 10cm
  • Tiempo de Lectura/escritura: 1 ~ 2ms
  • Temperatura de operación: -20 °C ~ 85°C
  • Capacidad de sobreescritura:> 100,000 times

Para aún más información, te recomendamos descargar la hoja de datos del RC522.

Qué es el RFID

Nos escapamos un poco de la placa en si y expliquemos lo que es el RFID en sí.

El sistema de identificación por radiofrecuencia o RFID consta de dos componentes principales, un transpondedor / etiqueta adherido a un objeto a identificar y un transceptor también conocido como interrogador / lector.

Un lector consta de un módulo de radiofrecuencia y una antena que genera un campo electromagnético de alta frecuencia. Por otro lado, la etiqueta suele ser un dispositivo pasivo, lo que significa que no contiene una batería. En cambio, contiene un microchip que almacena y procesa información, y una antena para recibir y transmitir una señal.

Para leer la información codificada en una etiqueta, se coloca cerca del lector (no necesita estar dentro de la línea de visión directa del lector). Un lector genera un campo electromagnético que hace que los electrones se muevan a través de la antena de la etiqueta y posteriormente alimenten el chip.

El chip alimentado dentro de la etiqueta responde enviando su información almacenada al lector en forma de otra señal de radio. Esto se llama retrodifusión. La retrodispersión, o cambio en la onda electromagnética / RF, es detectada e interpretada por el lector que luego envía los datos a una computadora o microcontrolador.

RC522 PinOut

RFID-RC522-pinout
RFID-RC522-pinout

VCC suministra energía para el módulo. Esto puede ser de 2.5 a 3.3 voltios. Puede conectarlo a la salida de 3.3V de su Arduino. ¡Recuerde que conectarlo a un pin de 5V probablemente destruirá su módulo!

RST es una entrada para restablecer y apagar. Cuando este pin se pone bajo, se habilita el apagado total. Esto apaga todos los sumideros de corriente internos, incluido el oscilador, y los pines de entrada están desconectados del mundo exterior. En el flanco ascendente, el módulo se reinicia.

GND es el Pin de tierra y necesita estar conectado al pin GND en el Arduino.

IRQ es un pin de interrupción que puede alertar al microcontrolador cuando la etiqueta RFID se acerca.

El pin MISO / SCL / Tx actúa como Master-In-Slave-Out cuando la interfaz SPI está habilitada, actúa como reloj en serie cuando la interfaz I2C está habilitada y actúa como salida de datos en serie cuando la interfaz UART está habilitada.

MOSI (Master Out Slave In) es una entrada SPI al módulo RC522.

SCK (Serial Clock) acepta pulsos de reloj proporcionados por el bus SPI Master, es decir, Arduino.

El pin SS / SDA / Rx actúa como entrada de señal cuando la interfaz SPI está habilitada, actúa como datos en serie cuando la interfaz I2C está habilitada y actúa como entrada de datos en serie cuando la interfaz UART está habilitada. Este pin generalmente se marca encerrando el pin en un cuadrado para que se pueda usar como referencia para identificar los otros pines.

rfid_tabla

Cómo usar rfid rc522 con Arduino

¡Ahora que sabemos todo sobre el módulo, podemos comenzar a conectarlo a nuestro Arduino!

Para comenzar, conecte el pin VCC en el módulo a 3.3V en el Arduino y el pin GND a tierra. El pin RST se puede conectar a cualquier pin digital en el Arduino. En nuestro caso, está conectado al pin digital # 5. El pin IRQ se deja desconectado ya que la biblioteca Arduino que vamos a utilizar no lo admite.

RFID RC522 13.56mHz NFC 2

Ahora nos quedamos con los pines que se utilizan para la comunicación SPI. Como el módulo RC522 requiere mucha transferencia de datos, ofrecerán el mejor rendimiento cuando se conectan a los pines SPI de hardware en un microcontrolador. Los pines SPI de hardware son mucho más rápidos que «golpear con bits» el código de interfaz usando otro conjunto de pines.

Tenga en cuenta que cada placa Arduino tiene pines SPI diferentes que deben conectarse en consecuencia. Para placas Arduino como UNO / Nano V3.0, esos pines son digitales 13 (SCK), 12 (MISO), 11 (MOSI) y 10 (SS).

Si tienes un Mega, ¡los pines son diferentes! Deberá utilizar 50 digitales (MISO), 51 (MOSI), 52 (SCK) y 53 (SS). Consulte la tabla a continuación para una comprensión rápida.

MOSI MISO SCK CS
Arduino Uno 11121310
Arduino Nano 11121310
Arduino Mega 51505253
rc522-rfid-spi-Leonardo
Conexión RC522 con Arduino Leonardo

DESCARGAS

PROGRAMA C ARDUINO UNO LECTURA DE BLOQUES TAGS

En este punto, te recomiendo leer el post de Tags y Tarjetas RFID, para entender cómo funcionan las tarjetas y los tags y entender que datos se le pueden grabar además de un ID y cómo lograrlo.

#include &lt;SPI.h>;
#include &lt;MFRC522.h>;
RFID rfid(10,5); 
void setup() { 
    Serial.begin(9600); 
    SPI.begin(); 
    rfid.init(); 
} 
unsigned char het[16]={'H','E','T','P','R','O',' ','R','F','I','D',' ','5','5','2',' '}; //Declaracion de cadena de caracteres 
unsigned char *writeData=het; //asigna het a char tipo puntero 
unsigned char *str; //char tipo puntero utilizado para la función de lectura de un bloque 

void loop() { 
  if (rfid.isCard()) { 
      rfid.write(8,writeData); //Función escritura (num de bloque, string) 
      rfid.read(8,str); //Función lectura (num de bloque, str) guarda lo que está en el bloque a str 
      Serial.print(str[0]); //Imprime lo que se guardó en str de la funcion read 
  } 
  rfid.halt(); 
}

PROGRAMA C ARDUINO UNO LECTURA DE NUMERO DE SERIE

#include &lt;SPI.h>;
#include &lt;MFRC522.h>;
RFID rfid(10,5); 
void setup() { 
Serial.begin(9600); //Inicializa la velocidad de Serial 
SPI.begin(); //Función que inicializa SPI 
rfid.init(); //Función que inicializa RFID 
} 
void loop() { 
if (rfid.isCard()) { //Verifica si hay una tarjeta 
if (rfid.readCardSerial()) { //Funcion que lee la tarjeta 
Serial.println(" "); 
Serial.println(" "); 
Serial.println("El numero de serie de la tarjeta es : "); 
for(int i=0;i&lt;=4; i++){ 
if(i!=4){ 
Serial.print(rfid.serNum[i],HEX); //rfid.serNum lee el número de serie unico de la tarjeta 
Serial.print(" "); 
} 
else{ 
Serial.print(rfid.serNum[i],HEX); 
Serial.print(" "); 
} 
} 
delay(1000); 
} 
} 
rfid.halt(); 
}
A %d blogueros les gusta esto: