HAB – protofusion http://protofusion.org/wordpress Open Hardware and Software Fri, 14 Nov 2025 03:05:23 +0000 en-US hourly 1 https://wordpress.org/?v=6.8.3 11753368 Tracking Balloons with WSPR http://protofusion.org/wordpress/2017/09/tracking-balloons-with-wspr/ http://protofusion.org/wordpress/2017/09/tracking-balloons-with-wspr/#comments Sat, 30 Sep 2017 22:00:39 +0000 http://protofusion.org/wordpress/?p=2777 ]]> What is WSPR?

WSPR is a low data rate digital protocol intended for measuring RF propagation, typically on LF and HF bands and at very low powers (often 1W to as little as 20mW). WSPR messages are digital packets that contain just a few pieces of data:

  • Callsign of sender
  • 4-digit grid locator for indicating transmitter location
  • Transmit power in dBm

This data allows a listener to know how far away transmissions originated and with how much power the transmission was made, giving a fairly realistic and real-time measurement of RF propagation.

On the physical layer, WSPR consists of a 4FSK modulated signal with a separation of 1.4648Hz between tones. This frequency shift is so small that it is nearly imperceptible to the human ear. Bits are transmitted at 1.4648 baud (which is crazy slow!) and messages take just shy of 2 minutes to transmit, which contributes to the protocol’s robustness.

WSPR includes a few other features that help it decode reliably even at very low SNR. Each WSPR message must be transmitted on an even minute, +/- a couple seconds, so receivers know when to expect the beginning of a message. Each message includes forward error correction (FEC) so that receivers can correct any bit errors that do occur during transmission. Messages are also combined with a 162-bit pseudo-random sequence sync vector to aid in receiver synchronization to the bit stream.

Why use it for balloon tracking?

WSPR provides a great transport for data when balloon tracking, as distances of 1000km+ are easily spanned with merely 20mW of power or less. WSPR receivers are located around the globe, and are continuously listening for WSPR transmissions which they relay to the Internet, providing an easy-to-use backbone for balloon data.

The hardware required to transmit WSPR is also very simple. Most transmitters are very simple, and consist of a single I2C programmable oscillator with a simple low-pass filter. The oscillator is re-programmed to different frequencies on the I2C bus for each bit transmitted. Even though this method is several orders of magnitude too slow for conventional modulation schemes, the extremely slow baud rate of WSPR allows this technique to work very well.

While all this sounds perfect for balloons, there are some practical limitations: you can only transmit very limited data, and transmissions are super slow. Packets only include 4-digit grid locators, which only localizes you down to a 70mi x 100mi square. There is no provision for any additional data such as battery voltage, altitude, temperature, etc.

(mis)Using WSPR fields to encode data

We can work around two of these issues with a slight hack on the WSPR network. WSPR packets that have callsigns with ‘0’ or ‘Q’ are considered invalid packets (since no allocated callsign starts with these characters). However, WSPR receivers still process and upload these packets to WSPRnet, and they can be used for balloon telemetry.

Typically trackers will transmit a “standard” WSPR packet that shows up correctly on the WSPRnet map, followed by an “invalid” ‘0’-packet that encodes some additional telemetry. This packet typically encodes battery voltage, temperature, altitude, and 2 additional characters of maidenhead grid locator into a single WSPR packet.

Check back for a follow-up post where I walk through how this data is encoded in my WSPR tracker. All of my code will be open-source and available for reuse!

]]>
http://protofusion.org/wordpress/2017/09/tracking-balloons-with-wspr/feed/ 5 2777
FeatherHAB Source Code Released! http://protofusion.org/wordpress/2016/02/featherhab-source-code-released/ http://protofusion.org/wordpress/2016/02/featherhab-source-code-released/#comments Mon, 29 Feb 2016 17:00:16 +0000 http://protofusion.org/wordpress/?p=2379 ]]> featherhab-0.1FeatherHAB hardware and software source code are now available for download! The hardware is released under the Attribution-ShareAlike 4.0 International license and the firmware is released under the GNU Affero Public License.

FeatherHAB Features:

  • STM32F0 microcontroller
  • SI446x transmitter broadcasting APRS on 144.390MHz
  • ublox MAX8 GPS module for position tracking
  • Buck-boost power supply for running off of single LiMnO2 cells
  • Opencm3-based firmware compiled with GCC ARM

A st-link programming adapter, blackmagic probe, or similar is required to flash FeatherHAB boards. You will also need some means of connecting to the programming pads on the FeatherHAB PCB. You can solder wires directly to the programming pads, or you can build a ProtoProg adapter.

Building your own FeatherHAB or modding the design? Drop a comment below and share your progress!

Downloads:
]]>
http://protofusion.org/wordpress/2016/02/featherhab-source-code-released/feed/ 18 2379
FeatherHAB: 2-gram High Altitude Balloon Tracker http://protofusion.org/wordpress/2015/10/featherhab-2-gram-high-altitude-balloon-tracker/ http://protofusion.org/wordpress/2015/10/featherhab-2-gram-high-altitude-balloon-tracker/#comments Mon, 19 Oct 2015 19:49:39 +0000 http://protofusion.org/wordpress/?p=2311 ]]> FeatherHAB Balloon Tracker

FeatherHAB is a lightweight, small, and inexpensive balloon tracker. It tracks the location of a balloon with GPS and broadcasts the balloon’s position to the APRS network on 144.390MHz. The tracker is built around a Ublox MAX8 GPS module and a custom RF transmitter designed with the Silicon Labs Si446x transceiver IC. Power is supplied by a single-cell Lithium battery, which runs through a tiny buck-boost converter to power the system. The total weight comes in at about 2 grams without a battery.

balloon-flight

The tracker’s maiden flight was on August 8th. I launched it from a location near my home in Ann Arbor, MI and the tracker operated until it reached up-state New York the next morning. For this flight, I suspended the tracker under a jumbo-size party balloon that I partially inflated so it would float for a long distance.

This flight was primarily intended to test my RF transmitter, so flight duration wasn’t a huge concern. During this flight, my tracker was powered by a single CR2 cell, which gave about 12 hours of life. I plan on working on power management to extend the life on a single cell as well as building an external solar cell interface board for long-distance flights.

I plan on respinning the FeatherHAB PCB in the coming weeks to fix some minor issues, and I’ll officially release source code and hardware at that point. Until then, shoot me an email if you would like any more details about the design.

]]>
http://protofusion.org/wordpress/2015/10/featherhab-2-gram-high-altitude-balloon-tracker/feed/ 2 2311