msgbartop
Iä! Iä! Cthulhu Fhtagn!
msgbarbottom

19 sep 20 El gateway LoRa*. Hardware y software

Esta entrada es la parte 3 de 7 de la serie Gateway LoRaWAN

Seguimos haciendo progresos con mi gateway LoRaWAN. En este caso, en el ámbito del gateway en sí. El lector avispado habrá notado que he encabezado este artículo con Lora* en vez de con LoRaWAN. Y es que en este punto lo que tengo implementado es más bien un gateway LoRa que actúa de pasarela a un servidor MQTT, y no un gateway LoRaWAN propiamente dicho. ¿Cuál es la diferencia? Es sutil, pero importante. A estas alturas lo que he implementado es un gateway, sí, entre dispositivos, y terceros servidores, pero no realizo aún control de acceso, identificadores de equipos en la red, ni nada por el estilo. Así que no puedo -en realidad- considerarlo un gateway LoRaWAN completo. Pero de momento, para el propósito que manejo, basta y sobra.

20200805_094600

Ya he hablado con anterioridad del dispositivo que estoy utilizando para construir el gateway: se trata de una placa Heltec Lora 32, que proporciona capacidad de conexión LoRa, WiFi y Bluetooth, incluyendo la variante Low Energy. Con anterioridad he estado haciendo pruebas con la variante de 433 MHz, pero para este proyecto en cuestión he optado por respetar la normativa radioeléctrica europea, y desplegarlo con la variante de 868 MHz, de la que disponía de un dispositivo que hasta ahora no había hecho un gran uso (en parte porque vino con la pantalla OLED quebrada, y ésta funciona bastante mal). Otro elemento de la configuración es la antena de recepción y el adaptador eléctrico, pero estos elementos quedarán para otro artículo.

En lo referente al software, he desarrollado un software con las siguientes características:

  • La base del sistema son las librerías de Heltec que permiten implementar comunicaciones LoRa. Los aspectos principales de la configuración ha sido establecer los parámetros de conexión adecuados para comunicarse adecuadamente con los dispositivos cliente, en este caso unos Heltec CubeCell. En concreto, los siguientes aspectos son los que hay que configurar:
    LoRa.setSpreadingFactor(8);
    LoRa.setSignalBandwidth(125E3);
    LoRa.setCodingRate4(4);
    LoRa.setPreambleLength(8);
    LoRa.setSyncWord(0×12);
  • El siguiente punto de importancia es la implementación de un sistema de configuración de la conexión del cliente WiFi mediante un AP provisional: IotWebConf. Con esta librería, válida para dispositivos ESP8266 y ESP32, se puede levantar un portal web y un AP para realizar la configuración de la WiFi en el dispositivo. La idea es sencilla: cuando el dispositivo no tiene configurada una conexión WiFi, levanta un punto de acceso con un portal web de configuración, al que se puede conectar para establecer los parámetros de la WiFi (así como otro tipo de parámetros configurables, como el servidor MQTT, por ejemplo). Una vez establecidos, el sistema almacena estos parámetros en la EEPROM de la placa, reinicia, y conecta a la WiFi proporcionada. También permite introducir una nueva configuración WiFi en caso de que se mueva el dispositivo a una ubicación en la que la WiFi configurada no tenga alcance. La principal ventaja es que no hay que preconfigurar en código los parámetros de conexión, pudiendo hacerlo en tiempo de ejecución. A continuación se puede ver una captura de la interfaz web que se levanta:
  • portal-wifi
  • Otro aspecto adicional de esta librería es que permite realizar la actualización de firmware On-The-Air: la interfaz web proporciona una vía para cargar el software precompilado de Arduino en la placa, sin tener que conectar la misma a un PC mediante cable, además de incluir un sistema de seguimiento de versiones de firmware. Sumamente útil, teniendo en cuenta que el gateway va a estar ubicado, en mi caso, en lo alto del tejado.
  • Por último, he realizado algunos ajustes adicionales en optimización de la transmisión de datos entre dispositivo y gateway. La principal (en el caso de transmisión de valores numéricos) es la utilización de codificación hexadecimal, para transmitir menos bytes y optimizar el tiempo de vuelo de los datos.

En cuanto a la recepción de datos, ha sido sumamente exitosa. En el código de ejemplo utilizado en el cliente, se envía una trama compuesta de dos valores en hexadecimal, que son inyectados en un topic MQTT, junto con el valor del RSSI de la transmisión, a fin de controlar la calidad de la misma. El servidor MQTT se encuentra completamente ajeno al sistema, siendo un servidor multifunción que utilizo para diversos proyectos.

trafico-mqtt

El resultado es, hasta ahora, bastante bueno. En próximos capítulos hablaré de otros elementos del sistema.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , , , , , , , , ,

13 mar 11 Jugando un poco con la MD80

Hace apenas 24 horas que tengo la MD80, y no he podido resistirme a hacer un par da maldades con ella. La primera era bastante obvia: buscarle una ubicación. La cámara viene con varios soportes: una pinza, uno atornillable, y una extensión para la pinza. Llevaba tiempo con ganas de poder colocar la antigua cámara en el casco, y la verdad es que esta cámara me lo ha puesto bastante fácil:

Casco con minicámara

Casco con minicámara

La manera de colocarla ha supuesto un hacer un poco de bricolaje. He realizado un par de taladros en el casco, con la profundidad adecuada para insertar dos tacos del 4, que he fijado con cianoacrilato. Por lo general suelo utilizar resina epoxi para este tipo de cosas, pero el poliestireno expandido (corcho blanco, para entendernos) no se lleva nada bien por este tipo de pegamento. La verdad, el cianoacrilato se ha portado bastante bien, aunque como me he pasado un poco taladrando en uno de los agujeros -lo que hacía que el taco tendiera a hundirse-, he tenido que utilizar un viejo truco de aeromodelismo que me enseñó Pablo para rellenar el hueco: meter un poco de algodón, y empaparlo en cianoacrilato con mucho cuidado. El cianoacrilato provoca que el algodón se endurezca, formando una masa sólida (que por cierto, se calienta bastante y desprende gases nocivos) en la que he podido fijar el taco. El resultado final no ha sido nada malo.

El segundo trasteo ha sido software en vez de hardware. He retocado el firmware de la cámara para hacer que no se haga una sobreimpresión de la fecha. Tuve noticia de que se podía realizar esta modificación gracias a un mensaje al respecto en el hilo al respecto en ForoMTB. Hace falta Windows para poder hacer el cambio, pero la verdad es que ha funcionado bastante bien.

Y ahora, a ver cuándo puedo salir a probar el invento… :)

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , ,