High Altitude Balloon for the Global Space Balloon Challenge
Switch branches/tags
Nothing to show
Clone or download
Latest commit 4da7965 Dec 27, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
hab Fix copyrights Dec 27, 2017
hardware Add Antenna Board design Apr 27, 2017
images Add board photos Oct 18, 2017
records Add data from flight Dec 6, 2017
test Add Antenna Board design Apr 27, 2017
.gitignore Add Antenna Board design Apr 27, 2017
LICENSE Create LICENSE Feb 4, 2017
README.md Update README.md Apr 28, 2017
ublox_config.txt Command formats exported from u-central Mar 24, 2017


High Altitude Balloon

High Altitude Balloon for the Global Space Balloon Challenge.

Electronics without battery is 70 grams, battery is 98 grams.


The primary microcontroller used is a Teensy 3.5. The Teensy is a Arduino-compatible ARM based development board.

Software will be based on the Trackuino project with modifications for Teensy DAC support from this project.


Telemetry will be sent via 2m APRS using the HX1 2m Transmitter. This module has an output power of ~300mW tuned to a frequency of 144.390 MHz. There are reports of frequency drift with temperature, so this behavior will have to be characterized before launch.

Antenna will be a simple half-wavelength dipole, likely based on this or this.

APRS Message Format

Use standard headers etc. Symbol /O (Primay symbol table, symbol ID 'O' corresponding to balloon). Message type based on "Lat/Long Position Report Format — with Data Extension and Timestamp" in the APRS spec.

String: [Data Type ID flag:/]HHMMSSh[Latitude ddmm.hh[N/S](8b)][SymtableID (1b)][Longitude dddmm.hh[W/E](9b)][Symbol Code (1b)][Course/Speed (7b)][Arb. data (36b)]

Comment format

Chars Description Example
5 Timestamp (sec) 12000
1 Separator ,
5 BMP180 Temperature (C) -60.0
1 Separator ,
6 BMP180 Pressure (Pa) 101580
1 Separator ,
4 Thermistor ADC Value, max 1023 1017
23 Total

HX-1 Transmitter


Pin Label Functionality Connection
1, 3 RF Ground SMA Shield
2 RF out SMA Center pin
4 Active-high Enable Digital pin 11
5 5V Supply N/A
7 TX Data DAC1


U-Blox MAX-M8 GPS Receiver



Outputs NEMA strings over serial, so should integrate with Trackuino's code nicely. Might have to do some configuration via UART. See page 175 of protocol spec for NMEA config.

Config example code: http://playground.arduino.cc/UBlox/GPS Other tutorial: http://ava.upuaut.net/?p=738

The settings we'll need:

  • Set non-GPS source's ID's to GPGGA for compatibility
  • Double check all available sources are enabled
  • Disable some unnecessary debug outputs
  • Figure out how to switch between low and high altitude mode
  • Change refresh rate


Pin Label Functionality Connection
TXD Serial UART Serial4 RX
RXD Serial UART Serial4 TX
GND Ground
VCC 3.3V Power

BMP180 Barometer/Temperature



Use the Sparkfun library. Communicates over I2C, nothing fancy. Must use SCL/SDA0 since those correspond to the default Wire interface.


Pin Label Functionality Connection
VIN 5V power in, feeds on-board regulator N/A
3V3 3V3 power rail N/A
GND Ground Black
SCL I2C SCL0 (Pin 19)
SDA I2C SDA0 (Pin 18)

MMA8451 3-axis accelerometer



Use the Adafruit library. Communicates over I2C.


Pin Label Functionality Wire Color
VIN 5V power in, feeds on-board regulator NC
3Vo 3V3 power rail N/A
GND Ground Black
SCL I2C SCL0 (Pin 19)
SDA I2C SDA0 (Pin 18)
A Address Select NC for address 0x1C
I1 Interrupt 1 NC
I2 Interrupt 2 NC

3950 NTC Thermristor


Hook it up with a 10k resistor in a voltage divider setup, read with ADC. Connected to ADC17


Electric heating pad