Dalton Sub-Orbital Ballooning Initiative

Project Goals

Senior Initiative Project

Our school's "Senior Initiative" allows graduating seniors to work on independant projects, and in turn learn skills based on their interests.

Aerospace Engineering

This project allowed us to explore our mutual interest in aerospace engineering, and learn about some of its basic principles and challenges.

Create and Publish a Guide

Through this project we wanted to create a guide others could follow and learn from to pursue their own High Altitude Ballooning projects.

Near-Space Video

One of our goals was to collect high quality near-space footage from different perspectives, and at different important moments in the flight.

Live GPS Tracking

After the balloon's launch, we wanted to be able to track it's position, altitude, and velocity in near real-time as we followed it on it's journey.

Log Sensor Data

Because conditions are extremely different at high altitudes, we wanted to track and record how various conditions changed over the flight.

HAM Radio

One of the new skills we wanted to learn and use was HAM radio. After getting licenses we used the technology to track our balloons live.


The high altitudes and low temperatures involved with this project presented unique construction and design challenges we had to overcome.


In order to log all of our sensor data, we had to learn how to configure a Raspberry Pi for I2C sensors, and make Python logging scripts.

Project Components

Med Weather Balloon
Kaymont HAB-1200

Large Weather Balloon
Kaymont HAB-1500

Payload Parachute
Rocketman 5 ft HAB

APRS Radio Tracker
TinyTrak AIO HA

Satellite Tracker
SPOT Gen 3 Tracker

HAM Radio Receiver
Baofeng UV-5R

APRS Bluetooth TNC
Moblinkd TNC

GoPro Video Camera
Hero 4 Silver

GoPro Video Camera

Sensor Receiver/Logger
Raspberry Pi B+

GPS Location Sensor
Ultimate GPS Breakout

Temp/Pressure Sensor
BMP 180

Accel/Compass Sensor
LSM 303

Balloon Inflator
3 cm Safe Inflator

Helium Tank
210 ft3 Tank per Flight

Payload Overview and Setup

SPOT Tracker

Because our balloon had no way to transmit data or video while in flight, it was important that we have multiple ways to track the balloon in flight and after landing. To this end, we decided to use a SPOT tracker because of its ability to give us nearly real time location data wherever we could access the internet. The SPOT tracker’s ability to transmit its location over satellites gave us the advantage of not needing to worry about signal reception, and the fact that it comes as a single, self contained, and fairly rugged unit meant that we did not need to worry about it being damaged in some way during flight or after landing.

TinyTrak AIO HA Tracker

In addition to having a tracker that we could follow over the internet, we also wanted some way of following it that relied only on a mobile receiver we could bring with us. To this end, we used the TinyTrak AIO High Altitude tracker, which transmits its location over HAM radio frequencies to receivers located throughout the country. Using a portable radio receiver and an interface to connect it with our phones, we were able to track the balloon without any depending on internet access. In order to use this tracker we had to get HAM radio licenses, but because the tracker output our specific callsign, we were also able to use sites like aprs.io to track and isolate our signal.

GoPro Hero 4 Silver

Because one of our main goals was to get high quality footage of the entire flight, and recognising the extreme conditions present at high altitudes, a GoPro seemed like the obvious choice to use to film the flight. Although we wanted a camera able to record footage in high quality, we needed to make sure that would have enough memory capacity to record during the entire expected 2.5 hour flight. While the GoPro Hero 4 Silver lacks the 4K 30fps ability of the Black edition, that slight difference proved to be immaterial. When looking at the battery life and memory storage charts on GoPro’s website, we realized that even with the extra Battery Pack and a 64GB micro SD card, which would be necessary almost regardless of the recording quality, we only had the space and power to record in 1440p during the entire duration of the flight. While the camera can record much higher quality footage, we were still able to get very good quality video through this camera, and its included protective case protected it sufficiently from the elements.

GoPro Hero

Even with the GoPro Hero 4 Silver, the importance we placed on capturing footage of the flight made redundancy critical, as we learned in failure of one camera during the first flight. While unable to record in the same 1440p quality as the Hero 4 Silver, the GoPro Hero allowed us to record 1080p footage of the entire flight, without the need for any battery attachments. The fact that this camera is built into its case also had the advantage in that it was much less likely that the case would fail and the camera come loose. In addition, it greatly reduced the chance of humidity building up on the inside of the camera lens, since the entire lens assembly is sealed. While we still faced some issues with fogging on the outside of the lenses of both cameras, which we solved with Rain-X spray, this did provide an added benefit.

BMP 180 Sensor

Since we knew going into this experiment that there would be a noticeable change in both temperature and pressure as the balloon ascended, we made it our goal to monitor and log both of these parameters. The BMP 180 sensor and breakout board from Adafruit gave us the ability to monitor both of these environmental factors with a single sensor. In addition, the Python library and Raspberry Pi setup guide for this sensor allowed us to much more easily implement it into our sensor package. While using a sensor able to measure humidity, such as the HTU21D-F, might have given us additional data, we couldn’t find any sensors able to measure all three parameters, and we were unsure how the altitude, pressure, and temperature would affect the function of a humidity sensor.

LSM 303 Sensor

While we knew what the payload would most likely spin and undergo various forces throughout the flight, we had no way of measuring these effects without an accelerometer, gyroscope, or compass sensor. The sensor we ended up using, the LSM 303, has both an accelerometer and compass, which we hoped to use to measure the acceleration of the payload, its orientation, and possibly the earth’s magnetic field strength as a function of altitude. While we probably should have included a sensor with a gyroscope, such as the LSM9DS0, the LSM 303 still gave us some interesting data, and it’s Python library, while incomplete, made this sensor fairly easy to work with.

GPS Breakout

One of our goals in this project was to be able to gather various types of sensor data, and correlate that data with various points along the flight’s path. In order to accomplish this, we decided that it would be best if the data recorded by the Raspberry Pi included real-time location data, so that we could match data from the other sensors with key moments in the flight. The Adafruit Ultimate GPS Breakout Board seemed like the best option, because it has been tested at high altitudes, and because there was a pre-existing Python library we could use to connect it to the Raspberry Pi and receive its data.

Code and Raspberry Pi

Although both of us had significant experience in designing Arduino projects, we decided to learn to use Raspberry Pi to collect data. The GPS communicated via the Pi’s communication ports (TX and RX), and every other sensor utilized I2C communication and was relatively simple to interface with the Pi. Programming was done in Python and used Adafruit’s I2C libraries for the LSM 303 and BMP 180. In addition, we used an Adafruit GPS library as well for GPS communication.


After experiencing minor problems in the initial GPS setup, we decided to wire everything using removable headers. The Raspberry Pi Cobbler was attached to a breadboard with headers for the GPS, LSM 303, and BMP 180. In addition, we soldered an indicator LED to the power rails of the breadboard to indicate that the sensors were receiving power.

Mounting Board

Although we initially sought to contain the entire project in a milk crate, we found that the added weight would severely limit the weight of the actual payload we could lift. As we realized that the weight of the entire payload should not exceed 5-6 pounds, we decided that a simple mounting board that would attach to the parachute would allow us more flexibility. In addition, while we decided to use a styrofoam create to hold the sensors and trackers and keep in heat, we abandoned this for our second flight, instead favoring reaching higher altitudes with a lower payload mass. We experimented with various wood boards with mounting holes cut for ropes, GoPros, and the styrofoam crate. After manually cutting a prototype, we laser cut a final design out of ¼ inch black laminated wood.

Launch Day

Obtaining Helium

We contacted multiple welding and gas supply stores in Kansas City prior to the flight. Ultimately, we decided to purchase helium at Hohenschild Welders Supply store. We came to the conclusion that we would need a 200 cubic foot tank of helium for each flight in order to achieve the proper amount of lift given our payload weight and the balloon sizes.

Site Selection

Months before constructing the balloon, we brainstormed various launch sites that would allow for potentially easy recover. Immediately, desert and agricultural locations seemed to offer the greatest advantages. In addition, we considered launching in Southern Illinois (another cornfield dominated location). We sought a region that would allow for 50-150 mile flights in almost any direction without risking landings in highly populated regions. One important tool we used was HabHub’s Predictor Tool, which can simulate the flight path of a balloon given various parameters, with a stunning degree of accuracy. After using this tool, and simulating launches from a variety of locations, Manhattan, Kansas consistently resulted in launches that fell miles short of Kansas City or traveled north, clear of any large forests, bodies of water, or urban areas.

Contacting FAA

Approximately one hour prior to the launch, we called the FAA Regional Office in Kansas City. After informing them of our intention to launch a weather balloon, we were directed to an air traffic control center nearby our launching location. When we contacted the local ATC, we had to explain to them the general expectations for our flight (max altitude, flight path, and launch location), and were told that we could launch as there as almost no nearby air traffic.

Inflating Balloon

We positioned the helium tank on a tarp in the Northeast Community Park and attached the weather balloon inflator from High Altitude Science. With two people holding the balloon and one attending to the tank, we slowly attached the neck of the balloon to the end of the inflator. A cable tie was tightly wound around the end of the inflator tube. The HAB-1500 required around 200 cubic feet of helium. The HAB-1200 was inflated until it provided 1.5 times the weight of the payload.

Tying Off Balloon

After we finished inflating each balloon, a loop of cord was passed through the end of the balloon. The neck was folded upwards and secured with six cable ties. Finally, the bottom was wrapped with electrical tape and another zip tie.

Tracking and Recovery

Radio Tracker (TinyTrak)

The radio tracker performed extremely well, providing location updates every 2 minutes throughout the entire flight. While we were expecting to need to use our mobile reciever to pick up its broadcasts, we found that nearly every update was picked up on aprs.io from other ground based receivers. As expected, we were unable to pick up the radio signals after the balloon had landed, but we were given a good idea as to its general location by looking at the last position report before it landed.

Satellite Tracker (SPOT)

We were surprised that during both flights we stopped receiving a track from the SPOT after the balloon passed 60,000 ft, only to return in its descent. While we assumed that it was caused a connection problem, we realized that it most likely is caused by a built in safeguard in most GPS units, called COCOM limits. Although these limits should only kick in if altitude AND velocity ate too high (above 60,000 ft and 1,200 mph), some gps units, such as the one in the SPOT tracker, only only take altitude into account. While this wasn’t ideal, the SPOT did play a key role in the balloon’s recovery. While the TinyTrak was no longer received after landing, the SPOT regained a signal after landing, and in both flights provided us with accurate and precise landing coordinates.

Landing Site 1

The payload traveled east and landed in a cornfield north of Topeka. After receiving location data from the SPOT tracker while the balloon was on the ground, we arrived approximately fifteen minutes after the landing occurred. The balloon and payload remained intact during landing and upon recovery.

Landing Site 2

Unlike the first launch, the second balloon traveled almost directly north. The balloon passed over the Kansas Nebraska border briefly before blowing back into a cornfield a few hundred meters from the border. Again, we arrived approximately twenty minutes after the landing and were taken by an employee of the farm to the balloon. We noted that one of the GoPro mounts sheared off during landing; the camera was nearby on the ground.

Balloon Path 1

Balloon Path 2


Sensor Data

We recorded usable temperature, altitude, pressure, and accelerometer data from the flight until the Raspberry Pi stopped receiving power. During the first flight, the sensors threw an error during the program and the Pi did not record data. For the second flight, we updated the program with more “try except” functionality that prevented the errors from ending the program.

The temperature vs. altitude graph demonstrates a decrease in temperature up to around midway through the flight and a gradual increase in temperature. Yet, in comparing our data to previously recorded temperature tables, our temperature at maximum altitude is far above the actual readings. One source of error may have been exposing the BMP 180 to low temperatures.

The pressure vs. altitude data is far more uniform and falls on the expected exponential function. Apart from a small number of erroneous readings, the data les along the expected curve.

We also graphed accelerometer X, Y, and Z against the time (measured in number of readings) during the flight. One initially discernable feature from the graph is the shift from negative to positive acceleration on the Z axis. As the accelerometer was mounted upside down, this moment was likely when the balloon popped and began to fall.

Accelerometer Data Graph

Pressure vs Altitude Graph

Temperature vs Altitude Graph

Video and Photos

Following the launches, we compiled the GoPro videos (approximately 90 GB in total) into various 30 second trailers and a longer five minute video about the project. The longer video includes details regarding the balloon’s trip, including altitude, speed, and time at periodic intervals.

Team Members

Dillon Azzam

California Institute of Technology '19

Interested in computer science, robotics, cryptology, and aerospace engineering.

Andrew Milich

Stanford University '19

Plans on studying aeronautics, mechanical engineering, and computer science.

Contact Details

Quick Contact

Email : contact@suborbitalballoon.com