KRUPS Firmware 

University of Kentucky
Fall 2024

For the 2024-2025 school year the KRUPS project had two missions coming up. There was interest in updating the hardware from ATSAMD21 Cortex M0 and ATSAMD51 Cortex M4 due to needing more processing power. We switch to an ESP32-S3. This resulted in needing to manually port the firmware over and I used this opportunity to rearchitect the backend. 

The new firmware was designed to be flexible to enable a single firmware for multiple different hardware applications. For one of the missions we had the KRUPS Capsule, FemptoSats (small reentry devices used for technology demonstration),  a downlink on the sounding rocket, and potentially a downlink on the ground. My goal was to use a configuration file when I compile the firmware to set up the firmware for each device as outside of the ESP32 each device had different set of sensors. 

Based off of previous version, the firmware is built on a real time operating system (freeRTOS). After initialization there are four types of tasks. A sensor bus which communicates with the sensors or radios based on a queue. The queue is loaded by timer tasks for each sensor dictating the pulling rate of the sensor and packet build task when a packet is ready to be transmitted. The packet built tasks take the sensor data and prepare it to be transmitted. Since we are generating more data than can be transmitted these tasks would select data points to be sent. Deployment task trigger a parachute deployment to slow the capsule down based on the altitude and velocity. The last task managed the a publish and subscribe model to pass the information between tasks. 

The configuration of what sensors were located at what addresses was to be handled by the configuration file. 

Previous
Previous

Snek

Next
Next

Latex Templates