Interface de leitor RFID Arduino MFRC522 RC522 e controle de acesso

Arduino MFRC522 RC522 Interfaz de lector RFID y control de acceso

RFID es una tecnología de identificación y etiquetado popular. La identificación por radiofrecuencia implica una etiqueta RFID y un segundo lector RFID. Las etiquetas y etiquetas RFID son de bajo costo y fácilmente disponibles. En comparación con los sistemas de seguimiento de códigos de barras, las soluciones RFID tienen varias ventajas. Una de las ventajas aparentes de RFID sobre los códigos de barras es que no requiere línea de visión para leer. Los lectores RFID capturan la información codificada en etiquetas RFID mediante señales de radiofrecuencia. RFID es una tecnología perfecta de identificación y etiquetado sin contacto que es fácil de implementar y utilizar. Esta es la razón por la que RFID es la opción preferida para diversas aplicaciones, como sistemas de control de acceso, cobro automático de peajes, pago sin contacto, sistemas de pago automatizados y seguimiento de inventario.

Ejemplo de módulo RFID MFRC522 RC522.

Hay varios lectores RFID disponibles. Uno de los lectores RFID más populares es el MFRC522 de NXP. Este lector RFID se puede conectar a un controlador/computadora utilizando los protocolos UART, SPI e I2C. El CI lector/grabador RFID del MFRC522 utiliza una radiofrecuencia de 13,56 MHz para su funcionamiento. MFRC522 RC522 puede leer/escribir tarjetas y etiquetas RFID creadas utilizando el protocolo ISO/IEC 14443. Esto incluye etiquetas RFID compatibles con MIFARE, como etiquetas RFID MIFARE-mini, MIFARE-1K, MIFARE-4K, llaveros y tarjetas RFID NTAG.

Este proyecto conecta el lector RFID MFRC522 RC522 con Arduino y lee NUID de tarjetas y llaveros compatibles con MIFARE. También demostramos un sistema de control de acceso simple utilizando el lector RFID y etiquetas RFID usando Arduino.

Componentes necesarios

  1. Arduino UNO/Arduino Mega x1
  2. Lector RFID MFRC522 RC522 x1
  3. Tarjetas RFID y llaveros MIFARE Classic-1K x Mínimo 2
  4. Cables de conexión/cables de puente

Lector RFID MFRC522 RC522
Una solución RFID utiliza ondas electromagnéticas de radiofrecuencia para la comunicación de datos. El sistema consta de dos componentes: uno es un transceptor RFID y el segundo es un transpondedor RFID. El transceptor RFID lee/escribe datos codificados en transpondedores RFID mediante una señal de radio de baja frecuencia. Los transpondedores son tarjetas RFID, llaveros, etiquetas o adhesivos con una EEPROM integrada que almacena datos codificados.

Cada transpondedor RFID tiene un número de identificación que puede ser un número de identidad único (UID) de 7 bytes o un número de identidad no único (NUID) de 4 bytes. El componente principal de una tarjeta/etiqueta/pegatina RFID es un chip RFID. Los chips RFID pueden ser de sólo lectura o programables. El UID o NUID de una tarjeta de solo lectura no se puede cambiar ni modificar, incluidos otros datos almacenados en el chip. Los chips programables generalmente vienen con un código de identificación de chip preprogramado que puede reemplazarse con memoria adicional mediante un transceptor RFID.

Componentes del lector RFID MFRC522 RC522.

El lector RFID RC522 de NXP está diseñado para leer/escribir transpondedores RFID basados ​​en el protocolo ISO/IEC 14443, incluidas tarjetas/etiquetas/pegatinas RFID MIFARE y NTAG. Al lector se le conoce como Dispositivo de acoplamiento de proximidad (PCD) y a las etiquetas/pegatinas/tarjetas se le conoce como Placa de circuito integrado de proximidad (PICD). El lector puede comunicarse con un controlador/computadora utilizando los protocolos SPI, I2C y UART. Lee/escribe etiquetas a una frecuencia de 13,56 MHz con un rango operativo de 50 mm. El lector RC522 tiene un chip MFRC522, un oscilador de 27,12 MHz, antena RF y otros componentes integrados. El voltaje de funcionamiento del lector es de 2,5 ~ 3,3 V. Sin embargo, el puerto de comunicación del lector es tolerable a 5 V. Por lo tanto, se puede conectar directamente con microcontroladores de 5 V como Arduino.

Configuración de pines del lector RFID MFRC522 RC522.

El lector tiene la siguiente configuración de pines.

Conexiones de circuito
El lector RFID RC522 admite protocolos SPI, I2C y UART para comunicarse con un controlador/computadora. Para Arduino, tenemos una biblioteca que sólo soporta el protocolo SPI. Además, SPI es el más rápido entre los tres protocolos de comunicación en serie. Es por eso que estamos interconectando el lector RC522 con el Arduino mediante un puerto SPI físico. Para conectar RC522 con Arduino a través de SPI, siga las conexiones del circuito mencionadas en la siguiente tabla.

Diagrama de circuito para interconectar el lector RFID MFRC522 RC522 con Arduino

Biblioteca Arduino para lector RFID RC522
Las conexiones del circuito se pueden realizar después de colocar el módulo en una placa de pruebas. Las conexiones siguen el diagrama de circuito a continuación.
Actualmente, existen varias bibliotecas Arduino disponibles para RC522. La biblioteca utilizada en este proyecto es la biblioteca Arduino MFRC522 de miguelbalboa, disponible en Github. Descargue la biblioteca como un archivo ZIP. Vaya a Sketch->Agregar biblioteca->Agregar biblioteca .ZIP en Arduino IDE. Seleccione rfid-master.ZIP y la biblioteca para RC522 se agregará al entorno Arduino.

Volcado de datos de etiquetas RFID a Serial Monitor
La biblioteca Arduino para RC522 viene con muchos ejemplos. Uno de los ejemplos útiles es DumpInfo. Este ejemplo lee todos los datos en el chip transpondedor RFID y los imprime en el monitor serie. Vaya a Archivos->Ejemplos->MFRC522->DumpInfo.

Cargue el boceto en Arduino y ejecute Serial Monitor. Al leer una etiqueta RFID MIFARE Classic-1K, la salida del monitor serie es la siguiente.
Mapa de memoria de la tarjeta RFID MIFARE Classic-1K
Las imágenes de arriba son capturas de pantalla de la lectura de una tarjeta RFID MIFARE Classic-1K. Como se puede ver en las imágenes de arriba, el RC522 lee todos los datos almacenados en la memoria del chip de la tarjeta RFID. La memoria del chip está dividida en 16 sectores, donde cada sector consta de 4 bloques. Cada bloque almacena 16 bytes. En cada sector, los primeros tres bloques son bloques de datos y el cuarto bloque es el bloque final que contiene dos claves secretas y bits de acceso. Los bits de acceso determinan el estado de lectura/escritura o de sólo lectura del sector. El primer bloque contiene información del fabricante en el primer sector, es decir, el sector 0, y un bloque de remolque solo sigue a dos bloques de datos.

Bosquejo de Arduino

Cómo funciona el proyecto
En este proyecto, leemos los NUID de tarjetas/claves RFID y mostramos el NUID leído en Serial Monitor en formato decimal y hexadecimal. El NUID tiene una longitud de 4 bytes e identifica una etiqueta/etiqueta/tarjeta/pegatina RFID específica.

Cargue el boceto anterior en Arduino UNO/Arduino MEGA después de realizar las conexiones adecuadas del circuito. Abra Serial Monitor y establezca la velocidad en baudios en 9600. Al contactar una etiqueta/tarjeta/llave, el NUID de la etiqueta/tarjeta/llave respectiva se lee y se muestra en Serial Monitor en formatos decimal y hexadecimal. Sketch también compara etiquetas/llaves con un NUID determinado para demostrar el control de acceso mediante tarjetas/llaves RFID.

Código
El esquema comienza con la importación de bibliotecas SPI y MFRC522 para trabajar con lectores RFID RC522 a través del protocolo SPI. Se definen las asignaciones de pines para SDA y Reset y se crea una instancia de un objeto MFRC522 con estos pines. Se define una variable para almacenar la clave MIFARE. Se define una matriz de bytes 'nuidPICC' para almacenar 4 bytes de NUID RFID. Las variables se declaran para almacenar representaciones de cadenas del NUID en formatos decimal y hexadecimal. De manera similar, se define una variable para almacenar una representación de cadena de la clave MIFARE.

En la función de configuración, la velocidad en baudios para la comunicación en serie con Serial Monitor se establece en 9600 bps utilizando el método Serial.begin. El protocolo SPI se inicializa utilizando el método SPI.begin. El módulo RFID inicializa el método PCD_Init en el objeto RFID. Los bytes de la clave MIFARE se configuran en FF y se almacenan en una representación de cadena en mayúsculas. La clave MIFARE está publicada en Serial Monitor.

En la función de bucle, la tarjeta/llave/etiqueta RFID se detecta llamando al método PICC_IsNewCardPresent en el objeto RFID. A continuación, se lee el NUID/UID de la tarjeta llamando al método PICC_ReadCardSerial en el objeto RFID. El tipo de tarjeta MIFARE se detecta mediante el método PICC_GetType(rfid.uid.sak) y se muestra en Serial Monitor. Luego se accede a los bytes individuales del NUID mediante la propiedad rfid.uid.uidByte. Primero, los bytes se serializan en formato decimal y se convierten en un objeto de cadena. La cadena que contiene una representación decimal del NUID se publica en Serial Monitor. Luego, los bytes se serializan en formato hexadecimal y se convierten en un objeto de cadena. La cadena que contiene una representación hexadecimal del NUID se publica en Serial Monitor. Los bytes leídos del NUID se almacenan en una matriz de caracteres. Esta matriz de caracteres se compara con un NUID predefinido mediante la función compareNUID definida por el usuario. La función devuelve un valor booleano utilizado para determinar el control de acceso. Se evita que el lector lea la tarjeta llamando al método PICC_HaltA en el objeto RFID. Finalmente, el cifrado se detiene llamando al método PCD_StopCrypto1 en el objeto RFID.

Resultados

Circuito para interconectar el lector RFID MFRC522 RC522 con Arduino

Monitor serial Arduino que muestra NUID de etiquetas RFID usando el módulo RC522

Vídeo de demostración

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.