The avionics uses an Event Driven model in order to clearly transition between states of operation.
- Pre-Launch
- 1a. Startup initialization
- 1b. Debug Mode
- Launch
- 2a. Flight Mode
- 2b. Apogee
- Termination
- 3a. Descent
- 3b. Recovery
The avionics flight software operates on a read-eval loop in order to change states and respond to its environment.
The avionics flight software was written in compliance with NASA JPL's Safety-Critical Code standards.
main.cpp - Start point of flight controller.
config.h - Mission specific configuration values.
data.h - Structure of current data frame.
Avionics - Implementation of flight logic.
Sensors - Interface to filtered data from hardware.
Hardware - Interface to PCB mechatronics.
Parser - Decompression algorithm for satcomms.
Here is the current status of the code:
- MicroSD logging of current data frame to data.txt.
- Altitude readings from filtered and error checked BMP280 and MPL3115A2.
- Timestamp from on-board Teensy RTC.
- PID Heating on inboard heater trace.
- Integration of uBlox M8Q GPS.
- RockBlock data downlink.
- Flight termination optionally based on altitude and GPS setpoints.
- MicroSD logging of errors and notable events to log.txt.
- External temperature reading from thermocouple.
- Ascent rate calculations from filtered and error checked data.
- Current readings for heaters, cutdown FET, and radio.
- Debug LEDs for all appropriate states.
- Fault LED if anything flight-critical is not fully functioning.
- Debug mode disabled at altitude.
- GPS successful set to flight mode.
- Compression of data frame into bitstream for comms.
- RockBlock command parsing for satcomms uplink.
- APRS downlink with Dorji.
- CAN communication of current state through payload interface
- Watchdog to prevent main thread halt.
