This is the embedded software on the Flight Controller for the project Mjollnir. The Flight Controller is on-board the rocket. The Flight Controller communicates with the ground through a radio link during all phases of the flight
The mission objectives for the Mjollnir project relevant to the electronics are the following:
Primary objectives
- E.PO.1 Monitor the rocket while it is on the launchpad and give a “Go”/”No go” signal
- E.PO.2 Control the rocket while it is on the launchpad
- E.PO.3 Trigger the drogue parachute’s ejection after apogee
- E.PO.4 Trigger the main parachute’s ejection before touchdown
- E.PO.5 Support rocket recovery operations
- E.PO.6 Record video footage from the rocket
Secondary objectives
- E.SO.1 Send real-time telemetry from the rocket
- E.SO.2 Receive & display real-time telemetry from the rocket at the Ground Station as long as the rocket is at a reasonable distance
- E.SO.3 Send real-time video from the rocket
- E.SO.4 Receive & display real-time video from the rocket at the Ground Station as long as the rocket is at a reasonable distance
- E.SO.5 Acquire flight data with more sensors than those deemed “mission-critical”
- E.SO.6 Store all flight data on-board the rocket for further analysis
All of them apply to some extent to the Flight Controller
The Flight Controller is a single PCB with power management, sensors, radio communication, and driver for the actuators used during the flight.
It has the following features:
- Dual microcontroller (main + backup)
- Low power long range LoRa transceiver
- Telemetry output via serial link (x3)
- GNSS support via serial link (x3)
- Compatible with 10 dof breakout board with MS5611 pressure sensors and MPU9250 IMU (2x)
- Compatible with K type thermocouples (2x)
- Flash memory
- EEDs driver for parachute ejection, with ESD protection + visual and audible warning (2x)
- RGB leds to display the board status
- Serial link to FPV transmitter
- CAN Bus
A more detailed description of the hardware is given in doc/hardware_description.md
This repository uses PlatformIO as the development tool for the two microcontrollers on the Flight Controller.
- Install PlatformIO Core or PlatformIO IDE on your computer
- Clone this repository
- [Linux] install udev rules
See test/
The protocol to communicate between the Ground Station and the Rocket is detailed in doc/data_protocol
.
├── doc/
│ ├── img/
│ ├── diagrams/
│ ├── sources
│ | └── flight_controller_v1.0.pdf
│ ├── data_protocol.md
│ └── hardware_description.md
├── include/
│ ├── hardware_definition_nano.h
│ └── hardware_definition_teensy.h
├── src/ // Code folder
│ └── test_companion_teensy.cpp // Use with hardware_test_teensy
├── test/ // Unit tests
│ ├── hardware_test_nano/
│ ├── hardware_test_teensy/
│ └── README.md // Documentation for the tests
├── env_nano.ini // Extra platformIO config
├── env_teensy.ini // Extra platformIO config
├── LICENSE
├── platformio.ini // PlatformIO config
└── README.md // This file
