Software and Telemetry
open source, full stack
It takes a significant amount of software to make the HAPP fly and to enable two-way communications during flight. The code base consists of onboard software for the two Arduino flight computers, ground-based code running in a hosted application stack, and a mobile device app. Where possible, we tried to utilize open source tools for our development environment and code repository, staying true to the ethos of the Arduino community.
The HAPP has two onboard computers, the Autopilot (AP) and the Flight Controller (FC). The primary function of the AP is to read sensor data and control the RCS jets. Sensor data includes environmental variables as well as the vehicle's attitude and accelerations. The decision to fire jets is based on several factors, including the amount of gas remaining, spin rates and attitude errors, and where the HAPP is located in the flight profile; we don't want to waste gas by fighting too hard against the jet stream as we pass through it.
The AP talks continuously with the FC, exchanging status information and verifying the other computer is functioning normally. If the FC stops responding for any reason, the AP immediately terminates the mission by cutting the balloon tether and deploying the parachutes. This is a failsafe against any number of problems, including loss of power on the FC's independent electrical bus. If the FC goes down, we lose communication with the HAPP, but at least we know it's coming down near the last GPS coordinates sent by the FC.
Finally, the AP contains code to handle Bluetooth communications with a mobile device during pre-launch, independent of the satellite-based communication system controlled by the FC. This is useful for troubleshooting certain issues while the HAPP is still on the ground.
The primary function of the Flight Controller is reading GPS data and communicating with the ground via satellite link. Most of the FC codebase deals with these tasks. The FC assembles data payloads containing a timestamp, the GPS data, various calculated statistics such as vertical velocity and heading, and status codes that describe the state of the HAPP's systems and progress of the flight plan. These payloads are transmitted directly to satellite.
The FC also contains the main logic to make decisions about the flight, which ultimately boils down to deciding when to cut down from the balloon and when to deploy the parachutes. The FC can choose to bring down the HAPP for a variety of reasons, such as drifting beyond geofence boundaries, exceeding the allowable mission time, receiving an abort command from the ground, or losing communications with the ground for an excessive period of time. The FC will also abort the mission if it loses communication with the AP, providing full redundancy for abort capability.
The two computers log all data and events to their removable storage devices for post-flight analysis.
The software stack on the ground is at least as complex as the code flying on the HAPP. The Flight Computer handles transmission of data payloads to an Iridium satellite, and our data service provider, RockSEVEN, receives the data and exposes it through their web service. That's where our ground-based system takes over.
We retrieve the data from RockSEVEN and store it in our AWS cloud database. From there we can access the data through a custom web application. We also developed an API for use with the Tranquility mobile app.
Sending commands up to the HAPP follows a path in the reverse direction; we simply post messages to the RockSEVEN web service and they handle the uplink transmission. The HAPP's FC receives incoming message payloads directly from an Iridium satellite.
The mobile app, Mission Control, was developed by some outstanding volunteers at Menlo Innovations in Ann Arbor. Although technically feasible to view the HAPP's position and status via our secure web app or SSH client, it's pretty darned cool to have a well-designed mobile app. Even better, the app provides a convenient way for spectators around the world to follow HAPP missions in real time without needing special logon credentials.