It’s winter, and that means terrible weather and very few days where flying RC planes and helicopters is tolerable. [sjtrny] has been spending the season with RC flight simulators for some practice time. He had been using an old Xbox 360 controller, but that was really unsuitable for proper RC simulation – a much better solution would be to use his normal RC transmitter as a computer peripheral.
The usual way of using an RC transmitter with a computer is to buy a USB simulator adapter that emulates a USB game pad through a port on the transmitter. Buying one of these adapters would mean a week of waiting for shipping, so [sjtrny] did the logical thing and made his own.
Normally, a USB simulator adapter plugs in to a 3.5mm jack on the transmitter used for a ‘buddy box’, but [sjtrny] had an extra receiver sitting around. Since a receiver simply outputs signals to servos, this provides a vastly simpler interface for an Arduino to listen in on. After connecting the rudder, elevator, aileron, and throttle signals on the receiver to an Arduino, a simple bit of code and the UnoJoy library allows any Arduino and RC receiver to become a USB joystick.
[sjtrny] went through a second iteration of hardware for this project with a Teensy 3.1. This version has higher resolution on the joystick axes, and the layout of the code isn’t slightly terrible. It’s a great project for all the RC pilots out there that can’t get a break in the weather, and is also a great use for a spare receiver you might have sitting around.
Simple little project to occupy me for a few minutes. ;)
For the you don’t need an arduino croud; you can always use a full logic analyser ;-) https://zi.is/p/browser/ppm2joy/ppm.py
p.s. Got to say I think PPM is easier then listning to multiple PWM chanels even on a arduino.
I was thinking the same.
It may be easier for some but would you would have to keep reprogramming it for each different transmission standard you wanted to use it with?
For me this seams a great project with being able to plug it into any receiver you want to use.
Many thanks Brian for your work in doing this.
Regards Poppy Ann.
Or you can completely bypass all of that and plug it directly into your microphone input. See http://smartpropoplus.sourceforge.net/site/
Yep – did this a few years back with my hi-tec transmitter. Worked great. This is a bit more work, but would work with any transmitter you have a receiver for. When I did it there was a limited number of SPP supported transmitters – maybe that has changed since then.
The wireless part of this solution is also pretty appealing as well as the potential knowledge re-use if you want to use the transmitter to control something else eventually.
Yep I found this when looking around for a solution. It’s windows only though.
I’d been looking into some of those adapters for my Spektrum DX6i, and this looks so much better since I know I have all the parts.
Nice work, Ive been thinking of doing similar and making a standard usb controller so I can use my tx’s with regular pc games etc. VRC is imho the turnkey solution though. With the limitation that the dongle only works with their program. Although i never tried it tbh.
I use Smartpropo Plus which takes the trainer socket (3.5 MM audio jack) to my sound card. It’s terribly simple after initial setup and requires no additional hardware other than a 3.5mm audio cable (mono or stereo)
Smartpropoplus is great.
Some time ago i tried using it again but not via audio, but with an sdr to capture the signal directly without cables.
It worked great but there was some pretty long delay even with rtl_fm.
http://y-richter.de/?p=19 for some images.
Wow, that is neat-oh.
When I last (15 years ago? hitech 6 channel airplane radio, some kind of din connector) checked the output from the controller output on a transmitter it was just the servo pulses, just one after an other (sequentially, pulse train(?)) with a longer pause as sync. This should be easier to decode with an avr instead of timing them in parallel from the receiver. Or is the modern buddy signal not the same anymore? I haven’t check what is output from my spectrum radio.
You usually don’t need to connect every channel between the receiver and the arduino (same is true if the arduino is your real flight controller). The servo signal on each consecutive pin goes high when the level on the previous pin goes low, and then it goes low when the next pin goes high. So for 5 channels you just need three input pins, for 7 channels you need 4, etc. You still get the same number of edge interrupts on your arduino or teensy.
This is because the receiver splits the sum signal into N channels the easiest possible way. It also ensures that all the servos don’t draw power at the same precise moment.
Great tip! I will try this for the next version.
@sjtrny…I’m working on a project and I’d ideally want a transmitter like your Turnigy, however, for my application (somewhat like an RC tank), I need both joysticks to be spring loaded. For flight applications, usually the left joystick is limp, and the right is spring loaded to default to the middle position. Is there a way to easily make the left side spring loaded as well or is there a certain version that I should purchase?
Cool Project btw!
Yes you can. Changing the “mode” (http://www.spektrumrc.com/Articles/Article.aspx?ArticleID=2105) of RC transmitters is quite easy. All you have to do is to swap one or two springs around. So instead of this you just need to get yourself some extra springs and apply them to whichever stick doesn’t come with the spring. See this video for an example of a Mode 1 to Mode 2 conversion https://www.youtube.com/watch?v=DE2pqoppWZA.
The problem with trying to “just get yourself some springs and apply them to the stick” is that you also need some extra parts that the spring connects to, when you just want to swap over the spring loaded stick from one side to the other is you have the parts required but the easiest way to make it so both are spring loaded is to just order a spare stick, sticks for the 9X range of transmitters are all around the £3.50/$5.25 mark just the time saved in not having to search around to locate a spring with the correct tension is worth the cost of a spare stick.
Regards Poppy Ann.
Hi Hwalker, I did a model RC bulldozer and i set the transmitter to use the left stick for both throttle and direction I used the Turnigy 9X transmitter and programmed it to transmit two channels one for each track and used the transmitter to do the working out of which channel has to move at what speed and it worked out quite easy to do (I did use er9x as the firmware in the transmitter and then used eePe to work out the programming via the simulator that is built into it which is much easier than trying to do it on the transmitter direct.
If you want I can upload a copy of the mixes which would make it much easier for you.
Regards Poppy Ann.
Hi, any help of getting this to work with an Arduino nano would be very much appreciated :)
regards Johannes
This is cleaver if you can work with your hands lol