Uso del Lector MFRC522 y Arduino para Control de Acceso - Tecneu

Uso del Lector MFRC522 y Arduino para Control de Acceso

comments

Introducción 

En este tutorial, aprenderás a usar el módulo lector MFRC522 con Arduino. Utilizaremos una tarjeta RFID de 13.56 MHz y un llavero RFID de la misma frecuencia. Mediante un ejemplo sencillo, pondremos en práctica la validación de identificación única (UID) de una tarjeta RFID para activar un LED. Aunque en este caso usaremos un LED para visualizar la autorización, podrías ampliar este proyecto para controlar un relé que active una cerradura electrónica, creando así un sistema de control de acceso simple y eficaz.

¿Qué es el RC522?

El MFRC522 es un módulo de lectura/escritura altamente integrado para tarjetas de contacto y sin contacto que operan a 13.56 MHz. Utiliza el protocolo de interfaz serial periférica (SPI) para la comunicación, lo que facilita su uso con microcontroladores como Arduino.

Tarjeta o llavero RFID 125 kHz

Las tarjetas y llaveros RFID de 13.56 MHz son dispositivos pasivos que almacenan un identificador único, también conocido como UID. No necesitan una fuente de alimentación propia ya que reciben la energía necesaria a través del campo electromagnético producido por el lector de RFID, en este caso, el MFRC522.

Cuando una tarjeta o llavero de RFID se acerca a un lector compatible, el lector puede "leer" el UID almacenado en el dispositivo. En aplicaciones de control de acceso, este UID se utiliza para identificar al titular de la tarjeta y decidir si se le concede o deniega el acceso.

Configurando el lector MFRC522 con Arduino

Materiales necesarios

  • Arduino Uno
  • Módulo lector MFRC522
  • Tarjeta RFID 13.56 MHz
  • Llavero RFID 13.56 MHz
  • LED
  • Resistencia de 220Ω
  • Cables de conexión 

Conexión de los componentes

Conecta tu lector MFRC522 a tu Arduino Uno de la siguiente manera:

  • SDA --> Pin digital 10
  • SCK --> Pin digital 13
  • MOSI --> Pin digital 11
  • MISO --> Pin digital 12
  • GND --> GND
  • RST --> Pin digital 9
  • 3.3V --> 3.3V
  • Ánodo del LED (largo) --> Pin digital 2
  • Cátodo del LED (corto) --> Resistencia de 220Ω --> GND

Código de ejemplo en Arduino

Primero, necesitarás descargar e instalar la biblioteca MFRC522 para Arduino. Para instalarla en el IDE de Arduino, sigue estos pasos: dirígete a 'Sketch', luego a 'Incluir biblioteca' y finalmente selecciona 'Administrar bibliotecas...'. En la caja de búsqueda, escribe "MFRC522" y después haz clic en "Instalar" en la biblioteca que se muestra en la imagen.

Carga el siguiente código en tu Arduino.

 

Abre el monitor serial  a 9600 baudios y acerca una tarjeta o llavero, se desplegará una serie de información acerca de la tarjeta MIFARE, la cual se explica detalladamente a continuación.

La memoria de una tarjeta MIFARE 1K está organizada en una estructura específica.

Una tarjeta MIFARE 1K estándar tiene una memoria total de 1024 bytes, dividido en 16 sectores. Cada sector contiene 4 bloques de memoria, cada uno de los cuales tiene 16 bytes. En total, tenemos 64 bloques (16 sectores * 4 bloques/sector).

Para mas información del uso de MIFARE puedes consultar el manual MIFARE CLASSIC 1K/4K USER MANUAL.

Estructura general:

  • Sector 0: El bloque 0 del sector 0 (Bloque 0) contiene el número de serie y el código de control de fabricante. Este bloque es de solo lectura.
  • Sectores 1-15: Estos sectores contienen bloques de datos generalmente usados para almacenar información.
  • Bloque de sector trailer (16 bytes):  El último bloque de cada sector (Bloque 3 de cada sector) se conoce como "Sector Trailer" y se utiliza para almacenar las claves de acceso (claves A y B) y los bits de control de acceso para ese sector.
    • Clave A (6 bytes): Clave utilizada para la autenticación.
    • Bits de control de acceso (4 bytes): Define cómo se pueden acceder a los bloques en este sector.
    • Clave B (6 bytes): Puede ser usada para la autenticación o como datos dependiendo de los bits de control de acceso.

Bloques de datos:

  • Los bloques de datos restantes en cada sector se pueden configurar para leer y/o escribir datos.

Recordatorio de seguridad:

A pesar de que las claves A y B pueden ser modificadas, es crucial no perder estas claves. Si se pierden, el sector se vuelve inaccesible. También, el bloque 0 es de solo lectura y contiene el número de serie del fabricante; intentar modificar este bloque puede dañar la tarjeta de forma irreparable.

En resumen, el mapa de memoria MIFARE 1K es una estructura bien organizada que proporciona una forma segura y eficiente de almacenar y recuperar información en aplicaciones como el control de acceso y el pago sin contacto.

Sketch de autenticación 

Con la información obtenida en la sección previa, elige una tarjeta o un llavero RFID y anota su número de identificación único (UID). Te servirá para el siguiente paso este tutorial.

Ahora copia el siguiente sketch y subelo a tu arduino, modificando la linea:

const byte uidPreestablecido[] = {0xF2, 0x94, 0x01, 0x19};

Con el UID que copiaste anteriormente.

 

A continuación se explica el código a detalle:

  • Primero, incluye las bibliotecas necesarias, SPI.h y MFRC522.h
  • Define dos pines, RST_PIN y SS_PIN, que se utilizan para la comunicación con el módulo MFRC522. Crea una variable uidPreestablecido[] para almacenar el UID de la tarjeta que estás autorizando. También crea una instancia mfrc522 del objeto MFRC522.
  • En la función setup(), inicia la comunicación serie a 9600 baudios, la comunicación SPI y el módulo MFRC522. Además, establece el pin 2 como salida (este es el pin conectado al LED).
  • En la función loop(), primero verifica si hay una nueva tarjeta presente. Si no hay ninguna, sale de la función. Si hay una, intenta leer el número de serie (UID) de la tarjeta. Si no puede leer el UID, también sale de la función.
  • Si ha podido leer el UID de una tarjeta, imprime el UID en el monitor serie y lo almacena en un array uidLeido[]. Compara uidLeido[] con uidPreestablecido[] usando memcmp(). Si coinciden, esto significa que la tarjeta presente es la tarjeta autorizada. Entonces imprime "Acceso autorizado", enciende el LED durante 2 segundos y luego lo apaga.
  • Si uidLeido[] y uidPreestablecido[] no coinciden, esto significa que la tarjeta presente no es la tarjeta autorizada. Por lo tanto, imprime "Acceso no autorizado" y asegura que el LED esté apagado.

Configura tu Monitor Serial para que funcione a 9600 baudios, luego acerca la tarjeta RFID. Si se reconoce la tarjeta, el LED se encenderá durante 2 segundos y verás el mensaje "Acceso autorizado" impreso en el Monitor Serial.

Por otro lado, si acercas una tarjeta diferente cuyo UID no fue preautorizado, el LED permanecerá apagado y se mostrará el mensaje "Acceso no autorizado" en el Monitor Serial.

 

Conclusiones 

La tecnología RFID ofrece una amplia gama de posibilidades. Puedes experimentar agregando funcionalidades adicionales a este proyecto base. Por ejemplo, podrías ampliarlo para controlar un relé que active una cerradura electrónica, creando así un sistema de control de acceso más real. O bien, puedes registrar cuándo se concede el acceso para llevar un registro de entradas y salidas.

¡Que te diviertas mucho explorando y experimentando con la tecnología RFID! Y no dudes en compartir tus creaciones: al hacerlo, puedes inspirar a otros y tal vez aprender algo nuevo a partir de sus comentarios o sugerencias. ¡Buena suerte!

 

Productos Relacionados

Ver artículo

Ver artículo

Comentarios 

No comments

Dejar un comentario
Tu correo no será publicado, los campos requeridos estan marcados con *
Artículos relacionados
Suscríbete
Suscríbete a nuestro boletín y recibe las últimas ofertas y novedades.