← All posts

APEX: Launching a Spectroscopy Payload to 100,000 Feet

June 2025Embedded · Hardware

APEX is a high-altitude balloon platform for atmospheric spectroscopy. We launched a payload to roughly 100,000 feet — the stratosphere — to collect light absorption data across multiple wavelengths at altitudes commercial aircraft can't reach.

I was the team lead. That meant scope management, hardware/software integration, coordinating mechanical and software contributors, and being the person who had to make a call when two approaches were both defensible and we were running out of time.

The Engineering Challenge

The stratosphere is hostile to electronics in specific ways. Temperature at float altitude is around -60°C. Atmospheric pressure is about 1% of sea level. The payload spends 2–3 hours ascending, 30–60 minutes at float altitude, and then descends — sometimes fast, sometimes not, depending on how the balloon bursts.

Every component in the sensor stack had to be rated for those conditions, or we had to test it ourselves. Off-the-shelf spectroscopy modules are not designed for this. We spent a significant chunk of the build time just validating that our sensor chain would actually produce reliable readings at altitude, not just at sea level in a warm lab.

Power management was a secondary challenge. The payload is battery-operated. Battery capacity drops in cold. You're doing math on how much capacity you actually have vs. what the datasheets say, and the answer is always less.

What I Was Responsible For

On the software side: the embedded data acquisition system, the logging pipeline that wrote to SD card with checksumming, and the telemetry link that transmitted a subset of readings over radio in real time. On the systems side: integration between the mechanical enclosure, the power system, and the sensor array. The boundary between 'this is a hardware problem' and 'this is a software problem' dissolves fast when you're debugging why a sensor is reading wrong.

Leading the team meant being the person who said 'we're not adding that feature' when it would've pushed the launch date. Scope management is the hardest part of any hardware project. The launch window doesn't move.

The Data

We got data back. That's not guaranteed — plenty of balloon projects lose their payload on descent, or discover that the sensor readings were garbage at altitude, or find the SD card corrupted. We got clean readings across the ascent profile and at float altitude.

The spectroscopy data shows measurable changes in atmospheric composition across altitude bands. Specifically, ozone absorption features are detectable in the near-UV range at float altitude in ways that are masked at lower altitudes by atmospheric scattering. We're still processing the full dataset.

What I Would Do Differently

More redundancy in the sensor stack. We flew one primary spectrometer with no backup. If it had failed mid-flight, we'd have an expensive paperweight. Next time, a secondary sensor with a simpler interface as a fallback.

Better descent rate control. The burst altitude and descent profile were less predictable than we wanted. A controlled venting valve on the balloon would have given us more deterministic float duration.

Getting data back from 100,000 feet is still surreal. We're doing it again.

View all projects →View on GitHub ↗