The tracking system: launching a High Altitude Balloon

Posted in: Department of Mechanical Engineering, Student projects, Undergraduate

Author: Jacob Smith -


Welcome back to my blog about launching a High Altitude Balloon. A lot more research and waiting for deliveries later I had the parts and could start making my tracking system. In this post I will describe how it works and how I have set it up.

Step 1: Send and receive data over radio

The basic idea of a radio tracker is to use radio waves to send the location data from the payload to a station on the ground. The radio module I will be using is an NTX2B module, which transmits at a specific frequency in the 70cm band (i.e. 70cm wavelength ≡ 430MHz - 440MHz). Without wanting to get into technical details, this is achieved by doing the following. When you adjust the voltage supplied to the NTX2B you very slightly change its’ transmission frequency, so when receiving the signal you pick up two different tones. Doing this in a controlled manner means you can transmit 1’s and 0’s, and hence data. The first step was therefore to create a voltage divider circuit using my Arduino Uno and the radio module. An Arduino is an open-source microcontroller, basically a mini computer that you can upload code to in order to perform a variety of tasks that interact with the real world, such as reading sensors or controlling lights and motors.

parts of a balloon tracker
The major components of my tracking system

A radio receiver is often used to receive the radio signal believe it or not, but these are very expensive so I opted for the much more affordable method of Software Defined Radio (SDR). Using a dongle connected at one end to a 70cm antenna (to match the radio wavelength) and plugged into my laptop at the other, I could use the laptop to do the work that the radio receiver would do. The complementary software ‘SDR#’ (pronounced SDR Sharp) showed me all the signals the antenna was receiving, and to start with I was able to listen to music from various radio stations – nice, but not my end goal.

I followed the UKHAS (UK High Altitude Society) guide on creating the circuit linking the Arduino and radio module. Turning the transmitter on produced a clear spike at the frequency the module transmits at, and by tuning SDR# to this frequency I could hear the bleeps of the alternating tones. The transmission of this alternating tone is called RTTY (Radio teletype).

image of The alternating signals being received in SDR#
The alternating signals being received in SDR#

The second piece of software, dl-fldigi, converts the bleeps of RTTY into data – in this case a line of text to test it is working, but during the flight this will be the location data of the payload. Making dl-fldigi recognise the audio from SDR# took a while. Eventually though, after a lot of juggling with various software settings and circuit connections, it worked!

Dl-fldigi decoding the packets of RTTY
Dl-fldigi decoding the packets of RTTY

Having spent a while receiving the signal on SDR# I started to notice the signal was drifting. This is a known problem that can occur and is amplified by temperature changes. I therefore bought a more robust SDR dongle, the NooElec NESDR SMArt, which has a Temperature Compensated Crystal Oscillator (TCXO) meaning the signal drifts less over time for a given temperature change. I also bought a ‘HABamp’, a component that filters out the unwanted signals and amplifies the signal you want, producing a much clearer signal.

Step 2: Find current location with GPS module

The next step was to use the uBlox8 GPS module to give me my current location - lattitude, longitude, and elevation, vital when tracking the balloon. Firstly, this meant that it was time to use a soldering iron probably for the first time since year 9. Boy I forgot how fun soldering was!

With the module connected to the Arduino, and a new code uploaded, I was again wondering what I had missed as nothing was happening. As with before though, I tried and tried and eventually succeeded.

Using the complementary program for the GPS module, uCentre, and holding the antenna up against the window, I was able to see my location on a map and many interesting things such as the satellites I was picking up.

A few of the many windows that can be selected in uCentre. The raw data being received (bottom left), current co-ordinates (top left), location on a map (top middle/bottom right), and locations of satellites (top right).
A few of the many windows that can be selected in uCentre. The raw data being received (bottom left), current co-ordinates (top left), location on a map (top middle/bottom right), and locations of satellites (top right).

Step 3: Combine steps 1 and 2 to send GPS data through the radio module

Having successfully decoded data from the radio module and used the GPS module to find my location, it was time to combine the two and decode the radio data strings containing longitude, latitude etc. For a first flight it is best to carefully use pre-flown code, and there is plenty of code available online which I am very grateful for. It was then just a case of wiring up the two modules to talk to each other and precariously balancing the GPS module by the window. Going back to the SDR# software, I tuned to the radio module’s frequency. Finally, in dl-fldigi, I was able to read the data that had been decoded containing the longitude and latitude. The bar at the top of the message window turns green when this has been done successfully, and if I were to use the program in ‘online’ mode then it would upload the location to the central server map for everyone tracking to see. Success!

The GPS module is flashing green to indicate satellite lock, the LEDs are lighting up to indicate the radio module is working, and the Arduino is hidden underneath the breadboard circuit.
The GPS module is flashing green to indicate satellite lock, the LEDs are lighting up to indicate the radio module is working, and the Arduino is hidden underneath the breadboard circuit.
The yellow box half way down the screen displays the text containing information including the time, longitude and latitude that the radio module sends to the laptop via the antenna.
The yellow box half way down the screen displays the text containing information including the time, longitude and latitude that the radio module sends to the laptop via the antenna.

Next Steps

Now that I have figured out the circuit connections of the tracker, I will try to add extra components to my circuit such as a temperature sensor and an SD card module. I will also research a video camera that will be capable of recording the whole flight, and perhaps another camera to take pictures with. I hope you enjoyed reading about my tracking system, and that you were able to follow what I was on about!

Posted in: Department of Mechanical Engineering, Student projects, Undergraduate

Responses

  • (we won't publish this)

Write a response

  • Hello, can the NTX2B be used for transmitter CW using arduino and decoding this with sdr?

    Thanks.