{"id":4364,"date":"2020-05-02T18:32:50","date_gmt":"2020-05-02T17:32:50","guid":{"rendered":"http:\/\/bitacora.eniac2000.com\/?p=4364"},"modified":"2020-05-02T18:32:50","modified_gmt":"2020-05-02T17:32:50","slug":"comunicacion-de-larga-distancia-de-dispositivos-iot-heltec-lora-32","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=4364","title":{"rendered":"Comunicaci\u00f3n de larga distancia de dispositivos IoT: Heltec LoRa 32"},"content":{"rendered":"<p>En estas semanas en las que el coronavirus nos ha trastornado la vida a todos, he aprovechado para retomar algunos viejos proyectos que por diversas razones hab\u00eda dejado aparcados hasta mejor ocasi\u00f3n. Uno de estos proyectos (ya habr\u00e1 tiempo para hablar de otros) era el de lograr un sistema que permitiera recibir informaci\u00f3n de sensores distribuidos en zonas abiertas. En pocas palabras, sensorizaci\u00f3n IoT en el \u00e1mbito rural. No es exactamente una idea nueva, y era algo que me rondaba la cabeza cuando volv\u00ed de Irlanda. Ya en su momento me hice con un par de dispositivos <a href=\"https:\/\/heltec.org\/project\/wifi-lora-32\/\" target=\"_blank\">Heltec LoRa 32<\/a>, que disponen de pantalla OLED incorporada, para hacer mis pinitos con ellos. Unos cacharros bastante interesantes, ESP32, con conectividad WiFi y Bluetooth Low Energy adem\u00e1s de LoRa. Y aqu\u00ed la parte importante es <a href=\"https:\/\/lora-alliance.org\/\" target=\"_blank\">LoRa<\/a>. LoRa (Long Range) es un protocolo de comunicaci\u00f3n de larga distancia (WAN) y bajo consumo energ\u00e9tico, que haciendo uso de frecuencias libres, permite crear enlaces de datos entre distintos dispositivos, o bien establecer redes de datos completas (cuando ya hablamos de LoRaWAN). Las principales caracter\u00edsticas del protocolo LoRa son las siguientes:<\/p>\n<ul>\n<li>Capacidad de trabajo en modo unidireccional, bidireccional o multidifusi\u00f3n<\/li>\n<li>Alta tolerancia a las interferencias<\/li>\n<li>Alta sensibilidad para recibir datos (-168dB)<\/li>\n<li>Basado en modulaci\u00f3n \u201cchirp\u201c<\/li>\n<li>Bajo Consumo (hasta 10 a\u00f1os con una bater\u00eda)<\/li>\n<li>Largo alcance 10 a 20km<\/li>\n<li>Baja transferencia de datos (hasta 255 bytes)<\/li>\n<li>Conexi\u00f3n punto a punto<\/li>\n<li>Frecuencias de trabajo:  868 Mhz en Europa, 915 Mhz en Am\u00e9rica, y 433 Mhz en Asia<\/li>\n<\/ul>\n<p>Como dec\u00eda, adquir\u00ed los dispositivos, pero luego nunca tuve tiempo para ponerme a dedicarme a ello. Hasta estas semanas, que han coincidido varias circunstancias que me hicieron volver a dedicarle tiempo al proyecto: el confinamiento por coronavirus, unas iniciativas en el trabajo a las que esta tecnolog\u00eda podr\u00eda aplicar, y que he dedicado algo m\u00e1s de tiempo a investigar con sistemas ESP32 que con los convencionales ESP8266. As\u00ed que toc\u00f3 desempolvar los viejos Heltec LoRa que ten\u00eda guardados, y ponerlos a funcionar.<\/p>\n<figure id=\"attachment_4380\" aria-describedby=\"caption-attachment-4380\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/pareja-heltec-lora.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/pareja-heltec-lora-400x300.jpeg\" alt=\"Pareja de Heltec LoRa 32 con carcasa impresa en 3D\" title=\"Pareja de Heltec LoRa 32 con carcasa impresa en 3D\" width=\"400\" height=\"300\" class=\"size-medium wp-image-4380\" \/><\/a><figcaption id=\"caption-attachment-4380\" class=\"wp-caption-text\">Pareja de Heltec LoRa 32 con carcasa impresa en 3D<\/figcaption><\/figure>\n<p>Heltec proporciona una <a href=\"https:\/\/github.com\/HelTecAutomation\/Heltec_ESP32\" target=\"_blank\">librer\u00eda bastante interesante para el IDE de Arduino<\/a> que permite hacer funcionar de una manera bastante sencilla a una pareja de dispositivos. Como dec\u00eda m\u00e1s arriba, los Heltec pueden funcionar en modo unidireccional (una unidad emisora y otra receptora), bidireccional (intercambio en ambos sentidos para cada dispositivo) o bien en multidifusi\u00f3n (un mensaje es recibido por todos los dispositivos que est\u00e9n en su rango de alcance). La manera m\u00e1s simple de empezar es con un emisor y un receptor, sin hacer uso de direcciones de dispositivo. Simple y efectivo, la librer\u00eda viene con ejemplos de funcionamiento de este tipo, y en cuesti\u00f3n de minutos puedes tener un enlace LoRa funcionando. En mi caso, los dispositivos de que dispongo funcionan a 433 MHz, y pude tener comunicaci\u00f3n en toda la casa, y en campo abierto pude llegar a establecer sin muchos problemas enlaces de 300 metros con las antenas que traen los dispositivos.<\/p>\n<p>Bien, 300 metros no es gran cosa cuando seg\u00fan el protocolo podemos llegar a decenas de kil\u00f3metros. Con estas primeras pruebas pude aprender algunas cosas interesantes:<\/p>\n<ul>\n<li><strong>La ubicaci\u00f3n de la antena importa.<\/strong> Mucho. Es extraordinariamente importante que las antenas, tanto de emisor como receptor, est\u00e9n verticales. Solamente este factor es de una importancia enorme para lograr una buena transmisi\u00f3n de la se\u00f1al entre dispositivos. Pero no es el \u00fanico. La frecuencia de 433 MHz no se lleva especialmente bien con paredes de hormig\u00f3n forjado, ni con mallazo met\u00e1lico. Si puedes poner la antena en espacio abierto, mejor que mejor.<\/li>\n<li><strong>Haz uso de una buena antena.<\/strong> Las que vienen con los dispositivos son extremadamente b\u00e1sicas. Hacen bien su funci\u00f3n a distancias relativamente cortas, pero cuando intentas subir de nivel, la cosa cambia. Tanto es as\u00ed, que el fabricante de los dispositivos da un rango de alcance de sus dispositivos de 2.8 km, frente a las decenas que soporta el protocolo. Sigue estando bastante bien para unos dispositivos que no llegan a los 20\u20ac de precio, pero cuando intentas ir un poco m\u00e1s all\u00e1, es preciso invertir un poco m\u00e1s.<\/li>\n<li><strong>La cantidad de informaci\u00f3n que transmites importa.<\/strong> Tanto o m\u00e1s que todo lo anterior. A mayor mensaje que trates de enviar, m\u00e1s problemas tendr\u00e1s para que llegue, debido a posibles interferencias durante el tiempo que est\u00e9s transmitiendo. Adem\u00e1s de esto, pude observar que el RSSI (indicador de fuerza de la se\u00f1al recibida) se resent\u00eda a mayor longitud del mensaje. As\u00ed que nada de enviar elegantes datagramas JSON, o largos paquetes de datos. Empaqueta en hexadecimal, transmite los m\u00ednimos bytes posibles, y notar\u00e1s una gran mejora en el rango de alcance de tus sistemas.<\/li>\n<li><strong>Optimiza los par\u00e1metros de los enlaces en funci\u00f3n de lo que busques.<\/strong> Existe la posibilidad de ajustar diversos par\u00e1metros de la transmisi\u00f3n. Simplificando mucho, la velocidad de transmisi\u00f3n y el factor de propagaci\u00f3n (spreading factor). A una velocidad de transmisi\u00f3n m\u00e1s baja y mayor factor de propagaci\u00f3n, m\u00e1s confiable ser\u00e1 la entrega del paquete (realizando un s\u00edmil algo burdo, es como hablar muy despacio y alargando mucho los sonidos), pero necesitar\u00e1s m\u00e1s tiempo para enviar la misma cantidad de informaci\u00f3n, por lo que perjudicar\u00e1s la vida de la bater\u00eda, y har\u00e1s m\u00e1s uso de tiempo de se\u00f1al (lo que en redes LoRa p\u00fablicas o privadas puede tener su impacto). En mi caso, como se trata de un enlace punto a punto entre dos dispositivos que controlo yo, no tengo que preocuparme demasiado por estos aspectos. Otro par\u00e1metro ajustable es la intensidad de la se\u00f1al emitida (s\u00f3lo para el emisor), que se puede ajustar hasta 20 dBm, sobre un valor est\u00e1ndar de 14 dBm. De nuevo, a costa de penalizar la duraci\u00f3n de la bater\u00eda.<\/li>\n<\/ul>\n<p>Tras haber aprendido esto en una serie de pruebas sucesivas, pero en las que no pod\u00eda verificar el alcance efectivo alcanzado debido al confinamiento, me prepar\u00e9 para hacer una verdadera prueba de campo, en cuanto tuviera la oportunidad. Y la oportunidad lleg\u00f3 hoy. Al haberse permitido salir a realizar actividades deportivas por la ma\u00f1ana, prepar\u00e9 un escenario de prueba que pudiera efectuar mientras -c\u00f3mo no- saliera a dar una vuelta con la bici por los alrededores de mi domicilio. La prueba consisti\u00f3 en lo siguiente:<\/p>\n<ul>\n<li><strong>Preparar un emisor LoRa que pudiera colocar en la bici.<\/strong> Me aburr\u00ed bastante pronto de enviar simples secuencias num\u00e9ricas desde el emisor al receptor. Y dado que los Heltec LoRa son ESP32, con capacidad BLE, desarroll\u00e9 un aplicativo que permite leer de mi puls\u00f3metro Bluetooth mi ritmo card\u00edaco, y cada 2 segundos enviarlo empaquetado en hexadecimal, con lo que se puede enviar haciendo uso de tan s\u00f3lo 2 bytes de informaci\u00f3n. Para colocarlo c\u00f3modamente en la bicicleta, imprim\u00ed una carcasa con la impresora 3D que se puede atornillar al manillar. Complement\u00e9 el emisor con una antena de 7 dBi para 433 MHz, que instal\u00e9 en el transport\u00edn de la bici.<\/li>\n<figure id=\"attachment_4371\" aria-describedby=\"caption-attachment-4371\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/05-antena-heltec-bici.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/05-antena-heltec-bici-300x400.jpeg\" alt=\"Bicicleta con antena y Heltec instalados\" title=\"Bicicleta con antena y Heltec instalados\" width=\"300\" height=\"400\" class=\"size-medium wp-image-4371\" \/><\/a><figcaption id=\"caption-attachment-4371\" class=\"wp-caption-text\">Bicicleta con antena y Heltec instalados<\/figcaption><\/figure>\n<li><strong>Crear un gateway LoRa-MQTT como receptor.<\/strong> La otra mitad del sistema, el receptor, act\u00faa como una pasarela LoRa-MQTT. Se conecta a la red WiFi de mi casa, y vuelca la informaci\u00f3n recibida por LoRa en mi servidor MQTT, en un <em>topic<\/em> espec\u00edfico. Adem\u00e1s de la informaci\u00f3n LoRa (decodificada para ofrecer el ritmo card\u00edaco de nuevo en decimal), a\u00f1ade el RSSI del paquete recibido, para poder verificar de manera sencilla la calidad de la recepci\u00f3n de la se\u00f1al. De acuerdo a la documentaci\u00f3n de LoRa, cualquier cosa peor de -120 dBm implica recibir una se\u00f1al d\u00e9bil, y por encima de -30 dBm es excelente (el m\u00e1ximo te\u00f3rico es 0). En mis pruebas, observaba problemas para recibir paquetes cuando el RSSI ca\u00eda por debajo de -125 dBm.<\/li>\n<li><strong>Colocar la antena del receptor en una buena ubicaci\u00f3n.<\/strong> Como dec\u00edamos antes, la antena y su ubicaci\u00f3n importan, tambi\u00e9n en el receptor. Mi casa se encuentra en el valle del Guadalquivir, en una zona que no es especialmente alta. Lo ideal ser\u00eda colocarla en lo m\u00e1s alto del tejado, donde hay pocos elementos que bloqueen la vista, y por tanto puedas tener visi\u00f3n directa de los alrededores. Pero no andaba estos d\u00edas con muchas ganas de andar triscando por los tejados, y de todas maneras tengo un inconveniente en forma de colinas. La colina de It\u00e1lica por un lado, que me bloquea gran parte de los campos cercanos por el oeste, y el cerro de Santiponce, al suroeste que hace lo mismo en esa direcci\u00f3n. As\u00ed que me he limitado a colocar la antena en la azotea, con vistas razonablemente limpias hacia el norte, este y sureste. No del todo limpias, porque el edificio de pisos que hay junto al teatro de It\u00e1lica bloquea gran parte de la visi\u00f3n directa de la ciudad de Sevilla (en otro art\u00edculo hablaremos de ello). Pero para pruebas de campo en los alrededores, m\u00e1s que suficiente.<\/li>\n<figure id=\"attachment_4376\" aria-describedby=\"caption-attachment-4376\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/10-antena-gateway.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/10-antena-gateway-400x300.jpeg\" alt=\"Antena del gateway\" title=\"Antena del gateway\" width=\"400\" height=\"300\" class=\"size-medium wp-image-4376\" \/><\/a><figcaption id=\"caption-attachment-4376\" class=\"wp-caption-text\">Antena del gateway<\/figcaption><\/figure>\n<li><strong>Disponer de un cliente MQTT para verificar la informaci\u00f3n recibida.<\/strong> Esta parte era sencilla. Un tel\u00e9fono Android con un cliente MQTT convencional vale perfectamente. Junto con un soporte de m\u00f3vil para bicicleta, basta para tener toda la informaci\u00f3n delante de tus ojos.<\/li>\n<figure id=\"attachment_4370\" aria-describedby=\"caption-attachment-4370\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/04-heltec.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/04-heltec-400x300.jpeg\" alt=\"Heltec LoRa 32 con carcasa impresa en 3D\" title=\"Heltec LoRa 32 con carcasa impresa en 3D\" width=\"400\" height=\"300\" class=\"size-medium wp-image-4370\" \/><\/a><figcaption id=\"caption-attachment-4370\" class=\"wp-caption-text\">Heltec LoRa 32 con carcasa impresa en 3D<\/figcaption><\/figure>\n<li><strong>Salir y empezar a rodar.<\/strong> Iron\u00edas de la vida, lo m\u00e1s complicado de todo, durante estas jornadas. Ha sido preciso esperar al 2 de mayo para poder hacer la prueba.<\/li>\n<\/ul>\n<figure id=\"attachment_4377\" aria-describedby=\"caption-attachment-4377\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/11-bicicleta-pruebas.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/11-bicicleta-pruebas-400x300.jpeg\" alt=\"Bicicleta utilizada durante las pruebas\" title=\"Bicicleta utilizada durante las pruebas\" width=\"400\" height=\"300\" class=\"size-medium wp-image-4377\" \/><\/a><figcaption id=\"caption-attachment-4377\" class=\"wp-caption-text\">Bicicleta utilizada durante las pruebas<\/figcaption><\/figure>\n<p>Los resultados de la prueba han sido espectaculares. En direcci\u00f3n norte he logrado un enlace de 5.3 km de distancia, sin visibilidad directa con Santiponce, debido a las ondulaciones del terreno. Esto representa casi el doble del alcance que indica el fabricante para este tipo de dispositivos. Si bien esta ha sido la mayor distancia que ha alcanzado un paquete, una se\u00f1al confiable, sin p\u00e9rdida apreciable de paquetes, la he conseguido a 4.5 km de distancia, igualmente sin visibilidad directa. <\/p>\n<figure id=\"attachment_4372\" aria-describedby=\"caption-attachment-4372\" style=\"width: 190px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/06-mapa-santiponce-ladrillos.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/06-mapa-santiponce-ladrillos-190x400.jpeg\" alt=\"Enlace logrado hacia el norte\" title=\"Enlace logrado hacia el norte\" width=\"190\" height=\"400\" class=\"size-medium wp-image-4372\" \/><\/a><figcaption id=\"caption-attachment-4372\" class=\"wp-caption-text\">Enlace logrado hacia el norte<\/figcaption><\/figure>\n<p>Hacia el sureste, he alcanzado de manera confiable los 4.2 km de distancia en el enlace, en el mism\u00edsimo puente de la SE-30 sobre la Guadalquivir, junto al Estadio Ol\u00edmpico. <\/p>\n<figure id=\"attachment_4373\" aria-describedby=\"caption-attachment-4373\" style=\"width: 190px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/07-mapa-santiponce-cartuja.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/07-mapa-santiponce-cartuja-190x400.jpeg\" alt=\"Enlace logrado hacia el sureste\" title=\"Enlace logrado hacia el sureste\" width=\"190\" height=\"400\" class=\"size-medium wp-image-4373\" \/><\/a><figcaption id=\"caption-attachment-4373\" class=\"wp-caption-text\">Enlace logrado hacia el sureste<\/figcaption><\/figure>\n<p>Es probable que la se\u00f1al pudiera llegar m\u00e1s all\u00e1, pero por la configuraci\u00f3n del terreno, y porque se alcanzaba el fin del horario establecido para hacer deporte por la ma\u00f1ana, me tocaba volver a casa. Tambi\u00e9n es de rese\u00f1ar que en esta direcci\u00f3n a gran parte de la zona se encontraba en una sombra de cobertura, ya que las edificaciones de Santiponce, adem\u00e1s de los taludes de la autov\u00eda y la v\u00eda f\u00e9rrea a Huelva se interpon\u00edan entre ambas antenas, bloqueando la l\u00ednea directa de visi\u00f3n.<\/p>\n<figure id=\"attachment_4374\" aria-describedby=\"caption-attachment-4374\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/08-mapa-general.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2020\/05\/08-mapa-general-400x259.jpeg\" alt=\"Mapa general de las pruebas\" title=\"Mapa general de las pruebas\" width=\"400\" height=\"259\" class=\"size-medium wp-image-4374\" \/><\/a><figcaption id=\"caption-attachment-4374\" class=\"wp-caption-text\">Mapa general de las pruebas<\/figcaption><\/figure>\n<p>Pero visto lo visto, es bastante posible que a una altura elevada se pueda tener un nivel de recepci\u00f3n decente en la Isla de la Cartuja. Cuando tenga oportunidad, har\u00e9 pruebas desde la azotea del edificio de GMV, ubicado a 5.2 km de mi receptor.<\/p>\n<p>Durante las pruebas he realizado algunas grabaciones en puntos significativos del recorrido. He compilado las m\u00e1s interesantes en el siguiente v\u00eddeo<\/p>\n<p><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/ExRdLa5ysNY\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En estas semanas en las que el coronavirus nos ha<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[416,619,996,1450,1770],"series":[],"class_list":["post-4364","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-ciclismo-2","tag-esp32","tag-lora","tag-rssi","tag-wan"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4364"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/4364\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4364"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=4364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}