Este repositorio contiene el código, información y documentación necesaria para montar un mini-receptor de señal de satélite con modulación LoRa.
El tipo de receptor se basa en los estándares del proyecto TinyGS creado por:
TinyGS se define como una red abierta de estaciones terrestres distribuidas por todo el mundo para recibir y operar satélites LoRa, sondas meteorológicas y otros objetos voladores, utilizando módulos baratos y versátiles. A diferencia de otras, no se requiere de grandes conocimientos en telecomunicaciones ni licencias de radioaficionado. Está orientada por una parte a la participación de personas en el mundo Maker sin grandes exigencias técnicas. Y por otro a dar servicio a los operadores de los satélites recibiendo telemetría y otros datos en tiempo real gracias al despliegue mundial de la red de estaciones.
La red TinyGS está creciendo de forma exponencial y está destinada a jugar un papel importante en la estrategia de los proyectos de mini-satélites públicos y privados.
En la elección del microcontrolador hay muchas opciones. Para el taller hemos elegido el TTGO LoRa32 V2 (433MHz) Además de esta placa necesitarás lo siguiente:
- Usuario de Telegram
- Acceso a una red WiFi
El procedimiento de instalación está en constante evolución por lo que vamos a señalar los bloques principales sin entrar en detalles. Detalles que sí podrás consultar en los enlaces correspondientes.
- Instalar el firmware en el microcontrolador.
- Obtener las credenciales de la plataforma (MQTT). Para ello tendrás que acceder al BOT de Telegram: @tinygs_personal_bot:
Como soporte a la placa del microcontrolador tenemos dos opciones:
- Para uso interior: caja impresa en 3D:
- Para exterior se puede usar la de los relés Sonoff:
La antena es la pieza clave a la que tendrás que prestar atención frecuentemente. Porque requerirá reorientaciones habituales y cambios en base al satélite que tengas como prioridad de recepción. Hay múltiples opciones, desde la más DIY hasta comerciales ya calibradas que puedes comprar on-line:
-
Dipolo, es una antena simple compuesta de dos elementos y fácil de construir:
- Rabbit Ear (por @estbhan)
- JPCoax (por @kreatif)
- Aliexpress 400-433 MHz Parece que se mejora su sensibilidad usando unos tornillos extensores.
-
Antena de cuarto de onda (a.k.a plano de tierra)
-
Antenna móvil, generalment de banda dual de radioaficionado 2m/70cm
-
Direccional: Antena Yagi de UHF430-450MHz
El backoffice de TinyGS publica dos topics con información de tu estación. Esta aplicación de control se basa en la subscripción a los mismos:
tinygs/[user]/[nombre de la estación]/cmnd/begin
tinygs/[user]/[nombre de la estación]/cmnd/frame/0
Node-RED es una herramienta de programación visual. Muestra gráficamente relaciones entre objetos (nodos) que son funciones que transforman el mensaje que les llega de los nodos precedentes. Utilizando nodos estándar, el usuario no necesita programar. Aunque si se quiere, se pueden crear funciones programando en JavaScript. En definitiva permite, desde un navegador web, construir flujos para procesar información y comunicarla a través de infinidad de integraciones.
Vamos a montar un dashboard que nos permitirá monitorizar hasta dos estaciones TinyGS. Es nuestro NOC personal que nos permitirá:
- Saber qué satélite estamos escuchando.
- Cuál fué el último satélite recibido
- Saber los valores de configuración del modem.
- Analizar la señal recibida a través del histórico de los valores de RF.
- Recibir avisos:
- Receptor caído. No se conecta a la red WiFi
- Satélite recibido.
En primer lugar necesitaremos tener instalada una instancia de Node-RED. La recomendación más actual es hacerlo en un contenedor Docker. Pero utilizar una Single Board Computer como la Raspberry Pi es muy adecuado porque los requisitos de capacidad de proceso y memoria son muy bajos.
También vamos a necesitar algunos 'nodos' adicionales a los que incluye la instalación.
- node-red-dashboard Nos suministra los nodos necesarios para construir el interface del usuario.
- node-red-contrib-ui-media Nos permite mostrar las imágenes en el Interface de Usuario
- node-red-node-mysql Nos permitirá acceder a una base de datos MySQL. En nuestro caso para guardar mensajes recibidos.
Para recibir los avisos vamos a usar el servicio de If This Then That que se integrará fácilmente en Node-RED usando el nodo de petición HTTP.
https://maker.ifttt.com/trigger/TinyGS/with/key/[clave de IFTTT]?value1={{{payload}}}
El servicio a configurar es simple. Utilizaremos el componente Webhooks para captar el evento y las notificaciones para que salte el aviso en nuestro dispositivo: móvil, smartwatch...
Una vez configurado el servidor Node-RED y nuestro evento en IFTTT. Nos queda tres últimos pasos:
- Crear la tabla en la BBDD MysSQL:
CREATE TABLE `tinygs` (
`dtg` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`station_id` varchar(30) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
`frame` varchar(512) CHARACTER SET ascii NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Opens of the house''s main door';
ALTER TABLE `tinygs`
ADD PRIMARY KEY (`dtg`,`station_id`);
-
Importar en Node-RED el fichero nodered_dashboard4TINYGS.json que contiene todos los flujos.
-
Configurar las credenciales y hash para acceder a:
- Servidor MQTT
- Servidor MySQL
- Llamada a IFTTT