This project is a quadcopter powered by a Multiwii and controlled with a Raspberry Pi 2 B. This quadcopter has a particularity because he's using 2 differents controller and he could be pilot with 2 differents devices : a remote control or a smartphone.

The Multiwii controller look after the 4 motors and distribute the power to supply them whereas the Raspberry Pi collect the informations who came from the smartphone and relay them to the Multiwii. You can also take pictures and Full HD video too !!! A Pi camera is places on the frontground of the Drone Pi. It ca recording or just take a picture to a USB key.

The frame of this quadcopter is constituating with different recycled elements and it was another challenge : create a quadcopter with sometimes heavy elements... But we did it !

We are some young french students and it was our first creation. We were helping during this project with some internet website whose Instructables and now we want to share with you our Drone Pi. Enjoy !

Step 1: Parts

To build our quadcopter you will need the following parts :

  • A frame - You can buy it on the internet or you can make it like us. It's not difficult to create your frame, you just have to make a X of approximately 0,45m of diameter (for a stable quadcopter) and you put different levels on the center to put your Raspberry, Multiwii, battery, ESCs, etc...
  • 4 motors (16€) - For a quadcopter you need 4 motors but if you want to make a octocopter you will need 8 motors as well. We are using Turnigy brushless motors. (we will come back to the motors in the step 2) http://goo.gl/G9oE1c
  • 4 ESCs(10€) - The electronic speed controller is using to delivery the power to the motor with the informations of the Multiwii. We're using Hobbyking 30A ESC. http://goo.gl/2txm0b
  • Battery (27,5€) - Of course if you want to fly you must to supply your motors so you need a Battery. We're using a Turnigy 3S 3300mAh. http://goo.gl/4GHr01
  • Battery monitor(4€) - It ring when your battery is down. We're using a Hobbyking battery monitor 3S.
  • Power distribution board(4€) - This board is using to connect your ESCs to the Battery.We're using a Hobbyking quadcopter power distribution board for quadcopter. http://goo.gl/0WCvB3
  • Propellers(5€) - A quadcopter with some motors but whithout propellers it isn't a quadcopter so choose your props according with your frame. For our frame of 40cm you need some props with lenght=10 and pitch=4,5. We're using 10x4,5 SF props. http://goo.gl/4taM8k
  • Multiwii (49€) - This controller is using to command the motors and share the power. We're using a CRIUS AIO PRO Multiwii.
  • Mounting pad(2€) - Because the motors create a lot of vibration you have to buy some mounting pad to reduce them under the multiwii. http://goo.gl/aifflj
  • Raspberry pi 2 B(35€) - It could also run with another model of Raspberry pi but we have just tested with this Raspi and it's more powerful than the previous version.
  • Pi camera(19€) - To capture video and take photo. It can be only run with a Raspberry pi
  • Wifi key(9€) - It connect to the Raspi and create a wifi network to relay the informations from the smartphone app to the Raspi.
  • USB key - To save the video
  • Remote control + rc receiver - If you want to control your drone with this. You will connect the rc receiver to the Multiwii.

You have to weld the connectors to the ESC wire, to the motors wire and to the distribution board wire.

Step 2: How It Works ?

The multiwii

Multiwii is a open source french project who was based on a arduino. The project is open source so we can find many kind of multiwii. We use a similare version of CRIUS AIO PRO V2. This is a flight controller: Its role is to send speed signals to the esc to hold the quadcopter in the air. We use the mutlwii project beacause its a known project used by many users with a great community but mostly because programs like this is too complicated for us.

The Raspberry

In our project the raspberry made the main role. First at the startup it create a private wifi network with a DHCP server (to give IP address), this wifi network has no internet access and this only to communicate with the smartphone. Secondly it stat a python program (created by us) who start a websocket. A websocket is a permanent connexion between the server (raspberry) and the client (the smartphone app), it will serv to received command from the app. Then the same progam connects to the multiwii via USB. It will serve to send commands informations who come from the smartphone to the multiwii ( see schema for understand). Sources are available on github (https://github.com/reglisse44/Multiwii-raspberry-drone-server)

The Application

The application is made in html/css/javascript with cordova. Cordova is a technology who permit to create an application with web technology compatible with android, ios and more ... The user think it is a standard android app but in fact this is a web view :), it's easy to develop applications like this for web devellopers ... Sources are availlable in github (https://github.com/reglisse44/quadcopterControl)

Step 3: The Frame

To make a good frame you need to use the lightest elements as you can. For our Drone Pi, we had to build it with recycling elements so our frame is a bit heavy but anyway it doesn't matter for our motors.

The diameter of the frame is 0,45m because we wanted a "stable quadcopter" for the camera and not a "racing quadcopter". On the center of the X they are 3 levels (maybe 4 in the futur) to put the controllers, the ESCs and our battery (you have all quotations in the pictures on the top of the page).

We've created a platform to the multiwii on the top of the quadcopter(picture 2) and another to the battery(picture 7 and 8) on the underneath of the quadcopter. For the Multiwii's platform, we wanted to put the raspberry under the multiwii because there are some connections between them. For the battery's platform, we wanted to take on or take off the battery to charge it. All picture are in next step...

Finally, we put 4 feet to the quadcopter to be able to land it but they are not pretty and bad.

Step 4: Propulsion

For the propulsion you need your 4 motors, your 4 ESCs (to adapt the voltage to the motors), your battery and finally your Multiwii.

  1. Connect your motors to your ESCs. You can invert the wire to invert the rotation of your propellers (see schema to know rotation direction).To begin, DON'T put your props on the motors to don't have any accident, the props are fragile and they could be break.
  2. Connect the ESC to the distribution board (respect the color).
  3. If all is ok you can install the components on the frame
  4. The screw we had with the motor was too large for the propellers so we needed to enlarge them (see pictures)

Step 5: Flight Controller and Raspberry

Now we will install the multiwii ans the raspberry pi. For install the two component at the same place we build a support who came on the top of the raspberry to place the multiwii (see picture).

  1. Install the raspberry with his support
  2. Put the multwii on the support with anti-vibration pad
  3. Conect the ESCs to the multiwii with the dedicated pins

Next we will compile multiwii firmware into the board. To begin connect the multiwii board to your computer via USB

To configure the multiwii:

  1. Download multiwii firmware from https://code.google.com/p/multiwii/
  2. Download arduino software from https://www.arduino.cc/en/Main/Software
  3. Open arduino project "Multiwii.ino"
  4. Change arduino board in "Tools">"Board">"Arduino Mega 2560 or Mega ADK"
  5. Select the port in "Tools">"Serial Port"> And select the multiwii port.
  6. Next, open file "config.h"
  7. Search at the begining of the file the line: "//#define QUADX" and uncomment it (remove the "//")
  8. Search again the line "//#define CRIUS_AIO_PRO" and uncomment it.
  9. All is ready, save the file and run compilation
  10. Next you will need to calibrate all sensor with MultiwiiConf, I let you search tutorial on internet.

At this moment, we don't connect the Multiwii to the Raspi so if you want to look your motors in action before configure you raspberry pi put them on your frame, you'll need a remote control with a rc reciever and connect the rc reciever to the Multiwii. We'll don't explain to you how to do this but Google is your friend ;) and it's not difficult to do this. (DONT use motor with their propellers)

Step 6: Raspberry Pi

Debian installation:

Install raspbian with noobs by following this tutorial: www.raspberrypi.org/help/noobs-setup/

Launch raspi-config and enable pi-camera

IP configuration

sudo nano /etc/network/interfaces 

remove all wlan0 configuration and edit to this:

allow-hotplug wlan0
iface wlan0 inet static

Hostapd installation:

Before begin make all update:

sudo apt-get update && sudo apt-get upgrade

Install hostapd:

sudo apt-get install hostapd

And test with minimal configuration

sudo hostapd hostapd.conf

If you can see your network from you smartphone it work BUT DONT TRY TO CONNECT ( it will failed with ip error because we haven't got any DHCP server)

DHCP server installation:

Now we need yo install a DHCP server to give IP address to wifi clients.

sudo apt-get install isc-dhcp-server

Run this command to edit the file:

sudo nano /etc/dhcp/dhcpd.conf

Find the lines that say

option domain-name "example.org";

option domain-name-servers ns1.example.org, ns2.example.org;

and add "#" before them to comment them

Install usbmount

We need usbmount to mount the USB key. This is to save the video on the USB key.

sudo apt-get install usbmount

Now all usb keys must be mounted on the folder "/media/"

Install Python quadcopter program:

First install dependencies:

sudo apt-get install python-pip build-essential python-dev
sudo pip install tornado

and clone the git project

git clone https://github.com/reglisse44/Multiwii-raspberry-drone-server.git multiwiiControll

You can test the programm by launching like this:

Test this !!:

Warning: For the moment if you want to start the python program you need:

  • The pi-camera connected and activated in raspi-config
  • The multiwii board connected to a raspberry USB port as the name "ttyUSB0" (you can check with the command "dmesg | grep tty", if your multiwii is connected with a other name change it at the begining of the file "main.py")

Before begin reboot your pi to apply all previous installation.

Next follow these commands:

sudo hostapd -B /etc/hostapd/hostapd.conf
sudo ifconfig wlan0
sudo service isc-dhcp-server restart
sudo python multiwiiControll/main.py


  1. "-B" is to launch hostapd in background
  2. After starting hostapd, the ip change (I dont know why). So we need to set it manually
  3. Restart dhcp server to init it with the new wlan0 network
  4. And start python script

Automations this at boot:

To launch all these command at boot we use cronjob and a sh script.

sudo crontab -e

This command open the nano editor. Write this at the end of the file:

@reboot /home/pi/multiwiiControll/autostart.sh
@reboot sudo python /home/pi/multiwiiControll/main.py &

Exit and reboot, if all is fine, all must be start on boot !

Step 7: This Is the End !!!

If you have any questions you can post a comment and Thank you to read our instructables :)

<p>Can I replace the flight controller to KK Flight Control F450? How it will connect the raspberry pi and get the information?</p>
<p>or even use the Crius MWC MultiWii? how it will all connect?</p>
<p>I have an error when running /multiwiiControll/main.py</p><p>it showed;<br><br>{ ' record ' : False, ' main_controller ' : False, ' usb ' : [ ' /media/usb0 ' ] }</p><p>What's my error?</p>
<p>Hi everyone,i do the same project with friends but i need help, can someone help me ? ( I'm french/indian and my Skype is FrOoTzii ) </p>
I had an error when running /multiwiiControll/main.py<br><br>After calibrating success of my multiwii, it showed;<br><br>{'record': False, 'main_controller': False, 'usb': [ ] }
<p>It happened to me, did you solve it?</p>
I have my multiwii, keyboard and mouse connected to my Pi3. All are connected to ttyusb0
<p>how much does it cost all togather </p>
<p>sudo hostapd -B /etc/hostapd/hostapd.conf ?</p><p>Configuration file: /etc/hostapd/hostapd.conf</p><p>drv-&gt;ifindex=3</p><p>l2_sock_recv==l2_sock_xmit=0x0x1524638</p><p>ioctl[SIOCSIWMODE]: Invalid argument</p><p>Could not set interface to mode(3)!</p><p>Could not set interface to master mode!</p><p>rtl871xdrv driver initialization failed.</p><p>sudo service isc-dhcp-server restart ?</p><p>Job for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details.</p><p>why?</p>
<p>Sir where is the full &amp; final source code for this project.?</p><p>I have seen alot of codes in (Python Quardcopter Program) &amp; in (Cell Phone App)?</p>
<p>Which wires do I have to invert? Red? Black? Blue?</p>
<p>hi,</p><p>amazing project,was looking at the code what if you don't have a camera? what happens to the code</p>
<p>Hi, </p><p>I know it's a silly question, but need to know about the connection between Battery, ESC and Multiwii/Raspberry Pi. I saw you connection diagram but it doesn't say anything about the connection between Battery and Multiwii/Raspberry pi.</p><p>Thanks in Advance.</p>
<p>I found this one in older comments from the author; they said</p><p>&quot;the esc (who control the speed of the motors) have a UBEC. A ubec is low output power. You can see on the cable connected to the multiwii, there is a red cable: this is a 5v 3A power Who came from the esc.And this is how the multiwii is powered. And on the multiwii there is also an output 5v, we just plug 2 cables from the multiwii to the raspberry.? Finaly this is energy chain:<br>Batterry-11.1V-&gt;ESC-5V-&gt;multiwii-5V-&gt;Raspberry&quot;</p>
<p>can someone please share the connection diagram? as i am still confused about connections</p>
<p>Move your left joystick to the bottom right corner! Lol that was my solution. Read comments too. Project is finished thank you!</p>
<p>any pictures of videos u have to show ur completion of this project? are u using RPi 3?</p>
Yes ofc ive. But i cant upload here. I will send link asap.
<p>ok thank you! cause im having some problems with the interface..</p>
<p>Hi, I'm using a RPi3 and I have followed the steps until I key in the command;</p><p>&quot;sudo hostapd hostapd.conf&quot; , </p><p>it says,</p><p>&quot;Configuration file: hostapd.conf</p><p>Could not open configuration file 'hostapd.conf' for reading.</p><p>Failed to set up interface with hostapd.conf</p><p>Failed to initialize interface&quot;</p><p>Any help with this would be much appreciated. Thank you!</p>
Follow these commands . https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
<p>Thank you! I will look into that. So have you got the CordovaApp-debug.apk to work with your RPi3 through wifi?</p>
No. Not yet. Still facing the problem of the android app.
What phone are u using?
<p>have u tried the MultiWiiController from The Pi Quadcopter?</p>
No. I have multiwii crius aio pro
How much multiwi cost?
There are various multiwii compatible boards ranging from different prices.
Which app should I install in my smart phone as a controller for this quadcopter. Plz reply as soon as possible
<p>Hi, </p><p>in the link <a href="https://github.com/reglisse44/quadcopterControl" rel="nofollow">https://github.com/reglisse44/quadcopterControl</a>, you will find the application CordovaApp-debug.apk. you can install it in android mobile</p>
I tried the above link. But the app is not in English. And its not even working. Plz help
<p>yep, it is a french app. but that shoulnt be an issue. </p><p>Make sure your rasberry pi is exposing the hotspot. and mobile should be connected in that network. once you connect that you can just press navigate. </p><p>i dont know what problem you are facing </p>
My mobile is connect in the network created by raspberry pi. But the app is still not responding. After tapping navigate option on the app , it doesn't responds. I have downloaded the apk file and installed in the mobile from the above link. Still I am facing the problem. Plz help
<p>check the raspberry logs by starting manually. it will give some tips. folow this https://www.instructables.com/id/The-Pi-Quadcopter/.. it will talk about arming and other instructions. </p>
Raspberry pi 3B has an inbuilt wifi. And so I am using it to save the extra weight for the drone. Does that makes any difference?? Or should I use the raspberry pi 2B only with external wifi usb key?
<p>it doesnt make any difference. to setting up rasberry pi, even you can use the link https://www.instructables.com/id/The-Pi-Quadcopter/. </p>
<p>Hi Adam. It's Lucy from The MagPi - The Official Raspberry Pi magazine. We'd love to feature your Drone Pi project in an upcoming issue. Can you get in touch with me please. I'd like to email you. lucy@raspberrypi.org</p>
<p>I&rsquo;m using raspberry pi 3 but I have some<br>problems with cardova app&hellip; I insert git hub files on my pi but I can&rsquo;t connect pi<br>with smartphone using this app please give the solution as soon as possible</p>
<p>what should i do with github links ?? please :)</p>
<p>Hi, </p><p>I'm new to this but can we replace the Multiwii by an arduino ? </p><p>Thanks in advance :)</p>
How do I use a smart phone as a controller for this quadcopter. Plzz help.
<p>Im trying to use your multiwii.py file but when i call setRC(), its throwing errors that unicode is not allowed and must be bytes. From what I can tell, your code should already be sending bytes but ive tried modifying it and cant get it to stop throwing this error. Anyone else have this issue or know how to resolve it?</p>
<p>Good. Nicely done, although I don't like the motors.</p><p><a href="http://www.geekstips.com/parrot-bebop-hubsan-h501s-x4-best-drones-under-300/" rel="nofollow">Best drone under 300$</a></p>
I have already built drone using kk2.1.5 board. Wil u help me to replace my hobby king transmitter and receiver with a smartphone controlled type. how and which components do I need to buy or change?
<p>Awesome project! I am currently building this in my engineering class. I have all of the parts from the list and everything is assembled - our only issue is getting the Cordova app to work. Right now, I have Apache web server installed on my Raspberry Pi that allows me to load a web view from my phone via IP Address.</p><p>I believe that I may not be configuring this right. Do I need to install Cordova on the Raspberry Pi (via npm) and run the app that way, or should I deploy the Cordova app directly to my phone? If so, do I need to have Apache installed in order to communicate via WiFi?</p><p>Any help regarding the connection between the Cordova app and Raspberry Pi would be appreciated! Thanks again for the great project - it is really well done and I have already shared it with numerous friends and teachers throughout the school!</p><p>Stuart</p>
<p>What do I do with the github links I downloaded them already but have no idea what to with them. Please help :)</p>
<p>what frame would be good to buy, but not too expensive? thanks</p>
fibre glass frame which is cheap and very good for beginners.
Nice drone. I have built one using kk2.1.5 board. but I want to upgrade something like yours. so please will you help me? can I use arduino uno instead of raspberry pi? ans where can I get that multiwii?
<p>Would you please be able to contact me? 7737578088 ..I am trying to make something very similar to this and I have a few questions</p>

About This Instructable




More by reglisse44:The Drone Pi 
Add instructable to: