I've been watching SondeHub for the past two months to, every day since my first recovery, but the winds have not been cooperating! Lots of radiosondes went into the hills east of San Jose, out into the ocean, into the Santa Cruz mountains, all the way down to Gilroy, or splashed down in the bay, but none have landed in populated areas within an hours drive of my home in San Francisco. I realized how lucky I was that the first radiosonde I successfully tracked actually landed in a populated place.
In a typical city, approximately 35-50% of the land is dedicated to cars: residential roads, arterials, freeways, and parking lots. So when a balloon lands in populated areas of the Bay Area, there's a really good chance that it's going to land on or near some car infrastructure. Even my neighborhood in San Francisco, one of the densest cities in America, dedicates 28% of surface area to cars: from the center stripe to the front of the house is 40 ft, and the lot is 100 ft deep. Cars really do dictate the built environment in America, and what this says about our priorities requires many rounds of beers to discuss.
On December 16th, I noticed that I didn't receive any radiosondes from either of my stations. I thought it was weird, but didn't have time to investigate because I was very busy at work. Maybe the autolauncher got jammed, or ran out of balloons? The only real debug tool I had was frequency scanning, so when I got some free time I removed the whitelisted frequency of 404.0 MHz and allowed radiosonde_auto_rx to scan all frequencies from 400 to 406 MHz. This did the trick, as the new radiosondes were on 404.2 MHz.
Checking SondeHub twice daily, I saw that the radiosonde launched on December 19th 2300 UTC landed in the mountains just west of Saratoga. The winds were shifting, maybe in my favor? I ran some predictions on HabHub, and they looked like the next few launches would land around Sunnyvale. Finally, the upper air winds were calm enough to attempt a recovery! I set my alarm for early the next morning.
In winter, the radiosondes launch from Oakland airport at 3 AM and 3 PM every day. A typical radiosonde flight lasts two hours, so the balloon is back on the ground around 5 AM and 5 PM. An automated 3 AM launch is pretty early, especially now since we're very close to the winter solstice, with nautical twilight starting at 6:20 AM and sun rise at 7:20 AM.
The predicted landing location for this balloon was an hour south of my apartment, so I could get on the road at 4 AM and find it shortly after it lands. But we're talking early Sunday morning, not many people will be out and about in the dark, and I need my beauty sleep.
I decided to arrive at the landing location just as twilight was starting at 6:30 AM, hoping it would land near a road and that nobody would be around to start asking questions. Searching for anything in the dark is difficult. I set my alarm for 5 AM.
Looking at SondeHub just after I awoke, the radiosonde had already landed in North Sunnyvale. Checking my station in Los Gatos, the last packet it received was at 206 meters elevation, which works out to 0.4 degrees above the horizon. This is pretty surprising, as the Los Gatos station is in a valley, with 20 degree elevation mask west and east. Since the last packet was received so close to the ground, I had a pretty good idea of the final landing location.
I loaded up my mobile station, and jumped on the highway. My mobile station is pretty simple to set up:
- A very old Dell laptop, running radiosonde_auto_rx in a docker container
- 12 V cigarette plug laptop power supply
- RTL SDR Blog v3 dongle (should probably add an LNA)
- Comet M-24M 1/4 wave 2m/70cm dual-band mag mount antenna with PL-259 connector
- Male SMA to SO-239 adapter
- My cell phone acting as mobile hotspot, for viewing Sondehub on the laptop and upload packets
I drove straight to the last decoded location, and when I was about 200 meters away my laptop started receiving the balloon. I drove right up to where it had landed on a road in the Plaza Del Ray mobile home park in Sunnyvale. Nautical twilight was just starting.
How lucky is that! If it had landed 5 meters in almost any direction, I would have needed to wait around until people woke up and ring some doorbells.
As an aside, the final transmitted altitude of the radiosonde laying on the pavement was -28 meters, which is clearly way off. According to topo maps of the area, the landing site altitude is 5 meters, for a total error of 33 meters. The u-blox UBX-G6010-ST datasheet specifies a CEP of 2.5 meters, or 2.0 meters with WAAS. This is not specified as horizontal or vertical, so I'll just assume it's horizontal. Because of the satellite geometry, vertical error is always greater than horizontal, and I would not be surprised with 10 meters in vertical error. But not 33 meters.
Maybe they radiosonde is using the pressure sensor for the altimeter? This seems unlikely, as GPS telemetry is already flowing into the microcontroller, although how else does the pressure telemetry get transmitted? Or maybe the receiver only had lock on a few satellites because the nearby buildings were blocking everything towards the horizon? Telemetry in flight showed it had lock on 10 or 11 satellites, and only 8 satellites after it landed. But satellites at the horizon don't really help with vertical precision.
Since the winds were still calm that afternoon and it was daylight, I decided to try and be closer to the balloon when it landed. At the beginning of the flight, the predicted landing place was in Fremont, but the upper air winds were stronger than the model predicted, and the balloon crossed over the bay and burst over the Dumbarton Bridge.
I was about 1.1 miles away when the radiosonde hit the ground, started receiving the packets again 4 minutes later as I drove closer, and had spotted it 7 minutes later. The balloon was up 40 feet in a tree, but the actual transmitter was on the ground, right next to Woodland Ave. I pulled the balloon down, gathered up the string, and was on my way before anybody knew what happened.
The outside of the radiosonde is all styrofoam, with some reassuring words that it won't hurt you. It also says not to send it back, so I guess that means we get to keep it, and take it apart! Please dispose of properly, but no instructions on where or how....
Click on any of these pics to Zoom and Enhance.
The styrofoam is held on with two plastic clips, squeeze them together with some needle-nose pliers, and eventually it comes apart. The batteries are two Energizer L91 primary lithium batteries. Lithium batteries are used because of superior low-temperature performance as compared to regular alkalines.
The silver thing on the right is the temperature and humidity sensor on a flex PCB. The temp sensor is the thin silver wire on the very end of the flex PCB, and the humidity sensor is the white and grey device that looks like a very large SMT resistor.
Pulling off the batteries and the styrofoam case, here is the raw PCB.
These are the main components.
- Main microcontroller: STMicroelectronics STM32F100C8 processor
- GPS receiver: u-blox UBX-G6010-ST
- Telemetry transmitter: Silicon Labs Si4032
- Pressure sensor: Vaisala RPM411 pressure sensor (english translation)
As soon as the batteries are removed, everything turns off. When batteries/power is restored, the LEDs show error a few seconds after power on. This is probably because the radiosonde needs to be activated via NFC, and programmed with the TX frequency and other constants (maybe launch location barometric pressure?).
Now that I have several of these radiosondes, I'm going to play around with reprogramming them into the amateur 70cm band. These trackers are so lightweight they would be a great addition to our next high-altitude balloon launch.