As part of the San Francisco High Altitude Balloon group, Martin W6MRR has been experimenting with picoballoons. Picoballoons are different than regular amateur radio balloons in that are designed to be neutrally buoyant at around 40k feet. This requires payloads that are much lighter than traditional balloons, and different balloon materials that won't stretch or break. This altitude was picked because it is above airplanes and weather, but still in the jetstream, where they can float around the world in a matter of weeks. Our goal is to circumnavigate the globe at least once.
Picoballoons use either Mylar or plastic material in their construction. More traditional Amateur radio balloons, like from our previous launch use latex, which expand dramatically at altitude, then bursts. Latex balloons also break down under ultraviolet light, and are much more expensive than plastic balloons.
Early picoballoon launches just used 2m APRS for sending position information. However, the APRS frequencies in Europe and the rest of the world are different than the North American standard of 144.390 MHz, so balloons that crossed the Atlantic needed to switch frequencies.
Due to the frequency differences and lack of Internet Gateway receivers over the ocean, the picoballoon community has adopted Weak Signal Propagation Reporter (WSPR) for transmitting position and telemetry. WSPR is a protocol for weak signal communication. The protocol was designed to test propagation between two points on the planet, to see if a particular band is open or closed.
WSPR transmitters are typically 10 mW to 5 watts, and due to the very small packet size and heavy forward error correction, transmissions can be decoded many thousands of kilometers away from the source. Here's a map of all the spots received by my 20m receive station in San Francisco, from VK7JJ. On this particular day, the furthest station I received was 8P9DH in Barbados, over 6,700 km away.
Balloon and Tracker Electronics
For these launches, we're using two 36-inch plastic party balloons from Aliexpress. Balloons are pre-streched to check for manufacturing defects, and filled with lifting gas the night before to check for small pinhole leaks. We use hydrogen as our lifting gas because it is a bit lighter than helium and much cheaper.
Martin W6MRR designed and built the tracker, which is based on the QRP Labs LightAPRS-W. The WSPR 20m transmitter is a Si5351A clock generator, with a maximum output power of 20dBm (10 milliwatts). The GPS is a Zhongkewei ATGM336H-5N31, which is a cheap Chinese knockoff of the uBlox MAX series.
Powering this tracker are two 240mW solar cells from PowerFilm. These two panels are tilted straight up to get maximum power at local noon. Since there are no batteries, two ultracapacitors with a capacity of 2.5 Farads at 6 volts are used to store energy while the transmitters are going.
The APRS 144.390 MHz antenna is a 19.5 inch metal guitar string. The WSPR 20m dipole bottom half is 34 gauge wire, and the top half (that connects to the balloon) is 0.012 inch seven conductor brass beading wire. After the first launch, we soldered the wire in a ring at top end for easy connection to the balloon. The GPS antenna is just a 1.8 inch piece of wire, much cheaper than a ceramic chip antenna and much easier on the PCB layout.
The weight of the stuffed tracker PCBA is around 12 grams. With the antennas and solar panels included, total tracker weight is 20.2 grams.
Unfortunately, this tracker design has a big problem with self-interference from the APRS beacon. The 500 mW of transmit power on 144.390 MHz sometimes causes the microcontroller to lock up, hard enough that even a software reset can't clear it. When this happens, the tracker must be completely powered off to reset, and the only way to do that is for the sun to set and the ultracapcitors discharge completely. This only happens once per day, so this bug causes the tracker to prematurely power off.
WSPR to APRS bridge
aprs.fi is a nice interface for the APRS network. Regular APRS packets transmitted on 144.390 MHz by the balloon will show up here, but WSPR packets will not because they aren't received by the APRS network. To put our balloon WSPR packets onto the APRS network, Graham VE3GTC wrote the aprsWsprBrige python script that scrapes the WSPR database for a particular callsign and uploads the location to the APRS network.
Installation was very simple, follow the installation instructions in the aprsWsprBridge_notes.txt file. Graham recommends running the script every 15 minutes on odd minutes, which reduces load on the WSPR servers.
wspr_spotsLog.txt is a log of the WSPR spots downloaded from the WSPR database.
log.txt is a running log of what the program is doing, and is helpful to watch to make sure it's working.
We gathered at 7am on Sunday March 7th, 2021, to launch the first picoballoon from Cesar Chavez Park in the Berkeley Marina. The launch party was Martin W6MRR, Robert K6RGG, Peter W6DEI, Mathison KJ7DZB, and myself. Martin realized that one of the balloons had sprung a small leak overnight, but didn't have a spare one inflated for this launch. So before leaving home, he added some more hydrogen to the balloon. The leak was small enough that there was still enough hydrogen for the launch.
After hooking everything up, we started to release the balloon. The winds were slightly offshore at only a few knots.
Mathison KJ7DZB had the honors of releasing the tracker. Since one of the two balloons was only partially inflated, there really wasn't enough lift to keep the tracker from dragging along the ground after release. It got caught on a fence, and twisted up the antennas before finally going airborne.
The balloon slowly gained altitude, heading southwest towards the San Francisco. We watched it for 20 minutes while discussing improvements for next time. Unfortunately, this balloon was never heard from.
Lessons learned from this launch:
- Ensure the solar panels are tilted up before launch. Angled panels don't collect as much energy because they can rotate away from the sun.
- Have spare balloons ready for launch. Martin inflated two pre-streched balloons the night before, but one deflated by the morning. He inflated another balloon in the morning, but it also partially deflated before arrival at the launch site. Lesson learned is to pre-strech several balloons before the launch, then inflate at least 4 balloons the night before, and bring them all to the launch site. In case a balloon isn't sealed, or otherwise deflates, there are extras for the launch.
- When sealing the balloons, create a loop of balloon material to easily tie the train to.
- Improve the physical connections between the balloon and tracker. Tying braided fishing line to brass wire is very difficult, because the diameters are much different and both materials are very slick. Solder a loop on the antenna.
- Use toilet paper rolls for transportation and pre-launch cable and antenna management.
- During release, make sure you're away from any ground objects in all directions. Fences, posts, trash cans, etc.
- Ensure that the antennas and payloads are all in order and aligned downwind before the final release.
We launched again on Sunday March 21st. The winds were calm, and we decided to launch from the southern end of the Berkeley Marina, at the south end of Seawall Drive. This location has water on three sides, reducing our chances of getting caught in a tree. For this launch, it was only Martin W6MRR, Robert K6RGG, and myself.
Robert K6RGG brought his drone and captured the launch:
With all the lessons learned from the first launch, this second one went very smoothly. Martin brought several spare balloons to the launch site, and we picked the best ones. It only took about 10 minutes to get the tracker ready, tie the balloon to the dipole antenna loop, and release the balloon. The tracker didn't hit the ground, so no antennas were twisted or snagged.
When Martin got home, he fired off a single WSPR packet from his home station. This single 5 watt packet was heard over 3,000 km away in Huntsville, Alabama. I debugged and tested the aprsWsprBridge software with this packet, and forwarded that packet to the APRS network at 9:22am.
At 10:54am, APRS Internet Gateway stations along the coast picked up the balloon on 144.390 MHz. The balloon was at 24,561 ft and slowly rising, and it was approximately 35 miles southwest of Monterey, California. Success, the balloon was alive! The ascent rate from launch to this point averaged 2.4 feet per second.
Between the first APRS packet at 10:54am and the last APRS packet at 11:18am, the balloon rose 1504 feet. This is an ascent rate of almost exactly 1 foot per second, or 0.3 m/s. Much slower than the ascent rate earlier in the flight. The APRS network received 13 packets in total, see all the raw APRS packets here.
Note that a WSPR packet only transmits the Maidenhead gridsquare of the transmitter, which is a 1 degree latitude by 2 degree longitude "square" area. The aprsWsprBridge script converts the Maidenhead gridsquare to latitude/longitude in the bottom left corner of the gridsquare. The balloon is somewhere within the dark blue box above, but unfortunately we don't have a more precise location than that.
The WSPR packet transmitted at 11:28am was the last packet received from the balloon. The microcontroller must have locked up. After that, the balloon might have gotten caught in a downdraft and fallen into the ocean, or flew into a cloud and the water on the outside of the balloon was enough to crash it. We will never know.
Several of the parts on the tracker are no longer available to purchase, so a redesign is in the works. Removing the APRS transmitter (and the self-jamming "feature") will save considerable weight and power, allowing the balloon to float at a higher altitude. The new tracker PCB is only 5 grams.
Hopefully we'll be launching soon, stay tuned!