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.
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.
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.
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.
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.