Jump to: navigation, search
Block Diagram of the payload.

CRAAG1 is a pico High Altitude Balloon payload designed to be launched with a 36" foil 'party' balloon.

The payload consists of a simple GPS tracker with a couple of temperature sensors, powered by a single AAA battery.

  • Launch Attempt 1 (28th September 2012) - lost grip of the balloon without the payload.
  • Successful Launch 2 (26th November 2012) - Launched with 720p 808 camera, burst at 3190m, landed in a tree.

UKHAS Critical Review

On 19th September I announced the flight on the UKHAS mailing list, along with a link to the below image. I received a fair few critical comments, all constructive, and I have summarised them below.

  • String is too strong - Fixed. Now using 0.5mm nylon cord.
    • For balloons larger than 2m diameter, the ANO specifies a maximum of 230N breaking strength for the cord.
    • Although this does not apply to my flight, I have no reason for the stronger cord, so will be replacing it with a more suitable type before the flight, shedding a couple of grams of weight as well as improving the safety of a possible aircraft collision.
  • Lack of a parachute
    • This is normal for pico payloads, but special attention should be paid to padding and security of the payload should it detach from the balloon.
  • Sharp ends on the wires - Fixed. Wires bent back at the ends and tape re-applied.
    • All the wire is very bendy and with tape already on the ends it does not pose a risk in my opinion.
    • However I will be taking the advice and will bend the ends back so there's zero chance of them scratching something that they might land on (like a car!).

The UK Air Navigation Order grants exemption from any requirement of the Order to small balloons, defined as being under 2m diameter at all points of flight. Therefore all the above are not against the law for my class of flight, but are good guidelines to follow.


Constructed payload under test.

The construction is based on Dave Akerman's Guide for a pico tracker.

I have chosen to make a few modifications, locating the GPS unit further from the CPU and Transmitter and adding in a couple of analog temperature sensors.

The balloon is a standard 36" foil 'party' balloon. Data is available on the UKHAS Wiki for previous similar flights: UKHAS Microballoons Data


  • Arduino Pro Mini 3.3V
  • uBlox MAX-6 High Altitude GPS with chip antenna (From HAB Supplies)
  • HopeRF RFM22b 434MHz Transceiver (From HAB Supplies)
  • Sparkfun LiPower Boost Regulator
  • 1x Energizer Ultimate Lithium AAA Battery (Datasheet)

  • 36" Qualatex Foil Balloon (ebay)
  • Helium (0.33 cu m cylinder from BOC)
  • Jiffy bag (packaging from the Arduino!)
  • Lightweight Nylon Cord from B&Q


Payload, jiffy bag, string 27g
AAA Battery 8g
Total 35g


The program is heavily based on James Coxon's Pico Atlas Code with extracts from the examples and documentation on the UKHAS Wiki.

There is a lot of power-saving to enable a lightweight battery to be used. Any improvements that I thought of and could not be applied to this flight are planned for CRAAG2, a planned single PCB design.

The code can be found on my github at:



[callsign,id,time,lat,lon,altitude,sats,flight state,batt volts,internal temp,external temp*checksum]

Flight State

  • B - Booting, GPS not yet switched on. Followed by Pips until GPS lock is acquired.
  • F - Flight, normal operation.
  • L - Lost GPS lock. Last co-ordinates/time will continue to be sent.
  • N - Night mode, single telemetry string transmitted 3 times at 15 minute intervals.

Battery Voltage

Absolute voltage sampled using Internal ADC with a 3:1 Voltage Divider.

  • Full: 1.5V
  • 50%: 1.3V
  • 10%: 1.1V


  • Degrees Celsius
  • +- 1 degree accuracy
  • 0.5 degree resolution.

Internal Temperature

  • Located alongside RFM22b inside the Jiffy bag.

External Temperature

  • Pokes ~1 inch out of the 'right' of the jiffy bag.

Degrees Celsius, +- 1 degree accuracy. 0.5 degree resolution.



I made sure to do plenty of testing of the payload, as this is my first attempt and I do not want it cutting out 2 minutes into the flight.


  • Bug-free transmission - DONE
  • Parse correctly into habitat - DONE
    • Lack of '.' in lat/lon is causing more issues than it is worth. - DONE
    • 'L' for lost-lock state would be good. - DONE
  • Indoor range testing, including HABamp testing. - IN PROGRESS
  • Walkabout test for GPS - DONE
  • Final review of code - DONE
  • Battery life test with Lithiums - DONE

Battery Life Tests

Run 1

  • 1x Asda 1000mAh AAA Ni-MH
  • Payload on window-sill
  • GPS in Max Performance Mode

3 hours 8 minutes until TX dead.

Run 2

  • 1x Energizer 1200mAh Lithium
  • Payload hung in window at work
  • GPS set to Power-Save mode in daytime loop.

30 minutes in Max Performance mode to get a fix. - Will have drained about 15% of the battery I believe.

5.5 hours TX until 1000 string Night-mode timout.

Arduino was reset, string count => 0 but leaving GPS fix-memory intact

1 hour to TX dead. Occasional heartbeat tones heard afterwards.

Issue Log

  • AVR hard-froze at the beginning of the first RTTY string.
    • Due to long power supply wires?
    • Fixed when Lipower + batteries were connected.
  • TMP36 sensors returned weird values
    • Found to be due to Transmitter interfering with ADC.
    • Transmitter is now switched off during ADC conversion.
  • AVR printf() does not support floats
    • Use dtostrf() to convert floats to strings
    • Habitat parser does not like whitespace, must be stripped.