The goal is to control the CX-10 (without custom firmware) from a computer. This is accomplished by connecting some wires from the transmitter to an Arduino. The potentiometers are removed from the transmitter and replaced by wires which connect to the custom Arduino shield. The buttons are connected without removing the actual buttons.
The schematics are pretty simple. Normally, the potentiometers provide a voltage between 0V and something around 3.4V. With the Aruino Uno, a PWM signal is generated and filtered with a low-pass filter. The voltage divider with two resistors (values 100K and 20K) brings it down from 5V to 4.17V. However, due to the capacitor the value seems to drop further. The oscilloscope showed a value at the outputs of around 3.4V at a duty cycle of 100%.
I constructed an Arduino prototyping shield according to the schematics. It has a pin header to connect to the transmitter later on. In addition to the schematics, it also has two MOSFETs to pull two push-buttons low. These buttons control the aerobatics-mode and the flip.
The original transmitter is modified to be able to use it with the Arduino. The potentiometers need to be removed and are replaced with wires to the Arduino. The buttons can stay in place because they are normally open.
The Arduino is flashed with Standard Firmata firmware. This firmware is available by default in the Arduino IDE. Only a small modification is done that increases the PWM frequency to the maximum. In the setup section, the following is added:
TCCR1B = TCCR1B & B11111000 | B00000001; // set timer 1 divisor to 1 for PWM frequency of 31372.55 Hz TCCR2B = TCCR2B & B11111000 | B00000001; // set timer 2 divisor to 1 for PWM frequency of 31372.55 Hz
More information about Arduino PWM frequencies is available here: https://arduino-info.wikispaces.com/Arduino-PWM-Frequency
A computer program can send firmata commands to the Arduino. For now, I made a quick and dirty program that translate joystick commands to the PWM values of the Arduino. This is the result: