8 ms·
Show HN: A high-altitude low-power flight computer for high-altitude balloons
I've been working on this for a while now, and I'm happy to share!
I've been into launching weather balloons for a few years. One aspect of the hobby that really drew me in was the tracking side of things. Tracking systems let you follow the balloon's position throughout the flight and, most importantly, know exactly where it lands so you can recover the instrumentation. APRS is what I started out using during my first few years in the hobby, after I got my amateur radio license in 2020 (W0MXX). I designed a few small boards using the trackuino (https://github.com/trackuino/trackuino https://github.com/trackuino/trackuino) firmware (while breaking 3 $70 radio modules along the way).
I then got into recovering radiosondes, which are launched twice per day by the NWS and can be reprogrammed using RS41ng (https://github.com/mikaelnousiainen/RS41ng https://github.com/mikaelnousiainen/RS41ng) to run many amateur radio tracking protocols. I was a bit dissatisfied with how large and heavy the radiosonde trackers were, so I designed my own tracking system, called Tiny4FSK.
Tiny4FSK is a flight computer with built-in tracking using the Horus Binary v2 tracking system. This protocol was developed by the Project Horus team specifically for high-altitude balloons, and it brings features like high transmit rates, forward error correction, and excellent weak-signal performance in an open source package. It's designed to be as compact as possible and can run on a single AA battery for upwards of 17 hours.
The main board comes with header rows that allow for out-of-the-box expansion. I developed a shield that supports the BME280 environmental sensor, the ICM-20948 9-axis IMU, and more via the Qwiic connector. It also features an OLED display for basic diagnostics.
While I've pretty much polished the main tracking procedures (and have tested on multiple flights), I'm still developing the IMU code using a lightweight Kalman filter. Additionally, there isn't yet a wide network of Horus Binary decoding stations like the APRS network has (I-gates), but I hope that by promoting this protocol, more stations will pop up. This means that if you're not in an area with many receive stations, you'll need to set up your own using either Horus-GUI (https://github.com/projecthorus/horus-gui https://github.com/projecthorus/horus-gui) or horusdemodlib (https://github.com/projecthorus/horusdemodlib https://github.com/projecthorus/horusdemodlib).
One issue I’m still working on is improving RF signal strength. Although the protocol is decodable in very low-noise environments, the transmit power appears to be lower than that of a typical radiosonde. This could be due to several factors: limited current on a weak power source (signal is stronger when powered from a bench supply), off-tuned filtering/matching, or not paying enough attention to the antenna. I'm planning to run more simulations to figure this out. That said, the signal is still decodable from the ground even at max altitude (~100,000 feet).
On the more technical side, Tiny4FSK uses:
- the SAMD21 microcontroller, which is an ARM Cortex-M0+ MCU
- the TPS61200 boost converter, which is adjusted to output 3.3v
- Si4063 radio module, which I use on the 70cm band
- ATGM336H gps module - pretty cheap GPS module which works in airborne mode (>18km)
- integrated BME280 temperature, pressure, and humidity sensor
The code uses the Arduino framework to make it accessible to beginners.
All flights using Horus Binary v2, including reprogrammed radiosondes, other custom trackers, and Tiny4FSK show up in real-time on Sondehub Amateur (https://amateur.sondehub.org https://amateur.sondehub.org). Flight data can be found in the /Media/Data folder on Github (there's several missing flights on there though).
Thanks for reading, hope I didn’t mess anything up too badly in the post!
-Max
- paulgerhardt 1y agoLove this. Have a friend that regularly sends $30 balloons a few times around the world. They routinely end up over interesting areas like hot spots in the Middle East or North Korea. Would be great to issue commands to a light weight camera but the bandwidth is so limited - payload is a factor too - can only be under 100 grams or so. Bandwidth is in the order of 30 bytes per minute. Would be fun to take picture remotely and then drop the payload/memory card when the balloon circled back to friendlier territory.
- yonatan8070 1y agoWhen it flies over these unsafe areas, isn't it detected by the region's air defense systems and shot down? Or are these too small and high to be seen by such systems?
- 0_____0 1y agoEven if it made sense to try to take out a balloon, the missiles that can reach 80,000ft+ are tens of million dollars a piece, and not that many countries have access to that type of missile tech.
- pests 1y agoI mean look at the US response to the Chinese balloons - took a bit of time and ended up being handled by fighters not missiles