I have been building an Arduino based high altitude balloon tracker, something that has been a real challenge from the start. The device uses an Arduino mega with a gps, radio, SMS unit, two temperature sensors and a barometric pressure sensor.
The code works by first setting the GPS in high altitude mode then it gathers the GPS data when it is available and concatenates this to a string with a callsign and checksum before sending this string via the radio. The code then gathers data from all of the sensors including the GPS and makes a string that is then printed to an SD card. If a timer has been reached (eg 2 hours) the code then sends the lat and lon data via a text message. The loop then repeats.
The basic form of the code was taken from those brainy folk at Cambridge university. Their space club wrote an Arduino-based code that lets the user use a Ublox GPS and a Radiometrix NTX2B radio to broadcast the location of the balloon periodically.
I used this code as the starting point. I had to modify some parts to enable the Arduino to set the Neo-6M GPS into flight mode. This is done by sending a series of hex sentences to the GPS then checking the acknowledgement response from the GPS
I used a Ublox Neo 6GPSps as they are cheap and proven to work. They have a high altitude mode that should work up to 50,000ft. There is plenty of info online about these units. I had to use one of the Arduino Mega hardware serial ports as I was getting a clash when using the software serial library. The gps is not totally reliable, it needs to be reset periodically to remain in flight mode etc. This is done every 10 cycles.
The radio is an NXT-2B from Radiometrix. These are proven to work in Hab (High altitude balloon) applications. I have tested the radio works using software called Sdr sharp and dl-folding. You need a software defined radio dongle to listen to the radio. The sdr sharp software connects to the dongle and allows you to visualise the radio spectrum. You can then tune to your frequency and take this signal and put it into do folding for decoding. I had this working on the bench but once I had soldered everything to the board I was getting a noisy signal and could not decode it properly. Still scratching my head in this problem.
Two ds18b20 pressure sensors are incorporated, one to log the interior temp and on for external temperatures. These have the advantage that they can communicate with the arduino using just one data line.
Barometric Pressure Sensor MPL3115A2
This is a nice unit from Adafruit, reliable and simple to use using the I2C bus.
I used one of these SMS units initially with no success. Not sure why, I tried all the online guide and SIM card providers I could. I got fed up and tried this one, again it initially didn’t work. I found out you need to use a DC DC buck converter as the Arduino can’t supply the current required to send a text. I also learned that all SIM cards are not created equal. In the U.K. I found that EE and Giff Gaff sims work , I had no luck with 3 or 02. The code is designed to send me a google maps link after a preset time which it now does reliably.
Next, I want to make a custom PCB for the components for a neater layout than the current design. I have a foam box to put the electronics in, this needs to be modified to accommodate parachutes, cameras, batteries etc…