Let’s Have an Adventure

After reading the first DIY Space issue of Make: (Volume 24), my daughter and I were inspired to work on a near-space project. At the time, the standard recovery method utilized a cellphone programmed to communicate its position after landing. Unfortunately, once you let your balloon go, you had no idea where it was until it came back to the ground and phoned home. What we wanted was a way to get live reports from our flying machine while it was in flight.

The solution is the Automatic Packet Reporting System. APRS is an amateur radio communications system designed to report the location, altitude, speed, and other information about the sender. Package up a radio transmitter with a GPS receiver and some sensors in an Arduino shield, program it to send APRS packets, and you have the Trackuino. Add a hacked Canon camera and you have a recipe for a thrilling, live-action, near-space adventure. This combination of key components along with some other standard gear is a tried and true platform for a cost effective journey into the stratosphere.

On 18 May, 2013, Emma and I launched our balloon from North Adams, Massachusetts. Within about 2 hours our balloon would climb to 94,000 feet, attain ground speeds of over 100mph, and record hundreds of stunning photos along with dozens of videos. All the while telling us exactly where it was and what was going on.

In this project I’ll provide an overview of how it all works, and then walk you step-by-step through building your own tracking electronics and high-altitude balloon rig for photographing near-space.

Weather balloon Parachute Duct-taped foam capsule Buzzer Hand warmer packet GPS antenna Lithium AA battery pack Canon point-and-shoot camera, hacked with CDHK firmware upgrade Arduino Uno microcontroller with Trackuino radio transmitter shield External temperature sensor Coat-hanger radio antenna
1) Weather balloon
2) Parachute
3)Duct-taped foam capsule
4) Buzzer
5) Hand warmer packet
6) GPS antenna
7) Lithium AA battery pack
8) Canon point-and-shoot camera, hacked with CDHK firmware upgrade
9) Arduino Uno microcontroller with Trackuino radio transmitter shield
10) External temperature sensor
11) Coat-hanger radio antenna
Somewhere over central Massachusetts …

Near the peak of the flight, about 94,000 feet.

Another photo near peak altitude.


In this photo we can see fragments of the balloon which has just burst.
Ascent Movie
Descent Movie

Automatic Packet Reporting System (APRS)

APRS is an amateur radio protocol designed to report the location of a sending station on the move. This system has been adapted to many uses, including the reporting of telemetry required to track a balloon like this. The fantastic thing about APRS is once you broadcast the packets, everything else is done. Thanks to ham radio operators around the world, when you broadcast a packet, there are receiving stations listening for them nearly anywhere you might be. The receiving station forwards your packet to internet sites which provide near real-time reports of your flight, including location, altitude, speed, and any other data you can fit into an APRS packet. Just surf to, enter your ham radio call sign, and you have an interactive map of your flight with all of this information.

Utilizing a radio capable of tuning the APRS frequency, it is also possible to directly receive the packets from your balloon (even with an inexpensive receiver).  This is important after landing, because there is a good chance that no stations will be close enough to hear your packets once the balloon is back on earth. Chances are the final packet that reaches will get you close, but you’ll need to get the resting location yourself.

APRSdroid is an Android application for amateur radio operators to decode APRS messages that have been encoded using Audio Frequency Shift Keying (AFSK). AFSK is the mechanism used to translate a digital packet into the analog signal required by your transmitter/receiver. It is a sonic representation of your packet. (Listen to the background noises in the launch video and you’ll hear a packet or two that we were receiving but not yet interpreting with APRSdroid — they sound like the internet did in the 90s.) All you need is a radio receiver that can tune to the broadcast frequency of your Trackuino (144.39MHz in North America) and an audio patch cord to plumb it into your Android device to decode your packets. If your APRSdroid happens to be running on a smartphone with 3G or 4G access, it can also be used to map your location versus the location of your balloon.

How APRS Tracking Works


The APRS amateur radio network passes along digital data packets sent by your transmitter, so you can track its location.

  • Local repeater stations (“digipeaters”) re-transmit your packets, increasing the likelihood they’ll be picked up by a station connected to the internet.
  • Internet-gateway stations (“iGates”) forward your packets to the APRS Internet Service (APRS-IS) network. Websites can then plot your transmitter’s location on a Google map, viewable from any browser.
  • In the field, you can receive packets directly on your own radio receiver and decode them with an Android app.

The Trackuino

In this project we’re using a device called the Trackuino. This is an Arduino shield that combines a low-power radio transmitter with a GPS receiver and some other components to provide everything needed to track our balloon via APRS, including GPS location, altitude, speed, internal temperature, external temperature, and battery state. The Trackuino can also drive a beeper or buzzer, to help you find which tree it is stuck in during the recovery phase of your adventure.

The heart of the Trackuino is its 300-milliwatt radio transmitter made by Radiometrix.  This tiny transmitter can be controlled by the Trackuino firmware to periodically broadcast packets on 144.39MHz (or the frequency used in your region). On the ground, the transmitter isn’t powerful enough to be heard by a receiving station unless you’re right on top of it.  Once it’s up in the air, though, wow — it can be heard for hundreds of miles around.

The Trackuino is not available anywhere as a pre-built component, or even as a kit. You must have the circuit board made and then solder in the components by hand. As Arduino shields go, it’s a fairly typical build except that there are several surface mount devices (SMD). If you haven’t worked with SMD components before, you should first develop your skills with an SMD practice kit.


Ham Radio

Radios and ham radio skills can seem old school and old hat to us cellphone-toting 21st-century citizens. In fact, radio communication is so much a part of everything we do that we don’t notice it. WiFi, Bluetooth, 3G, 4G, and, yes, your cellphone are all radios. Understanding and mastering radio communications is very much a 21st-century skill. Besides allowing you to use APRS, getting an entry-level ham license (Technician) will require that you learn some basics of radio technology and electronics (stuff you might already know). It’s also an introduction to another parallel universe of makers: ham radio operators who invent things like the Trackuino.

One of the best places to get started is the American Radio Relay League website. There are also many websites that provide tools to help you study for the test, including practice tests.

The Camera

Choosing a camera for this project is a balancing act.  There are lots of great cameras available, but we weren’t ready to send a $500 camera off into the ether when there was a reasonable chance we’d never see it again. We needed something a little more economical that could take photos and videos on a timer.

The solution is the Canon Hack Development Kit (CHDK). A Canon camera loaded with this firmware enhancement can be programmed to take photos and videos on a periodic basis (e.g., one photo every 5 seconds and a 30-second video once every 5 minutes). This is exactly what we did. We found a Canon A560 in good working order on eBay for $35. Add a 10GB SD card and the CHDK, and we have just what we need to visually record our adventure.



Both the camera and the Trackuino required sufficient power for their long journey. We needed at least a couple of hours of run time for the cameral and much longer for the Trackuino (in case recovery took longer than expected). The easy answer is lithium batteries — they’re more expensive than alkaline batteries but they deliver much more power for their weight. The A560 takes two AA batteries and was still running and taking photos and videos when we recovered it hours after launch.

The Trackuino has a range of voltages it can run, giving some choice over how many AA batteries to use: four, six, or eight. The weight versus run-time math comes in at six batteries. Four provide insufficient run time; eight add too much weight. Our Trackuino ran for over 6 hours on six batteries, with plenty of life left in them when we recovered the package.


We built a quarter-wave ground plane antenna from scavenged parts as described on the Trackuino page at Google Code. It’s very important to test and tune the antenna with an SWR meter (along with someone that knows how to use it). This is where your local ham club could be very helpful.


After looking at many alternatives, we settled on an enclosure made from insulating foam board (available at home centers). We found some free scraps from our local Freecycle. It’s also easy to work with. We assembled it with Gorilla Glue and duct tape to create a lightweight, sturdy, warm capsule for our equipment.


Helium and the Balloon

While helium is the second most abundant element in the universe, obtaining it these days can be difficult. Many suppliers reserve their helium for industrial and medical purposes. When you do find a supplier that will sell it to you, it can be expensive. The first task is to figure out how much is required for your project. This depends on the size of your balloon and the weight of your payload. We used a 600g Kaymont balloon and had a 2.2lb payload. Be sure to locate your source of helium well ahead of time and arrange for contingencies like weather delays. We wound up working with a small welding gas supplier. He was friendly and helpful and also lent us a regulator. Be sure to talk to your supplier about also getting a regulator with your gas bottle — you can’t get the gas into your balloon without a regulator.  You’ll have to pay a deposit, in our case $150 which was immediately refunded when we returned the gear.

Free Lift: A certain amount of free lift is required to have a successful flight. Free lift is the amount of surplus lift after all the weight is countered by the helium. We determined that 2 pounds is a safe amount of free lift for this kind of balloon to be assured a successful flight (which translates to about a 5m/s ascent rate — a number the FAA wants to know). Too little free lift and you risk a “floater” (a balloon that never bursts), too much and your balloon bursts at a less exciting altitude. Using the online CUSF Balloon Burst Calculator, we found that our balloon and payload would require about 100 cubic feet of helium for a successful flight.

It works like this: You fill the balloon to a certain volume at ground level – it’s about a 6-foot-diameter balloon. As it rises into the atmosphere, the pressure drops and the balloon expands. This particular balloon is rated for a burst diameter of 20 feet! Making the theory become reality depends on getting the correct amount of helium into the balloon.

Weight, Launch Site, and the FAA

I had nothing but a positive experience while dealing with the local FAA field office. Be sure to call weeks before your launch and explain what it is you’re about to do.  They’ll want to know when and where you are launching from, what the size of your payload is, what your expected ascent/descent rate will be, and the expected path your balloon will follow. It is imperative that you keep your payload under 4 pounds. If you go over 4 pounds, the rules change drastically. To keep things inexpensive, aim for about 2 pounds. Ours was 2.2 pounds.

From the beginning we had planned on launching from our front yard. I should have realized earlier in the process that my home is much too close to the ocean to risk a launch from there. It was one of the local hams who suggested that I might want to consider moving the launch point further west. This is when we started looking at the balloon flight predictors. As we started running scenarios, we found, more often than not, our balloon would wind up in the ocean. Right up to the night before the flight, we were still uncertain about our launch location. It was the online flight predictors that finally helped us to settle on North Adams, Mass., as our launch site. The easiest to use predictor for us was the predictor – and it was accurate with its prediction.

Habhub predicted track.
Actual track.

The bottom line: First choose a safe launch location well away from potential recovery hazards (like the ocean). Once you’ve settled on a launch location, call the local FAA field office and tell them what you’re planning on doing. As long as your payload is less than 4 pounds, and meets other criteria (that aren’t hard to meet), your payload is not regulated but the FAA still wants to know about your launch. If your launch site is near any small airports, you may need to file a NOTAM (notice to airmen) — our FAA representative helped walk us through this process as well. I found that they were nearly as excited about our project as we were. Finally, use common sense. Scan the skies for nearby aircraft and wait for them to clear the area before launching.

TIP: If you have trouble figuring out who to call, start with a call to the control tower of your local airport. Two or three phone calls later, I had the right person on the phone.

Practice, Practice, Practice

This is a complex system and lots can go wrong. We need the GPS receiver working properly, our transmitter working properly, the antenna properly tuned, the Trackuino program properly configured and running, the camera switched on with the CHDK program running, our balloon filled with the correct amount of helium, and everything sealed up in a near-space-ready, secure, warm enclosure. Every one of these systems needs to be prepared and tested as much as possible.

It’s important to practice the sequence and skills required to ready each of these elements. Test your camera by setting it up to look out your front window before you leave for work one day (be sure to inspect the results by getting the images off the camera; it’s tricky with a 16GB card and the CHDK. Also be aware that you might be flying your camera upside down — rotating hundreds of photos by hand is tedious — so find a batch rotator like IrfanView). Test the Trackuino by taking it on long drives and tracking yourself back and forth to work for a week or two. Have someone hide the Trackuino in your neighborhood, then go find it using your receiver and APRSdroid. Engage with your local ham club — I guarantee they will be interested and have some good suggestions and maybe even some helpers on and before launch day. The more you practice, the more likely you’ll succeed.

Launch and Chase

On launch day, Emma and I headed out very early on our 2-hour drive to the Brayton Elementary School in North Adams, Mass. We were set up and ready to go by around 8:45 a.m.  We had everything assembled and launched at 9:30.  It was hectic, and kind of stressful (we could have used more hands) but, wow, what a moment. Believe it or not, letting it go was close to the highlight of the day.

Ready to fly.
YouTube player

This was just the beginning of the adventure.  As soon as our balloon hit the sky, it was on  Soon the phone calls started rolling in and we heard the news of 20,000 feet, 40,000 feet, then 80,000 feet, and even 90,000+ feet. Just when we were starting to worry about it becoming a floater, we got the word that it was finally descending after hitting 94,000 feet. All the while we were getting advice on which way to head, from our network of internet and radio club observers. Just as Habhub predicted, it changed direction on us a couple of times. At the time it seemed confusing but it was all predicted. In the end, it landed right where it was supposed to.

With the help of some local hams and some unsuspecting home owners (and trees), we recovered our payload about 6 hours later. It was one of the most enjoyable and rewarding days of our lives.


First After Launch Video


Recovery was its own adventure.  My thanks to all those who helped track it down and to the chain-saw wielding land owners, Fred and John, who went above and beyond to get it down the last 30 feet for us (the two trees were destined to become firewood anyway).




Digi-Key basket  (many of the small components)

Project Steps

Acquire the Trackuino board.

The Trackuino shield PCB is not currently being produced but you can have it made very inexpensively at one of the online PCB houses. As of the writing of this article, the 2.2 version of the Trackuino is the latest version and can be ordered from OSH Park.

Order your parts.

Order your parts using the parts list in this article. It’s important to take some care in ordering the tiny components. Here’s a DigiKey basket with many of the small parts:

Take advantage of the “Customer Reference” column — you’ll find that your parts arrive in bags labeled to match the references on the Trackuino board. This makes assembly much easier.

Also consider ordering extras of some of the really tiny and inexpensive surface mount parts that are so easy to sneeze away.

Get everything in place before you start. Tools, parts, test equipment, solder, etc. Make sure you have an SMD-compatible tip on your soldering iron. Set your iron to 700°F.

Solder the resistors.

You’ll solder the components from shortest to tallest. Start with the SMD components: resistors R1, R2, and R3. Check your work with a meter.

I find that it is easiest to first tack one side of the SMD component to the board by holding it down with a pick, then touch a cleaned and heavily tinned SMD tip to one end. You just need enough to tack it in place. Then solder the other pads. Finish with the pad that you tacked first.

As with any soldering, you need to apply heat to both the component and the board. Surface mount is just smaller and quicker.

Install the integrated circuits (IC's).

IC2 requires special attention; it has a tab that must be tacked to the board to dissipate heat. You’ll need to get plenty of heat into the pad and the tab (I used an 800°F setting for this).

You’ll find that IC3, IC4, and IC5 are the trickiest to solder because the pins are very close together on the side that has 3 pins. Take your time and check your work with a meter. Make sure the center pin is not shorted to either of the outside pins.

Install sensor U1 and the capacitors.

U1 is the internal temperature sensor and is the only TO-92 component on the board (there is another off-board temperature sensor). Be sure to orient it as indicated on the board.

Capacitors C1 and C2 are polarized components. The long lead is the positive lead. Be sure to orient it as indicated on the board.

Bend the leads just enough to hold the components in place. Then solder and clip the leads.

Install the switch and headers.

Press the switch into the board; it will hold itself in place. Solder this in first, then remove the board from your vise.

Insert all the headers into the board, then flip it over (this can be done with 2 hands but may require some strong words). Tack one pin on each header then flip the board over to make sure everything is straight. If something is a little off, flip the board back over and press down lightly while applying heat to the tacked pin on the affected header.

Finish by soldering all the pins. Check your work.

Install terminal blocks and SMA plug.

The SMA plug (X1) and terminal blocks (X2, X3, and X4) take quite a bit more solder than the other components. I keep a heavier-gauge solder on my bench for jobs like these.

Tack one pin first, then check that they are properly aligned and flush. Then solder the rest.

Install the transmitter and external temp sensor.

Make sure the transmitter’s not flush, so that it can be bent into position after being soldered. Here you see the board with and without the transmitter. The board on the left is the one that flew in 2013 (and the other is the one built for this article).

The external LM60 temperature sensor is attached to a screw terminal header on the Trackuino. Simply solder a different colored wire to each of the 3 legs of the sensor. About 12″ of each wire will do. Make note of which leg each wire is attached to (Vs, Vout, and ground). Carefully insulate each leg with electrical tape, then tidy the sensor end of the wire with shrink wrap.

Program your Arduino with Trackuino firmware.

Download the Trackuino code from We ran Trackuino v1.4, which required Arduino IDE version 23 to compile. Trackuino v1.5 is out and should compile with later versions of the Arduino IDE.

IMPORTANT: When flashing the Arduino, remove the Venus GPS or the entire Trackuino shield. After flashing the firmware, you can plug it back in. The GPS and the host computer share the same serial port on the AVR chip, so they’ll conflict when used together.

Open the file config.h and update S_CALLSIGN to set it to your amateur radio call sign. Set S_CALLSIGN_ID to 11. You can also set the APRS_COMMENT to something relevant to your flight (we set ours to “GDRMS Balloon”). Unless you’re working with more than one balloon, leave APRS_SLOT at 0. APRS_PERIOD defines how often you broadcast your packets. Don’t set it any more frequent than once a minute (to be a polite ham). You can also fine- tune the buzzer frequency and on/off time, depending on the buzzer you’re using.

Upload the code to your Arduino but do not power up with the Venus GPS receiver attached.

Install the Venus GPS receiver.

Disconnect power from the Arduino.

Solder the 8 pin headers to the Venus GPS if you haven’t already done so. Then simply insert it into the Trackuino board.

Do not apply power yet.

Ready for testing.

Before you can test your Trackuino, you need to connect the GPS antenna and a dummy load to your transmitter.

Why does it need a dummy load? If you think of the transmitter as a boxer, then the dummy load is her punching bag (or opponent). Without the punching bag, the energy in her fists has nowhere to go and bad things might happen. Your transmitter needs somewhere to dissipate the energy it is generating — if it has nowhere to go, bad things might happen (which may include smoke).

The 300W dummy load you see here was given to me by a ham friend of mine soon after I got my license. It is way overkill for this tiny transmitter from a power dissipation perspective (we only need about a 1W load), but it’s just fine to use for this application.

Bench-test your Trackuino.

Tune your receiver to 144.39MHz (or the APRS frequency used in your region). Even though your transmitter is feeding into a dummy load, there will be plenty of emissions for your receiver sitting right next to the radio.

Once you apply power, no APRS signals will be transmitted until your GPS receiver determines its location. The Venus GPS will tell you that it has found its location by blinking its on-board red LED when it has a GPS fix. This often takes a minute or two, sometimes longer. It helps to have your GPS antenna outside. Normally they have long leads to make this easy.

Now listen to your receiver and think back to the 80s. You should hear, about once a minute, some of those old-school modem sounds. This is Audio Frequency Shift Keying (AFSK), which is used by the Trackuino and APRS to encode the data that comprise our packets. Once you get this far, you are ready to decode them.

Decode some packets.

Now let’s decode the packets. First install the app APRSdroid ( on an Android device that has audio input capabilities.

Use an audio patch cord to connect your radio receiver to the Android device. The most likely candidate for your android device is a phone because you need audio input (like a microphone). For my set-up, I needed a mono audio cable and adapter to plug into the mic input of the Android phone.

Launch the APRSdroid app and you’ll see it decode and display the APRS packets transmitted by the Trackuino.

Build an antenna for the Trackuino.

We built the simple quarter wave ground plane antenna described on the Trackuino site at: and at We built ours from metal coat hangers and a panel-mount SO-239 connector. We tipped the antenna’s radiator and 4 radials with wire nuts to make it less lethal.

The antenna is very straightforward to build, but it’s critical to get the length right. This is a great opportunity to get involved with your local ham radio club. You will need an SWR meter and someone experienced in how to use it.

Be sure to build your antenna just a little longer than it should be. You’ll tune it by cutting off tiny lengths of it until you minimize the reading from the SWR meter.

Field-test your Trackuino system.

Now test the Trackuino with your antenna and you’ll see your packets logged at

We first tested with an inexpensive, magnetic mount, 2M antenna on the roof of my car (I ran it going back and forth to work for weeks). I was a little worried that my signal was picked up at very few APRS stations but, as it turns out, that was just fine for this transmitter at ground level.

I then moved on to use the coat hanger antenna that we built. I ran the system with this antenna back and forth to work for weeks to get an idea about battery life and consistency.

Hack a Canon camera.

For our balloon we wanted the camera to take photos and videos automatically on a programmed schedule: a photo once every 5 seconds then a 30-second video once every 5 minutes.

We chose a Canon Powershot A560 camera because it can be programmed in this way using the Canon Hack Development Kit (CHDK). A secondhand A560 (or similar) can be had for less than $50 on eBay. Be sure to check the CHDK website at for compatible models before you buy.

Follow the user manual at the CHDK website to install CHDK on your Canon. Getting it working on your particular camera may be tricky, so start early, and practice with it long before launch day.

A 10GB will hold hours of images and movies depending on the frequency settings.

Build the helium fill rig.

All you need is a 12″ length of 1″ PVC pipe with an elbow and a fitting that can be attached to your helium supply. Use Teflon tape to seal all the pipe fittings between the gas bottle and the fill rig.

Also note the water jug. It has been filled with just enough water so that when it starts lifting off the ground, our balloon has the correct amount of free lift. We need about 2 lbs of free lift as discussed above. Given that our payload is 2.2 lbs, that’s 4.2 lbs of water. Be sure to weigh everything ahead of time.

Build your enclosure.

We built our enclosure out of 2″ foam panel insulation that we got for free through our local Freecycle group. We glued it together with Gorilla Glue, then added extra duct tape on launch day.

We cut a hole in the side for the camera lens and secured the camera with cable ties. The Trackuino and battery pack were secured to a removable foam platform more cable ties. We mounted the buzzer on the outside and secured it with screws and Gorilla Glue. And we routed the external temperature sensor to the outside of the enclosure through a seam in the box, and let it simply dangle about 6″ from the bottom of the enclosure.

We also included one small hand warmer which kept the interior warm enough (always well above 30°F, even when the exterior temperature was as cold as –60°F). We didn’t make our enclosure airtight, but we sealed it up quite well to keep it warm inside.

Be sure to practice the final assembly and sealing of the capsule before flight day. Add a duct tape tab to your instrument platform to help with disassembly.

Attach the parachute and balloon.

The Rocket Man parachute we used is lightweight, sturdy, and has only 4 shroud lines, so it’s less likely to tangle with our prickly payload.

This parachute has a loop at the top to attach to a length of rope, which is, in turn, attached to the balloon. We used about 4 feet of rope, to provide some distance between the balloon and the chute.

Launch day!

Get to your launch site. Prepare and utilize a checklist, and have at least 3 people available to help, each with their own assignments (including one person to call the FAA about 15 minutes before launch).

Lay everything out, power up and check all your systems — run an end-to-end test by decoding packets from the payload prior to launch. Don’t forget to turn the camera on and start the CHDK program!

Assemble, seal it up, and let it go!

Then tune into your Trackuino with your receiver, and your wider network of watchers, to enjoy your own fantastic voyage.