Ultralight Mission

With two of our kids going to college, and the third off to live with his dad, it's time to start assembling the gear and code for a new balloon mission. This time, I will be following (loosely) the format of ultralight packages, such as those used by Leo Bodnar for his multiple circumnavigation flights. I will not be using solar panels, so I will not be attempting an around-the-world floater. Instead I believe I will try for extreme altitude by using an extremely light payload, a very large envelope, and the absolute least amount of lifting gas possible.

Many European High Altitude Balloon (HAB) hobbyists have started using LoRa as their over-the-air protocol. LoRa offers high speed transfers even at long range and tiny power levels, and is nearly impervious to noise. The radios come in the form of tiny pre-integrated circuit board modules, such as those made by HopeRF. These can be accessed digitally, and handle all of the details of the LoRa implementation - just add a microcontroller, GPS, battery, and antenna, and your hardware solution is nearly complete. Adafruit sells these modules for multiple bands, including some models that are built onto a board with a CPU, along with add-on modules including a tiny GPS receiver. Meet the Feather family of boards:

The Feather board shown above includes an Atmel/Microchip ATmega32u4 controller, and can be programmed with the Arduino IDE. The radio is a HopeRF RFM96, which is their LoRa module for the 433MHz band. These are available in 315 and 800/900 MHz versions too, but I figure it will be easier to find a 433MHz Yagi antenna for ground tracking than it will to find one for the other bands. These boards are about 2 inches long by 0.9 inches wide, and together weigh just over 14 grams (not including batteries, headers, antenna, etc.). Even with those additional pieces, including a LiPO battery and a tiny serial camera, the whole package would be so light that a parachute for recovery would be completely unnecessary - the tattered remains of a burst balloon should be more than enough to ensure a gentle landing.

Since LoRa is a digital mode and offers error correction, it should be possible to transmit both text and data with ease. My plan is to use the high level text formats of APRS within LoRa packets to pass location data. With just a few days' worth of messing around, I have this working very nicely. I am using the human-readable "TNC2 monitor" format (bare APRS without any AX.25) to send the data - that will allow any non-APRS stations to easily read the data. I have also coded the ground station receiver to translate this on-the-fly to KISS packets; this will allow the data to be more easily processed by APRS client software, to allow automatic mapping. The working code for these functions is attached below.

I would also like to use the aforementioned serial camera to send down images from near-space. An ATmega32u4 does not have nearly enough memory to be clever with the image data, but it should be possible to stream a small JPEG file a chunk at a time, check for re-transmit requests every couple of packets, and thus download small SSTV-sized images as individual files. I have not started working with the camera yet (as of July 16, 2017).


Notes about the sketches below

1. The GPS Feather Wing board comes with the GPS serial port connected to the main serial port pins of the Feather board. This makes debugging more difficult than it needs to be. My approach was to cut the traces for those pins (as documented by Adafruit), solder in wires to jump the GPS serial pins to two other pins, and use SoftwareSerial to interact with those pins. To use the sketch, you will probably want to either jump the pins of the GPS to the Feather/Arduino pins individually (instead of using pin headers to mate the boards), or change the code to read the GPS from the main Serial device.

2. The APRS-to-KISS routine on the receive side is not meant to be bulletproof. It can be easily overrun or confused by malicious or over-sized packets. No warranty is offered or implied, caveat emptor, etc.


Attached Files

Link