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.
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).
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!
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.
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!
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!