Why should I do this?
When it comes to flying RC aircraft using a simulator can be a great way to hone your skills during the off season or even prepare for your first flight. The major disadvantage to using a simulator is that using a mouse, keyboard, touchscreen device, or standard video game controller, can be quite a different experience than the bulky transmitter with gimbals. There are commercial solutions available, depending on your interface type, but if you have an arduino ( and who doesn't? ) you can very easily connect a transmitter that supports PPM trainer / buddy box connections.
I can't say that it works with any transmitter, but I can say that it's compatible with the Spektrum DX6
But what software can I use it with?
I wanted to practice in my favorite simulator RC-AirSim by Fabricated Reality. It's an amazingly simple and accurate simulation (Not Game!) for electric RC airplanes. It's very inexpensive and if you are satisfied with the trainer plane, it has an unlimited use free demo. For less than $10 (the price fluctuates from 5 - 9 US dollars throughout the year) you can unlock all the plane models. They each fly different and realist, so you can learn the basics of a different type of plane before you try it in real life. This tutorial creates a game controller compatible with RC-AirSim with no configuration in the game. It just works.
How does it work?
Many RC transmitters allow you to share control of a plane with a second transmitter, so an inexperienced pilot can try taking over flight without having to hand over the transmitter in the event they loose control of the plane. This is a great feature supported by many transmitters. The setup can be complicated but it depends on the transmitter.
Basically with some transmitters, the data sent though the buddy cable (this tutorial will show you how to interface with a 2 wire cable such as a mono 3.5mm audio cable) is identical to the data that the receiver in the plane receives. They call this PPM, it's a series of pulses that can be turned into numerical values for percentage movement of servos. In Transmitters like the Spektrum DX6. The data can easily be deciphered using an arduino interrupt pin. Mike McCauley released an arduino library called RcTrainer that allows for capturing Spektrum PPM trainer communication in just this manner. I've used this library for the signal decoding.
Creating HID USB devices on the arduino can be accomplished in server different ways. The newer arduinos come with this ability built into the serial adapter chip, and some of the older arduinos can use a firmware hack on their serial adapters to do the same. But I wanted a solution that didn't depend on the arduino form factor and would work with just an atmega (eventually making it into a custom board) The solution here is the VUSB library for Atmel avr micro controllers. It's a software USB HID 1.1 emulation library. it has been ported to arduino as a library multiple times by multiple people. I created a HID gamepad descriptor that appears to the system as a standard gamepad, Works on windows, linux, and mac with no extra drivers needed, and matches the standard pattern for twin joystick controllers to little configuration is typically needed.
Of course you'll need a computer, the arduino software, and some basic arduino knowledge.
This tutorial is not geared toward someone who has never used an arduino before so if you find any of these steps hard to follow please refer back to a tutorial on basic arduino.