Resumen

Para las siguientes misiones de ASHAB, se plantea usar un sistema basado en la NS1, pero con varias mejoras.

Por un lado, a los mensajes APRS, se han añadido dos campos, número de satélites y ratio de ascenso. Estos van justo antes del comentario, por lo que a la hora de parsearlo, los campos anteriores son compatibles.

Segundo, se plantea la posibilidad de usar dos radios diferentes, la analógica con APRS y SSTV, y una radio digital con modulación LoRa. Esta segunda radio usará un formato de paquete similar para que el parseo sea casi idéntico, salvo que el origen será diferente, casi con seguridad el puerto serie (LoRa→Arduino→USB-Serie).

Además, se opta por guardar los datos en una base de datos, por sencillez y comodidad se usa una base de datos CouchDB, ya que su API HTML y su formato de documentos JSON, casan bien con las tecnologías ya usadas para el tracker.

Esquema

Funcionamiento

Ruta analógica

El sistema de telemetría de la cápsula, codifica los datos en un paquete APRS, que es convertido en audio (formato APRS, AFSK 1200), y enviado a través de la radio analógica. Esta señal es captada por un receptor dedicado o un SDR, y el audio recibido es decodificado por Direwolf, mostrando el texto de los paquetes recibidos. La aplicación de telemetria de ASHAB, se conecta con Direwolf por medio de un socket TCP, usando un protocolo de intercambio de datos para sistemas que usan APRS llamado AGW. Por este socket se le pide a Direwolf que nos envie los paquetes recibidos enviándole un mensaje AGW tipo “m”. Direwolf entonces envía los paquetes recibidos a la aplicación de telemetría ASHAB, que los analiza, y saca los campos del mensaje, mostrándolos graficamente, y si está configurado un archivo de log en la aplicación, guardándolos en él. Además, si se ha configurado un usuario, password y una base de datos , los datos se envian al servidor de ASHAB, haciendo una petición HTTP al script upload-couchdb.php. En esta petición se adjunta la autentificación HTTP, y dos parámetros, el propio mensaje de telemetría y la base de datos a utilizar. Este script, comprueba las credenciales y los datos, y en caso de estar todo correcto, inserta los datos en la base de datos indicada, creándola si es necesario.

Ruta digital

El sistema de telemetría de la cápsula, esta vez, envía los datos directamente a través de la radio LoRa, que son recibidos por otra radio LoRa conectada a un arduino, que transmite el paquete recibido por su puerto serie-usb. La aplicación de telemetría ASHAB, si está configurada para usar el puerto serie, recibe el paquete, y al igual que con los datos recibidos de direwolf, los muestra, loguea y los envía al servidor si se han establecido los parámetros de configuración necesarios.

Tracker

El tracker muestra el último paquete recibido de la base de datos configurada. Para ello hace peticiones al script get-mongodb-data.php, que según los parámetros pasados, devolverá diferentes datos de la BBDD en formato JSON.

El script, acepta diferentes parámetros en su URL. Si es invocado sin parámetros, devuelve todas las entradas de la base de datos.

Los parámetros aceptados son:

  • id=“num” : Devuelve los datos de telemetría de la entrada indicada por su ID en la base de datos.
  • last : Devuelve el último dato insertado en la base de datos
  • alt: Devuelve todos los datos de altitud en un array. Se usa para renderizar el gráfico de altitud del tracker.

Asi por ejemplo para pedirle un dato determinado haríamos una petición a http://ashab.space/tracker/get-mongodb-data.php?id=146659490350052900, o para pedir el último dato, lo haríamos a http://ashab.space/tracker/get-mongodb-data.php?last

La aplicación del tracker recibe estos datos en JSON, los deserializa, y los usa para mostrar la última posición y datos de la cápsula.

El código del tracker está disponible en https://github.com/ladecadence/ASHAB-Tracker