Introduction: The LeapCopter ! (Leap Motion to Control Quad Copter )

Picture of The LeapCopter ! (Leap Motion to Control Quad Copter )
Hello everyone!
This is my first instructable hope you'll enjoy it.
What I did in this project was taking the Leap Motion platform and used it to control a quad copter with nothing but hand gestures!
Using digital to analog converters and the arduino uno we made the Syma X1 quad copter's remote control to recieve its commands from the leap motion sensor.
Parts you will need:
1. Leap Motion - 80$
2. Syma X1 - 40$
3. Arduino Uno - 30$
4. 3x D2A mcp4725 - 5$
5. BS170 Transistor - 2$
6. R10K Resistor - 1$
7. 2x R2.5K Resistor - 1$

Leap Motion you can get over here:
Tools you will need:
1. Soldering iron and some solder
2. Desoldering wick
3. Wires
4. Screwdriver
5. Magnifying glass
6. Dremel
You can see the result over here:
and here:
I would like to thank my friends Moshe and Tomer that helped me a lot in this project

Step 1: Step 1 Syma X1 Remote Control:

Picture of Step 1 Syma X1 Remote Control:
1. Disassemble the remote control and take off all the plastic parts leaving only the remote's board with the small LCD still attached. I left the same battery holder box and just extended the wires and cut all the excess plastic with a dremel.
2. With a soldering iron and a solder wick, carefully take out the two potentiometers, you can also desolder and take out the annoying buzzer.
3. Once you take out the left potentiometer there are 2 things you need to do -

First you have to add two 2.5K resistors as shown in the circuit picture.

Next thing you have to do is to short three points as shown in the picture.
4. On the left potentiometer, once you remove it you need to short four points as shown in the picture.

Step 2: Step 2 Digital to Analog Cards:

Picture of Step 2 Digital to Analog Cards:
1. Connect the VCC output from each of the 3 A/Ds (analog-to-digital converter) together to the arduino's 3V3 input (The RED wires on the circuit picture)

2. Connect the SDA output from each of the 3 A/Ds together to the arduino's analog 4 input (The GREEN wires on the circuit picture)
3. Connect the CSL output from each of the 3 A/Ds together to the arduino's analog 5 input (The BLUE wires on the circuit picture)
4. Connect the ANALOG output from each of the 3 A/Ds and choose one for the throttle, one for the roll, and one for
        the pitch. (The light blue wires on the circuit picture)
5. Connect the GND output from each of the 3 A/Ds together to the arduino's GND input (The BLACK wires on the circuit picture)
6. Connect a wire to the lower left pin in each of the main chips in the 3 A/Ds and using a magnifying glass:
        in the throttle A/D connect the wire to the arduino's digital 8 (The brown wires on the circuit picture)
        in the roll A/D connect the wire to the arduino's digital 10 (The brown wires on the circuit picture)
        in the pitch A/D connect the wire to the arduino's digital 12 (The brown wires on the circuit picture)

Step 3: Step 3 Flip Button:

Picture of Step 3 Flip Button:
1. Connect the BS170's Source pin to the arduino's GND (The black wire on the circuit picture)
2. Connect the BS170's Drain pin to the push button's upper left pin (The yellow wire on the circuit picture)
3. Connect the BS170's Grille pin to the arduino's DIGITAL 5 (The orange wire on the circuit picture)
4. Connect the 10K resistor to short the GND wire and the grille wire.

Step 4: The Code (C# + Ardunio)

You can find all necessary code files in this link:

(I used google drive to upload it).
If you don't care about the code and want to use it as is just download the file "LeapDino.exe"
Please make sure you've got all your Leap motion drivers properly installed and it will work!

For more deep understanding I used 123D to make the circuit in this link you can find the project
I made alone the schematic for the remote control and the MCP4725 D2A, 123D GUI is very simple and very helpful !
if you have any questions or problems you are more than welcome to leave me a comment so I can help



Bivinz2017 (author)2017-02-14

@the_ice_man the tutorial is amazing. I would like to interface the leap motion controller with the arduino using Java. Could you help please!

joerafa (author)2016-11-05


I'm trying to connect a OEM Syma X1 controller (w/A7105) with an arduino w/NRF24L01+ but none of the libraries that I get, works. It's because A7105 can´t connect with NRF24L01? Can you help me?



HanzH1 (author)2015-11-12

hi, i'm in final year, so i choose this project to be my final assignment, all i want to ask, did u or anybody here have any suggestion on using other than MCP4725 converter. please...,

calebhino (author)2015-06-15

Hi I am going to make this but with a custom built tricopter and with a turnigy 9x controller will this still work and could you show me how to set it up for my controller and for my tricopter.

HAMZOLO (author)2015-06-14

Great tutorial! Are you soldering a wire to the bottom left pin of the DAC chips to allow the Arduino to control multiple DACs? I was just wondering since I wanted to make this project using an Adafruit mcp4725 breakout board which already has an ADDR pin out. Can I just use that instead?

rolandosd (author)2015-06-01

Hi, I am getting an error when running the program. An unhandled exception of type 'System.TypeInitializationException' occurred in LeapCSharp.NET4.0.dll. Any hint in how to fix it?

rolandosd (author)2015-05-29

Hi, I'll be doing this project in the coming days. Are you still around?

nitbaj (author)2014-04-30

How did you change the address on the A0 pin on the DAC? We are trying to write those pins high to change the address, but the pin seems to be linked to ground, which keeps the pin low. Thanks!

thenewdoctorwho (author)nitbaj2014-08-21

Were you able to resolve this issue? I'm having the same problem, all of the DACs are enabled all the time because of hardwiring to ground on the breakout board. I'm not sure how to fix this other than cutting the ground line on the pcb itself

nitbaj (author)thenewdoctorwho2014-08-22

We didn't really find a better solution than cutting the ground line. It looks like this is an new model of that DAC and they changed that one part for some reason. Our group ended up simply creating our own low pass filters to change the arduino PWM to a constant voltage.

jalvarado5947 (author)2014-08-06

Hi there, So I am about to get started with this project but I just had a little confusion on how the Leap device interfaces with the Arduino. I understand that the Leap connects straight to the computer but how does it communicate with the Arduino? If you can just clarify this that would be great thanks and great project BTW.

Leap connects straight to the computer and the arduino two connects straight to the computer. your welcome and have fun

RemyGozilla (author)2014-06-28

After troubleshooting for sometime, I found out that the arduino controller is getting the correct commands from the leap motion. I narrowed down the cause of the fault to that between the PWM outputs to the MCP4725 DAC. I probed the analog output from the DAC and it has a constant value of about 1.65V regardless of commands from the leap motion device.

RemyGozilla (author)2014-06-28

Hihi Ice Man, I'm almost done, but I've some questions that I hope you can help enlighten me. The resistance across my potentiometer is similar to yours (5kohm), and the voltage across is 3.3V. When I connect everything together and test, my quad is not reacting to my commands so I decided to probe the analog output of the DAC (which is the output sent to the RC controller). The output is constantly at 0.5V regardless of my gesture commands which is obviously incorrect. Please help, Thanks a Million

RemyGozilla (author)2014-06-16

Hello Ice Man, your project looks AWESOME! and therefore I'm gonna try it out on my cheap $30 quadrotor too! But my transmitter looks different from yours. From the attached image, did I wired it correctly? I am getting the same problem as the other guys when I run the Leap Dino.exe, I had also downloaded the source codes too. I'm unfamiliar with C# programming, do I need to configure anything in the codes and recompile before it can work? Thanks, awesome guy!

the_ice_man (author)RemyGozilla2014-06-19

Hi Remy, for start thank you for your compliments I really appreciate it, now for the technical part, your board is different and this can make a lot of problems I don't know if your potentiometers give the same values like mine I don't know if it has the same circuit you might need more grounding your might need different resistors if your good with electronics take a scope and start exploring and reading the values that the potentiometers gives you when you play with them. You must have the same values as the board I use for the all thing to work what we did was taking the digital values from the leap motion and with mathematic formula translate them in to analog values.

RemyGozilla (author)the_ice_man2014-06-19

Thanks Bro :) I will try to figure that out. But I also encountered some problem when I compile and run the C# codes. I had changed the COM port to COM4 which I am using to communicate with my Arduino Uno. However the following error appears when compile and build. Do you know how to solve this? I wanted to see whether the Leap motion sensor talk to the Arduino and display the outputs on the serial monitor.

the_ice_man (author)RemyGozilla2014-06-19

It looks like you need to add a reference to the dlls that are in the LIB folder LeapCsharp.dll and leapCsharp.NET4.0.dll

try this it will guid you how to add:

Rubsein (author)2014-05-22

hello, thanks for this tutorial, when you say to connect a wire to the
lower left pin, which pin is it? I wanna know whats the name of the pin
because my DAC does not look as yours

the_ice_man (author)Rubsein2014-05-23

read the all line its the lower left pin ***in each of the main chips of the mcp4725*** if you look with a magnifying glass you will see there are 6 legs so the lowest left leg is the one you need just follow the schema =)

K1NG MOMO23 (author)2014-02-15

I've just downloaded the LeapDino.exe file and tried to run it and everytime I get this error: "Could not load file or assembly 'LeapCSharp.NET4.0. Version=' Do you know how I can go about fixing this?

im getting this same error

mushroom glue (author)2014-02-01

Don't know if it'd work, but I came across this and thought it might be a tidier solution, interfacing directly to the radio module, and allowing you to skip the extra chips. It looks like the DIY tx I linked to is based around an arduino, so it should be possible to combine the 2 programmes. Additionally, would it be possible to use a raspberry pi, in order to make this a standalone unit?

Sorry I didn't understand what you meant but ill try to answer what I think you meant

The potentiometers we took out from the remote control are analog so we needed to send the digital signals from the arduino and convert them to analog so we can simulate the potentiometers thats why we used the D2A mcp4725 chips when we try to use the arduino analog out (PWM) we bump in to a problem I don't know what is the right term in English but we couldn't Slip the signal.

About the raspberry pi I think it isn't possible the leap motion requires a lot of CPU power and leap motion still isn't supporting linux I know thay are working on it

What I meant was this; If you look at the transmitter mainboard, there's a little red PCB with all the RF stuff on. The page I linked to has the code to plug that board directly to an arduino, with the arduino outputting the correct data to control a quadrotor. The rest of the tx PCB will just consist of a microcontroller with the potentiometers going into the on-board ADC's, so you're converting from digital to analogue just for it to convert it back again. If you just used the rf module, the unit as a whole could be smaller, tidier and cheaper. You might have to check voltages if you do that, though; I think the RF module uses 3.3v logic.

I think I see what your saying Mushroom... because the Arduino already has analog and digital input/outputs. So there has to be a solution. I have everything this tutorial needs except the converter chips. So im hoping to try this solution.

P.S. Mushroom.... I can't find the link you mentioned.

Sorry, only just got round to replying. I forgot to post the link. The page is here:

Basically, what I'm suggesting is rather than replacing the analog pots in the existing tx with the digital pot boards, I'm suggesting that you re-create the majority of the system in arduino code. If you buy an extra RF board, you could do the complete project without opening the existing TX.

The RF board (the small red PCB shown in the pictures) is an A7105 2.4ghz transmitter module. This can be connected directly to the arduino (the schematic's on the linked page). The data on the linked page tells you how to use this module in conjunction with an arduino to convert a PPM signal (the signal used in modular RC transmitter systems to connect to the RF module) to the 2.4ghz RF signal needed to control the quadcopter (I had a look down the list of supported systems, and the syma x1's included).

If you look through the code used, it should be possible to replace the section of code used to read the PPM data stream with a your piece of code that you're using to read the serial data from the PC. The overall result of this would be that you could reduce the size of the transmitter, simplify the assembly, and retain the existing transmitter in it's original condition.

I hope this all makes sense. I haven't looked through the code myself, but I do use that forum quite a lot, and the people on it seem helpful, if you want to ask them any questions. I've left a question on the thread to check that it is possible, although I see no reason it wouldn't be.

hrichardson ill be happy to know if you got a better solution as i said we bump in to a problem I don't know what is the right term in English but we couldn't "Slip" the signal. make sure to update =)

hrichardson v (author)2014-03-03

I noticed you didn't hook up the YAW controls. Any reason why?

To apply the YAW I had to build a rotating base that the Leap motion will be resting on it so one hand will control the YAW by moving the base and the other will control the rest of the motion (throttle,roll and pitch) in other word more code more money more building and controlling will be more complex =) but ! I did check if the YAW will work and there is no problem taking a wire from the left side of the remote instead of the 2 resistors the middle hole and wire it like all the other controllers have fun =)

cudy789 (author)2014-01-22

Is the Leap motion controller very reliable for this sort of thing? The quality was the only reason I didn't buy this when it came out because of the bad reviews and I certainly don't want a 200$ quadcopter turning into a large pile of plastic.

the_ice_man (author)cudy7892014-01-23

Well the SYMA X1 is 40$ and super super super reliable and durable I am crushing it all the time I didn't spent a lot of time making the code so sometimes It do have small bugs where the Leap "sees" I am pressing the flip button (that can make a mess lol) in total leap is far from perfect but gives a great apposition for its cost I think if you will improve the code there should not be a problem have fun !

and if you don't already have an Arduino and/or a leap motion then what are you doing on Instructables! There justified your purchase.

the_ice_man (author)2014-02-16

It will not work without the leap motion and the arduino pluged in....

K1NG MOMO23 (author)the_ice_man2014-02-19

I have tried running the LeapDino executable with both the leap motion and arduino plugged in and now I am getting an error that references port COM7. What file can I change the port number? Additionally I am unable to upload the arduino sketch to the arduino board.

I may be wrong, but if your new to Arduino your problem may be this:

Tools>Serial Port> Here you choose the USB port (your Arduino should be connected via USB to your PC). Until you do this the App doesn't know where your Arduino is.

the_ice_man (author)K1NG MOMO232014-02-20
  1. Just tell me what port do you want to use in your computer and ill make you a new EXE
  2. with the arduino make sure you installed properly the arduino drivers and make sure you can upload other sketches the one it comes with like led dimmer and so there shouldn't be any problem
CliniClown (author)2014-01-23

Very cool project thx for the instructable :)

I have a leap motion that i'm not really have any purpose for and I think your instructable will bring life into it again.

Can you tell me where I can buy the parts needed for this project?

the_ice_man (author)CliniClown2014-01-23

1. Leap Motion - 80$ - you have but can be found on ebay

2. Syma X1 - 40$ - same over here ebay

3. Arduino Uno - 30$ - yes again ebay

4. 3x D2A mcp4725 - 5$ - this part is from SparkFun Electronics (they ship + and they have distributors all over the world)

5. BS170 Transistor - 2$ - every local electronic store

6. R10K Resistor - 1$ - every local electronic store

7. 2x R2.5K Resistor - 1$ - every local electronic store

CliniClown (author)the_ice_man2014-01-26

Thank you! I'm going to order all the stuff and then let the fun begin =D

the_ice_man (author)CliniClown2014-01-26

Go for it have fun =)

maxnoble440 (author)2014-01-23

Cool controller hack too! good job!

the_ice_man (author)maxnoble4402014-01-23

Thanks ! =)

Tzabary (author)2014-01-22


I just bought one of those leap motion sensors!

So going to build this!

Thank you for making this so easy and simple!

the_ice_man (author)Tzabary2014-01-22

Your welcome Mr if you have any problem feel free to contact me any time ! =)

Renard_Bleu (author)2014-01-15

Very cool! I want a Leap Motion just for gadget lust, but now you have opened so many possibilities... Great work. You should embed the YouTube video to make it more enticing to check out.

the_ice_man (author)Renard_Bleu2014-01-18

Your welcome ill check how to do it =)

About This Instructable




More by the_ice_man:The LeapCopter ! (Leap motion to control Quad copter )
Add instructable to: