We jaagden op een weersballon door Montana en hebben hem nooit gevonden
In juni 2025 werkte ik samen met New England Sci-Tech als onderdeel van Apex aan de lancering van StratoSpore: mijn eerste ballonproject. Ik gebruikte deze gelegenheid om algen in te zetten als biosensor voor hoogte en ik heb in dat proces veel geleerd. Omdat ik opnieuw wilde experimenteren in de stratosfeer, heb ik met Sam Flynn samengewerkt om een betrouwbare en vluchtklaar payload (meetinstrumenten) te bouwen.
Op basis van de ervaringen van vorig jaar had ik een aantal doelen voor deze payload:
- Redundantie inbouwen voor de trackingsystemen.
- Afbeeldingen met werkelijke details naar de grond verzenden (de vorige payload verzond foto's van slechts 18x10 pixels).
- Een betrouwbaardere GPS-module gebruiken.
- Geavanceerdere radiofunctionaliteit implementeren (mogelijk gebruikmaken van mijn amateurradio-licentie).
- Efficiëntere datapakkingstechnieken gebruiken voor telemetrie.
In dit artikel beschrijf ik hoe ik deze wijzigingen heb doorgevoerd en documenteer ik mijn leerproces, in de hoop toekomstige lanceringen te verbeteren.
De experimenten
StratoSpore had vorig jaar twee doelen: onderzoeken hoe hoogte en UV-blootstelling de fluorescentie van algen beïnvloeden, en afbeeldingen via een radioverbinding naar de grond verzenden.
Onze payload van dit jaar, genaamd UpLink, volgt een vergelijkbare stijl en had twee hoofddoelen:
- Testen hoe 3D-printfilamenten (schuimend PLA versus niet-schuimend PLA) de isolatie van de payload beïnvloeden.
- Hoogwaardige afbeeldingen verzenden via een radioverbinding.
Testen van de isolatie van de payload
Historisch gezien gebruiken de meeste teams voor onderzoek op grote hoogte piepschuimdozen als behuizing voor de payload. Dat is niet zonder reden: piepschuim biedt uitstekende thermische isolatie en is eenvoudig te bewerken.
Ondanks de populariteit zijn er enkele nadelen:
- Ze zijn verkrijgbaar in vooraf bepaalde maten, wat beperkingen oplegt aan het gewicht.
- Ze zijn niet flexibel voor specifieke payloads, wat een efficiënte indeling bemoeilijkt.
- Ze zijn duurder in vergelijking met op maat gemaakte oplossingen.
De volledige payload (parachute, vlieglijn, elektronica, behuizingen) die we lanceerden, woog 491 gram. Een traditionele piepschuimbehuizing zou al ongeveer 200 gram wegen. Hoe lichter de ballon, hoe aantrekkelijker de payload. Wij gebruikten een ballon van 350 gram van Kaymont. In het algemeen geldt: hoe groter de ballon, hoe meer helium er nodig is, en de kosten hiervan lopen snel op.
Sam ontwierp onze behuizing in Fusion360. Er werd een ontwerp gemaakt dat perfect paste bij onze payload, met vooraf gedefinieerde steunpunten, gestandaardiseerde montagehardware en vakken voor camera's, temperatuursensoren en andere elektronica.
Om te meten hoe de verschillende filamenten de temperatuursensoren isoleerden, werden kleine capsules aan het deksel van de payload bevestigd. Intern werden de sensoren afgedicht met lijmpistool-lijm om ze te isoleren van de omgevingslucht, zodat de resultaten tussen de pods vergelijkbaar bleven.
De behuizing werd geprint met LW-PLA filament van Sunlu. Dit verschilt van normaal filament omdat het microscopisch kleine luchtbellen bevat die tijdens het printproces actief schuimen. Hoewel het 30-50% lichter is dan standaard PLA, is het een nachtmerrie om mee te printen. Ik heb een speciaal printprofiel gemaakt om het werkbaar te maken:
- Printen moet ongeveer 7x langzamer.
- Koeling moet worden uitgeschakeld of beperkt, omdat dit de expansie van het schuim beïnvloedt.
- De bedtemperatuur moet worden verhoogd, omdat de hechting matig is.
- Acceleratie moet worden uitgeschakeld, anders krijgen de infill en wanden variërende sterktes.
Zelfs met deze aanpassingen blijft het materiaal erg broos en moeilijk te printen als het niet correct is gedroogd.
De resultaten
De hypothese was dat de microscopisch kleine luchtbellen in het schuimende PLA een merkbaar verschil in isolatieprestaties zouden bieden ten opzichte van typisch PLA. De data vertelden echter een ander verhaal: er waren geen conclusieve resultaten over hoe schuimend PLA presteert ten opzichte van gewoon PLA. Soms presteerde het schuimend filament beter, maar het tegenovergestelde was ook waarneembaar.
Mijn vermoeden is dat de microscopisch kleine luchtbellen in de praktijk niets bijdroegen aan de isolatie, en dat bij payload-behuizingen de infill en het aantal wanden veel belangrijker zijn dan de samenstelling van het filament. Een volgende stap zou het proberen van multiline infill kunnen zijn: isolatie werkt op basis van luchtzakken die warmteoverdracht vertragen. Wellicht helpen dikkere wanden tussen de interne luchtzakken.
Ondanks het gebrek aan resultaten wat betreft de isolatie-eigenschappen, is het duidelijk dat een op maat geprinte behuizing voordelig is; de geïsoleerde sensoren waren ongeveer 7°C warmer dan de omgevingslucht. Betere afdichting zou dit waarschijnlijk aanzienlijk verbeteren. Uit simulaties bleek bovendien dat straling van de zon de payload enkele graden verwarmde als deze zwart was geschilderd in plaats van wit.
Desalniettemin behoudt het schuimende PLA-filament de kroon wat betreft de verhouding tussen gewicht en sterkte, dus ik vertrouw erop dit voor toekomstige lanceringen te gebruiken.
Beeldoverdracht
De meeste amateur-ballonpayloads hebben camera's. Het uitzicht op 30 km hoogte is ongelooflijk. Vorig jaar verzond ik afbeeldingen van 18x10 pixels, waarin geen enkele details zichtbaar waren. De reden voor deze kleine afbeeldingen was de beperking in de radioverbinding: transmissies zijn traag en (door het protocol) beperkt tot 255 bytes. Om dit op te lossen, ontwierp ik een overdreven complex beeldcompressie-algoritme, wat de verzonden beelden juist onbruikbaar maakte.
Tijdens het studeren voor mijn amateurradio-licentie leerde ik over SSTV (Slow Scan Television), een methode om foto's via een analoge videoverbinding te verzenden. SSTV vereist echter een hoog energiebudget (minstens 5-20 watt) en produceert beelden die niet aan mijn standaard voldoen.
Na verder onderzoek vond ik SSDV (Slow Scan Digital Video), een gepaketteerde digitale versie van SSTV. Zelfs als het grondstation pakketten mist, kan het beeld worden gereconstrueerd. Ik heb de C-implementatie van SSDV van Philip Heron aangepast aan mijn specifieke behoeften: ik verkleinde de pakketgrootte, verwijderde de verzending van het callsign en schakelde de Reed-Solomon-foutcorrectie uit, aangezien de radioverbinding dit al doet.
De camera maakt een foto, slaat een kopie in volledige resolutie op de SD-kaart op en codeert een versie van 320x240 pixels voordat hij ongeveer 15 pakketten per afbeelding verzendt. Het grondstation ontving tijdens de vlucht 328 afbeeldingen.
Naarmate de hoogte toenam, veranderde de lichtverstrooiing, waardoor de lucht uiteindelijk zwart werd. Tijdens de daling zwaaide de payload zwaar heen en weer, wat resulteerde in enkele bijzondere beelden, waaronder een foto van de zon.
Elektronica
Vorig jaar waren de printplaten de meest complexe ontwerpen die ik ooit had gemaakt. Inmiddels heb ik KiCad geleerd, een gratis en open-source EDA-programma, waardoor mijn vaardigheden aanzienlijk zijn gegroeid.
De aangepaste elektronica bestond uit vier hoofdonderdelen:
- Voedingselektronica: spanningsregelaar, load switch.
- Microcontroller: ESP32-S3, camera, SD-kaart.
- GPS & Tracking: module, antenne, redundantie.
- Radioverbinding: SX1262.
- Sensorintegratie: externe SPI ADC, temperatuursensoren.
De printplaten zijn gefabriceerd door OSH Park en zijn open-source gecertificeerd.
Voedingselektronica
Vanwege een strikt gewichtsbudget moest ik concessies doen bij de voeding. Waar ik vorige keer 4x Energizer Ultimate Lithium AA-batterijen gebruikte, stapte ik nu over op 3x AAA-batterijen uit dezelfde serie.
Deze payload maakte gebruik van een buck-boost converter. Dit betekent dat er een stabiele voeding van 3,3V wordt geleverd aan de elektronica, ongeacht of de batterijen boven of onder deze spanning zitten. Dit is een aanzienlijke upgrade ten opzichte van de inefficiënte low-dropout regelaars die ik voorheen gebruikte.
Gemaakte fouten:
- Ik had gepland om een load switch te gebruiken om de payload aan of uit te zetten, maar dit werkte in de praktijk niet zoals bedoeld en leverde stroom terwijl dat niet de bedoeling was. Een mechanische schakelaar als
ENABLE-signaal voor de spanningsregelaar zou een betere oplossing zijn geweest. - Tijdens het werken aan de batterijhouders heb ik per ongeluk de printplaat kortgesloten. Hierdoor kon ik de plaat niet meer gebruiken met een functionerende voeding en moest ik vertrouwen op de ingebouwde buck-regelaar van de microcontroller.
- De batterijspanning werd tijdens de vlucht niet correct gerapporteerd, waarschijnlijk omdat de spanningsdelers die de batterijstatus moeten doorgeven, beschadigd waren.
Microcontroller
Ik heb gekozen voor een ESP32-S3 microcontroller voor dataverzameling en transmissie. Met de XIAO ESP32-S3 Sense van Seeed Studio kon ik de functionaliteit van de Raspberry Pi van vorig jaar onderbrengen in een veel kleinere en energiezuinigere vormfactor.
Omdat de XIAO-boards weinig GPIO-pinnen hebben en de camera en SD-kaart er de meeste claimen, hebde ik een externe SPI ADC (MCP3204) toegevoegd. Hierop zijn de analoge temperatuursensoren (MCP9700A) en de spanningsdeler voor de batterij aangesloten.
De firmware is geschreven in Arduino in plaats van CircuitPython. Hoewel de leercurve steiler was en er meer aandacht nodig was voor zaken als efficiënt geheugenbeheer en compilerfouten, was Arduino uiteindelijk de perfecte keuze voor de firmware en maakte het iteraties eenvoudig. De firmware volgt een eenvoudige loop: afbeeldingen worden vastgelegd en gepaketteerd, telemetriegegevens worden verzameld, en de radio wisselt af tussen SSDV-transmissies en telemetrie.
Gemaakte fouten:
- Ik had de MISO- en MOSI-lijnen voor de SPI-verbinding omgewisseld. Dit heb ik uiteindelijk met enkele snelle, maar onhandige improvisaties kunnen herstellen.
GPS & Tracking
De NEO-6M GNSS-module die op StratoSpore werd gebruikt, was onbetrouwbaar. Deze keer hebde ik gekozen voor de SAM-M10Q module. Deze heeft een geïntegreerde patch-antenne en maakte gebruik van het grondvlak van de printplaat. Hoewel een grondvlak van 50x50mm ideaal is, werkte de door mij gebruikte maat van 30x60mm goed. Dankzij Assisted GNSS werkte de module zelfs in uitdagende omstandigheden; tijdens de vlucht trackte de module maximaal 32 satellieten.
Live coördinaten en hoogte werden via de radioverbinding verzonden naar een aangepast dashboard van Sam en naar SondeHub voor live tracking en voorspellingen.
Als onderdeel van mijn doel voor redundantie, programmeerde ik een QRP Labs U4B ballontracker om op specifieke intervallen WSPR- en JT9-signalen te verzenden op de 10-meterband. Dit zijn weak-signal protocollen die erg traag zijn. Voor het tracken van een picoballon op zonne-energie is dit nuttig, maar voor een high-altitude ballon tijdens de daling is het niet praktisch. Uiteindelijk voldeed de U4B niet aan zijn doel. In de toekomst wil ik een Tiny4FSK proberen of een standalone tracker maken die op 70cm LoRa werkt.
Radioverbinding
Voor de radioverbinding heb ik de Wio-SX1262 van Seeed Studio gebruikt om LoRa (Long Range) transmissies te integreren. LoRa is bedoeld voor energiezuinige transmissies over grote afstanden en werkt op 915 MHz (33 cm band) voor ongelicentieerd gebruik.
Ik heb SF9 (Spreading Factor 9) gebruikt als middenweg tussen snelheid en bereik, wat een ontvangersgevoeligheid van -129 dBm biedt. De airtime is bij LoRa cruciaal: hoe langer het bericht, hoe groter de kans op interferentie. Telemetrieberichten hadden een airtime van 247 ms, terwijl SSDV-pakketten op 677 ms zaten. Ik heb gekozen voor een coderingssnelheid van 4/5 en een bandbreedte van 125 kHz.
De telemetrie op de 33 cm band werkte verrassend goed en pakketten werden gedurende de hele vlucht ontvangen, op enkele momenten in diepe canyons en steden na. Alle telemetrie werd verpakt in één pakket van 35 bytes. Ik heb een efficiëntere structuur gebruikt dan vorig jaar door packed latitude- en longitude-waarden te gebruiken in plaats van Plus Codes.
De SSDV-afbeeldingen werden eveneens via het LoRa-protocol verzonden in pakketten van 128 bytes. Omdat LoRa ingebouwde foutdetectie heeft, was het niet nodig om extra SSDV-foutcorrectie te verzenden.
Gemaakte fouten:
- Ik had de SX1262 per ongeluk geconfigureerd om de interne LDO te gebruiken in plaats van de DC-DC converter. Hierdoor was de module inefficiënter en verbruikte hij meer stroom dan nodig, waardoor de batterijen sneller leegliepen.
De lancering
UpLink werd gelanceerd op 16 augustus 2026 nabij Townsend, Montana. Omdat de wind daar voornamelijk van west naar oost waait, was dit de beste plek om de bergen ten oosten van de stad gemakkelijk te passeren.
Omdat onze visweegschaal voor het meten van de free lift kapot was, moesten we gokken op basis van een onnauwkeurige badkamerschaal. Hierdoor werd de ballon ondergevuld, wat resulteerde in een veel langzamere stijgsnelheid dan verwacht: ongeveer 1,5 tot 3 m/s (ideaal is 5 m/s voor een vlucht van ongeveer 2 uur).
De heliumcilinder en regulator werden gratis ter beschikking gesteld door American Welding & Gas. Daarnaast kregen we hulp van Jared Kamp (van het BOREALIS-programma van Montana State University), die onmisbaar was bij het regelen van NOTAM's, het contact met de sheriff en het maken van vluchtvoorspellingen. Ook mijn vader en David Hansen hielpen bij de opbouw en de lancering.
De vlucht
Door de langzame stijgsnelheid duurde de vlucht bijna 5 uur. Tijdens tests thuis had ik gemeten dat de batterijen van de payload ongeveer 4,5 uur meegingen. Helaas bleek dit in de praktijk ook zo te zijn: we verloren het radiocontact ongeveer 15 minuten voor de geprojecteerde landing.
Zelfs met de U4B konden we de payload niet lokaliseren. We vermoeden dat er iets is gebeurd waardoor hij volledig stopte met zenden, want we zagen geen WSPR- of JT9-signalen meer op de waterfall en konden geen berichten decoderen in WSJT-X.
De ballon legde een afstand van 140 km af en bereikte een maximale hoogte van 28,42 km (93.000 ft). De pakketten en SSDV-beelden waren gedurende het grootste deel van de vlucht duidelijk decodeerbaar.
De zoektocht
De payload landde in centraal Montana, nabij Judith Gap. Zonder een laatste 'ping' van de payload waren we afhankelijk van de voorspellingen van SondeHub, die 15 minuten voor de landing een onnauwkeurigheid van 3 km of meer kunnen hebben.
We hebben ongeveer twee uur lang landbouwgrond te voet en per auto doorzocht, maar we hebben de payload niet kunnen vinden. We stopten met zoeken toen het laat werd en we al zeven uur onderweg waren. Met een laatste ping hadden we hem zeker gevonden.
Ideeën die we hebben laten vallen
We hebben overwogen om handwarmers in de payload te plaatsen om de elektronica warm te houden. Luchtgeactiveerde handwarmers vielen af omdat het ijzerpoeder de antennes zou kunnen ontstemmen en ze niet werken in ijle lucht. Natriumacetaat-handwarmers waren te zwaar (85 gram) en gingen te kort mee (circa 30 minuten). Uiteindelijk hebben we besloten niets te gebruiken; de eigen warmte van de microcontroller was voldoende om de temperatuur tijdens de hele vlucht boven het vriespunt te houden.
Reflecties
Ondanks dat we de payload niet hebben teruggevonden, was de lancering grotendeels succesvol. Toch zijn er verbeterpunten:
- Correcte weegschaal: Met een werkende weegschaal zou de vlucht een normale duur hebben gehad, wat veel andere problemen had voorkomen.
- Scheiding van de payload: De camera verbruikte kostbare batterijcapaciteit van de tracker. Als deze op aparte voedingen zouden draaien, was de payload waarschijnlijk gevonden.
- 70 cm Radioverbinding: Ik wil experimenteren met de 70 cm band voor een beter bereik bij het tracken, terwijl SSDV op 33 cm blijft voor de doorvoer van beelden.
- SSDV-beelden: De 320x240 beelden waren prachtig, maar met een vrijere radioverbinding zouden we kunnen streven naar 640x480 px.
Ondanks de problemen ben ik trots op wat we hebben bereikt, zeker omdat dit onze eerste onafhankelijk georganiseerde vlucht was.
Data en bronnen
Alle hardware, software, firmware en CAD-bestanden zijn open-source beschikbaar op GitHub. Daarnaast is de ontvangen data (positie, GNSS-info, temperatuur, geheugeninfo, systeemvlaggen en RSSI/SNR) beschikbaar als CSV-bestand. Alle afbeeldingen zijn te vinden in de galerij of op Git.
Credits
Dit project was alleen mogelijk dankzij:
- Sam Flynn voor de enorme hulp bij het dashboard, de behuizing en de lancering.
- American Welding & Gas voor de helium.
- Jared Kamp voor de logistieke planning en expertise van Borealis.
- David Hansen voor de hulp bij de lancering en de zoektocht.
- Mijn ouders voor de steun tijdens de vele nachtelijke werkuren.
- Max Kendall voor zijn gedetailleerde lanceergids en inspiratie.
Groetjes,