ESP32 LoRa for dummys - TinyGS

TinyGS es una red abierta de estaciones terrestres distribuidas por todo el mundo para recibir y operar satélites LoRa, sondas meteorológicas y otros objetos aéreos, utilizando módulos económicos y versátiles, en concreto  placas  de desarrollo ESP32  LoRa (por el momento con los módulos de comunicaciones LoRa SX126x y SX127x de Semetech).

Los chips de la serie  SX127x tienen una sensibilidad en RX de hasta -148 dBm y una potencia en TX de 20 dBm (100 mW) en la banda de 137MHz a 1020MHz 

Arquitectura de la red TinyGS

Los imprescindibles: 
  • placa ESP32-Lora (consulte compatibilidad)
  • cuenta en Telegram (para obtener las credenciales MQTT)
  • un  ordenador o dispositivo móvil para la configuración inicial.
Los aconsejables: 
  • Disponer de un entorno de desarrollo para Arduino como Arduino IDE o PlatformIO (no es necesaria, pero se puede usar para compilar y cargar el firmware en la placa de desarrollo). TinyGS aconseja usar  PlatforIO (aconsejable) pero, si su placa está soportada por el instalador WEB su uso no le aporta nada y por tanto es perder el tiempo, otra cosa es que no lo esté y haya que por ejemplo modificar la definición de los pines.
  • Una antena externa , con la de la placa desde una ventana despejada se pueden recibir satélites que disten hasta 500 km con antena externa llegará hasta los 2.500 lo que supone unas 10 veces mas de tramas recibidas. (Tengo pendiente hacer una caomparativa dee antenas).

Pasos para la instalación rápida del firmware
  • Identificar la placa de desarrollo ESP32 LoRa que vamos a usar(p.e. LiLYGO 433/470 MHz Model: LORA 32 T3_V1.6.1 que monta los siguientes chips: ESP32-PICO-D4, SX1278 y CH9102) y comprobar que está soportada directamente por el proyecto. Se ha elegido la banda de 433 MHz pues es la que dispone de un mayor número de satelites con telemetría LoRa en octubre de 2024 ( 5 en 137 Mhz; 46 en 433 Mhz; 5 en 868 MHz; 0 en 2400 MHz).
  • Darse de alta como usuario en la red TinyGS, para ello:
    • Conéctese a Telegram
    • Únase al grupo TinyGS
    • Envíe el mensaje @tinygs_personal_bot para iniciar una conversación privada con el sistema.
    • Ejecute el comando /mqtt y recibirá como respuesta un usuario único y su contraseña, guardelos y no los comparta
    • Otros comandos del bot son:
      • /stations le permiten conocer el estatus de la estación, en este momento informa que está inactiva.
      • /delete da de baja una estación de la base de datos
      • /weblogin genera un loginlink
  • Instalar el firmware para ello:
    • Entre en un navegador (p.e. Chrome) y conéctese a la URL   https://installer.tinygs.com/ 
    • Seleccione la conexión USBSerial a tavés de la cual se va flashear (Cargar) el firmware en la placa de desarrollo, recuerde que cada placa tiene un nombre y solamente aparece en el combo cuando la placa está conectada por USB al ordenador con un cable que admita datos (no todos los soportan)
    • Elegir la acción a realizar: instalar borrando o conectarse a la consola (Desde consola se puede resetear la placa, descargar el log)
    • Confirmar la instalación (tarda unos 2' en flashear la memoria con el firmware procedente del servidor, son unos 4 M)
    • Hacer reset
  • Configurar el firmware
    • Lo mas sencillo es que se conécte a su teléfono móvil y vaya a la  configuración del sistema (p.e. la rueda en Android) para seleccionar el AP sin cifrar "My TinyGS" y así poder acceder por primera vez a la placa de desarrollo
    • Entrar en el navegador y conectarse a la IP192.168.4.1 que es la que tiene la placa/firmware por defecto (si no puede acceder compruebe que tiene seleccionada la red y en caso necesario haga RESET a la placa, la placa indica cuando tiene su AP activo con "config AP available").
    • Si todo va bien le aparecerá un menú como el siguiente:


    • Station dashboard: permite configurar los parametros de funcionamiento. Los comandos de consola son: !e borrar y reset; !b reboot y !p emite una trama de prueba (Hay que haber habilitado que se tiene licencia o que no se usan amplificadores en 400.45 MHz con 500 KHz de BW)
    • Configure Parameters: permite la configuración de la placa (nombre de la estación, usuario (admin) y contraseña de la AP, nombre/SSID y contraseña de la WIFI, modelo de la placa, uso horario, coordenadas, usuario y contraseña MQTT que hemos obtenido por Telegram con el bot y con los que se conecta a mqtt.tinygs.com:8883, board template)
    • Upload new version: permite actualizar directamente el dispositivo
    • restart station: rearrancarla
  • Cuando la estación esté funcionando y actualizando datos recibirá un mensaje de confirmación por Telegram y ademas la placa comenzará con la el carrusel de pantallas
Conectandose a la WiFi


Pantalla inicial con la hora y el nombre de la estacion "MalvaRosa
"


Pantalla en espera del paso de un satélite

Pantalla en espera del paso de un satélite

Pantalla de estado de conexion MQTT:ON WIFI Connected e IP


Además puede acceder al servidor TinYGS via web https://tinygs.com/ para obtener mas información




Log de las tramas recibidas por una estación

Consola web de la estación TinyGS

Localización de las estaciones terrestres TinyGS



Cuestiones

¿Cuántas estaciones puede tener un mismo usuario?

Ninguna, una o más de una. 

¿Se puede hacer que trabaje una placa ESP32 LoRa como TinyGS en otra banda distinta a la predefinida?

Stefan OS6ISP me puso en la pista que por firmware se puede hacer que una placa de desarrollo Lilygo ESP32 Lora para 433 con SX1278 se puede hacer trabajar en 133 MHz con filtros y LNA adecuados por ejemplo los de Nooelec.

En principio del análisis de las hojas de características de la serie SX127x de SEMTECH toda ella puede trabajar en 134 y 433, pero únicamente SX1276, SX1277 y SX1279 pueden hacerlo en 868 MHz, visto de otra manera el SX1278 no puede trabajar en 868 MHz, por último el SX1280 es el unico que podría hacerlo en 2,1 GHz.

Por defecto en la instalación de TinyGS está activada la opción Auto Tuning que en función de la placa selecciona  y de los satélites predefinidos que pueden ser recibidos (localización y hora) se pone en recepción en la frecuencia correspondiente desde que es visible en el horizonte hasta su desaparición, esta opción es una buena idea sobre todo cuando queremos ahorrar energia (p.e. alimentado por batería). 

Para quitar el "autotuner" (Para seleccionar manualmente frecuencia y modulación.)  o hacer que trabaje en otra banda que la predefinida por la placa de desarrollo hay que solicitar el enlace de conexión (es temporal y caduca) al bot de Telegram con el comando /weblogin y en la variables Auto tunning seleccionar (DISABLED,  Enabled 137, Enabled 433, Enabled 868-915, Enabled 2.4 G) . 

De las pruebas realizadas con playas Lilygo ESP32 Lora he encontrado que seguramente por la circuiteria (filtros, etc.):

  • La placa 433 (SX1278) trabaja con 137 MHz y con 433 MHz  ajustando la banda de auto tunning
  • La placa de 868 (SX1276)solamente trabaja con 868 MHz ajustando la banda de auto tunning

Lo que reafirma que la mejor opción para configurar una TinyGS es una placa como  Lilygo ESP32 LoRa 433 con SX1278

 ¿Se pueden recibir todos los satélites de órbita baja?

No, solamente aquellos que envían telemetría LoRa en las bandas de 137, 446, 866 y 2100 MHz, y además han hecho pública la descripción de los campos de las tramas emitidas y estas no van cifradas.


Para leer mas sobre ESP32 LoRa for dummys - TinyGS

Comentarios

Entradas populares de este blog

SDR - Software Defined Radio - IIIb: Receptores RSP o MSI (MSI3001: MSI2500 + MSI001)

Amplificadores LNA compactos

Ayudas a la navegación aerea: NDB, VOR, ILS y ATIS