Build an Arduino shield for Quadcopter – Arduino Adapter

by Oscar

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.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

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.

IMAG0957

arduion nano quadcopter adapter IMAG0967

This design has a few disadvantages, and there are some quick fixes I applied. Here are some thoughts.

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)

hex6

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.

Yorbid Nano interface board

Round adapter board by Warthox. A proven board originally designed by Warthox. The board can be used for a Tri- and Quadcopter.

Warthox original round board

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.

Pepetone nano1 shield

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.

MutiWiiCopter.com_paris_board

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.

34 comments

roham 14th May 2016 - 5:03 pm

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

Reply
omi 22nd December 2015 - 1:51 pm

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

Reply
Chris Greendyk 28th November 2015 - 11:58 am

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

Reply
Raman 22nd November 2015 - 3:56 am

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.

Reply
Oscar 24th November 2015 - 6:00 pm

sorry i don’t know this board.

Reply
Yash Thakur 11th August 2015 - 1:48 pm

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.

Reply
Oscar 12th August 2015 - 4:44 pm

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.

Reply
Tech Pages 18th September 2015 - 5:51 pm

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…

Reply
Yash 10th August 2015 - 2:11 pm

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

Reply
Sarvesh Thakur 4th July 2015 - 4:36 pm

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 :)

Reply
DEVIL KING 13th April 2015 - 2:45 pm

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!!!!

Reply
Oscar 16th April 2015 - 12:09 am

for i2c connection you can use the same pins on the Arduino, you just need to speicify the address for each device.

Reply
ginnyc 6th April 2015 - 9:25 am

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.

Reply
Oscar 8th April 2015 - 12:25 am

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”.

Reply
yash jhunjhunwala 26th March 2015 - 10:00 am

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

Reply
addy 20th February 2015 - 4:53 pm

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

Reply
Sarvesh Thakur 4th July 2015 - 4:38 pm

hi addy, if you got the connection details it would be of great help if you forward me at thakursarvesh89 ATgmail.com

Reply
lohith 11th February 2015 - 2:09 pm

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

Reply
Cata 30th October 2014 - 9:54 pm

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.

Reply
Oscar 31st October 2014 - 12:23 am

only signal wires are needed. But usually it’s best to connect the ground as well.

Reply
MRH 28th August 2014 - 1:50 pm

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.

Reply
osdar 21st August 2014 - 1:51 pm

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?

Reply
Oscar 21st August 2014 - 2:03 pm

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.

Reply
MRH 16th August 2014 - 9:30 pm

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

Reply
Oscar 16th August 2014 - 10:26 pm

there is an open source program for Arduino, called “multiwii”.

Reply
Tristan Semmelhack 28th July 2014 - 6:09 pm

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!)

Reply
Tristan Semmelhack 28th July 2014 - 4:06 am

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!

Reply
Oscar 28th July 2014 - 9:43 am

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.

Reply
marius 16th May 2014 - 12:02 am

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.

Reply
Oscar 16th May 2014 - 9:59 am

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.

Reply
kyawkhaing 4th March 2014 - 5:19 am

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

Reply
Oscar 12th March 2014 - 4:51 pm

google “Multiwii GPS”, i think the multiwii software supports gps and IMU, which the code is written for arduino.

Reply
desh 9th January 2014 - 9:10 pm

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

Reply
Oscar 9th January 2014 - 11:20 pm

I use normal 5 channel RC receiver, the pins are used are labelled as “throt” “pitch” “roll” “yaw” and “mode”.

Reply