Model Rocket Data Logger

A small accelerometer, thermometer, altimeter, SD card logger, with a radio downlink. Does not include Kerbal life support.

Similar projects worth following
So this is yet another data logger for model rockets. The hardware consists of an Arduino, which uses a MPU6050 as an accelerometer/gyroscope, plus a BMP180 for altitude measurements.
The data is logged to an SD card. A radio module is used as a beacon on the UHF band, to allow quick recovery of the payload. I plan to use it as a telemetry module later on.


An ATMega328 microcontroller, with Arduino software, handles the communication between the different devices:

  • MPU6050 Accelerometer
  • BMP180 Altimeter
  • SD Card Reader
  • Radio Transmitter

Not represented in the above diagram are the two LEDs: one for power check, and the other for status.

I chose every module with the size in mind, as everything has to fit in a 32mm diameter rocket tube. A 3D printed structure holds everything in place.

Everything is powered through a 450mAh, 7.4V LiPo battery. It may seem a tad oversized, but I want the transmitter to emit bursts as long as possible!


The microcontroller is an ATMega328, running Arduino, for the sake of simplicity. The program has three main "states"

  • Monitoring: it runs continuously, checking for a rise in acceleration indicating takeoff. The radio module continuously emits a tone to allow some fine tuning of the receiver.
  • Take-off/Coasting Phase: the data is logged from the accelerometer along with the altimeter into the SD card as fast as the ATMega can do. A timestamp is added.
  • Parachute Deployment: logging continues, the transmitter turns on and emits a continuous pulse.
  • Landing/Beacon: after a fixed delay (about 1min), the transmitter transmits short bursts and will continue to do so as long as it stays on.

  • 1 × BT-55-class model rocket I'll be using a home-made rocket, and may kick the things up a notch with an F engine...
  • 1 × 3D-printed holder STL files will be included later on
  • 1 × Arduino Pro Mini Or any ATMega328 board small enough to fit in the body tube
  • 1 × MPU6050 For our acceleration measuring needs
  • 1 × BPM180 I used this one because it was lying around

View all 9 components

  • First launch

    M.daSilva11/03/2015 at 12:29 0 comments

    Well, this is awkward.

    The launch occurred nearly two months ago! I completely forgot to write about it! So many things in mind...

    So, the rocket was launched on august 28, with a perfect weather. The engine ignited as it should, and the rocket flew straight as an arrow. After apogee the D12-5 engine fired the ejection charge. However, I didn't put enough wadding, and the parachute melted a bit, resulting in a mess of plastic of wires instead of the nice deployment I expected. Nevertheless, it slowed the rocket enough, and the rocket landed without any damage. The upper half landed nose first and got stuck in the ground.

    Rocket at landing. Nothing got broken, but still...

    The logger worked as planned: it didn't trigger until launch, and the beacon activated 30s after takeoff.

    Data recovered from the MicroSD card got processed in an Excel file. Vertical acceleration and altitude were plotted in a time-based graph.

    We can clearly see the initial acceleration provided by the engine, and the engine burnout, at which point the altitude rise slowed down. The two peaks we can see afterwards come from the parachute deployment and final landing. I was able to calculate a speed of 244 km/h at takeoff, and a descend speed of 42 km/h, which can be explained by the failed parachute deployment.

    For those interested, the spreadsheet containing calculations and the graph is available here.

  • Rocket Design

    M.daSilva08/30/2015 at 19:36 1 comment

    The test rocket was built at Euro Space Center, Belgium, during a rocket building camp I had the pleasure to help with. The process was pretty much straightforward.

    I used a standard Estes BT-55 body tube, with the ability to split in half, thus allowing me to install the module in the upper part. The parachute would stay in the lower part.

    For this test, I used a D12-5, and a trashbag parachute. The nose cone is an Estes NC-55. I figured out the stability with OpenRocket, and the fins were designed to allow a stability of around cal 3.0.

    The motor mount is made of rolled paper, the spacers are 3D printed.

    The actual data logger sits at the top of the rocket: I just need to remove the nose cone to swtich on the module, and I can easily reprogram the module if I need to.

    While testing the module inside the rocket, I noticed the accelerometer didn't register the launch impulse on every try! That was quite annoying, and even after installing a few decoupling caps, the problem was still there. After looking for different causes, I figured out that the radio transmitter was at cause: the emission was creating RF interference, causing the accelerometer to spit out stupid values. To fix that, I just modified the script a bit: the radio sends a tone, stops, THEN the accelerometer switches on. I tried it 30 times after that mod, and the accelerometer triggered the recorfding 30 times. Good enough for me!

  • Small snags

    M.daSilva08/13/2015 at 22:12 6 comments

    I ran into a small problem: the Arduino module is too big, and I can't fit the SD card reader inside!

    So back to the drawing board!

    I chose a smaller Arduino Mini board stacked on top of the SD reader. I had to chop some plastic off the support I printed to allow the slot to be exposed. The programming header is also broken out, to allow future debugging/reprogramming, without having to take the whole thing out of the rocket.

  • Printed the structure, microcontroller in!

    M.daSilva08/13/2015 at 20:22 0 comments

    The actual holder is pretty simple: a V-shaped structure hold the battery in-between the electronics.

    One slot is used for the USB ports (for programming purposes), one switch and two LEDs (power and status) are also planned.

    Another disc is snapped in at the bottom.

    Didn't take any pics of the printing in progress, but here it is after I started to fit the microcontroller.

    The altimeter is also in, along with the radio module!

    So far so good, the whole thing fits perfectly in the body tube, along with the batteries!

    I still have to put in the SD reader and the step-down regulator.

  • Challenges

    M.daSilva08/13/2015 at 20:00 0 comments

    All right, so the first things I had to think about were the following:

    • What do I want to measure?
    • How big do I want it to make (for what class of rocket?)
    • For what price?

    For the sensors, I settled for three measurements:

    • Acceleration
    • Temperature
    • Height (calculated from the atmospheric pressure)

    The acceleration will be measured by a MPU6050, pressure and temperature by a BMP180.

    I'll throw in an Arduino for the processing, a SD card reader for logging purposes, and a small radio module as a beacon (and maybe later telemetry...)

    I want the whole thing to fit in a small-sized model rocket (C or D class engine). I settled for a BT-55 size, which uses a 32mm inner diameter tube. I'd like the assembly to be able to slide in and out of the tube easily.

    My initial budget will be around 20€, we'll see later on the total cost... I'll mainly use chinese breakout boards, to reduce the costs as much as possible...

View all 5 project logs

Enjoy this project?



stephan.jaspar wrote 10/18/2016 at 14:25 point

Hey, i was wondering if you still have the codes for the arduino, because I want to do the same project. Only i am not good with arduino programming so i was wondering if you are willing to share your code. Thank you in advance!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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