{"id":1189,"date":"2025-12-06T19:20:13","date_gmt":"2025-12-06T18:20:13","guid":{"rendered":"https:\/\/www.pinguytaz.net\/?p=1189"},"modified":"2025-12-06T19:20:13","modified_gmt":"2025-12-06T18:20:13","slug":"libreria-arduino-esp32-libr200","status":"publish","type":"post","link":"https:\/\/www.pinguytaz.net\/index.php\/2025\/12\/06\/libreria-arduino-esp32-libr200\/","title":{"rendered":"Libreria Arduino\/ESP32 LibR200"},"content":{"rendered":"\n<p>Nueva librer\u00eda Arduino\/ESP32 para trabajar con el lector UHF RFID IN\u2011R200\/YPD\u2011R200, <strong><a href=\"https:\/\/github.com\/pinguytaz\/LibreriasArduino\/tree\/main\/LibR200\" data-type=\"link\" data-id=\"https:\/\/github.com\/pinguytaz\/LibreriasArduino\/tree\/main\/LibR200\" target=\"_blank\" rel=\"noreferrer noopener\">LibR200<\/a><\/strong> publicada en Github.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQue es el IN-R200?<\/h2>\n\n\n\n<p>Tambi\u00e9n vendido como m\u00f3dulo R200 o YPD\u2011R200,  es un lector RFID UHF que trabaja t\u00edpicamente entre 860 y 960 MHz, pensado para inventario, control de accesos y trazabilidad y nos permite leer m\u00faltiples 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\u00e1sicos m\u00f3dulos RFID de corto alcance tipo 13,56 MHz.<\/p>\n\n\n\n<p>\u200bA nivel el\u00e9ctrico, el m\u00f3dulo 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\u00eda LibR200 se asume el uso directo del puerto UART TTL hacia el microcontrolador.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Que nos aporta la librer\u00eda LibR200<\/h2>\n\n\n\n<p>LibR200 nace para simplificar el uso del lector IN\u2011R200 en proyectos con el core de ESP32, encapsulando el protocolo serie del m\u00f3dulo 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\u00e1metros b\u00e1sicos y leer etiquetas UHF EPC Gen\u20112.<\/p>\n\n\n\n<p>\u200bEl lector es capaz de leer m\u00faltiples etiquetas por segundo (se anuncian cifras del orden de decenas de tags por segundo), de modo que tiene sentido que la librer\u00eda gestione buffers de lectura y proporcione mecanismos para iterar por los EPC detectados en un periodo de tiempo. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ideas de uso y proyectos<\/h2>\n\n\n\n<p>Con un lector UHF de largo alcance aparecen escenarios que no son viables con RFID de proximidad: inventario de cajas en una estanter\u00eda, 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\u00f3n de tags con conexi\u00f3n WiFi, MQTT, registro en SD o publicaci\u00f3n en una API web.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo empezar a probarla<\/h2>\n\n\n\n<p>El c\u00f3digo fuente de LibR200 est\u00e1 publicado en el repositorio Github (<a href=\"https:\/\/github.com\/pinguytaz\/LibreriasArduino\/tree\/main\/LibR200\">https:\/\/github.com\/pinguytaz\/LibreriasArduino\/tree\/main\/LibR200<\/a>) existiendo un fichero \u00abLibR200.zip\u00bb que es el que instalaremos en las librer\u00edas de nuestro IDE-Arduino. Una vez instalada, bastar\u00e1 con incluir el header \u00ab#include &lt;LibR200.h>\u00bb para poder instanciar la clase con el constructor base \u00abR200 Lector(&amp;Puerto)\u00bb o si se desea podremos configurar los par\u00e1metros de comunicaci\u00f3n y pines.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>R200(HardwareSerial, int baud = 115200, uint8_t RxPin = 16, uint8_t TxPin = 17)   \/\/ Prototipo constructor y valores por defecto.\n\nR200 Lector(&amp;Puerto)      \/\/ Instancia simple\nR200 Lector(&amp;Puerto, 115200, 16, 17)     \/\/ Instancia con par\u00e1metros del puerto serie.<\/code><\/pre>\n\n\n\n<p>Una vez tenemos instanciado el objeto la iniciaremos con \u00abLector.iniciaR200()\u00bb, disponemos de un ejemplo simple en la clase \u00abVerificaLector.ino\u00bb junto a otros que nos muestran como usar los m\u00e9todos creados  y descritos en el repositorio de la librer\u00eda.<\/p>\n\n\n\n<p>Antes de montar nada definitivo, es recomendable revisar la hoja de caracter\u00edsticas del m\u00f3dulo R200\/IN\u2011R200 para confirmar pines, tensiones y la antena incluida, ya que hay peque\u00f1as variaciones entre placas de distintos fabricantes. A partir de ah\u00ed, el objetivo de esta nueva librer\u00eda es que el foco est\u00e9 en el proyecto (qu\u00e9 hacer con las lecturas UHF) y no en pelearse con el protocolo del lector, as\u00ed que cualquier feedback y propuestas de mejora ser\u00e1n bienvenidas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ejemplo de configuraci\u00f3n para Europa<\/h2>\n\n\n\n<p>La librer\u00eda LibR200 permite ajustar la potencia de salida RF del m\u00f3dulo IN-R200\/R200 , t\u00edpicamente en un rango de 0 a 30-33 dBm as\u00ed como la regi\u00f3n y otros parametros para la gesti\u00f3n de anticolisi\u00f3n y ganancias del demodulador que podrian interesar cambiar seg\u00fan el tipo de etiqueta utilizado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Lector.set_Region(EU);   \/\/ Pone regi\u00f3n de europa, para cumplir normativa ETSI\/FCC\n\nLector.set_Potencia(15);  \n\n\/\/ Frecuencia en Hopping recomendadas para Europa (MHz)\t  (4)865.7 (\u200b7) 866.3 (10) 866.9 (\u200b13) 867.5\nuint8_t canales &#91;4] = {4, 7, 10, 13};\nLector.insertCanales(4,canales);\nLector.hopping(true);\n\nLector.transmisionContinua(false);   \/\/ Quitamos la transmisi\u00f3n continua que solo deberemos utilizar en pruebas.\n\nLector.set_Firmware(ALL,S1,A,5);     \/\/ Par\u00e1metros pr\u00e1cticos para lectura de multiples TAG, unos 10.\n\n\/\/ Par\u00e1metros del demodulador que me han dado buen resultado en etiquetas U9\nt_Demodulador demodulador;\ndemodulador.campo.Mixer_G = MG_9;\ndemodulador.campo.IF_G = IFG_36;\ndemodulador.campo.Thrd = 0x01B0;\nLector.set_Demodulador(demodulador);\n<\/code><\/pre>\n\n\n\n<p>Podemos poner el m\u00e1ximo de potencia pero es recomendable ajustarlo, segun a la distancia que estemos leyendo las etiquetas para evitar saturaciones y ahorrar energ\u00eda.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nueva librer\u00eda Arduino\/ESP32 para trabajar con el lector UHF RFID IN\u2011R200\/YPD\u2011R200, LibR200 publicada en Github. \u00bfQue es el IN-R200? Tambi\u00e9n vendido como m\u00f3dulo R200 o YPD\u2011R200, es un lector RFID UHF que trabaja t\u00edpicamente entre 860 y 960 MHz, pensado para inventario, control de accesos y trazabilidad y nos permite leer m\u00faltiples tags por segundo [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1190,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[3,176,15],"tags":[35,209],"class_list":["post-1189","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-esp32","category-rfid","tag-libreria","tag-rfid-uhf"],"_links":{"self":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/1189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/comments?post=1189"}],"version-history":[{"count":3,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/1189\/revisions"}],"predecessor-version":[{"id":1193,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/posts\/1189\/revisions\/1193"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/media\/1190"}],"wp:attachment":[{"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/media?parent=1189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/categories?post=1189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pinguytaz.net\/index.php\/wp-json\/wp\/v2\/tags?post=1189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}