From CUSF Wiki
Jump to navigation Jump to search

Arduino Tracker


weasel1.jpg The aim of this project is to create a beginner's high altitude balloon tracker. We hope to document our code well enough that other users will also be able to follow our work. The tracker uses an Arduino, which is a low cost, USB programmable microprocessor. We also are using an FSA03 gps module, as this happens to be what we had access to, and a standard radio transmitter.

Our future plan is to create an easy to follow user guide, with plug and play code, allowing schools or people interested in high altitude ballooning to get started easily.

The tracker was first tested on Nova 19. However the payload is currently stuck in a tree, so full data is not available.

The process of the tracker is:

  1. Receive a string of data from a GPS
  2. Decode this string, separating out the information we want from this
  3. Change the GPS format from DDMM.MMMMM to DD.DDDDDD (This might not be exact but more of less correct)!
  4. Put together all of this information into a string (or a line of numbers) in a format that can be received at ground level
  5. Transmit this using a small radio

A sample output of the tracker is:


$$<Call sign>,<ticks>,<time>,<lat in DD.DDDDD>,<long in DD.DDDDD>,< altitude (m)>,,<No. Sat>, *<CRC16 Checksum>

A summary of the set backs:

We had many setbacks, hopefully you can see these below!

  1. We wrote a GPS string decoder using an scanf, a feature in C++. However it turns out the arduino would not support floats in this function. So we then try another method.
  2. Next up we tried using a TinyGPS library, basically a pre-written program, that should do the job! Or so we thought, however it decided to output altitude as a float, and this didn't work well. So we decided to try something different.
  3. We tried to use the libRTTY library to transmit our message back to earth. Sadly this program only seems to work on the older chips, and not the newer version we are using. This is due the different clock speeds. So we had to write our own one. Now you can use ours using the rtty_50 function.
  4. Having written a GPGGA decoder from scratch, and fixing the bugs. We had set backs due to processing the float as 2 intergers separated by a decimal point. This works fine unless you have a number such as 12.0345, when 12.345 would be displayed instead. Therefore after a little recode this too is fixed.
  5. Next up is adding more sensors and probes to the software.

Code from this project is here. An explanation on how to use the code is given in the user guide here.


weasel2.jpg Arduino Uno

Arduino Proto shield

FSA03 --- datasheet

Radiometrix NTX2 Radio Transmitter. datasheet

Canon A560 With CHDK hack. CHDK

A Radio Aerial (A quarter wave whip, with Radials). Amateur Quarter Wave Ground Plane Antenna Calculator For a 434.650 MHz frequency, each whip must be 164mm. We used a bazooka dipole, with radials at the central node. Will explain with a full write up at a later date.

Build instructions

This is incomplete

  1. Build protoshield: tutorial
  2. Look up GPS data sheet: datasheet
  3. Solder this to protoshield
  4. Look up radio. This needs a cleaver potential divider to link the radio module. Try and google, and update...
  5. This is more of less it, for the hardware.

You also need to write the software. You are welcome to use some of the code in the code [[[Weasel Code|here]] if you want, on the other hand if you follow the information at the start of this page, then you can also write your own following the steps shown.

To Do

  • Fully re-build Weasel 2 (as the first is currently up a tree)
  • Need to build a whip antenna.
  • Build a box
  • Need to do a fully write up
  • Design a PCB
  • Sort out a 3.3V regulator.
  • Investigate adding a 16x2 line display for debug, and geotagging photos
  • Investigate sensors: UV, Radiation, Thermometers.
  • Specify and support next terms newcomers project.

Canon Camera CHDK Hack

Note, need to press the print button to engage secret menu, and trigger button to start program. If in canon mode the display button is pressed to turn the screen off, this will ensure that the battery is saved.

We are running with a 512MB card. Will probably use M1 (5MP), with JPEG compression on the medium (fine) option. It should take 327 photos, so an interval of 20-30 seconds required, so to get approx 2hours of photos.

On ground with Energiser single use lithium batteries (the posh expensive type!) the card capacity was the limiting factor. However operation at low temp was not tested.

We use ultra intervalometer code of the CHDK website. This seems to work well.