Go to content Go to menu

So you have just bought your new very fancy quadcopter? Fine! But I’m pretty sure (unless you are
very talented) after some flights somehow the idea will arise to have the oportunity to train your
flying skills without some (maybee more) hard landings or (worse) crashes.

Here I describe a way to connect nearly every R/C transmitter to your PC using an Arduino UNO
board. Why? Because I bought a quadcopter and hat some hard landings and crashes so I started
training on the PC using a flight simulator controlled by my R/C transmitter.

My copter is a Walkera HOTTEN-X controlled by a Walkera Devention DEVO-7.

For informations about the other way - controling your R/C model from your PC - have a look at this post.

Background

The DEVO-7 like most other R/C transmitters provides a trainer socket which outputs a PPM signal normaly used by a second R/C transmitter controlled by the flight trainer. In out case there is no trainer. Instead we connect the PPM signal to the PC so that a flight simulator software can be controlled. The conversion from PPM to a PC readable serial signal is done by the Arduino.

Most available flight simulators provide the ability to read the serial FMS PIC protocol so that the flight simulator can read a state and position of your R/C transmitters controls. There are two versions of this protocol available but only the faster 2nd protocoll is implemented by this Arduino sketch. The sketch could easily be modified to use the slower 1st protocol.

Download FMSPic.ino Arduino sketch.

Update 16.3.2015
Reynir Siik has changed the code to be interrupt driven. The sketch can be downloaded here. See also his post on modelsimulator.com

  1. The serial port is set to 9600 baud, 8 data bits, no parity and 1 stop bit. The first byte will be in the range 241 to 248 decimal. This is made up from 240 + the number of channels measured. The second byte contains the status of 4 push buttons that can be connected to the interface unit. The third to last (max 16) bytes contain the values of the control channel pulses. A value of decimal 100 means 1mS, 200 means 2mS.
     
  2. This versions uses a faster port speed of 19200 baud. The other port parameters are the same as in the slower version. The first byte has a value of 255 and marks the start of the packet. Bytes two until the next packet start marker contains values from 0 to 254 representing the channels puls lengths.

    Pulse lengths converted to

     760 uS   0 0x00 
    1528 uS 128 0x80 
    2284 uS 254 0xFE 
    

    Each 1 in data is equal to 6 uS (+/- 6 uS in signal => +/- 1 in data).

    EXAMPLE:

    pause 0xFF 0x80 0x80 0x80 0x80 pause 0xFF 0x80 0x80 0x80 0x80
    

    That means, we have a 4-channel transmitter, and all sticks are now in the midle position.

    (!) Note, when transmitter is off, cable sends to computer 0xFF bytes constantly. That helps to determine, that the cable itself is ok.

 


 
PPM-Osci.png  PPM-Sample.png
 
These pictures show a real PPM signal of the DEVO-7 on an oscilloscope including some annotations.
You can see the 7 channel PPM signal of the DEVO-7 and the description of each channels pulse
position

       1       2       3     4       5     6     7 
---+  +----+  +----+  +--+  +----+  +--+  +--+  +--+  +--
   |  |    |  |    |  |  |  |    |  |  |  |  |  |  |  |   
   |  |    |  |    |  |  |  |    |  |  |  |  |  |  |  |  
   |  |    |  |    |  |  |  |    |  |  |  |  |  |  |  |   
   +--+    +--+    +--+  +--+    +--+  +--+  +--+  +--+   
    *       *       *     *       *     *     *     *   
   
 
 * - PULSE             0.5 ms
 1..8 PAUSE            0.5 – 1.5 ms
Channel:               Description
 1 - up / down         50%  - right stick
 2 - left / right      50%  - right stick
 3 - throttle           0%  - left stick
 4 - roll              50%  - left stick
 5 – gear                   - switch 0% / 100%
 6 - 
 7 - FMD                    - switch 0% / 50% / 100%
 
 MIX / D/R / AUX2 missing or unknown

Hardware

Wire your R/C transmitter, the Arduino and the PC according the following schematic. Use a 3.5mm stereo jack to connect the DEVO-7 DSC port to the Arduino. Ensure that the 2nd and 3rd ring of the jack are both connected to ground. Otherwise the DEVO-7 wont recognize the Arduino.


PPM-Arduino.png

Flight simulator

Today many different flight simulators for almost any R/C model are available. Some not free others are free. As an example I will use FMS and CRRCSim.

First I tried FMS, downloaded and installed it on Windows 7. Unfortunately FMS does not run under Windows 7 because of a missing DLL. This can be fixed by following the instructions found here.
FMS does not contain quadcopter models but there are some sources on the internet where such models could be found for example here

Now connect your transmitter to the Arduino, the Arduino to your PC and turn on your transmitter. Start one of the following flight simulators and configure it to suit your copter model. The screenshots shows the configuration for FRM and CRRCSim.

Another simulator software is CRRCSim and you can also use this interface with this software.

Hopefully this project saves your valuable new copter from being trashed.