Libreria Arduino/ESP32 LibR200

Nueva librería Arduino/ESP32 para trabajar con el lector UHF RFID IN‑R200/YPD‑R200, LibR200 publicada en Github.

¿Que es el IN-R200?

También vendido como módulo R200 o YPD‑R200, es un lector RFID UHF que trabaja típicamente entre 860 y 960 MHz, pensado para inventario, control de accesos y trazabilidad y nos permite leer múltiples tags por segundo y alcanzar varios metros de alcance (dependiendo de antena, el tipo de tag, potencia configurada y entorno), lo que lo hace muy distinto a los clásicos módulos RFID de corto alcance tipo 13,56 MHz.

​A nivel eléctrico, el módulo puede alimentarse entre 3,3 V y 5 V y expone una interfaz serie TTL, por lo que encaja bien tanto con placas Arduino de 5 V como con ESP32 a 3,3 V. Para la librería LibR200 se asume el uso directo del puerto UART TTL hacia el microcontrolador.

Que nos aporta la librería LibR200

LibR200 nace para simplificar el uso del lector IN‑R200 en proyectos con el core de ESP32, encapsulando el protocolo serie del módulo en una API simple con clases C++. En lugar de lidiar con tramas hexadecimales y comandos propios del fabricante, el objetivo es exponer funciones de alto nivel para inicializar el lector, configurar parámetros básicos y leer etiquetas UHF EPC Gen‑2.

​El lector es capaz de leer múltiples etiquetas por segundo (se anuncian cifras del orden de decenas de tags por segundo), de modo que tiene sentido que la librería gestione buffers de lectura y proporcione mecanismos para iterar por los EPC detectados en un periodo de tiempo.

Ideas de uso y proyectos

Con un lector UHF de largo alcance aparecen escenarios que no son viables con RFID de proximidad: inventario de cajas en una estantería, control de paso en una puerta o conteo de objetos que cruzan una zona concreta. LibR200 permite integrar estas lecturas en proyectos ya existentes de Arduino/ESP32, combinando por ejemplo la detección de tags con conexión WiFi, MQTT, registro en SD o publicación en una API web.

Cómo empezar a probarla

El código fuente de LibR200 está publicado en el repositorio Github (https://github.com/pinguytaz/LibreriasArduino/tree/main/LibR200) existiendo un fichero «LibR200.zip» que es el que instalaremos en las librerías de nuestro IDE-Arduino. Una vez instalada, bastará con incluir el header «#include <LibR200.h>» para poder instanciar la clase con el constructor base «R200 Lector(&Puerto)» o si se desea podremos configurar los parámetros de comunicación y pines.

R200(HardwareSerial, int baud = 115200, uint8_t RxPin = 16, uint8_t TxPin = 17)   // Prototipo constructor y valores por defecto.

R200 Lector(&Puerto)      // Instancia simple
R200 Lector(&Puerto, 115200, 16, 17)     // Instancia con parámetros del puerto serie.

Una vez tenemos instanciado el objeto la iniciaremos con «Lector.iniciaR200()», disponemos de un ejemplo simple en la clase «VerificaLector.ino» junto a otros que nos muestran como usar los métodos creados y descritos en el repositorio de la librería.

Antes de montar nada definitivo, es recomendable revisar la hoja de características del módulo R200/IN‑R200 para confirmar pines, tensiones y la antena incluida, ya que hay pequeñas variaciones entre placas de distintos fabricantes. A partir de ahí, el objetivo de esta nueva librería es que el foco esté en el proyecto (qué hacer con las lecturas UHF) y no en pelearse con el protocolo del lector, así que cualquier feedback y propuestas de mejora serán bienvenidas.

Ejemplo de configuración para Europa

La librería LibR200 permite ajustar la potencia de salida RF del módulo IN-R200/R200 , típicamente en un rango de 0 a 30-33 dBm así como la región y otros parametros para la gestión de anticolisión y ganancias del demodulador que podrian interesar cambiar según el tipo de etiqueta utilizado.

Lector.set_Region(EU);   // Pone región de europa, para cumplir normativa ETSI/FCC

Lector.set_Potencia(15);  

// Frecuencia en Hopping recomendadas para Europa (MHz)	  (4)865.7 (​7) 866.3 (10) 866.9 (​13) 867.5
uint8_t canales [4] = {4, 7, 10, 13};
Lector.insertCanales(4,canales);
Lector.hopping(true);

Lector.transmisionContinua(false);   // Quitamos la transmisión continua que solo deberemos utilizar en pruebas.

Lector.set_Firmware(ALL,S1,A,5);     // Parámetros prácticos para lectura de multiples TAG, unos 10.

// Parámetros del demodulador que me han dado buen resultado en etiquetas U9
t_Demodulador demodulador;
demodulador.campo.Mixer_G = MG_9;
demodulador.campo.IF_G = IFG_36;
demodulador.campo.Thrd = 0x01B0;
Lector.set_Demodulador(demodulador);

Podemos poner el máximo de potencia pero es recomendable ajustarlo, segun a la distancia que estemos leyendo las etiquetas para evitar saturaciones y ahorrar energía.

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.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

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