Home > FPV > Making of XBee-pro 868 based r/c controller

Making of XBee-pro 868 based r/c controller

I thought to gather here few of my experiences while making my own transmitter / receiver. The project started after I finally moved to 2.4 GHz technology by purchasing Hitec Aurora transmitter. One near crash later I learned that 2.4 GHz controller and 2.4 GHz video transmitter don’t play well together. Since here in Finland 2.4 GHz band is just about the only band available for video without amateur radio license, I thought to replace Aurora’s transmitter with something different.

XBee-pro 868 module

After a little bit of googling I bought development kit XBee-PRO 868 RF-modules. They are a near perfect fit with 80 km range and data rate of 24 kbps. The kit was very complete to get started, it contained two modules, one with “rubber duck” antenna and one with wire antenna. Two interface boards were also included, one with serial interface and the other with USB. To save some time I decided to use USB-board on my ground station.

The modules have few quirks though. Receiver on the modules gets saturated easily, so during takeoff and landing, TX power must be lowered. This can be done in command mode, but unfortunately while in command mode, it’s not possible to send data. I don’t find this a problem in level flight since changing the power takes less than half a second. Another thing to note is that duty cycle of transmitter is limited to 10 %. This means that if data is transmitted faster than 2400 bps, after certain amount of time, transmitter is shut down for a while. Fortunately this can be circumvented by resetting the module periodically. Initially I reseted the module by issuing reset command, but I found this problematic since entering the command mode and issuing reset takes again about half a second. While it’s not much it can be very annoying while flying. I found that much faster way is to make micro-controller on both rx and tx side pull module reset line low briefly. This way the reset takes only about 100 ms.

Since the XBee module is quite small, it would be easy to fit it to Aurora’s module slot. Instead I decided to fit all the parts in my ”ground station” to a single box to minimize number of wires and components that can be forgotten to home when heading to airfield.

Groundstation components

The components in the box are show in the diagram above. Stick positions are received from controller via student port and decoded by micro-controller and send to PC to be processed. Two of the available channels are used to toggle tx power and video recording and they are not being sent to save bandwidth. There is also some threshold so that insignificant position changes are not sent. PC encodes stick positions to packets and sends the packets to XBee modem.


Video received from the plane is splitted to video glasses and to video capture device connected to PC. On the PC side, live video is displayed on-screen and optionally recorded. Various data can be overlaid to video. Currently only battery voltages are show, but I’m planning to add gps to the receiver and implement location tracking to get rid of EzOSD I’m currently using.

Receiver before adding the switching regulator

The receiver itself is pretty simple. Atmel AVR micro-controller interfaces with XBee-module and decodes transmitted packets and creates signals to drive servos. Pushbutton on the receiver can be used to save failsafe servo positions. Currently three of five ADC channels are in use. They monitor signal strength, main battery and camera battery. During one of the range tests I noticed that ESC on the plane could not reliably provide enough power for the receiver, so I added switching regulator to draw power from the main battery.

All parts stuffed into Twin Star II for testing

The completed system works well enough to start adding features to PC program. The frame rate is certainly not comparable to commercial radio control systems, but fast enough for stable plane like the Twin Star that I’m using. On the plus side, transmitter has more than enough range and the whole system is quite simple and could be build very cheaply if one would omit PC and video capturing.

Categories: FPV Tags: ,
  1. 28/08/2010 at 20:56

    this is shailendra ,me too working on the UAV.i am too trying to send the video signals throughXBEE pro using serial communication with my mentor,as i m still a eng. student.I need some information,do you use the same Tx to send the video signal or only the GPS telementary or u use a separate ready to use kit to transfer the video signal.

    With regards.
    Shailendra singh

    • 29/08/2010 at 13:50

      I’m using separate transmitter for video. With XBee’s maximum data rate, 24kbps, you can pretty much forget the live video.

  2. 30/08/2010 at 20:30

    actually its 250 kbps for xbee pro

  3. 23/03/2012 at 04:59


    I am working with xbee pro 868 but I havent acchieved 80Km, whats the maximum range you got with those modules, are you working at 300mW?, does this frequency interfiers with the GSM network frequency in your country?

    thanks, sorry for all those questions…

    • 23/03/2012 at 09:10

      I didn’t to much of a range testing over couple of kilometers. More of problem for me was that with full power modules stop communicating when they are too close to each other.
      These modules don’t interfere with the GSM network here in Finland, but have this annoying duty cycle limitation. More common 900MHz modems can’t be used here.

  4. Romain
    06/08/2012 at 09:46


    How did you solve the following problem : if you are using a couple of Xbee modules in full power mode and when they are too close to each other they can stop communicating ?

    Thanks in advance.

    • 06/08/2012 at 12:52

      I mapped one switch on the transmitter to change XBee power level (command is ATPL), so I could drop the TX power when needed. I originally planned to automate this based on the distance to the plane.

  5. reaper teaser
    08/09/2013 at 07:42

    I want to use xbee pro as TX and RX for my quadcopter… help me to know how to use it in real time controlling of quad..
    thank in advance..

  6. Francis
    07/05/2014 at 15:59

    Hi, can you give me more info on the receiver and how you did that? Do you have a basic schematic? What IC did you use? Also, can you give me more info on how you programmed the microcontrollers for TX power levels as well as the reset trick? Very interested into doing what you did! Thank you very much!

    • 09/05/2014 at 10:23


      I used Atmel ATMega88. I don’t have the schematic but it’s quite simple, there was switching regulator to drop power from battery to +5v and +3.3v for xbee. The Xbee is connected to avr serial port and unused pins are used to drive pwm outputs for servos.
      TX power level can be changed by issuing +++ code to enter command mode and then with ATPL command. You can find the supported commands from xbee’s manual. I don’t suggest using the reset trick since every now and then it restores xbee to factory settings.

  1. 25/03/2016 at 19:50

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: