Handheld telemetry receiver and display

  • photo
  • photo
  • photo
  • photo
  • photo
  • photo
  • photo
Comment by smguest on May 15, 2009 at 11:37am
I decided that taking a laptop outside to monitor an ArduPilot flight wasn't always what I needed (and was difficult to read in sunlight). I wanted the option for something a little simpler and little more compact, but that would let me monitor that status of waypoint capturing while I continue to tweak the gains.

After learning how easy it was to integrate the ArduPilot with the XBee Pro 900 on the airplane side, I decided that I might be able to figure out how to hook the "ground based" XBee Pro 900 to an arduino based board (Arduino Pro Mini) and to a serial LCD display (yep, I visit the Sparkfun web pages all the time). I found a case from Mouser and used a spare 4 cell RC receiver battery pack to power it all.

The code on the airplane side (ArudPilot 1.x) was slightly modified to just send comma separated values so that the Arduino Pro Mini is programmed on the receiver side such that it parses it out depending on what info I want printed on the 2x16 character display. The rx arduino is programmed to look for a pin to go high (by pressing the red button) and then it toggles to the next data display screen. Some, but not all of the screens are shown in the album.

This surprisingly works pretty well and I thought I'd share just in case someone else wondered if it could actually be that easy.

3D Robotics
Comment by Chris Anderson on May 15, 2009 at 2:30pm
Impressive! Could you post some shots of the inside and links to the LCD displace, case, etc?

Also, code would be very helpful ;-)
Comment by smguest on May 15, 2009 at 9:09pm
I reluctantly added a couple of pictures of the interior since it isn't exactly a professional job in the way everything was squeezed to the top of the case - forgive the mess.

I used a 5V serial enabled LCD display and that is one of the tricks that made this so easy. You just connect the Arduino serial tx to the display data pin and write out ascii with Serial.print(). You do have to use some control codes to write to specific positions (such as the first position on the second row since there is no line feed) or clear the screen, or to set the baud rate at something other than the default. All of this is covered in the datasheet.

I used the 5V Arduino Pro Mini since I had one and could re-use a huge chunk of the ArduPilot's code for this endeavor..

I'm using the XBee Pro 900 and haven't had any heat problems as it barely seems to run warm in my application (I'm running at a baud rate of 19,200).

To hook up the XBee, I'm using the
XBee Adapter Kit from Adafruit and it handles the 5v to 3.3v regulation needed for the modem. I connected the tx pin on the adapter to the rx pin in the Arduino.

I already had a momentary switch available so put a pull down resisitor on digital pin 7 and then tied the switch such that if pressed, would pull it to high. The code checks for that and changes what is printed to the display.

The case is from Mouser and is 7.8x4.1x1.4.

I can post the code but any recommendations as to the best way to make it available? I hate filling up a comment area with source code.
Comment by Nick Sargeant on May 16, 2009 at 12:08am
Great work!
At the end of the semester (in 3-4 weeks) i would love to have a play around with this and also try and add antenna tracking functionality.

3D Robotics
Comment by Chris Anderson on May 16, 2009 at 7:47am
You can post a file here--just click the icon on the far right of the comment field and it will let you upload a file.
Comment by smguest on May 16, 2009 at 8:20am
The source for receiver is in

On the airplane side, I essentially just modified the send_to_ground function so that it starts the string with a "$", and then follows it with a comma separated list of the variables of interest. The receiver expects the data to be in this order.


You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service