At the very start of the project we had no idea of the community and infrastructure that exists to enable balloon launchers to track their payloads as they fly through sky. A full and extensive explanation can he found on the UKHAS Wiki - definitely worth a read to gain a real understanding of what is going on. In a nutshell however:
- Either via the #highaltitude channel on freenode IRC or the UKHAS Google Group, you let the community know of a future balloon launch. At this point it is important to know what transmitting frequency you will be using and the frequency shift you will be using to distinguish between a binary 0 and 1.
- At the stated day and time, enthusiasts over the country listen out for the radio signal being transmitted from the balloon payload.
- Using their receivers and computer software, they decode the GPS telemetry from the radio signal and upload this information to a central server, which then plots the balloon on the spacenear.us/tracker for the whole Internet to see.
- This has been going on for a few years!
Components and codeThere are two main parts to it, the Arduino Uno prefabricated board at the bottom and our arrangement of components soldered onto stripboard fitted on top. On the left of the board with the black blob antenna is the GPS receiver, the silver box is the radio transmitter with its additional SMA antenna connector, the flat component in the middle is an SD card reader and finally 6 AA Energizer Lithium batteries on the right to power it all. There are various LEDs and resistors also needed to complete the circuit - see the Wiki links below. It took a good few months to go from initial research to a fully working tracker! The computer (Arduino) needs to be programmed in order to get things working, you aren't able to just plug things in an expect it to work. The program works as follows:
- Arduino is initially powered up and does a check of all components to ensure that it can use them.
- It asks the GPS for location information - it returns lots of information including latitude, longitude, altitude and number of satellites it can see in a text format known as NMEA.
- The program extracts the useful bits of data that we need and puts it into a text format that UKHAS is expecting.
- The text string has a mathematical calculation performed on it, known as a checksum. This works out a four character sequence that must be added to the end of our string. When our string is received by the UKHAS listeners, their computer will do the same calculation - if the four characters match then they can be sure that the data they have received is how it was originally transmitted by the tracker.
- The whole string is then divided into its individual characters and the binary version of each character is sent over RTTY radio transmission by alternating the frequency about a particular wavelength (434MHz - unlicensed and free to use in the UK). This alternating creates the binary code for the string which is then decoded by the receivers.
- Saves a record of the text onto the SD card to act as a 'black box flight recorder'.
- Repeat steps 2 - 6 until the battery runs out!
|Our GPS Tracker|
|First radio transmissions|
It took a long while and a was a bit of a learning curve to start getting meaningful data back from the GPS. What gave us confidence however was that we were able to use the u-blox u-centre GPS evaluation software almost immediately. Connecting through the Arduino, we could see ourselves plotted on the map and where the satellites were located in the sky - interesting stuff and if you are doing this yourself, definitely download this software!
|The radio and GPS on the same breadboard for the first time|
We later added the SD card and this also caused problems - especially with RAM. Turns out, simply referencing the SD library causes a whole load of RAM to be used up. I then set about making the code more efficient (encasing all strings in the F() function for example) and using the FreeRam function.
|Mark's brother Graham helping|
with the soldering!
|Coaxial shielding removed|
|Antenna attached to payload|
What we would improveAlthough this tracker has yet to fly - there are already a few things that we would change or improve on the next version. The first is to use a different Arduino board. The Uno is a great prototyping board, but it requires 7v-12v power input so it can run at 5v. This means that we need to use 6AA (6x1.5v = 9v) batteries which are pretty heavy! Following on from this, we would possibly investigate fabricating our own DIY printed circuit board and solder components together with the Arduino chip directly together.
Hope this has helped
Although we haven't gone into the deep technical code and electrical side of things here, we hope this overview will show you the general processes needed in order to create your own High Altitude Balloon tracker. We hope to fly this very soon! If you have any questions please email email@example.com or talk to the guys on the IRC channel. If you found this post useful or feel inspired to start your own project do let us know via email or Twitter - we'd love to hear from you!