29 marzo, 2024

RFID para Arduino

Hoy voy hablar después de tiempo de RFID, que es con el que inicio una nueva serie que espero crezca de cuadernos técnicos en los que ire poniendo en un documento PDF y ejemplo de elementos que podemos usar con Arduino.

Comenzamos aunque te aconsejo que si te llama la atención este breve POST vayas a la sección de Cuaderno Tecnico «RFID» que esta debajo del menú Arduino donde profundizamos más y ademas tienes los ejemplos de programación que mejoraremos y ampliaremos.

¿Que es RFID?

RFID (Radio Frequency Identification), es un sistema de identificación por radio frecuencia de etiquetas o tarjetas en las que se puede almacenar información. Una gran ventaja frente a los códigos de barra es que se pueden actualizar por eso se utilizan también para medios de pagos como por ejemplo el abono transporte.

Las etiquetas o tarjetas pueden ser pasivas o activas y lo que las diferencias es que las activas no llevan baterías, increíblemente se alimenta con las ondas que lanza el lector para preguntarla, y las activas que si tienen baterías y claro en este caso podemos leerlas desde mayores distancias y no solo unos centímetros.

Empezamos con las conexiones

Yo he utilizado el lector/escritor RC-522, que me permite leer tarjetas con una frecuencia de 13,56 Mhz y el estandar 14443, que es el más utilizado en Arduino y se basa en el chip MFRC522 de philips aunque en realidad es de la empresa NXP que se crea a partir de la división de semiconductores de esta.

El esquema de conexión es el siguiente:

  1. SDA a D10
  2. SCK a D13
  3. MOSI a D11
  4. MISO a D12
  5. IORQ No la conectaremos aunque otro día escribiremos de como podemos utilizarla.
  6. GND a la masa.
  7. RST a D9
  8. 3.3V al positivo de una alimentación de 3,3V que usaremos la del arduino.

Es conveniente poner un adaptador de niveles ya que los D tendrán 5 V y es recomendable usar 3,3 en los puertos SPI pero como no tenia en el momento de escribir este POST he preferido poner lo que realmente he utilizado, cuando los compre ya actualizare el nuevo esquema y ampliare los tipos de tarjeta según vayan cayendo en mis manos.

Continuamos con la programación

La programación la realizamos con la librería de Miguel Balboa MFRC522 que permite usar este lector mediante una conexión SPI.

Voy a resumir la programación pues lo mejor es ver y jugar con los ejemplos que he colgado el Cuaderno Tecnico «RFID».

Lo primero es crear el objeto lector e iniciarlo :

MFRC522 rfid(SS_PIN, RST_PIN);
rfid.PCD_Init(); ;

Luego esperaremos a que se acerque una tarjeta y leemos los datos básicos de la tarjeta como es el tipo y el UID

rfid.PICC_IsNewCardPresent();
rfid.PICC_ReadCardSerial()

Esto es importante para luego saber como leer el resto de los datos o interactuar con la tarjeta, reduciendo saldo por ejemplo, pues según sea el tipo así estarán organizado los datos. Así por ejemplo en nuestros ejemplo se usa la tarjeta MIFARE CLassic de 1K que por ejemplo tiene la particularidad de tener que autentificarse en cada lectura de sector/bloque que realice, todo esto con una descripción de como se organizan los datos de usuario y de permiso lo puede ver en el Cuaderno Tecnico «RFID» y que iré actualizando según tenga diferentes tipos de tarjeta.

El código para la lectura de datos de usuario y poniendo la clave por defecto de fabrica, ya que esta la podremos cambiar, seria el siguiente.

MFRC522::MIFARE_Key clave;
byte Bloque0 = sector*4; // Calculamos direccion bloque 0 del sector
byte dirBloque = Bloque0 + bloque; // Direccion del bloque a leer
// Clave por defecto 0xFFFFFFFFFFFF
for(byte i =0 ; i< 6 ; i++) clave.keyByte[i] = 0xFF;
estado = rfid.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, Bloque0,  &clave, &rfid.uid);

Hasta aquí un resumen de como leer una tarjeta RFID y que puedes encontrar en Cuaderno Tecnico «RFID». que es donde tendré todas las actualizaciones de nuevas operaciones y tarjetas, así como si encuentro otros lectores de interes. Para eso en la página del Cuaderno Tecnico «RFID» estara el historial de cambios para saber que se añade o modifica.

Espero que disfrutéis.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Javier.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger.es que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad