Ardustation two-way telemetry for Ardupilot Mega



I've got two way telemetry working on my Ardustation, talking to the ArduPilot Mega (APM) using the standard BinComm protocol (GCS_PROTOCOL_STANDARD). So far I can edit PID values and check essential mission following data, along with the standard summary of attitude, location and heartbeat data.


This should make life a lot easier, being able to tweak the plane whilst airborne and seeing what it's up to - without being required to sit down with the laptop.


To achieve this, I've modified the code in the ArdustationM branch that Michael Smith created. Michael has written an excellent bit of code here and already had the one way telemetry showing the main status page. I've also updated it to use the APM_BinComm library, keeping it in line with the latest APM code. 


The APM code was also modified; I merged the 1.0 Beta with the relevant bits from the BinComm branch and coded up broadcasting of values and setting of PID values.


I hope to add more functionality in the future, but will wait until I have used it in the field before deciding on what features will take priority!


--- Update ---

Here's the code


Most of my additions won't work on the stock APM beta code as it doesn't receive data. Here are my additions to the APM BinComm code

GCS.h GCS_Standard.pde

Or download the whole of my directory, less your config file


--- Update 2 ---

I've now used the Ardustation in the field and it's everything I could have wanted. Had my plane flying a mission on repeat, the transmitter on my neck strap and the Ardustation to tune the PID values. No more landing to plug into the laptop. It's also great not guessing what waypoint its headed for and remembering what it's going to do next, just glance at the display!


Here's a picture of my enclosure. Not my neatest drilling, but works nicely :-)



E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Rana, I gave my mavlink version a go with 2.28 and it seemed to work okay. I've not had time to look into mavlink 1.0 so don't know if or when things will stop working, but it seems okay for now

  • Rana, the code in this blog only works with APM 1.0 on the old protocol. My latest code using mavlink here may work with 2.28, but I haven't tried yet. I know that 2.24 does work fine.

  • Colin, is your ardustation working with APM 2.28 ?

  • @all: I have now re-written this software for use with MAVLink. The post can be found here:


  • Nice. Glad you got it to work. I used 1.0, not 1.02 - So no, wasn't the final 1.x release. From what I remember reading in the release notes of 1.02, there wasn't much changed. Maybe you can see if the bug fixes are relevant to you.


    Going forward, I assume 2.0 will only support mavlink. I really like having my GCS, so I will have to either add bincomm to that, or mavlink to the GCS. At this point, I am in favour of the latter. When / if I manage this, I will definitely put another blog post in.

  • Distributor
    Works great on my bench here. One question: Did you use the last 1.x release for your release of APM?
  • Nice one Greg! You'll just have to add some more fun things to use your newly freed space :-) Turns out I had over 400 bytes free on my version, so should be enough room for a few more features yet.


    You say you want to combine your transmitter and telemetry under one box. Do you mean you want the xbee telemetry link to carry the radio (servo) commands, or have something similar to Earl, where there are still two dedicated communication links, one for the radio and the other telemetry? Flying an RC plane with an xbee sounds bold :P

  • Colin, I read the Arduino ref on progmem and copied the example they gave. I changed the variable names bla..bla.... Worked the first time! Then I did anther strng array and just lick that, 134 bytes. Could easily get a few hundred more.

    For my next project I would like to do the trans and telemetry computer all in one. Use what ever Tx module and Xbee. Maybe a 1280 and 64 X 128 display. Use some old futaba joysticks, only one box instead of the 2 I have now.

    I will post some pics soon(of my existing setup).

  • Looks nice Earl. What frequency are your xbee's? I've switched back to 35mhz on my transmitter so I can use 2.4ghz xbees (can't use 900mhz in England) without worrying about interference. Don't think I'll hack my JR PCM9xII apart :P


    I've updated the post with my APM code, so you can try it out. I'll be adding more features soon!

  • looking forward to the fw. Right now I display the Legacy data on my er9x TX lcd ! I use Xbee's on both ends

    The TX on the left has the xbee and antenna on the TX and built into the TX case.

    The one on the right is mt development unit and you can see the lat/lon being displayed. It has 8 different screens of data from the ardupilotmega.



This reply was deleted.