Este repositório concentra todos os componentes utilizados no sistema de telemetria da Ground Station (Estação de Solo) do foguete Nashira, incluindo:
- Firmware embarcado desenvolvido para os ESP32 da Ground Station;
- RocketLib biblioteca Python para empacotamento, decodificação, streaming e publicação MQTT;
- Notebooks e scripts para validação dos brokers HiveMQ;
- Ferramentas de debug e simulação de telemetria.
A telemetria da Payload Nashira consiste em um sistema embarcado que captura dados e os envia para o solo por meio de rádio LoRa. A Ground Station, por sua vez, tem o papel de receber esses dados via LoRa e publicá-los, através de WiFi, em 2 brokers MQTT criados na plataforma HiveMQ.
O objetivo deste repositório é facilitar o uso, manutenção e expansão do sistema de telemetria em solo.
/
├── embedded/ # Firmware embarcado na Ground Station
│ ├── PAY_esp_slave.ino # Código do ESP secundário (UART)
│ └── PAY_unificado.ino # Código do ESP principal: coleta, visualização e envio
│
├── rocketlib/ # Biblioteca Python interna para Telemetria MQTT
│ ├── config.py # Configurações dos brokers, tópicos, CSV e formato dos dados
│ ├── data_utils.py # Empacotamento binário, decodificação e streaming de dados
│ ├── mqtt_utils.py # Publicador e assinante MQTT em formato binário
│ └── __init__.py
│
├── test_broker/ # Testes de comunicação com o broker MQTT - valida se o Broker está funcional
│ ├── data/
│ ├── scripts/
│ └── nashira_broker_test.ipynb # Notebook de validação
│
├── subscriber.ipynb # Notebook para inspecionar mensagens recebidas - valida se os dados estão chegando no Broker
└── README.md # Este arquivo
Os firmwares foram desenvolvidos para ESP32.
- Recebe dados via UART do ESP32 principal e os envia via WiFi para um Broker MQTT secundário.
- A função deste segundo ESP32 é garantir redundância na comunicação Ground Station-Dashboard, publicando os dados de telemetria em um broker de backup para a Dashboard.
Firmware principal com as seguintes responsabilidades:
- Leitura de sensores embarcados (GPS);
- Exibição de informações no Display;
- Recepção via LoRa da telemetria transmitida pela Payload embarcada no foguete;
- Sincronização com o ESP Secundário para garantir a redundância na comunicação Ground Station-Dashboard.
O sistema de redundância foi implementado devido à incerteza na qualidade do sinal de WiFi no local da competição. Por ser uma zona remota e não sabermos ao certo qual operadora de internet ofertava o melhor sinal, roteamos a internet de dois celulares, ambos com operadoras distintas. Isso foi feito a fim de garantir que a Dashboard recebesse os dados de telemetria para o sucesso da Missão Nashira.
A pasta rocketlib/ contém toda a infraestrutura Python usada no solo para:
✔ empacotar e desempacotar a telemetria ✔ publicar em múltiplos brokers MQTT ✔ assinar e validar pacotes ✔ simular fluxo de telemetria usando CSV
- Armazena configurações dos dois brokers HiveMQ, incluindo host, porta (TLS), usuário e senha.
- Define parâmetros centrais:
TOPIC→ tópico MQTT (rocket/telemetry)- Caminho do CSV para simulação
- Frequência de amostragem do sistema
- Mapeamento dos tipos de dados da telemetria
Implementa a conversão entre:
| Formato | Descrição |
|---|---|
| dict → binário | Para envio via MQTT |
| binário → dict | Para análise em solo |
Características:
- Usa uma struct compacta (59 bytes) representando: tempo, GPS, altitude, velocidades, orientação, acelerômetros, flags (GNSS, IMU, paraquedas).
- Garante compatibilidade EXATA com a struct C enviada pelo ESP32.
- Inclui
stream_telemetry_from_csv()para testes contínuos de telemetria sintética.
- Conecta-se** simultaneamente a 2 brokers.
- Publica telemetria em formato binário compactado.
- Loop configurado por
config.DT. - Pacotes são enviados continuamente a partir de CSV ou fluxo real.
- Recebe pacotes binários e os decodifica para dict/JSON.
- Imprime telemetria formatada, útil para inspeção ou gravação posterior.
- Aceita múltiplas conexões concorrentes.
Ambos operam sobre MQTT v5 + TLS, respeitando as boas práticas de telemetria crítica.
Notebook simples para:
- Criar um assinante MQTT
- Visualizar os pacotes recebidos
- Utilizado para validar se a telemetria estava de fato chegando aos brokers durante testes no campus (sem a dashboard).
Notebook completo para testes, contendo:
- Testes de conexão TLS
- Validação do binário → dict
- Simulação de telemetria real com gráficos
- Verificação de perda de pacotes
- Testes com múltiplos brokers simultâneos
Este repositório foi desenvolvido pelos membros da Equipe de Propulsão e Tecnologia Aeroespacial (EPTA/UFU) como parte do subsistema de Telemetria e Payload do foguete Nashira. O objetivo é garantir que o conhecimento técnico seja preservado e transmitido aos próximos membros da equipe.