In this tutorial I will show you how to begin the construction of a low cost drone, all by yourselves. First of all I want to be clear, this drone is NOT FINISHED, it has a very rudimentary self control system and can't be controlled externally. Anyway it will be very useful for beginners, and a cool challenge to make it work completely with your own cleverness.
Ok, so the requierements are:
Intel Edison Module
Intel Edison Mini Breakout Board
SparkFun’s PWM Block for the Intel Edison
SparkFun’s 9 Degrees of Freedom Block for the Intel Edison
Some cables and wires
4 brushless motors DYS BE1806-2300kv Brushless Multirotor Motor
4 Emax Simonk Series 12A Controllers
2 USB cables
So let's get started!
Step 1: Motors
Ok, first of all let's understand a little bit of theory. Something we need in every drone is the propellers spinning. In order to do that, we need the motors to work. These are brushless motors, so they can't be controlled directly by a signal coming from the Edison, it needs a special controller, in this case the Emax 12A. This video will help you understand how it works
The controller we are using has 5 inputs: 2 of them are GND and DC voltage, basically the power source of each motor, so it needs to provide a big amount of current, maybe 2A each; the other 3 are thinner inputs and are used as a PWM input where the brown wire is GND, the red one is actually a maximum PWM voltage output, so no need to worry about this one, and the yellow one is the actual PWM signal. By the other hand, there are 3 outputs. At the moment just connect those 3 outputs to the 3 inputs of a motor. Don't worry about the order at the moment. But just to one motor, not all of them. Later I will explain you why. I know the explanation is kind of tricky, but take a look at the controllers picture. You know what they say: "a picture says a thousand words".
Step 2: PWM
Ok, now let's talk about PWM (Pulse Width Modulation). As the name says, it's a kind of modulation that depends on the pulse width we use. This pulse is part of a pulse train. Let's say there's a pulse train with a maximum of 5 and a minimum of 0. If the duty cycle (time percentage it stays high) is 50% the average voltage of the signal would be 2.5 V. This video explains it in a very easy way:
We only need to be careful about the frequency we use. It needs to be in a range generally specified by the sensor or actuator we are using.
Step 3: Build Your Drone
First of all, solder your motors and controllers and try some PWM signals with them. It's better if the motors have some charge first, which can be the propellers in this case. Make a little program using a 55% duty cycle (DC). You will listen a short sound, like 4 seconds long, like a little song. After that, in the same execution, gradually change the DC from 55% to something like 60%. You will see how the propellers increase their speed
Now you have to make some experiment and change the connections order between some motor's inputs and controller's output. That way you can change the rotation direction. Be sure to have 2 propellers spinning in one direction and the other 2 in the opposite direction. This is important to stabilize the drone.
When you finish assembling the whole drone, you must put the propellers as shown in the image. You will also have the next input wires taking in account that you put together all the grounds and + power inputs:
4 motors PWM signal wires
1 positive power wire
1 ground wire
Try to use high gauge wires or cables for the power. By the way, the voltage I used to power the motors was 11V.
Step 4: Code
Actually the 9DOF is really not so necessary: it's only the way I used to control the drone, tilting it to a specific side would make it move in a certain way. Also, if you want to make a control algorithm, it would be very helpful, but if you want to substitute this for some buttons or something else, that should be fine.
There are some other things to take in account. I am using the mini breakout board to take some weight of the drone. Even if the Edison has enough PWM outputs there were two problems: the first one is that the resolution is very low, I think it's 8 bits; the second thing is that the high PWM voltage was 1.8V. This is not enough. The motors begin to work with something like 3.3V. I am not completely sure about the specific voltage I used.
That's why I used the Sparkfun PWM block: it has a 12 bits resolution and has the amplitude you give it. In my case I found a 4.4V constant output from my mini breakout board, and that's the one I used.
Excellent, so now, you are able to test it. You will find the source codes in this repo: