msgbartop
Ïa! Ïa! Cthulhu Fthagn! Ph’nglui mglw’nfah Cthulhu R’lyeh wgah’nagl fhtagn!
msgbarbottom

02 may 20 Comunicación de larga distancia de dispositivos IoT: Heltec LoRa 32

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ía dejado aparcados hasta mejor ocasión. Uno de estos proyectos (ya habrá tiempo para hablar de otros) era el de lograr un sistema que permitiera recibir información de sensores distribuidos en zonas abiertas. En pocas palabras, sensorización IoT en el ámbito rural. No es exactamente una idea nueva, y era algo que me rondaba la cabeza cuando volví de Irlanda. Ya en su momento me hice con un par de dispositivos Heltec LoRa 32, 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ás de LoRa. Y aquí la parte importante es LoRa. LoRa (Long Range) es un protocolo de comunicación de larga distancia (WAN) y bajo consumo energético, 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ísticas del protocolo LoRa son las siguientes:

  • Capacidad de trabajo en modo unidireccional, bidireccional o multidifusión
  • Alta tolerancia a las interferencias
  • Alta sensibilidad para recibir datos (-168dB)
  • Basado en modulación “chirp“
  • Bajo Consumo (hasta 10 años con una batería)
  • Largo alcance 10 a 20km
  • Baja transferencia de datos (hasta 255 bytes)
  • Conexión punto a punto
  • Frecuencias de trabajo: 868 Mhz en Europa, 915 Mhz en América, y 433 Mhz en Asia

Como decía, adquirí 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ía podría aplicar, y que he dedicado algo más de tiempo a investigar con sistemas ESP32 que con los convencionales ESP8266. Así que tocó desempolvar los viejos Heltec LoRa que tenía guardados, y ponerlos a funcionar.

Pareja de Heltec LoRa 32 con carcasa impresa en 3D

Pareja de Heltec LoRa 32 con carcasa impresa en 3D

Heltec proporciona una librería bastante interesante para el IDE de Arduino que permite hacer funcionar de una manera bastante sencilla a una pareja de dispositivos. Como decía más 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ón (un mensaje es recibido por todos los dispositivos que estén en su rango de alcance). La manera más simple de empezar es con un emisor y un receptor, sin hacer uso de direcciones de dispositivo. Simple y efectivo, la librería viene con ejemplos de funcionamiento de este tipo, y en cuestión de minutos puedes tener un enlace LoRa funcionando. En mi caso, los dispositivos de que dispongo funcionan a 433 MHz, y pude tener comunicación 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.

Bien, 300 metros no es gran cosa cuando según el protocolo podemos llegar a decenas de kilómetros. Con estas primeras pruebas pude aprender algunas cosas interesantes:

  • La ubicación de la antena importa. Mucho. Es extraordinariamente importante que las antenas, tanto de emisor como receptor, estén verticales. Solamente este factor es de una importancia enorme para lograr una buena transmisión de la señal entre dispositivos. Pero no es el único. La frecuencia de 433 MHz no se lleva especialmente bien con paredes de hormigón forjado, ni con mallazo metálico. Si puedes poner la antena en espacio abierto, mejor que mejor.
  • Haz uso de una buena antena. Las que vienen con los dispositivos son extremadamente básicas. Hacen bien su función a distancias relativamente cortas, pero cuando intentas subir de nivel, la cosa cambia. Tanto es así, 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€ de precio, pero cuando intentas ir un poco más allá, es preciso invertir un poco más.
  • La cantidad de información que transmites importa. Tanto o más que todo lo anterior. A mayor mensaje que trates de enviar, más problemas tendrás para que llegue, debido a posibles interferencias durante el tiempo que estés transmitiendo. Además de esto, pude observar que el RSSI (indicador de fuerza de la señal recibida) se resentía a mayor longitud del mensaje. Así que nada de enviar elegantes datagramas JSON, o largos paquetes de datos. Empaqueta en hexadecimal, transmite los mínimos bytes posibles, y notarás una gran mejora en el rango de alcance de tus sistemas.
  • Optimiza los parámetros de los enlaces en función de lo que busques. Existe la posibilidad de ajustar diversos parámetros de la transmisión. Simplificando mucho, la velocidad de transmisión y el factor de propagación (spreading factor). A una velocidad de transmisión más baja y mayor factor de propagación, más confiable será la entrega del paquete (realizando un símil algo burdo, es como hablar muy despacio y alargando mucho los sonidos), pero necesitarás más tiempo para enviar la misma cantidad de información, por lo que perjudicarás la vida de la batería, y harás más uso de tiempo de señal (lo que en redes LoRa públicas 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ámetro ajustable es la intensidad de la señal emitida (sólo para el emisor), que se puede ajustar hasta 20 dBm, sobre un valor estándar de 14 dBm. De nuevo, a costa de penalizar la duración de la batería.

Tras haber aprendido esto en una serie de pruebas sucesivas, pero en las que no podía verificar el alcance efectivo alcanzado debido al confinamiento, me preparé para hacer una verdadera prueba de campo, en cuanto tuviera la oportunidad. Y la oportunidad llegó hoy. Al haberse permitido salir a realizar actividades deportivas por la mañana, preparé un escenario de prueba que pudiera efectuar mientras -cómo no- saliera a dar una vuelta con la bici por los alrededores de mi domicilio. La prueba consistió en lo siguiente:

  • Preparar un emisor LoRa que pudiera colocar en la bici. Me aburrí bastante pronto de enviar simples secuencias numéricas desde el emisor al receptor. Y dado que los Heltec LoRa son ESP32, con capacidad BLE, desarrollé un aplicativo que permite leer de mi pulsómetro Bluetooth mi ritmo cardíaco, y cada 2 segundos enviarlo empaquetado en hexadecimal, con lo que se puede enviar haciendo uso de tan sólo 2 bytes de información. Para colocarlo cómodamente en la bicicleta, imprimí una carcasa con la impresora 3D que se puede atornillar al manillar. Complementé el emisor con una antena de 7 dBi para 433 MHz, que instalé en el transportín de la bici.
  • Bicicleta con antena y Heltec instalados

    Bicicleta con antena y Heltec instalados

  • Crear un gateway LoRa-MQTT como receptor. La otra mitad del sistema, el receptor, actúa como una pasarela LoRa-MQTT. Se conecta a la red WiFi de mi casa, y vuelca la información recibida por LoRa en mi servidor MQTT, en un topic específico. Además de la información LoRa (decodificada para ofrecer el ritmo cardíaco de nuevo en decimal), añade el RSSI del paquete recibido, para poder verificar de manera sencilla la calidad de la recepción de la señal. De acuerdo a la documentación de LoRa, cualquier cosa peor de -120 dBm implica recibir una señal débil, y por encima de -30 dBm es excelente (el máximo teórico es 0). En mis pruebas, observaba problemas para recibir paquetes cuando el RSSI caía por debajo de -125 dBm.
  • Colocar la antena del receptor en una buena ubicación. Como decíamos antes, la antena y su ubicación importan, también en el receptor. Mi casa se encuentra en el valle del Guadalquivir, en una zona que no es especialmente alta. Lo ideal sería colocarla en lo más alto del tejado, donde hay pocos elementos que bloqueen la vista, y por tanto puedas tener visión directa de los alrededores. Pero no andaba estos días con muchas ganas de andar triscando por los tejados, y de todas maneras tengo un inconveniente en forma de colinas. La colina de Itálica 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ón. Así 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álica bloquea gran parte de la visión directa de la ciudad de Sevilla (en otro artículo hablaremos de ello). Pero para pruebas de campo en los alrededores, más que suficiente.
  • Antena del gateway

    Antena del gateway

  • Disponer de un cliente MQTT para verificar la información recibida. Esta parte era sencilla. Un teléfono Android con un cliente MQTT convencional vale perfectamente. Junto con un soporte de móvil para bicicleta, basta para tener toda la información delante de tus ojos.
  • Heltec LoRa 32 con carcasa impresa en 3D

    Heltec LoRa 32 con carcasa impresa en 3D

  • Salir y empezar a rodar. Ironías de la vida, lo más complicado de todo, durante estas jornadas. Ha sido preciso esperar al 2 de mayo para poder hacer la prueba.
Bicicleta utilizada durante las pruebas

Bicicleta utilizada durante las pruebas

Los resultados de la prueba han sido espectaculares. En dirección 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ñal confiable, sin pérdida apreciable de paquetes, la he conseguido a 4.5 km de distancia, igualmente sin visibilidad directa.

Enlace logrado hacia el norte

Enlace logrado hacia el norte

Hacia el sureste, he alcanzado de manera confiable los 4.2 km de distancia en el enlace, en el mismísimo puente de la SE-30 sobre la Guadalquivir, junto al Estadio Olímpico.

Enlace logrado hacia el sureste

Enlace logrado hacia el sureste

Es probable que la señal pudiera llegar más allá, pero por la configuración del terreno, y porque se alcanzaba el fin del horario establecido para hacer deporte por la mañana, me tocaba volver a casa. También es de reseñar que en esta dirección a gran parte de la zona se encontraba en una sombra de cobertura, ya que las edificaciones de Santiponce, además de los taludes de la autovía y la vía férrea a Huelva se interponían entre ambas antenas, bloqueando la línea directa de visión.

Mapa general de las pruebas

Mapa general de las pruebas

Pero visto lo visto, es bastante posible que a una altura elevada se pueda tener un nivel de recepción decente en la Isla de la Cartuja. Cuando tenga oportunidad, haré pruebas desde la azotea del edificio de GMV, ubicado a 5.2 km de mi receptor.

Durante las pruebas he realizado algunas grabaciones en puntos significativos del recorrido. He compilado las más interesantes en el siguiente vídeo

VN:F [1.9.20_1166]
Rating: 9.0/10 (1 vote cast)

Etiquetas: , , , ,

22 ago 19 Mis primeras piezas para la bici creadas con impresora 3D

Sí, tengo una impresora 3D. Hace algunas semanas me compré una impresora 3D, después de estarlo rumiando durante meses, a raíz de que en el trabajo compráramos un brazo robótico, que tuviera como una de sus funciones la impresión 3D. El caso es que el robot es una maravilla en general, pero a la hora de imprimir no es que destaque precisamente. Hasta ahora he estado usando la impresora 3D principalmente para temas de domótica (y que requieren otro artículo aparte) además de para algunas pequeñas figuras, soportes, etc… Pero ayer llegó el tema del ciclismo. Hace ya algún tiempo puse de nuevo en servicio el viejo cuadro de la Fuji como bici urbana, principalmente para ir y venir del trabajo, si bien con algunos cambios sutiles: transportín y alforjas, horquilla rígida, cubiertas lisas, corona de 9 piñones de carretera, manillar de paseo… y un monoplato de 48 dientes. Que como idea está bastante bien, pero que me ha traído bastante de cabeza.

Fuji en modo urbano

Fuji en modo urbano

El principal problema es que cuesta un poco adaptar un eje de pedalier y plato monstruoso, pensados para una bicicleta de pista, a un cuadro de bicicleta de montaña, ya que este último tiene la irritante tendencia a pegar con las vainas inferiores del cuadro. En su momento lo solucioné poniendo más espaciadores en el lado del plato, con lo que conseguí evitar que los dientes del plato dieran en el cuadro, pero generé un nuevo problema, y es que la biela contraria tiene una irritante tendencia a soltarse. De hecho, esto provocó que a punto estuviera de no poder terminar el viaje de alforjas de este año entre Teruel y Valencia (pero de nuevo, esta es otra historia, y deberá ser contada en otro momento). Ayer, dándome ya por vencido, llevé la bici a un taller en Sevilla, y si bien no me pudieron solucionar el problema, me dieron una pista para solucionarlo: el problema es que el pasante del eje del pedalier en el que se atornilla la biela quedaba demasiado adentro, y era necesario que quitara algún espaciador del eje. Y para evitar que el plato tocara en el cuadro, que pusiera espaciadores entre el plato y la biela. Y es aquí donde entra la impresora 3D.

Espaciadores en eje y plato

Espaciadores en eje y plato

Mi primera idea era usar unas simples arandelas metálicas para dar más espacio entre plato y biela, pero no tenía ninguna de los diámetros (interno y externo) necesarios. Pero el problema gordo vino al aflojar el eje del pedalier: los espaciadores de plástico de fábrica estaban desintegrados. Se cayeron a pedazos en cuanto aflojé el eje. Y ahí, puestos a comprar unos simples espaciadores de plástico, me vino la inspiración. ¿Por qué no crearlos en la impresora 3D? Total, peores que los que venían originalmente no iban a ser. Dicho y hecho. En un rato tenía diseñados los espaciadores a medida, y no tardé mucho más en imprimirlos. Ajustados a la décima de milímetro. Y en blanco, eso sí. Ahora a ver cuánto duran. :mrgreen:

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , ,

06 jun 17 Lago Tay, ciclismo de montaña y Real Madrid

Después de la victoria en la Copa de Europa del pasado sábado, salí a rodar un poco el domingo con Karim. EL sitio escogido fue Ballinastoe, el bike park de las montañas Wicklow cercano a mi lugar favorito en Irlanda: el Lago Tay.

Ciclismo de montaña junto al Lago Tay

Ciclismo de montaña junto al Lago Tay

Y como de costumbre, no nos decepcionó. Como se puede observar en la foto, varié ligeramente mi indumentaria habitual para celebrar la victoria del día anterior. :mrgreen:

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , ,

15 may 16 Lough Tay, Ballinastoe, Irlanda

Lough Tay, Ballinastoe, Irlanda

Lough Tay, Ballinastoe, Irlanda

Ayer estuve haciendo ciclismo en las Montañas Wicklow, al sur de Dublín, en la zona de Ballinastoe, donda hay un parque ciclista de montaña abierto al público. El parque en sí está muy bien, pero lo que es verdaderamente espectacular es la vista del Lago Tay desde la parte superior de la colina donde se encuentra el parque. Espero que os guste.

VN:F [1.9.20_1166]
Rating: 10.0/10 (2 votes cast)

Etiquetas: , , , , ,

20 feb 16 Vía de la Plata Mérida-Zamora: Prólogo (27/III/2015)

Esta entrada es la parte 1 de 7 de la serie Camino de Santiago 2015

En la Semana Santa de 2015, fieles a una tradición que en 2015 cumplía 10 años, mi padre y yo nos volvimos a poner en marcha para completar una aventura jacobea. En este caso, se trataba de culminar el Camino Mozárabe entre Córdoba y Santiago de Compostela, del que ya habíamos hecho dos tramos:

  • Vía de la Plaza entre Zamora y Santiago de Compostela. Realizado en 2010, acompañados por Pablo, y Ana con el coche escoba.
  • Camino Mozárabe entre Córdoba y Mérida. Realizado en 2013.

Se trataba, en este caso, de culminar el tramo intermedio, entre Mérida y Zamora. 358 kilómetros a realizar en 6 jornadas, alternando asfalto, pista, senderos y -gracias, gracias, gracias- antiguas vías romanas que cruzan la Península de Sur a Norte, con 2000 años de historia a sus espaldas.

La fecha escogida, como en otras ocasiones, fue la Semana Santa, al disponer de una serie de días de vacaciones que facilitaban enormenente estas tareas logísticas. A fin de poder aprovechar la Semana Santa de manera íntegra, decidimos realizar entre el Sábado de Pasión y el Jueves Santo, y poder tener algunos días para otros menesteres: mi padre -el auténtico héroe- salir el Viernes en procesión con la Hermandad de Los Dolores, y yo pasar unos días de vacaciones en Galicia con Ana.

IMAG0024.jpg

En esta ocasión, y para evitar dolores de cabeza, decidimos salir juntos desde Sevilla el mismo Viernes de Dolores. Tras finalizar mi jornada laboral, me dirigí a Santiponce, cerré la casa, y con la bicicleta ya preparada, me dirigí a la estación de autobuses de Plaza de Armas.

IMG-20150327-WA0001.jpg

Mi padre, por su parte, tomó el regional entre Córdoba y Sevilla, para llegar a la estación de tren de Santa Justa. Desde allí cruzó Sevilla hasta llegar a Plaza de Armas, donde nos encontramos. El día era caluroso y seco. Qué diferencia con la Semana Santa de 2013. No había color.

IMG-20150327-WA0007.jpg

En Plaza de Armas empaquetamos las bicis y nos dispusimos a esperar el autobús. Era un día de mucho trasiego de viajeros, y se notaba. Comienzo de vacaciones para muchos, y de aventuras para unos cuantos, entre los que nos encontrábamos. Las aventuras, en realidad, empezaron pronto. El autobús venía con retraso, a resultas de lo cual no llegamos hasta Mérida hasta el filo de las once de la noche. Al menos no tuvimos que preocuparnos de buscar restaurante para cenar, ya que lo hicimos en una de las paradas del autobús. Y, al llegar tan tarde, pudimos captar alguna bonita fotografía del Puente Lusitania, desde el Puente Romano de Mérida. Que hubiera sido el interesante de fotografiar, pero no se puede tener todo…

IMG_20150327_234516.jpg

IMG_20150327_234431.jpg

La noche en Mérida la pasamos en el Hotel Nova Roma, que ya conocía de haber visitado Mérida con Ana unos años antes. Céntrico y con un precio razonable, nos permitía hacer una salida temprana desde una ubicación inigualable en nuestra primera jornada.

VN:F [1.9.20_1166]
Rating: 10.0/10 (1 vote cast)

Etiquetas: , , , , , ,