Designing and Releasing a High-Altitude Weather Balloon

by chloezhang in Workshop > Science

71 Views, 0 Favorites, 0 Comments

Designing and Releasing a High-Altitude Weather Balloon

F7EPT3GMKCUN7VW.png
FS2OIACMKCUN7XP.png
FA4ISEBMKCUN7YN.png
FN70ASRMKCUN7WS.png

This Instructable will go over the supplies, budget, simulations, calculations, relevant regulations, hardware, software, rigging, launch, and an analysis of a weather balloon project. There's quite a lot to talk about!

When you were younger, you may have let go of a party balloon and watched it drift higher and higher away beyond your reach. Designing and releasing a weather balloon captures that same sense of childhood wonder, but now you can track your balloon and see the world from its perspective as it sails to heights you’ll never go to.

Designing and releasing a weather balloon depends on your budget, time, and handiness. Since I was tight on time (I had three weeks to complete this project during winter break before returning to college) and money (I’m running on depleted summer savings), I chose to make a lot of my components, such as the on-board flight tracker/camera system and parachute, from scratch. Many projects online use GoPros and Spot GPS trackers, but mine uses a Raspberry Pi 2, a camera module, and a 4G Hat to take photos and transmit the position of the balloon. This combination makes for a less expensive, lighter payload that requires less helium; however, there are some drawbacks to this method that I’ll explain in my analysis below that you should seriously consider while designing your weather balloon.

Table of Contents:

  1. Introduction
  2. Supplies/Budget
  3. Pre-Flight Simulations/Calculations
  4. Regulations
  5. Hardware
  6. Software
  7. Payload
  8. Rigging
  9. Parachute (Optional)
  10. Launch Day!
  11. Analysis
  12. Extra Resources

Supplies

Screenshot 2026-01-13 at 5.20.49 PM.png
Screenshot 2026-01-13 at 5.20.57 PM.png

Electronics:

Raspberry Pi 2 $55.98

Arducam Module 3 IMX708 $25.00

SIM7600G-H 4G HAT Module $86.39

T-Mobile Cellular Plan $10.00

Electrical Tape --

USB-C to Micro USB cord --

SIM Card (32GB+) --

Subtotal: $177.37

Balloon:

200g Weather Balloon $25.99

275lb Paracord (for parachute) $10.99

1 Yard 70D Nylon Fabric (for parachute) $8.95

Assorted Zip Ties $4.49

Balloon Time 14.9 cubic ft Helium x4*** $209.88

50 lb Test Strength String --

Packing Tape --

Polystyrene Payload Box --

Plastic Tubing (diameter depends on your helium regulator) --

Subtotal: $260.30

Estimated Total: $437.67 (excluding local taxes and shipping)


This is a rough list of the materials I used for this project.

I made the assumption that you may already have some of these materials at home, so items marked with a "--" are not accounted for in the budget. Keep in mind that you may have more of these things already, and there are many options to substitute components or even purchase pre-made parts, such as the parachute, so your exact costs will vary.

*** Regarding helium: There is currently a shortage of helium in the U.S., so purchasing pure helium can get very pricey. I had to settle for a more accessible mix of 80% helium and 20% air, but even so it accounts for almost half the cost of this project.

Pre-Flight Simulations/Calculations

Screenshot 2026-01-13 at 5.32.51 PM.png
Screenshot 2026-01-13 at 5.33.05 PM.png

Sondehub Balloon Burst Calculator: https://sondehub.org/calc/

  1. Determine Time to Burst, Burst Altitude (important for NOTAM filing) while maintaining a 5m/s rate of ascent to keep payload as stable as possible.
  2. Neck Lift (important on field - once the balloon is filled to a point of equilibrium, it’s ready)
  3. If you underfill, the balloon will rise slowly and go much further downwind than you expected
  4. If you overfill, the balloon will rise too quickly and may pop prematurely
  5. (Choose your poison)
  6. Volume (important estimate for the amount of helium to purchase)


Flight Simulator: https://predict.sondehub.org/

  1. Run multiple simulations over different days and different times to determine an optimal landing spot. You want to choose a landing location that’s accessible, away from airfields/airports, and with a decent chance of having a cellular connection so that you can recover your weather balloon. Make note of the launch coordinates, landing coordinates, and direction of travel because this information will come in handy when you file the NOTAM.


Descent Calculator: https://descentratecalculator.onlinetesting.net/

  1. I sewed my parachute for a larger payload originally, so my parachute was 36” in diameter. If you choose to sew your own, aim for a landing speed of 5m/s to both protect the payload and prevent it from drifting downwind forever. My descent rate was a little too slow. Use the following calculator to determine an appropriate size based on the weight of your payload.

Laws/Regulations

Title 14, Chapter I, Subchapter F, Part 101, Subpart D in the Code of Federal Regulations:

My weather balloon carried a payload with a mass of 550 grams, so it was exempt from the code governing large weather balloons as of 2026. However, it is good practice to follow the code, file a NOTAM for your weather balloon, and call the nearest FAA ATC facility to your launch site.

It is in your best interest to carefully read through the relevant code (101.31, 101.33, 101.35, 101.37, 101.39) yourself and form your own interpretation. I am not responsible for the consequences of your actions.

See the full code here: https://www.ecfr.gov/current/title-14/chapter-I/subchapter-F/part-101/subpart-D


Now how do you go about filing the NOTAM?

  1. Prepare the following information:
  2. Balloon Identification: Your name/organization, balloon’s name
  3. Launch Location: Precise coordinates (Latitude/Longitude) and the name of the nearest town. The operator can determine the distance to the nearest VOC or airport.
  4. Launch Date & Time: Your planned "wheels-off" time in UTC. You must stay within ±30 minutes of this time or update the FAA.
  5. Expected Duration: How long the balloon will be in the air (mine was 95 minutes)
  6. Determined from CUSF flight predictor
  7. Cruising Altitude: Target burst altitude (mine was 52,000 feet)
  8. Determined from SondeHub burst calculator
  9. Forecast Trajectory: Estimated direction of flight and location of impact (landing zone).
  10. Physical Specifications:
  11. Balloon diameter and color
  12. Length of suspension device
  13. Total weight of payload
  14. Length of any trailing antenna
  15. Call +1-877-487-6867 six to twenty-four hours before launch, saying that you would like to file a NOTAM (Notice to Airmen) for an unmanned free balloon launch.
  16. The operator may ask all or some of the questions above in any order. You will exchange initials, and then you should ask for a confirmation number, which will be given using the phonetic alphabet.
  17. The first three letters are the location of the nearest VOR, month, “slant”, and then the number of the NOTAM.
  18. Mine was SGB 01/008. I was caught off-guard when the operator said “slant”, but now you know! It’s just the forward symbol (/).
  19. Double check your NOTAM after the call using location search: notams.aim.faa.gov/notamSearch/

Hardware - Electronics

HardwareDiagram.jpeg
  1. Insert activated nano SIM into SIM7600G-H 4G Hat
  2. Connect GPS module to GNSS port of 4G Hat
  3. Connect antenna to Main port of 4G Hat
  4. Power the 4G Hat using the Raspberry Pi 2 with a micro USB to USB-A cable
  5. Connect the Arducam to the Pi 2 at the designated “Camera” port using the white ribbon cable, making sure that the contacts align.
  6. Power the Raspberry Pi through the micro USB port using an external battery for the flight (I used a phone charger).

Software

IMG_6511.jpg
IMG_6512.jpg
Screenshot 2026-01-13 at 6.38.31 PM.png

What does this script do?

Every 5 seconds, the Pi takes a photo and stores it in a directory called “captures”. Every 2 minutes, the Pi uploads the most recently taken photo to an online web host (ImgBB), sends a link to the image in a text message with the altitude and GPS coordinates of the Pi on Google maps. Using cron, you could can also run the script on boot so that you have less to worry about on launch day.


Before you run this Python script:

  1. Create an ImgBB account and get your unique 32-character API key. This will allow the Pi to use cellular data to upload photos onto the image host. Remove the function from main_loop() otherwise.
  2. Create a new directory in the Pi’s home directory called “captures”. This is where the photos taken by the system will be stored
  3. Check that your Raspberry Pi recognizes the camera module.
  4. Run the following in terminal:
  5. rpicam-hello --list-cameras
  6. This command should return a list of detected cameras, otherwise, check Troubleshooting
  7. Disable Modem Manager to prevent it from interfering with the 4G Hat
  8. Run the following in terminal:
  9. sudo systemctl stop ModemManager
  10. sudo systemctl disable ModemManager
  11. Install the minicom package and import the requests and serial python libraries
  12. sudo apt update
  13. sudo apt install python3-pip python3-serial minicom -y
  14. pip install requests --break-system-packages
  15. Configure the Raspberry Pi so that it is able to communicate with the attached hardware
  16. Open the configuration tool: sudo raspi-config
  17. Go to Interface Options.
  18. Serial Port:
  19. Would you like a login shell to be accessible over serial? No.
  20. Would you like the serial port hardware to be enabled? Yes.
  21. I2C: Enable
  22. Reboot
  23. Manually test the 4G Hat using the following AT Commands, see Troubleshooting.
  24. Open up minicom
  25. sudo minicom -D /dev/ttyUSB2 -b 115200
  26. Send a text message
  27. AT+CMGF=1 (sets module to text mode)
  28. AT+CMGS="+11234567890" (input target phone number in international format)
  29. Following the “>” sign, type a message (it might take a few moments). Send the message using Ctrl+z.
  30. Determine GPS location
  31. AT+CGPS=1 (turns on GPS module)
  32. AT+CGPSINFO (requests GPS coordinates)


Troubleshooting:

  1. General
  2. The script is written so that error messages are printed out in the terminal. You can generally use these to determine the source of issue. See below.
  3. GPS
  4. Text messages contain: “GPS is still searching for satellite fix”:
  5. During the first few minutes, the GPS may need to “warm up” before locking in the exact longitude and latitude coordinates. Place the module near a window or outdoors with a clear view of the sky for 15 minutes while the script runs before proceeding.
  6. If the error persists, you could try the following AT commands:
  7. Open up minicom
  8. Make sure the auxiliary antenna is getting power:
  9. AT+CVAUXV=3000
  10. AT+CVAUXS=1
  11. Text messaging
  12. No text messages received:
  13. Turn on verbose error messages:
  14. AT+CMEE=2
  15. Manually set SMS Center of your cellular provider
  16. Check current SMSC: AT+CSCA?
  17. If empty or incorrect, replace using AT+CSCA="insert the correct SMSC of cellular provider"
  18. Set the modem to text mode one more time
  19. AT+CMGF=1
  20. Ensure modem is using standard GSM alphabet
  21. AT+CSCS="GSM"
  22. Check signal
  23. AT+CSQ
  24. First number returned should be greater than 10
  25. Check if SIM card is ready
  26. AT+CPIN?
  27. Should be “READY”
  28. Reattempt sending the text message
  29. Camera module
  30. Troubleshoot by following the Arducam Wiki for the 12MP IMX708
  31. https://docs.arducam.com/Raspberry-Pi-Camera/Native-camera/12MP-IMX708/#imx708-4-lane-configuration
  32. In general though:
  33. Open the configuration file:
  34. sudo nano /boot/firmware/config.txt
  35. Change the line camera_auto_detect=1 to camera_auto_detect=0
  36. Under the heading [all] add the line dtoverlay=imx708
  37. Save and Reboot
  38. Run rpicam-hello --list-cameras again in terminal to confirm that the Pi detects the camera now.


Payload

IMG_6457.jpg
Payload(1).png
IMG_6472.jpg

I used a small polystyrene box to fit all the components and taped bubble wrap inside to fill up the larger gaps. The hard part is just getting everything to fit. Refer to the photos above.

  1. First photo: original box
  2. Second photo: dry fit of components in box
  3. Third photo: adding padding

Rigging

Payload.png
IMG_6479.jpg
DiagramFillBalloon.jpeg
DiagramRigging.jpeg

Refer to the pictures and diagrams above to supplement the written explanation of the rigging.

  1. Depending on the size of your balloon’s stem, cut a piece of ½” PVC pipe about 3 inches long.
  2. Wrap layers of electrical or masking tape around the center of the pipe to create a raised indent.
  3. Insert the pipe into the stem of the balloon.
  4. Secure two zip ties with two loops of string above the ridge of the masking tape over the latex to create a tight seal with the balloon
  5. Using 12-15 feet of kite string or any other type of light, 50lb cord, connect the rigging from the balloon to a key chain ring. A D-carabine from the top of the parachute can be secured to the key ring once you’re ready to launch (for now keep the pieces separate to make transportation easier).
  6. Connect the bottom of the parachute to another 12-15 feet of string down to the payload’s keychain ring.


John Powell also has a video going into the process of rigging a weather balloon: https://youtu.be/B7XEUJSekbI?si=Yo2CN4vXAiLSxsHp.

Parachute (Optional)

IMG_6448.jpg
IMG_6451.jpg
IMG_6452.jpg
IMG_6454.jpg
IMG_6456.jpg

If you choose to sew your own parachute, consider following this tutorial from Rotary Rocketry: https://youtu.be/J_75YXj-HKw?si=CMnuhibyApAGrVN3. The exact dimensions and steps are provided in the video, but the idea is to create an equilateral octagon from the nylon fabric and connect opposite ends using 4 loops of paracord.

I also took apart two name-tags to add a swivel to the top of the parachute for the weather balloon rigging to attach to using a running stitch. See images.

Launch Day!

DiagramFillBalloon.jpeg
IMG_3475.jpg
IMG_6516.PNG
IMG_6515.PNG
Screenshot 2026-01-11 at 9.32.19 PM.png
Screenshot 2026-01-11 at 9.32.30 PM.png
Screenshot 2026-01-11 at 9.32.37 PM.png

If you followed the method of rigging I showed above, filling the balloon can be pretty simple!

  1. Plug in the battery to the Raspberry Pi and confirm that GPS and the messages are being sent before sealing the payload.
  2. Put on a pair of gloves. The latex balloon can be very delicate.
  3. Attach the counterweight to the loop (check out the diagram). When the balloon is able to just barely lift the counterweight, it is ready to be tied off.
  4. Insert the plastic tubing into the stem of the balloon and zip tie the stem shut to create a temporary seal.
  5. If you’re using party helium, connect the other end of the tube to the nozzle and secure it with a bit of electrical tape.
  6. When the balloon can just barely lift the counterweight (is in equilibrium), remove the plastic tubing and tighten the zip tie.
  7. Attach the parachute and the payload to the balloon.
  8. Let the balloon out gradually, hand-over-hand until you’re just holding the payload.
  9. Release and say goodbye!

Analysis/Improvements

Since my weather balloon used cellular data to transmit information back to me, it was inevitable that after the first hundred or so feet above the ground, the text messages ceased. Ground towers simply aren’t designed to transmit signals high above the surface.

However, when the balloon begun its descent, I expected to begin receive text messages again from the Pi. I suspect that there are two possible reasons why I did not:

  1. The lithium battery I used to power the Pi may have frozen over. The temperature in the stratosphere can be lower than -50℃, but the battery was only rated to work at reduced capacity at around -4℃.
  2. The landing spot of the balloon may have deviated from that of the simulations. I was aiming for a narrow strip of land in the Bay Area. It is very possible that the balloon descended earlier than expected and ended up in the bay or an area without data.

I was originally not planning to publish this document because I wasn’t able to retrieve the payload. However, I hope writing out my mistakes can help me remember what I did and help you make a better balloon. Consider the following while designing yours:

  1. Cellular data is not very reliable. You must time your landing in a safe, accessible area that reliably has cellular data. You also lose contact with the balloon above the the first hundred feet or so. I’m planning on getting my amateur HAM radio license over the next semester, so next summer I hope to try this again using HAM radio.
  2. Research more into batteries and battery performance at low temperatures. You might need to invest in higher quality batteries that are rated to discharge well in the cold or look into adding handwarmers in the payload.

That’s a wrap! Happy ballooning!

Extra Resources