Controlling a Syma S107G with an Xbox 360 Controller

As a tie in to my No ‘Air Ambulance Challenge, a sponsored body wax for the local Air Ambulance charity, I’ve decided to upgrade my old project by swapping the RC car out for a Syma S107G. If you enjoyed this post, please donate a few quid or whatever you can here. It’s for a very good cause and as it’ll put me through a *lot* of pain you can be sure I’m not asking for my health!

I tried to implement the IR protocol in C# using the .NET Micro Framework for the Netduino but it proved more than a little tricky to get the timing right. As there are a few implementation out there for the Arduino I decided to stand on the shoulders of giants and build on top of existing code, two in particular.

One thing worth of note is that my helicopter uses Channel B, as you can see in the comments in my code (heavily based on Kerry Wong’s) it is easy to switch between the two channels. For the serial control aspect I implemented a similar method as with my Netduino project and in Andrew Barry’s implementation. For the Xbox 360 Controller interface, I updated my previous application to listen for the trigger for the throttle and the right analogue stick for pitch and yaw. I had some fun when I got the values backwards and I slammed the copter into a wall. Thankfully they are built tough to survive kids and geeks alike…

The IR emitter is a 500Ohm resistor inline with a pair of IR LEDs, connected to Pin3 on the Arduino. Video demo below;