Make A Tiny Arduino Drone With FPV Camera - 19 Steps (With Pictures) - Instructables
Make A Tiny Arduino Drone With FPV Camera - 19 Steps (With Pictures) - Instructables
In this Instructable, we’re putting together a little camera drone that’s configured with MultiWii softwar
e and is seamlessly controlled through a DIY transmitter that’s also Arduino-based, making this a fully
Arduino-operated drone. Join me as we delve into the intricacies of DIY drone building, finding out wha
t it takes to assemble a compact yet powerful mini quadcopter that promises minutes on end of FPV r
acing.
Supplies
Let’s begin by selecting and making the desired frame for our drone.
The part that will hold all components together is the FPV drone frame. From this tutorial, you have the
option to either make it from popsicle sticks with my free parts blueprint for a wooden frame or 3D pri
nt your frame by purchasing the 3D model for a plastic frame. Both are just as light (2-3g) and sturdy f
or the job.
Purchase Your Copy of The 3D Printed Mini Drone Frame (3D Model):
https://cults3d.com/en/3d-model/game/mini-fpv-drone-frame-3d-printed-arduino-fpv-drone
To make the popsicle stick drone frame, we'll print out the blueprint sheet for the wood and rubber cut
outs which are glued individually onto popsicle sticks with PVC glue stick. Cutting out each piece is as
straightforward as scoring the outlines with a hobby knife. Also, we need to soak the most fragile part
s in superglue to prevent damage while cutting like the arms which will hold the motors. Additionally, p
ieces like frame posts can be cut from a matchstick.
After cutting out all of the frame pieces, we'll help reduce the weight of the end frame by sanding dow
n each piece till they're as thin as a credit card except for the four arms which need their original thick
ness for strength. Once the frame is assembled according to the image, the frame should look like tha
t of one from a larger 5-inch FPV drone. Next, we'll poke a couple of holes for the power connector to p
rotrude.
Looking back at the blueprint sheet, let's take some bicycle inner tube rubber and use the stencils to c
ut out the drone's bumper guard strips and glue those to the frame. To strengthen the frame even mor
e, we’ll coat the most vulnerable areas with a lick of super glue.
However, if you choose to save time and cut out the fiddly work by instead 3D printing your drone fram
e, consider purchasing my 3D model of the frame by clicking the link above. Throughout this tutorial, h
owever, we’ll stick to using the wooden frame out of the two options to keep the drone more "DIY-frien
dly" for all.
To ensure connections are on-point, following along to the tutorial using the circuit diagram is crucial i
n succeeding with this Arduino drone.
As we move forward with this guide in working on installing modules, let’s pay close attention to the wi
ring with every following step in the drone’s circuit assembly, especially taking note of the motor driver
circuit.
Step 3: Motor Driver Assembly
Next up, let's work on making the quad-transistor motor driver board for driving the coreless motors at
varied pulses (PWM) without damaging the microcontroller with high currents.
Components to make it can be found in old electronics. I found my resistors and diodes this way. If no
t salvaged from scrap electronics, the Field Effect Transistors, Diodes, and Resistors can be found link
ed at the start of this Instructable.
When dealing with sensitive components like the field-effect transistors (MOSFET) we’re using, let’s be
sure to wear an electrostatic discharge wrist strap to prevent zapping them with the built-up static elec
tricity from your body.
We'll start by soldering the N-channel MOSFETs (SI2300 - 3.6A transistor) onto 3 solder pads each, foll
owed by the Schottky flyback (protection) diodes (SS14, 1N5819, or other Schottky diodes) with Anod
es to the MOSFET’s Drain pins, and the 10K Ohm pull-down resistors across the lower pins (bridging th
e Gate and Source pins). We'll finish off by soldering a black wire and line for ground at the bottom con
necting all the MOSFTETs’ Source pins to one node and the red wire with power line at the top connect
ing all the diodes’ remaining Cathode pins together as the power input. Ensuring we use a well-tinned
soldering iron, a set of tweezers for component placement, and a set of helping hands or stand to ass
emble this custom board.
We should end up with 4 sets of each of the 3 SMD or surface mount components soldered tightly on
a perforated prototype board - keeping in mind that all components used should match the above valu
es and labels to ensure a properly working motor driver board compatible with the Arduino.
Once all is soldered, let's cut, clip, and sand the little board down to 0.5x6x20mm, reducing its weight a
nd size to no more than 1 gram. We’ll also hook up some colored signal wires to the MOSFETs’ Gate pi
ns. Color is important to differentiate each wire from one another when the board is closed off.
Let's continue the drone's assembly by installing this set of brushed 6x14mm coreless motors into our
frame secured with superglue.
Choosing the drone’s motors is an important step that determines whether or not the drone will take of
f.
We’re using a set of 4 coreless motors designed specifically for mini drones as such that have 2 pairs
of clockwise (CC) and counter-clockwise (CCW) motors normally indicated by the red-blue and black-
white wire motor pairs. One of these motors with a propeller attached shall produce no less than 12 gr
ams of thrust on its own. 15 grams of thrust per motor is recommended for satisfying flight - an ideal t
otal thrust of 60 grams for the drone to fly well.
Testing these motors first with matching wire polarity using a battery before installing them helps to e
nsure proper spinning direction before securing them with glue. The propeller/motor spinning directio
n is covered in a later step.
Step 5: Connecting and Securing Motor Wires
We'll begin by first securing the wires with zip ties which also serve as the drone’s feet/landing gear w
hen facing down.
Let’s connect the motor wires directly to each corresponding flyback diode according to the diagram w
hich you can find linked below. The flyback diodes we added earlier that the motors connect to protect
the transistors from receiving back EMF currents which could result in frying them as they are sensitiv
e components.
Each motor’s negative wire (blue or black) connects to a MOSFET’s Drain pin or diode’s Anode pin and
positive wire (red or white) connects to a diode’s Cathode pin. With a power supply connected to the dr
iver’s supply wires, we can run a quick test to see that each motor runs when pulling the transistors hig
h via applying a voltage of 3.3V to each driver signal wire.
Step 6: Installing Radio Tranceiver
To install our drone’s radio communication module (NRF24L01) which receives data from the transmit
ter, we’ll begin by desoldering its pins and replacing them for thin wires to both reduce weight and sav
e on space, allowing it to be firmly seated in the frame.
Desoldering its pins is as straightforward as having the module held up by a set of helping hands and
using a pair of pliers to pluck one pin at a time while applying heat to the corresponding solder pad ab
ove.
With the pins removed, we’ll instead solder colored wires for power, ground, and data to help recognize
each wire sticking out when the module’s header is covered.
The radio transceiver can be superglued or simply inserted with a tight fit in the cut out area at the rear
of the frame.
Step 7: Making the Flight Controller
You read that right! We’re making a DIY flight controller for the drone based on an Arduino board and
Motion sensor neatly put together in a compact form factor.
We’ll make the flight controller using an Arduino Pro Mini Microcontroller board (3.3V 8mHz version) p
aired up with the MPU6050 Gyro + Accelerometer motion sensor to determine the drone's orientation i
n flight. We'll mount and connect it to the Arduino using only a 2-pin header for two-wire (SDA & SCL - I
2C) communication and a couple more wires for power. As the motion sensor works with voltage rang
es between 3.3V and 5V, it’s recommended to power it directly from the LiPo battery for a consistent p
ower supply.
To prevent the motor driver’s motor-induced EMF currents from affecting sensitive electronics on the fl
ight controller, we’ll cut a sheet of copper or aluminum foil to sit between the flight controller and the
motor driver. Let’s ensure this copper sheet is cut to the approximate size of the Arduino Pro Mini and
have it taped up with clear tape to prevent short circuits from happening. We’ll scrape a little tape off o
n an edge and solder a wire for GND. This shield is then glued to the underside of the Pro Mini with a f
ew dabbles of superglue and the grounding wire is then soldered to one of the Pro Mini’s GND pins. No
w we have an EMF protective shield for the drone.
Step 8: Wiring the Drone
Now, let's finish off installing modules by securing a 5V passive buzzer (Lilypad buzzer desoldered fro
m PCB) with superglue right under the front of the drone so it can indicate its status and the switching
of modes via sound. The buzzer’s marked plus (+) pin is wired to the Arduino’s digital pin 8 and the min
us (-) pin to GND.
Let's solder a JST connector with wires to the RAW pad (Voltage-In) and GND pad for the battery to po
wer the flight controller.
We'll continue with the wiring of the motor driver and radio transceiver. Starting with wiring the radio m
odule to get powered from the MPU6050’s 3.3V regulator as it has filtering capacitors which works in
perfectly reducing the need of additional capacitors. Then, we'll wire the motor driver’s power input wir
es from the rails we soldered earlier to the power input solder pads where the battery is connected to.
Then, we should have diverted wires going out to the right for driving the motors and wires out at the l
eft of the drone for the radio module's SPI data connection. The NRF24L01’s CE and CSN wires are sol
dered to Arduino pins 7 and 10, MOSI and MISO to pins 11 and 12, and SCK to pin 13. Google “nrf24l01
pinout” to understand which connections on the radio module I’m referring to or simply follow the diag
ram.
We’ll then give the FC control of the motors by soldering the motor driver’s four signal wires colored Or
ange, Blue, Green, & Purple to Arduino pins 6, 9, 5, & 3 - following that order.
Let’s be sure to keep these connections as short as possible while using thin wires (30-gauge electrica
l wire).
Step 9: Installing the FPV Camera
Now, let’s install the drone's FPV camera - a 3-gram, 600TVL resolution First-Person-View (FPV) camer
a with a built-in video transmitter. We’ll clip off its connector and install the camera in the front of the d
rone secured with superglue.
The camera should be wired and fed directly from the battery's power (Camera’s voltage input - 3.3-5.5
V).
Step 10: Mounting Cover and Propellers
Next, let's close up the drone with its popsicle stick wooden cover.
To assemble and finish the cover piece, let’s secure the JST battery connector with its pins through the
two holes made earlier and have the power wires soldered to the pins through the other side while kee
ping in mind the right wire polarity.
To mount the battery onto the cover piece, instead of velcro straps, we'll secure a piece of a larger rub
ber band to hold the battery strapped to the top of the drone. After that, we can finally close things up
by super gluing it to the 4 posts.
For the propellers, we're using 4-bladed types. The propellers can be two-bladed, but should measure n
o more than 32mm in diameter for this drone to avoid hitting onboard components. Once mounted wit
h attention to how the blades are oriented, the motors with their propellers of appropriate directions sh
ould turn in such a way pushing air downward.
Step 11: Connecting Drone for Programming
To program the drone, we'll need this module called an FTDI or USB to Serial converter for which we'll
make a bridging connector so it can connect to the Arduino Pro Mini in the drone (See product link at t
he top).
The bridging connector consists of a 6-pin female header wired to a 4-pin male header for TX, RX, VCC,
and GND pins which connects to the back of the drone as seen in the image.
When connected to the drone, the FTDI should have its 3.3-5V jumper for power unplugged - the only s
ource of power to the drone should be from its battery.
Step 12: MultiWii Code
The drone will run on a vastly complex yet versatile Arduino code based on a multicopter software call
ed MultiWii with multiple tabs to manage every onboard drone feature including many other modules t
hat are not used in this drone and overall configuration.
With the drone connected to our PC via the FTDI converter, we can open the code with all of its tabs in
the file (code is linked at the bottom of this blog). Credits go to Electronoobs on YouTube for the adapt
ed MultiWii drone code - https://www.youtube.com/watch?v=J0x4ChjUS00&t=961s
In this guide, we will not dive deep into how the code works nor how to set up every pin configuration a
s this has already been done for you. Assuming you've followed my exact drone wiring, we don't need t
o change anything related to hardware in the drone’s code. However you'll most likely need to swap ar
ound a pair or two of radio channel values if your transmitter's joystick movements appear reversed in
the configurator. This can be done in the “NRF24_RX.cpp” tab on lines 84 through 90. In case you want
to change the radio transceiver’s CE & CSN pins, go to line 17 in this same tab.
Another change you may need to make is to swap the yaw direction if your drone appears to steer the
opposite way. This can be done in “config.h” on line 229 by swapping the yaw direction value from “1” t
o “-1” or vice versa. “Config.h” also contains so many other configuration parameters for your drone th
at you’ll have to explore yourself. Read the startup message in the first code tab “MultiWii_RF24” to kn
ow where other important parameters can be changed in the code.
To upload the code to our drone, let's first go to “Tools” and make sure we have the Arduino Pro Mini b
oard selected along with its corresponding processor with matching voltage rating, and your board’s C
OM port. For a firm data connection, it’s best to hold down the programming connector and hit upload.
Just when it reaches the uploading stage, we need to immediately press the Arduino's reset button on
ce and see that it begins uploading code to the board via the writing and reading responses in the term
inal.
Step 13: Arduino Transmitter
Before we configure the drone in MultiWii, let's have a closer look at the transmitter which will allow us
to control it.
I made this 3D printed Arduino transmitter based on the one seen in a YouTube video from the channel
“EmiloStuff”, using his transmitter enclosure 3D design with some of my own modifications and added
parts such as the two toggle switches, charging port, and voltage divider for monitoring it's voltage to
know when its battery is going low. You can find the free modified enclosure design and wiring diagra
m linked below this blog.
When building our transmitter, including the two toggle switches is important as they will be configure
d later for arming/disarming the drone and toggling the beeper alarm.
The transmitter’s code that's specifically for controlling our drone can also be found linked below and
within it, you'll see where to adjust pin definitions based on your hardware.
Step 14: MultiWii Configurator
Once we have our transmitter, we can open the multirotor configurator software called MultiWii throug
h opening its folder and selecting the version of this software that corresponds to our computer's oper
ating system. Once the program file is opened, it should look like the image above.
Let's connect to our drone by opening the corresponding COM port it’s on and hitting “Start”. Once con
nected, we should see the drone icon appear at the bottom right and how the software interprets the d
rone's orientation.
With the transmitter turned on, if all works with the connection, each joystick movement should come
up on the software. This is a good time to check that our thransmitter’s sent joystick values are display
ed accordingly with Roll, Pitch, and Yaw centered and throttle at 0.
Above is where we select switch channels for toggling modes and initiating the drone. Well tick a "hig
h" level box on AUX1 for arming the drone and tick the same box on AUX2 for activating the beeper ala
rm to know the drone's whereabouts through hearing. After that, let's click “WRITE” and then “READ” to
save those changes. Now, when flicking on the arm switch, the drone should allow for its motors to spi
n up when increasing the throttle. Also, the buzzer should beep when the corresponding switch is flick
ed.
Step 15: Fine Tuning
Before we go out and fly, while the drone is connected to our computer, let’s quickly go through some v
ery basic PID tuning in MultiWii to smoothen out any potential pitch and roll oscillations.
We need to gradually lower the “Roll” and “Pitch” values on the P column of the P-I-D until those oscilla
tions disappear. I got good results at 2.2 and even better stability at 1.6 on both the pitch and roll. How
ever, this value may vary from drone to drone and it’s much better to play around with these values you
rself to see what works best for your hardware.
Under the PIDs, we can reduce the drone's sensitivity and reactiveness to joystick inputs by lowering th
e RATE and raising the EXPO value to get a smoother-looking curve on the graph which results in a les
s reactive drone as it tends to be super sensitive by default.
Once again, we need to hit “WRITE” and then “READ” to save those changes.
Step 16: FPV Headset
To view the FPV video feed, we’ll need a set of 5.8ghz FPV goggles/headset (see product link at the to
p), we should see the drone's FPV video feed displayed live when connected to the powered drone.
Pairing is as simple as turning on both the drone and goggles, matching the camera’s channel by pres
sing the “Auto Search” button on top of the headset to connect with the camera. When successfully pa
ired up, we should see the drone’s live video feed displayed.
Recording video is possible on such a headset if it has a built-in DVR. Most of these cheaper FPV head
sets contain a micro SD card slot at the top for storing recorded videos. We can make a recording by p
ressing the record button on top to start and stop while confirming the monitor’s recording status thro
ugh looking at whether there’s a blinking red dot on screen.
Step 17: Flying the Drone
To fly the drone, let’s first choose a suitable battery for it.
We can use any 20C or higher 150-250mAh LiPo cell (3.7V) that weighs no more than 7 grams and sim
ply plugs into the connector on top, turning on the drone. To balance it, we can slide the battery either
way depending on how it tends to veer off in flight. All up, the drone comes in at 30 grams. With a thru
st to weight ratio of about 2 to 1, it is light enough to be considered a "light wind" flier according to the
drone thrust scale chart.
To get set up with the drone, you simply power it on while lying on a flat surface, turn on the transmitte
r, followed by calibrating the drone's gyro with the following joystick movements - left stick pointed to
bottom left corner and right joystick pointed down at the same time. After waiting for around 20 secon
ds for the gyro to fully calibrate - you can flip the arm switch to unlock the drone and the sky is yours!
If you’re inexperienced with flying drones, I’d suggest you watch some YouTube tutorials on learning th
e stick movements or try flying an existing non-FPV toy/brand drone that is more beginner-friendly for l
earning the controls.
Step 18: Troubleshooting Tips and Key Takeaways
From my personal experience in making this little drone, I went through a heap of struggle and misund
erstanding before I managed to get it flying. I faced issues such as the drone not having enough power
to lift off, the Arduino kept resetting - preventing throttling up, and out-of-sync motors divided in diago
nal pairs causing aggressive pitch/roll wobble.
Below, I list the things I tried that worked and didn’t work to counter the issues mentioned above as we
ll as some tips and other measures you can take note on to get your own Arduino drone off the groun
d.
1. Using weak motors (6g of thrust) of lower RPM that were all designed to spin only one way, not c
ontaining the counter direction pair - Preventing the drone from getting lift.
2. Adding filtering capacitors at motor leads and power inputs of Pro Mini, NRF24L01, and MPU605
0 - Did not stop the drone from resetting.
3. Connecting motor driver signal wires to Arduino’s PWM pins through resistors - Did not stop the
drone from resetting.
4. Changing the hardware and software PWM frequency from 500Hz to a higher value in the code i
n hope of running the motors smoothly to reduce electrical noise - Did not stop the drone from re
setting.
5. Relying solely on perfectly stable landing gear to eliminate Pitch and Roll wobble - Did not stop th
e drone from wobbling off in the air.
Troubleshooting Tips:
Use powerful coreless motors with higher RPM and bidirectional pairs
Shield flight controller with copper/aluminum foil beneath or give sufficient spacing (spacing ma
y only be practical with bigger drones)
Raise or lower P column PID values for Pitch and Roll. If the drone wobbles fast, lower the value.
If it wobbles slowly, raise the value. Keep adjusting incrementally until it’s flying stable.
Add a 10 microfarad capacitor to power inputs of the NRF24L01 if there’s no radio connection.
Do a diode test on transistors (MOSFETs) if one or more motors don’t seem to work properly. Re
place a MOSFET if necessary.
Key Takeaways:
- Construct the drone's frame from popsicle sticks using provided blueprints or purchase a 3D-printed f
rame for added convenience. Following the frame blueprint, parts can even be cut out from flattened P
VC pipe.
- Assemble a custom motor driver board with purchased or salvaged components to safely drive the c
oreless motors without damaging the microcontroller.
- Select and install coreless motors that provide sufficient thrust for stable flight, ensuring proper spin
ning direction and propeller orientation.
- Keep the drone’s weight to a minimum by selecting the smallest form factor of battery with 150-250
mAh current capacity, sizing down or choosing modules that are as small as possible - every gram cou
nts.
- Wire the drone's components meticulously, including the radio transceiver, flight controller, and FPV c
amera, to ensure seamless operation.
- Program the drone using MultiWii software, adjusting PID values for smooth flight and configuring tra
nsmitter controls for arming and mode switching.
- Troubleshoot common issues such as Arduino resetting, insufficient lift, and motor synchronization,
employing strategies like shielding sensitive electronics and adjusting PID values.
Step 19: Conclusion
Taking on the fun challenge of building a miniature DIY FPV drone controlled entirely by Arduino hardw
are has been an exhilarating and rewarding experience. From crafting the frame out of scrap parts suc
h as popsicle sticks to meticulously wiring each component and fine-tuning the flight characteristics, t
his project has offered a wealth of learning opportunities and challenges for us makers
Through the integration of readily available Arduino-compatible modules and custom motor driver boa
rds, we've created a compact and powerful mini quadcopter capable of delivering thrilling FPV racing e
xperiences right in the comfort of our living rooms.
As we've navigated through the intricacies of DIY drone building, we've learned valuable lessons in ele
ctronics assembly, coding, and troubleshooting. From selecting the right components to tuning PID val
ues and configuring transmitter controls, every step has contributed to our growth as makers.
While challenges such as Arduino resetting and motor synchronization may have tested our resolve, th
ey've also provided valuable insights and opportunities for experimentation. Through perseverance an
d ingenuity, we've overcome these obstacles and emerged with a deeper understanding of drone techn
ology and its applications.
In conclusion, building a miniature DIY FPV Drone controlled entirely by Arduino hardware is not just a
bout creating a flying machine - it's for the experience-filled learning and the fun of being able to say yo
u’ve built your own flying drone. As we take to the skies with our custom-built drone, we carry with us t
he knowledge and experience gained from this project, ready to tackle new challenges and push the b
oundaries of DIY!
To see the video tutorial and how the drone flies, watch my YouTube video embedded at the start of th
is Instructable.
Happy making!