Show HN: A high-altitude low-power flight computer for high-altitude balloons

github.com

37 points by mpkendall a day ago

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) 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) 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) or 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). 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 20 hours ago

Love 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 17 hours ago

    When 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 15 hours ago

      Even 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 13 hours ago

        I mean look at the US response to the Chinese balloons - took a bit of time and ended up being handled by fighters not missiles

        • 0_____0 11 hours ago

          That one was flying around 60,000ft and weighed probably about 1 ton. Very different kind of balloon.

          It was shot down by an F22 with an AIM-9 Air-to-air missile. This is the highest altitude air-to-air kill known, and the first combat kill of the F22 platform.

          • farseer 2 hours ago

            What a meek first kill. The F-22 is meant to attack swarms of Chinese fighters over the South China Sea. One day it will.

            • 0_____0 an hour ago

              Maybe it'll be over my house. Oh goody I'll get to watch!!

normaldotcom 17 hours ago

Awesome to see HAB on hacker news! Was following some of your development years ago when I developed a small APRS tracker, have been meaning to revisit that project someday. Also developed a WSPR version that I haven't published any info on, but had a great trans-atlantic flight with that one. Keep up the great work!

http://protofusion.org/wordpress/2015/10/featherhab-2-gram-h...

http://protofusion.org/wordpress/2016/02/featherhab-source-c...

  • hazek112 15 hours ago

    How'd you maintain connection over the ocean?

dylan604 17 hours ago

I did one of these balloon launches myself several years ago, and attempted to build a flight computer myself with Arduino and multiple sensors. I could not find an efficient way to read all of the data from the selection of sensors in the limited memory, so I wound up using a Mega. Nobody involved was a licensed radio operator, so our live tracking was very primitive. It wasn't until after 45k' that we realized our GPS tracking stopped tracking at that altitude because why would a civilian be at that altitude. Of course we didn't know that until researching it after recovery, but we were very relieved when it started to updating once it came back under 45k'. Unfortunately, something happened (my coding to be sure) that caused the log to not be written as expected. Was hoping to be able to compare the GPS of the actual flight against the forecast model we used. This is the very thing I would have loved to have for future launches. I even made friends with a licensed operator to make it legit. (couldn't be bothered to take the test myself)

One thing to keep in mind for anyone wanting to do their first one. If you go to the trouble of printing up contact info for an "If Found", don't forget to attach it before lift off like I did.

Catbert59 20 hours ago

Interesting!

I'm thinking of building a small PCB for ballooning too.

But I most likely will shift the design decisions a bit:

- 2.4GHz LoRa for high-rate telemetry as reciving can recycle Wifi-Antenna gear. The Semtech SX128x chips are easy to handle.

- Low rate telemetry on 433MHz with a SX12xx or SX17xx.

In terms of chips most likely something around the STM32U series.

The company ePeas has very interesting energy harvesters. Not super cheap - but still affordable. They have special profiles for supercaps which are very resistant against freezing.

  • jotux 20 hours ago

    If you're going to use LoRa with an STM32, consider the STM32WL5x. It's an ST32L4 with an integrated SX12xx.

    • Catbert59 20 hours ago

      I have at least 10 of them in my lab :-) Thanks for the hint!

  • mpkendall 20 hours ago

    Hey! Yea I've been looking into energy harvesting a bit as well after watching this video: https://www.youtube.com/watch?v=TGbtzlWb-Kc

    Generally the higher frequency you go, the lower range you get as a rule of thumb. It's also harder to design around higher frequency boards, though it's totally doable. That said, I'd love to see how 2.4GHz works out!

    • Catbert59 19 hours ago

      LoRa is absurdly robust.

      Someone maxed out the ranging mechanism of the Semtech SX1280 with a 5dBi rubber antenna. He reached 60km with LoS. And there's a report of 90km in a ballooning project.

      (https://github.com/StuartsProjects/SX1280_Testing)

      • yonatan8070 17 hours ago

        In fact, it's so robust that even when your antenna is a piece of wire hanging off a GPIO of a microcontroller with absolutely no dedicated radio hardware, you can still get several km of range. Truly crazy stuff.

        https://youtu.be/eIdHBDSQHyw

      • jotux 19 hours ago

        In a previous job I pushed an STM32WL5 on a custom frequency over a private satellite constellation with a relatively large yagi antenna. Over 70k km round trip :D

      • mpkendall 19 hours ago

        Interesting, thanks for sharing! I'm interested in creating some form of live video/image system, thanks for this!

        • Catbert59 19 hours ago

          The Semtech modems have several modulation modes which can be configured in great detail.. the datasheet is quite verbose about them.

          The latest generation of chips (AFAIR not yet released) integrated a mode that allows them to receive on all LoRa speed grades in parallel. Bit like the existing LoRaWAN basestation ICs.

          I remember reading a datasheet that one (already released chip) is also able to work on 144-146MHz. But that's not what standard Asia (ESP32+LoRa modules) offer. TTGO has AFAIR recently released a super new board that allows this band.

guywithahat 16 hours ago

You should check out Sceye, they're hiring and doing this. Unfortunately you have to live in the middle of the desert in New Mexico, otherwise it's a cool company

prpl 20 hours ago

looks like a bunch of NEWBS.

(guessing github.com/NEWBS was taken)