Close
0%
0%

Rocket Payload

Electronic Payload to record and display flight data for model rocket.

Similar projects worth following
222 views
0 followers
A small lightweight PCB that can be inserted into the payload section of a model rocket to record altitude, g-force and rotation during flight. The data is uploaded to an application which displays the resulting flight parameters.

I'm not a rocket enthusiast, but I belong to a radio control club which has members who are. You can purchase commercial versions of this Payload, but I think this one is smaller and lighter weight than most others and will be much less expensive (if you don't count my labor.)

Disclaimer:

I'm using Anthropic's Claude Code to aid in writing both the firmware and application software. Without Claude this project would either: be much longer, if I had the ambition, or would not exist due to my lack of knowledge on the software side of it.

Two Payload Versions:

A "STANDARD" version with less data storage (512kb EEPROM). Records the flight parameters:

  • Max thrust
  • Burn duration
  • Maximum Altitude
  • Time to apogee
  • Recovery time.
  • Total flight time.

Real time sensor readings (barometer, accelerometer, gyro, temperature) at user selected intervals (20ms, 40ms, 80ms, 160ms) from launch detection to 5 seconds after apogee (or up to max interval set by user), then records data during recovery at 1 second intervals until landing.

A "PRO" version that has 4Mb of EEPROM. Has storage for up to 8 flights. Records the flight parameters above and the real time sensor readings from launch detection to 5 seconds after apogee (or up to max interval set by user), then records data during recovery at 1 second intervals until landing.

What it Does:

  • Uses a 1S 501010 LiPo battery -- 40mAh, 5mm x 10mm x 10mm, weight: 1g.
  • Sensors: BMP384/BMP390/BMP388 for altitude (pressure), LSM6DSO32 IMU for g-force (accelerometer) and rotation (gyro)
  • Payload can be inserted completely into payload section of rocket and "armed" by placing strong magnet along side of rocket.
  • Payload confirms arming and beeps every 5 seconds while armed. Ready for launch 5 seconds after arming.
  • Rocket launch axis automatically determined when armed. Launch is detected by exceeding user specified g-force along the launch axis. Sensors sample at user selected sample rate (50Hz max.) intervals.
  • After launch is detected the Payload saves the flight parameters and the flight history to EEPROM.
  • After apogee + 5 seconds (or maximum fast sample duration), sensors switch to sampling at 1 second intervals.
  • Landing detected after 5 seconds of unchanging altitude. 
  • Upon landing, Payload goes to sleep while emitting a beep every 5 seconds.
  • User recovers rocket and Payload. Then disarms payload with magnet. Payload stops beeping and enters true sleep mode -- 17μA.
  • The battery can be removed at this point. The data is stored in non-volatile memory.
  • Data is extracted when user connects Payload to USB interface and uploads data to application that displays the flight parameters/history.

Specifications:

  • Supply Voltage Range: 4.2V - 3.3V (pretty much the useful voltage of a 1S (3.7V) LiPo battery.)
  • Dimensions: 15mm x 40mm x 8-9mm, including battery and enclosure.
  • Weight: around 5g, including battery and 3D printed enclosure.
  • Runtime from 501010 battery: TBD, but should be greater than 1 hour in launch mode. Estimated max supply current < 10mA.
  • Sleep/standby Duration: 50 days from fresh battery. 17μA.
  • Acceleration Measurement: ±32g max, resolution 1mg.
  • Gyro Measurement: up to 2000 dps full scale, TBD resolution.
  • Pressure Measurement: 
    • Max altitude -- 27,000m/88.5k feet (300 Pa)
    • Relative Accuracy -- ±0.75m (0.09 hPa)
    • Resolution: ~ 1mm (0.016 Pa)
  • Fast Data Record Length: 72 seconds maximum at 50Hz.
  • Recovery Record Length: depends upon user selection of fast sample duration.
  • On-board 1S battery charger: 20mA, ~ 2 hour charge time from fully depleted to fully charged. Charges when connected to USB.
  • USB data transfer: 76800 baud UART, duplex.
  • Cost for components and PCB: Around $30 for the STANDARD version, $33 for the PRO version.

Latest Schematic (v2) [as of 2026-05-23]:

(Using Kicad 10.0 now and loving the dark mode.)

It is surprisingly simple, given the complexity of operation. Claude and I chose a PIC16LF18345 for the micro-controller. I have a PICKit4 programmer that keeps...

Read more »

  • 1 × LSM6DSO32 IMU -- Inertial Module includes accelerometer and gyrometer
  • 1 × BMP384 or BMP390 or LPS22HB Pressure Sensor for Altitude
  • 1 × PIC16LF18345 or PIC16F18346 8-bit PIC micro-controller
  • 1 × WH2508 Hall-effect switch
  • 1 × MCP2221a USB-UART controller

  • Version 1 Prototypes

    Bud Bennett3 hours ago 0 comments

    v1.1 Prototypes:

    I built three v1.1 prototypes. These are roughly 12.5mm x 30mm (2 layer PCB) and weigh 2.0g. Pretty small and light for what they do. That BMP384 pressure sensor (the metal can with the hole in the top) is only 2mm x 2mm, with 10 pads underneath. It is nearly impossible to solder -- I must create solder bumps on both the BMP384 and the PCB, then slather gooey solder flux over the PCB pads to keep the part in place while I heat it with the hot air gun. That part, and the LSM6DSO32, are the first parts soldered onto the PCB. I then test the connection by verifying the input protection diodes exist between GND and the pads before moving on to soldering the rest of the components. This method is tried and true for me, but is time consuming.

    At first, I thought that it would be simpler/easier to purchase a CP2102 USB-to-UART adapter board to interface from the computer/phone. Adding the CP2102N component was expensive, and big, so I outboarded it. A CP2102 breakout board is relatively cheap and available (<$7 at Amazon.) I regretted this decision the moment I saw a potential user attempt to get the Win11 drivers installed on his laptop. The CP2102 adapter was listed as "Other" in the device list and we couldn't get it properly located as a PORT. 

    The other issue is that it required a custom harness that wasn't exactly pretty:

    I was testing performance either by tossing it by hand a few feet into the air, catching it, and placing it on a desk until it completed the flight. I also attached it to one of my quad copters to get more altitude. The v1 prototype did get a chance to record one rocket flight. It was a pretty large model with a separate payload section having vent holes drilled into it. I expected strange artifacts to appear from unknown sources, but the result was a pleasant surprise:

    I don't know why that step in altitude appears at apogee. My suspicion is that the barometer is susceptible to the mechanical shock from chute deployment -- the payload was not very well secured in the payload section and could have dislodged to rattle around. The sample intervals change from 20ms to 1s at 10.8s but there is no visible artifact from that and the descent is tracking nicely without noise. It is hard to make a case for changing any electrical parameters.

    v1 Upgrades:

    After the first prototype PCBs were populated, there were a few features added to improve performance and/or the user experience:

    Firmware Changes:

    1. A first-order temperature compensation was applied to the raw pressure data when calculating apogee and landing. The temperature can change dramatically during a flight, especially if the Payload is not enclosed within a separate payload section of the rocket and is exposed to ambient conditions after chute deployment.
    2. Every 5 seconds the launch altitude value is updated to prevent drift if the rocket isn't launched immediately after arming.
    3. After arming, the PIC collects 500ms of data (10 samples) in a ring buffer. This data is prepended to the flight data to show a complete picture of the launch prior to the detection threshold. The gyro data is just loaded with zeros.
    4. Added user selectable parameters: Fast sample data rates (50Hz, 25Hz, 12.5Hz, 6.25Hz), Fast sample rate duration, Accelerometer filter bandwidth, Launch confirmation debouncing.

    Application Changes:

    1. The application calculates flight parameters (doesn't rely on the PIC's calculations) to yield more accurate numbers.
    2. Incorporates the FW changes above into the settings and charting.
    3. Created native apps for Android, Ubuntu Linux, Raspberry Pi OS. (Can't do MacOS until I find a willing Mac user.) The Android app doesn't include any graphics -- it's a pretty tiny display anyway -- its primary purpose is to download flight data while in the field and reset the Payload to record another flight (it does, however display calculated flight stats.)

    Each significant upgrade was released to Github. At the time of this writing...

    Read more »

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates