Comunicaciones 📡🛰️ - EDAE-Chile/tt-and-c GitHub Wiki
El equipo de comunicaciones tiene como misión mantener un vínculo constante de información entre el cohete y la estación en tierra, permitiendo recibir telemetría del cohete proveniente de sensores e integración, y enviar comandos de control.
Establecer un protocolo de comunicación no es simple, porque la mayoría de los protocolos existentes no están diseñados para dispositivos en rápido movimiento a distancias sobre los 4 km. Así, existe varias restricciones a tener en mente:
- Distancia máxima entre la estación base y el cohete (> 4 km)
- Volumen de datos por paquete de telemetría o control
- Frecuencia de envío de información
- Tolerancia a errores de comunicación
Por esta razón, una de las primeras tareas es elaborar una especificación que determine los parámetros que deberá cumplir el sistema de comunicación a ser utilizado. Esto incluye, entre otras cosas, determinar el tamaño de cada paquete de comunicación, la frecuencia con la que se espera enviarlo, y la distancia sobre la que se espera poder mantener un enlace.
A partir de esto, se puede decidir:
- Las radios o módems
- Las antenas (Omnidireccionales? Yagi?)
- El protocolo de comunicación (LoRa? LoRaWan? SigFox? LTE-M?, etc)
- La frecuencia o banda de comunicación
- El formato de serialización (Protocol Buffers? Un formato custom?)
Entre otras cosas.
Qué tenemos
Actualmente, tenemos dos tarjetas Sparkfun Pro RF, que utilizan un módulo LoRa RFM95W para habilitar comunicación de alto rango. El uso de estos módulos no es definitivo, y su rango por especificación se encuentra justo en el límite de nuestros requerimientos.
Si bien ya se creó un protocolo básico para poder operar estas radios, el protocolo nunca fue probado para determinar su estabilidad a distintas distancias, y asumía que ibamos a usar el Pro RF en el cohete como principal microcontrolador, mientras que ahora dependemos de un Raspberry Pi Pico.
El protocolo actual se encuentra en el código de este mismo repositorio. Ahí se puede encontrar código de ejemplo en C++ para el cohete y la estación base, al igual que una librería para operar con el formato de serialización basado en Protocol Buffers.