I have been searching for ideas of making a Quadcopter Arduino flight controller Adapter to sit my Arduino nano board and the GY80, also have some header pins for motors and receiver to make the cabling tidy. There are a lot of Arduino shields people have designed for the Quadcopter.
I didn’t follow any of the designs. I actually didn’t follow any planned design, and solder the parts on the veroboard as I go along.
My Arduino Quadcopter flight controller adapter Design
Here is my own build. I deliberately left some empty space on the top right corner, so I can extend the board if I want to for example for the GPS module or ultrasonic sensor and so on.
This design has a few disadvantages, and there are some quick fixes I applied. Here are some thoughts.
Table of Contents
BEC voltage input
The ESC BEC voltage input should have been all disconnected except one of them. There are people arguing about this, saying multiple voltage supply could cause problem if they have voltage difference (which is very likely since they are different voltage regulators although very small). It’s impossible to separate the connection from the back because of the soldering, therefore I snapped off the voltage header pins for motor 2,3 and 4, so only the signal and ground pins are still there.
I should actually utilize these BEC 5V voltage supply. For example, backup (secondary) voltage supply for flight controller in case the first one dies (when the motor 1 ESC has power issue). And the rest of the BEC could be servo power supply for the camera gimbal.
Motor and Receiver header pins position
motor pins should be placed on all four directions for easier access. Receiver pins should be placed in one group. I realize it doesn’t require an additional power supply pin for it, as they can be powered from the channel voltage pins.
Microcontroller Socket
To implement GPS or sonar on an Arduino nano, UNO or pro mini, we need an additional Microcontroller to interface with the GPS and sonar modules, then pass the data to the flight controller board using i2c.
A build in socket, or some sort of I2C connection pins to the flight controller would be really handy.
2 more motor pins (to run a hexacopter)
Design By Other People
Here are some design (mostly PCB design) by other people.
An interface adapter board for the Arduino Nano made by Yorbid
The board can be used for a Tri- and Quadcopter with optional camera roll & pitch stabilization.
It uses the 3.3VDC output from the Nano as a power source for the sensors. No automatic WM+ reset is available if the I2C bus freezes with this option.
Round adapter board by Warthox. A proven board originally designed by Warthox. The board can be used for a Tri- and Quadcopter.
This is an adapter board based on Ilmar’s round adapter board. The board can be used for a Tri- and Quadcopter with optional camera roll & pitch stabilization.
Connections for battery voltage monitoring with a buzzer are available. The board can be powered with a separate BEC and has a power available + status LED.
This “commercial” available PCB is an upgraded version of Warthox his round adapter board. The board can be used for a Tri- ,Quad-, Hexa, & Y6-copter together with all the features of the MultiWii1.6 version. It has an on board 3.3V regulator.
34 comments
Hi oscar
I buy an arduino board mega2560 .
because of the lack of the useful catalogue, it is difficult to use it. please help me how I can read gyro information and furthermore the position such as x,y and z through matlab simolink.
thank you for your consideration
Hi oscar . i am omi . I want to built a dual copter for collage project . I want to develop tranmitter and reciver and also control board on my own by assembling components . I m nt getting perfect circuit diagrams . I m nt able to buy ready made boards . Pls help me . Please rply me on my id
Hi Oscar,
I have a similar flight seteup to the one you made posted above. I am having a Problem with my ITG3200 sensor however. Whenever I run my arduino code via USB Setup to my quad, i can read the gyro values, and enter them directly into the PID Controller, and then from there to the servo Output. I can see in the Serial port that I the Motors are getting the values that I want them too: HOWEVER, when I plug my Lipo battery in, I CANNOT read the sensors. When I plug the lipo battery in, the program simply will stop by Initiation of the ITG3200. Ive heard that this can be a Timing issue however I have been unable to solve this problem for the last two weeks. I was hoping maybe somebody with way more experience might be able to point me in the right direction.
Thank you for your time!
Chris
Hi Oscar,
I want to build a quadcopter with a flight controller as SAMD21. How can i program this board? recently i have seen that arduino zero uses the same controller on its board. After lot of research i found a arduino zero board bootloader and loaded into SAMD21 xplained board. I programmed the SAM with arduino IDE with simple blink program and it worked.
But i don’t know whether it supports as a flight controller in building a quadcopter. What requirements a controller should have to use it as a flight controller?
Iff it supports in building quad then can i add GPS to it to make it autonomous in future?
Please help me out. I am running out of time, i choosed this as my academic project. I had searched lot of websites but nothing found helpful. Your blog is so good it helped me in clearing some concepts and i feel greatful if i get some help in dealing with this controller.
Thank you.
sorry i don’t know this board.
Hi Oscar,
i have already asked for circuit diagram of your flight controller because i’m also working on same project,
i again request you to send it on my email id :[email protected]
it will be great help from you.
HI Yash, circuit is very simple, the pins on the board are just extended from the ARduino board pins… sorry i don’t have any circuit diagram i can give you.
Hi Oscar
I found this diagram for multiwii with arduino.
instructables.com/files/orig/FR3/6JWO/I1MQ5UVW/FR36JWOI1MQ5UVW.png
This is not spam. Just to help the below ones asking for diagram…
Hi Oscar,
i on ont the same project of building ardupilot,
i want your flight controller circuit diagram & name of components,
it will be a great help from you. plz send it on my email : [email protected]
this is only the place where i can get good guidance
Hi Oscar,
I am working on the same project with arduino uno and mpu6050. Can you send me the connection details of your version at my email id: thakursarvesh89 ATgmail.com asap…
It would be of great help.
and lastly, this is one of the best tutorials about the topic on internet :)
HI!
thanks for ur blog it very nice & actually i m a beginner and i want to build an arduino uno shield for quad-copter
i ve mpu 6050(gy-521)(ACCELERO & GYRO)+
GY-273(MAGNETO)+GY-68(BERO) so i want to know how to connect them together with arduino ????
shall i connect slc & sda of all sensor togerther to connect to arduino or i use individual pin for connection??????
plzzzz plzz pllzzzzz help me immiediately!!!!
for i2c connection you can use the same pins on the Arduino, you just need to speicify the address for each device.
Hi Mr Oscar, so glad to have found your blog to help me out in a Quadcopter project I am currently working on. I am currently using an Arduino Pro Mini 3.3V with the sensor, SEN-10724 and Futaba R6208SB Receiver. My adapter design is quite close or similar to what you have shown above.
I would like to make sure if I’m right on the color representatives of the wire when signal is being sent from Receiver to my Arduino adapter. Does brown represents ground, orange representing power signal and the yellow representing signal?
I expect my receiver LED to light up when I connect it to my Ardiuno shield with the power generating from the computer itself, but it doesn’t light up. I was thinking if I solder the pin wrongly which caused it to not light up.
yes your wire assumption is correct.
To power the receiver, you need external power source, computer USB isn’t enough, it’s quite “current hungry”.
my quad keeps on flipping to left
1.i have calibrated the esc
2.the y axis is the front of the quad where the gy 87 sensor y axis lies
3.motors are moving in right direction as per the i check them without props
4.even the propellers are connected properly so they create a pressure between them
so pls guys help me with it
hoping for a positive reply
hi oscar, can you please send me the exact connection diagram of arduino shield for quadcopter that you have made using arduino nano? please send that to [email protected]
thank you oscar
hi addy, if you got the connection details it would be of great help if you forward me at thakursarvesh89 ATgmail.com
Can u please send me exact connection diagram of flight controller that what you have made using arduino nano.. iam new to this field.. I am planning to do the same one for my project ..please send that to
[email protected]
Thanks in advance
Hey!
I am trying to build an quad using Arduino Mega 2560 using multiwii and i want to ask you if you have to connect all the grounds from the ESC to Arduino? Or you can connect only the signal pins?
Thank you.
only signal wires are needed. But usually it’s best to connect the ground as well.
Hi Oscar
I built a multiwii board with Arduino nano and MPU 6050.I compiled and uploaded the mw v2.3 on my board on a h-copter but when i arm it, when it want to flying it give yaw to left or right(sometimes left , some times right) without any stick .so it’s very Unstable.please help me.This is my source code:
http://uploadboy.com/imeq2gmzyrd3.html
Please see it.Is there any problem in my source code?
Thank you and sorry for my bad English.
Hi Oscar
this is the part of arming in the source code:
/******************************** ARM/DISARM *********************************/
/* optionally disable stick combinations to arm/disarm the motors.
* In most cases one of the two options to arm/disarm via TX stick is sufficient */
#define ALLOW_ARM_DISARM_VIA_TX_YAW
//#define ALLOW_ARM_DISARM_VIA_TX_ROLL
and in MW conf app on PC my yaw change from 1000 to 2000 but my board isn’t arm!!
can you help me?
Hi,
What is your MINCHECK?
your throttle must be lower than MINCHECK to arm. I usually have it at 1100.
Lowering will make it less likely to arm
Also, calibrate your ACC first too.
Hi Oscar
I want to build a flight control with Arduino nano and an IMU(mpu5060 or gy80).but i dont know anything about its program.Do I have to write the program or i can get a program from Arduino library?
thanks
there is an open source program for Arduino, called “multiwii”.
I already have an FC on that small 330 quad. I have programmed processing with the Arduino and know how to build things and program them… I am just looking for a fun project! So should I program it myself or install a program.
Thanks!!
P.S. – I have experience with rc modeling and building!! I learned from my Dad! (who also taught me Arduino and programming it!)
Hi!
I am 12 and building a FC board similar to this one that you built and I am wondering if I should program the arduino myself or if I should simply install a pre written program.
Thanks!
Hi again, just buy a flight controller, it’s A LOT easier, and more reliable.
I recommend the KK2, if you are just starting this hobby.
Hi,
I replicated quite close your shematic. I took latetest mutiwii firware and I configured as:
#define NANOWII
#define QUADX
#define MPU6050
burned, tuned with MutliWiiconfig 4 linux. All throtle, pitch, yaw, rool aux1 – ARM, from turnigy works ok.
I dont have the esc yet, but I osciloscoped the motors PWM.
I can see the % of PWM changing from equidistant squared wave to combwise form . throotle works fine.
But,
Picth roll yaw does not seems to chnage the PWM on motors, though tthe UI shows the levels progres bars OK.
Inclining the board seems also that does not trigger any PWM chnage, though the UI shows the inclination angles OK.
Any ideas. Thx.
Marius C.
what happen if you increase your PID gain?
also, the yaw/pitch/roll would only respond if throttle is up. Make throttle 50% then change pitch roll see if that works.
Mr Oscar,,
thank you for your blog, its very informative.Can I ask you one question?Before I ask you , I want to tell you me problem.I learn a lot of example to create arduino flight controller. Most of the example explain about Arduino uno and wii motion + and nunchank. Some Arduino + IMU like your example.But I don’t find any one write about
(Arduino , wm+ , nunchunk , gps ) or ( Arduino + IMU + gps ). My question is how to wire ( Arduino + imu + gps )
or ( Arduino + wii motion plus + nunchunk + gps ).Please guide me, how to.
Thanks
google “Multiwii GPS”, i think the multiwii software supports gps and IMU, which the code is written for arduino.
Hi,
thank you for your blog, its very informative.
Can you please give me more details about the receiver? i might have missed it but your board has pin settings for it but no actual receiver right? which receiver did you used?
Thankks
I use normal 5 channel RC receiver, the pins are used are labelled as “throt” “pitch” “roll” “yaw” and “mode”.