Skip to content

Epta-space/nashira_ground_station

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Nashira Ground Station – Firmware & MQTT Telemetry Tools

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.


📁 Estrutura do Repositório

/
├── 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

🛰️ 1. Códigos Embarcados (embedded/)

Os firmwares foram desenvolvidos para ESP32.

📌 PAY_esp_slave.ino ESP32 Segundário:

  • 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.

📌 PAY_unificado.ino ESP32 Principal:

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.


🧰 2. RocketLib (Biblioteca Python)

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


📌 config.py — Configurações Centrais

  • 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

📌 data_utils.py — Empacotamento e Decodificação

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.

📌 mqtt_utils.py — Publicador & Assinante MQTT

🟢 Publisher

  • 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.

🔵 Subscriber

  • 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.


📓 3. Notebooks e Scripts de Teste

📘 subscriber.ipynb

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).

📘 test_broker/nashira_broker_test.ipynb

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

🤝 Agradecimentos

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.

About

Estação em Solo da Missão Nashira, LASC 2025

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published