Balloon Data Recorder

This project provides a data recorder for a high-altitude weather balloon. The recorder stores sensor values and GPS coordinates onto an SD card. The sensors measure temperature, humidity, barometric pressure, sound, ultraviolet light, and acceleration. The values are shown on an OLED display so that you can verify that the system is working before it is launched.


  • small foam cooler
  • Arduino Uno
  • Grove shield
  • data flash shield
  • GPS module
  • temperature and humidity sensor (DHT22)
  • barometric pressure sensor (BMP085)
  • accelerometer (ADXL345)
  • UV light sensor
  • sound sensor
  • button
  • Grove cables
  • battery pack
  • double-sided foam tape or hot glue

For an Arduino Uno, the battery pack should provide 7 to 12 volts. One option is a six-cell holder with AA or AAA batteries. Another option is a 9V battery, though this may run out during your flight; do a test run first. (A typical consumer 9V battery holds about 400 mAh.)

We recommend using a satellite tracking device to be able to remotely locate your balloon system.


  1. Place the data flash shield on the Arduino
  2. Place the Grove shield on top of the data flash shield.
  3. Connect the button to D2.
  4. Connect the temperature and humidity sensor to D4.
  5. Connect the GPS module to D6.
  6. Connect the UV light sensor to A0 and sound sensor to A2.
  7. Connect the OLED, barometer, and accelerometer to I2C pins.
  8. Use foam tape or hot glue to attach the sensors to the foam cooler.
    • Place the Arduino, batteries, OLED, and accelerometer inside the cooler.
    • Place the other sensors outside the cooler, as shown above.
  9. Create a data flow for the Arduino.

Using the Balloon Sketch

In addition to the data flow (provided above), we have a sample sketch for recoding balloon data. The provides several additional features:

  • You must hold the start button for five seconds to trigger recording.
  • An LED (conected to pin D8) blinks every time data is recorded to the data flash shield.
  • You can use the Arduino data transfer tool to transfer data from the Arduino into a data set.
  • Records only temperature, pressure, and altitude, in order to save battery power and reduce complexity.

To do a recording:

  1. Connect the Arduino to a battery.
  2. Verify the sensor values on the OLED display.
  3. Hold the button for 5 seconds to start recording.
  4. While recording, you should see:
    • An increasing record count on the OLED display.
    • A flash on the LED each time the record count increases.
  5. In order to save battery power on a long flight, we recommend that you unplug the OLED before launch. Verify that the LED is still blinking periodically before you launch. (It's possible that unplugging the OLED could disrupt the Arduino; you don't want to record an empty data set.)

To retrieve the data:

  1. Plug your Arduino into a computer using a USB cable.
  2. Use the Arduino data import tool to copy the data from the data flash shield into a ManyLabs data set.

Pre-Launch Exploration Questions

  • How does the temperature plot look when you put the device in a refrigerator or freezer?
  • How long do you think the flight will last? How many samples do you want to record?
  • How high do you think the balloon will reach?
  • What temperatures do you expect at high altitudes? Why?
  • What shape do you expect for the temperature graph?
  • How does pressure relate to altitude? Can you calculate altitude from pressure?

Post-Launch Exploration Questions

  • How did temperature change with altitude?
  • Did the lowest temperature occur at the highest altitude?
  • What do you see in the acceleration plot? What factors might influence acceleration?
  • What does the balloon path look like on a map? What caused this path?

Sample Data

This sample data set is from a balloon launch by Mill Valley Middle School on February 25, 2014. Here's a video from their balloon. (Note: we believe they reached a maximum altitude of around 86,000 feet.)