A Compact, Arduino Altimeter for RC Planes

by qubist in Circuits > Arduino

114009 Views, 420 Favorites, 0 Comments

A Compact, Arduino Altimeter for RC Planes

P1010190.JPG
P1010191.JPG

The Ultimate Altimeter is a super-compact, Arduino controlled altimeter capable of measuring the altitude with an accuracy of 0.3 meters, and saving the highest and lowest values it has measured. It is powered by a 40 mAh Lithium Polymer battery, uses a tiny LCD Bubble Display, and measures altitude with a MPL3115A2 Altitude Sensor. It's very simple and fairly easy to build with just six major components. Additionally, an optional 3D printed case can house the Altimeter.

The Altimeter has a couple of different modes: current altitude, highest altitude, lowest altitude, difference in altitude (highest minus lowest), and standby (turns display off to save power for ~6 hr battery life, not shown in video).

The entire build adds up to around $30, but you may have some or most of the parts lying around already.

You can make this! It is not a very difficult project, and could be good practice for through-hole soldering, and coding (if you want to do modifications). Read on and create!

Materials List

P1010132.JPG

Parts:

Arduino Pro Mini

MPL3115A2 Altitude Sensor

Bubble Display

40 mAh LiPo battery

Button

Switch

JST connector

Tools and other materials:

Soldering iron

Solder

Flush cutters or wire cutters

Wire strippers

Electrical tape

Liquid electrical tape or other insulative paint (you could also use regular electrical tape or heat shrink tubing)

24 guage stranded wire

Hot glue gun

FTDI Basic

Solder the Bubble Display

P1010119.JPG
P1010125.JPG
P1010129.JPG
P1010130.JPG

The Bubble Displays are set up to be put into a breadboard, but since we will be soldering it directly onto the pins on the back of our Arduino, the leads need to be bent flat with a pair of pliers. Once bent, rest the display on a flat surface, and make sure it lays flat and all of its leads touch the surface. This will ensure that they will make good contact with the pins on the Arduino.

Next, put down a piece of electrical tape as shown in order to prevent unwanted connections between the board and the display.

Temporarily tape the display down to the Arduino in order to keep it in place while you solder the leads to the corresponding pins on the Arduino. The leads don't actually go through the holes; they can just rest on top and be connected with solder.

Add the Button

P1010141.JPG
P1010142.JPG
P1010166.JPG

Bend out two of the adjacent leads on the button and snip them off. Then solder the remaining leads to GND and PIN 3 on the Arduino.

You can trim the button shaft to the length of your liking. If you a snipping device, the shaft will break uncleanly. I used a thin saw to cut it, and then filed it smooth.

Add the JST Connector and Switch

P1010134.JPG
P1010135.JPG
P1010146.JPG
P1010147.JPG
539755259d29c9dc86000074.jpg
P1010149.JPG

IMPORTANT: Read this whole step before starting it. It is put together strangely because I had to change and fix the project as I built it. Also, there are some things in the photos that haven't been covered yet because the order in which I built it is different from the order of this Instructable.

Solder the JST connector into the GND and RAW pins on the Arduino. Then, cut the lead that goes to RAW in half. This is where the switch circuit will be added so we can turn the device on and off

Glue the switch into place. Push it right up against the button so there is enough space to program the Arduino with FTDI later. I used superglue to stick it in place. We won't be using any of the pins that it is covering up so you can glue it right onto the board.

Next, twist the JST connector so it is facing the rest of the board instead of the switch. This will allow the battery to plug in (there wasn't enough space before). Only one of the leads of the connector is in the Arduino now, so it should be easy to twist. You may need to do some supergluing to get the metal pins that stick into the plastic part of the JST connector to stay in place.

Solder the button into the cut lead of the JST connector as shown in the picture, and you are done with the power circuit!

Connect the Altitude Sensor

P1010136.JPG
P1010137.JPG
P1010139.JPG
P1010140.JPG
P1010143.JPG

Connect the Altitude Sensor's SDA, SCL, VCC, and GND pins to the Arduino's A4, A5, VCC, and GND pins respectively with stranded wire. This can be tricky. I looped all the wires but the ground wire around underneath the sensor board to make it easier to work with as well as providing extra support to the board to keep it from rocking. I routed the ground wire directly from one GND pin to the other.

Make sure nothing is shorted. If there are any exposed wires that are close to each other, you can slip a piece of electrical tape between them and make sure it sticks.

After testing that your sensor is working and connected properly with some example code, glue it in place with hot glue. The sensor uses air pressure to detect altitude to make sure to leave space for air to reach the sensor. I just glued under each corner.

Prepare and Install the Battery

P1010150.JPG
P1010155.JPG
P1010157.JPG

Next, the battery's wires need to be made much shorter so it will fit in the remaining space we have. Strip, cut and re-solder the wires so that they are very short.

Because of the short length of the wires that you are stripping, the rubber casing of the wire may come off completely. To fix the now-bare wires, I used liquid electrical tape, an insulative paint type material. This will keep the wires from shorting. You could also use heat-shrink tubing or regular electrical tape.

Now, all the electronics are in place. The last thing to do is the code.

Upload the Code

Screen Shot 2014-06-10 at 5.20.26 PM.png
P1010173.JPG
P1010174.JPG
P1010175.JPG
P1010159.JPG

Download the code for the Ultimate Altimeter here, and check the README to download the required Libraries. UPDATE 2021-03-15: I've included some of the libraries that folks were having trouble finding after all these years. Check the GitHub link above.

Once you have that ready, set up your uploading hardware. You will need a 3.3v FTDI Basic Breakout board, a right angle header, and a USB to USB Mini cable.

Hold the pin header into the Arduino's FTDI pins – no need to solder because you (hopefully) will only need to upload the code once – and use the Arduino IDE to upload the "Ultimate_Altimeter" sketch to the Arduino.

Your Ultimate Altimeter should be fully operational, but you might still want a case...

Make a Case

P1010168.JPG
P1010169.JPG
53978d929d29c904b10000e5.jpg
P1010180.JPG
P1010187.JPG
P1010189.JPG

You can 3D print case using the attached STL file, make your own case, or go without one.

You can also modify the attached file using TinkerCAD here, just make sure to share your improvements with me and others!

If you yearn for a 3D printed case either of mine or your own design, but don't have a 3D printer, head over to the 3Dprintmything subreddit on reddit and make a [WANT] post. Someone there will print one for you for a couple of bucks and ship it to you! Don't be scared because it's reddit. We are nice!

The printed case includes a slot above the hole for the switch. This is to aid in the inserting of the Altimeter into the case by making room for the movable plastic part of the switch. Push the switch to the middle in order to insert the Altimeter into the case. Once the Altimeter is in place in the case, hot glue it in there.

Done!

P1010190.JPG
P1010191.JPG

Congratulations! You are done!

Here is a User's Manual I wrote up. It is included in the file downloadable from Github, and should answer most basic questions about the altimeter:

Ultimate Altimeter Users Manual

1. Battery and Charging

A. The battery of the Ultimate Altimeter is a 40 mAh, Lithium Polymer (or LiPo) battery. It should last around 1 hour during normal use, last about 6 hours in Standby mode (see 2. B.), and should charge in around 30 minutes using the provided Mini-USB to JST charger. When not in use for long periods of time, store the battery at around half charge to keep it in good condition.

B. Due to the fragile nature of the battery's short wires (between the white JST connector and the rest of the battery), it is recommended that the JST connector never be fully inserted into the Mini-USB to JST charger. If it is fully inserted, it can be difficult to remove because of the tightness of the JST connectors on the battery and charger. In the event of this happening, use pliers or a similar tool to safely remove the JST connector. DO NOT pull on the battery's wires. The battery is charging if a red light is on on the charger. When the red light turns off, the battery is done charging.

C. If a battery breaks, is lost, or becomes unusable for any other reason, an extra can be purchased at this link: https://www.sparkfun.com/products/11316

2. Operating Instructions

A. The a Ultimate Altimeter has different modes with different functions.

I. "Alt" (Altitude mode) - Shows the current altitude.

II. "HiGH" (High mode) - Shows the highest altitude that the altimeter has been.

III. "Lo" (Low mode) - Shows the lowest the altimeter has been.

IV. "diFF" (Difference mode) - Shows the altitude you have covered ("High" - "Low").

V. "Stby" (Standby mode) - Turns the display off to save power. This mode could be used for a longer activity such as hiking where saving power is more important. It is not needed for RC Airplane flights because of their short duration.

B. Input Mechanisms

I. The button on the back of the Ultimate Altimeter is used to change modes. Press it once to cycle through to the next mode.

II. The switch on the Ultimate Altimeter turns it on and off.

C. Because the altitude sensor uses air pressure to measure altitude, strong winds or gusts may affect the readings on the Ultimate Altimeter. This can be seen by turning on the Ultimate Altimeter and blowing on it. The reading for current altitude should drop. This happens because the strong gust of air creates a negative pressure. This can be avoided in flight by placing the Ultimate Altimeter in a cargo compartment or other wind-protected area to keep it out of strong gusts of wind. This is not a necessity though; in test flights with no wind protection, measurements only wavered a couple of feet, and the "Difference Mode" was not affected.

The Ultimate Altimeter was designed and created by qubist (/u/qubist1 on reddit).

Share your creation with the world! It would make me smile to see others' Ultimate Altimeters.

Have fun!