High Altitude Balloon payload controller in Go
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.




For a quick introduction to GoBalloon, have a look at the presentation I gave to the Seattle Go Developers Meetup.

GoBalloon is a High Altitude Balloon payload controller in Go. The software is designed to run on a BeagleBone Black single board computer, which provides a full Linux environment while still being lightweight enough to fly in a balloon.

GoBalloon communicates back to earth via amateur radio and the APRS protocol; the software includes a layer 2 protocol (AX.25) implementation that is used to drive a radio modem called a Terminal Node Controller (TNC). Using the TNC, GoBalloon periodically reports its position and altitude and listens for commands from the ground. When flying, GoBalloon uses a locally-attached TNC via serial port. For debugging on the ground, GoBalloon also supports a network-attached TNC via my tnc-server software.

GoBalloon is capable of bi-directional communication with the ground and includes an APRS library that encodes and decodes most of the popular APRS packet formats including position reports (compressed and uncompressed), messages (send/receive/ACK), and telemetry (compressed and uncompressed).

GoBalloon includes GPIO support and will trigger an external cut-down device when a cut-down message is received via APRS messaging. GPIO is also used to activate a piezoelectric buzzer upon descent to aid searchers looking for the landed payload.

GoBalloon uses gpsd to communicate with its GPS receiver and thanks to gpsd, supports a wide range of GPS devices. When flying, the software uses a locally-attached GPS via serial port but supports a remote GPS via TCP when debugging on the ground.

What Works

  • APRS Controller (sends position reports, receives+acks cutdown messages)
  • Balloon cutdown, triggered remotely by APRS message
  • Burst detection with activation of buzzer/strobe upon descent
  • NMEA GPS processing / gpsd integration
  • AX.25/KISS packet encoding and decoding over local serial line and TCP
  • APRS packet parser-dispatcher: examines the raw packets and dispatches appropriate decoder(s)
  • APRS position reports encoding and decoding (compressed and uncompressed, with and without timestamps)
  • APRS telemetry reports encoding and decoding (compressed and uncompressed)
  • APRS messaging
  • Geospatial calculations - Great Circle distance/bearing
  • APRS-IS client (ganked from @dustin)
  • APRS-style Base91 encoding

In Progress

Not Yet Complete

  • Support for I2C TNC connection (requires some additions to @davecheney's i2c library)
  • Input voltage detection and reporting
  • Camera servo control
  • HTTP console for use during pre-flight checks
  • High altitude digipeater