Arduino as wireless RC simulator dongle
Ever wanted to have wireless simulator dongle? Unfortunately there are no such dongle to buy anywhere. But you can easily do it by yourself!
List of parts
Everything you will need is Arduino Pro Micro board and any Flysky, Frsky or any other RC receiver compatible with your transmitter. Arduino Pro Micro can be purchased from Sparkfun, but there are a lot cheaper cloned boards on Ebay, Aliexpress or Amazon (Possible compatible boards: http://bit.ly/Aliexpress-Arduino-Atmega32U4, http://bit.ly/EBay-Arduino-Pro-Micro) . Actually almost any Arduino board with Atmega32u4 should work. Including Arduino Leonardo.
Actual parts costed $3.40 for Arduino Micro Pro board and $6.99 for iRangeX Flysky receiver. So the total price was $10.69.
You can choose the cheap and small receiver from Flysky receivers list and from Frsky receivers list.
The code is written by GregNau and original project is on GitHUB. Project was intended for Sparkfun Pro Micro board, cause it is based on ATmega 32U4 which can act as a game controller on USB. Although it should compile fine on other
'32U4' boards also (eg. Leonardo, ProMicro).
I had a problem with my computer (64bit Windows 8 and Windows 10) not detecting arduino as HID Joystick, so I have modyfied the source to make the dongle work. My slightly modyfied Arduino project source code for RC simulator Dongle can be downloaded from here: http://www.multirotorguide.com/go/arduino-rc-simulator-dongle-project-files
Compiling requires Arduino IDE v1.8.2 at least and 2 external libraries:
Make sure these are installed properly before compiling, otherwise it will instantly fail. Both them have clearly detailed instructions about installing in the README.md file of the each project.
For your convenience, you can download all the three packages from here: http://www.multirotorguide.com/go/arduino-rc-simulator-dongle-drive-folder/
The connection schematics is very simple, If you will use a receiver with PPM output, then you’ll only need to connect PPM out on receiver to D4 on Arduino board, +5 to VCC and GND to GND:
There is also an alternative Calibration Swith, connecting GND and A1 pin on the Arduino board. Calibration switch can be used for triggering the transmitter sticks/switches calibration. Actually the first time you power the Arduino with a RC simulator dongle firmware it triggers the calibration automatically so I’ve never needed this swich so far.
My soldered receiver to the Arduino board:
Attached it to the back of the arduino board with dual side adhesive tape:
You can also wrap the dongle into heat shrink to make it safe from accidental shorting of the electronics.
Installing the drivers for Arduino board
First time you connect the Arduino Pro Micro board (Arduino leonardo) it will show up as device without drivers:
You need to right click on the device and select “Update Driver Software…”
Choose “Browse my computer for driver software”
If you already have installled the Arduino IDE software, then the drivers should be in YourDriveLetter:\PathToArduinoFolder\Arduino-1.x.x\drivers\ folder
Select that you trust the Arduino Software and [Install]:
After the driver is sucessfully installed, you should see the Arduino Leonardo as Port device.
Flashing the code to Arduino
Open the wireless_rc_adapter.ino project in Arduino IDE. Select from menu Tools -> Board -> Arduino Leonardo and Tools-> Port -> COMxx (Arduino Leonardo)
Hit the Compile and Upload button.
Project uploaded. Now the board is not only the Arduino but also HID (Human Interface Device).
If you Open Game controller panel (Start -> Run -> Joy.CPL), you should see the Arduino Leonardo as Game device.
If you click the Properties, you should see the Axes and Bars moving whil moving the sticks on your TX.
Note: The first time you power on the dongle it will enter into auto calibration mode. The both leds will be lit on. You have to move all the sticks to their extents and AUX channel swiches to the on/off positions. After all the 6 channels were calibrated, the data will be stored on the Arduino EEPROM memory and dongle will start into working state.
Troubleshooting: Sometimes JOYSTICK_TYPE_MULTI_AXIS is not recognized as Joystic device. You can try changing into JOYSTICK_TYPE_JOYSTICK or JOYSTICK_TYPE_GAMEPAD in the code.
Setup in Simulators
Dongle was tested and perfectly working in DRL Simulator and Velocidrone simulator. Therefore it should work in other simulators that support USB Joystic.
In each Simulator you have to set the controller to Arduino Leonardo device. On DRL Simulator you have to select new controller.
Choose Other type.
And then follow the calibration and setup wizzard. You may need to invert some of the RC channels.
In Velocidrone Simulator you have to selecto Controller tab. Velocidrone will autodetect the Arduino Leoinardo as RC controller automatically. You may need to invert some of the channels (on my setup I had to invert Throttle and Yaw channels).
Enjoy your flight in simulators with wireless RC dongle!
this is a great guide, thank you for writing it. I’m having an issue where my windows 10 computer won’t see the leonardo board in the joystick menu.
everything flashed fine and it shows up as a HID. I’m wondering if you have any solutions for that?