Introduction: Voice Controlled Arduino Drone

Picture of Voice Controlled Arduino Drone

The drones are very good toys and tools, but usually they haven't any extra skills. I love to fly any R/C model and I just wanted to make a R/C drone that's a little bit smarter than the usual models. That's why I developed this mini voice controlled tricopter robot. The main concept is pretty easy, the drone is based on an Arduino Pro Mini board, the motors can be controlled through PWM pins. I made a bluetooth connection with my Android smartphone and using an app the phone transmits words through serial communucation to the HC-05 bluetooth module to the Arduino board. The best thing is that this project didn't costs more than 11 dollars.

I made a "motor shield" or something like that using a few transistors that increase the current of the digital output pins. I used 2N2222, but would be better to use a SMD power transistort. The drone works well with both. The propellers and the motors are bought from eBay.

Some features:
• speech controlled
• Arduino Pro Mini based
• voice recognition with a smatphone
• moves left, right, backward, forward, upand down
• hasn't build in gyroscope, you should make a code that holds the drone in balance, this can be made after a few experiments
• low weight, 22 grams, you can add 5 extra gramms

I made a tricopter because I have only 3 motors with propeller, but of course you can make a quad or hexcopter.
You'll need some experience in soldering, but isn't so hard. Only the motor shield requires some skill.

Step 1: The Sofware

Picture of The Sofware

Before gathering materials write upload this code to your Arduino Mini Pro. If your drone is made perfectly this code will work. If isn't you should modify the code at the end. To programm the Arduino Mini I used an Arduino Uno that was set on 3.3 volts.

1. Arduino Mini Pro to Arduino Uno

2. RX --> TX
3. TX --> RX
4. VCC --> 3.3v
5. GND --> GND
6. RST --> RST
Now upload the code and you'll have a programmed board. I wrote some explanations in the sketch, but if you have questions feel free to ask. The Arduino analyzes the word through serial reading and reacts to them.

Step 2: How the Code Works?

The code is relatively simple. Analyzes the voice variable and reacts to them by controlling the motors. After turning left or right the Arduino quickly changes its value to the original, so your drone doesn't need a gyroscope, because automatically turns back in his oroginal position thanked to the sofware. This makes your flight safe and fun. :)

//copy this code in the IDE
<p>String voice;<br>int motor1 = 3; //Connect motor 1 To Pin #3 left motor
int motor2 = 9; //Connect motor 2 To Pin #9 rear motor
int motor3 = 11; //Connect motor 3 To Pin #11, right motor</p><p>//--------------------------Call A Function-------------------------------//</p><p>//the values after each anlogWrite commands are controlling the motor's speed, the max value is 255</p><p>//if your drone isn't in balance try to modify the values, example change 130 to 135 if your drone goes backward </p><p>void middlespeed() {
  analogWrite(motor1, 130);
  analogWrite(motor2, 130);
  analogWrite(motor3, 130);
}
void fastspeed() {
  analogWrite(motor1, 255);
  analogWrite(motor2, 255);
  analogWrite(motor3, 255);
}</p><p>void lowspeed() {
  analogWrite(motor1, 100);
  analogWrite(motor2, 100);
  analogWrite(motor3, 100);</p><p>}
//-----------------------------------------------------------------------//
void setup() {
  Serial.begin(9600);
  pinMode(motor1, OUTPUT);
  pinMode(motor2, OUTPUT);
  pinMode(motor3, OUTPUT);
}
//-----------------------------------------------------------------------//
void loop() {
  while (Serial.available()) { //Check if there is an available byte to read
    delay(10); //Delay added to make thing stable
    char c = Serial.read(); //Conduct a serial read
    if (c == '#') {
      break; //Exit the loop when the # is detected after the word
    }
    voice += c; //Shorthand for voice = voice + c
  }
  if (voice.length() > 0) {
    Serial.println(voice);
    //-----------------------------------------------------------------------//
    //----------Control motors----------//
    if (voice == "*start motors") {
      lowspeed(); //The motors start spin, and the drone slowly comes downer if already flies
    }
    else if (voice == "*fly low") {
      middlespeed(); //Fly the drone, stay in one place
    }
     else if (voice == "*fly higher") {
      fastspeed(); //Maximum motor speed, the drone will go upward very fast
    }</p><p>    //----------Directions----------//
    //The drone can be controlled the best in middlespeed state
    else if (voice == "*go left") {
      analogWrite(motor1, 100);
      delay(450);
      analogWrite(motor1, 130);
    }
    else if (voice == "*go right") {
      analogWrite(motor3, 100);
      delay(450);
      analogWrite(motor3,130);
    }
    else if (voice == "*go backward") {
      analogWrite(motor2, 100);
      delay(300);
      analogWrite(motor2, 130);
    }
     else if (voice == "*go forward") {
      analogWrite(motor2, 200);
      delay(350);
      analogWrite(motor2, 130);
    }
     else if (voice == "*right back") {
      analogWrite(motor1, 200);
      delay(350);
      analogWrite(motor1, 130);
    }
     else if (voice == "*left back") {
      analogWrite(motor3, 200);
      delay(350);
      analogWrite(motor3, 130);
    }</p><p>    //-----------------------------------------------------------------------//
    voice = "";
  }
} //Reset the variable after initiating</p>

Step 3: Parts and Tools

Picture of Parts and Tools

Tools:
For this project you'll need a soldering iron, a glue gun, a variable power supply unit and a PC with Arduino IDE.

Parts:

Main, most important parts:
Arduino Pro Mini 3.3v clone, but it's better to buy the original Arduino Mini 05 board
3 Motors
HC-05 Bluetooth Module

Secondary parts:
• 2N2222 transistors (local hobby-shop, $0.1)
• 3 Propeller Blades (you can buy together with the motors)
• A Battery (mine is from an MP3 Player)
• Straws and a small lightweight plastic piece (from any store)
• Rubberbands (from a store)
• 100Ohm resistor (local hobby-shop, $0.05)

• Some Wires (local hobby-shop or salvage from other electronic stuff)

You can buy all main parts on the eBay. Click on it to open the link.

Step 4: Soldering...

Picture of Soldering...
  • Arduino Mini Pro to HC-05
  • RX --> TX
  • TX --> RX
  • VCC --> 3.3v
  • GND --> GND

Solder the two circuits together using short wires. It's very easy.

Step 5: How to Build the Tricopter's Frame?

Picture of How to Build the Tricopter's Frame?

Insert the motors in the bigger straws and glue a frame with the other straws, just like on the pictures. I bought very strong straws from a local supermarket and they hold the motors very strong, so they won't fall down. Behind the design are a lot of physics calculations. I can't explain these now formulas and rules but if you're interested read this article. Using those formulas given in link, you can design an own frame and drone.

Step 6: The Rear Motor

Picture of The Rear Motor

You need to make a small difference between the vertical axis and the rear motor's axis otherwise the drone will spin. 10 degrees are enough for this.

Step 7: Motors

Picture of Motors

You can see some metal sticks on the first picture, I plugged them into the endings of the motors. This is important, because you'll have a joining piont for soldering.

Step 8: Check the Polarity!

Picture of Check the Polarity!

On the pictures you can see how my motors should spin. I used my PSU unit and tried out every motors on 2.1 volts.

Step 9: The "motor Shield"

Picture of The "motor Shield"

Now you should make a small circuit that can be easily attached to the Mini Pro board. The circuit schematic shows you the connections but I missed the 10kOhm resistor because its value is too high, so it's better to use 100Ohm resistors. This circuit should be very small. Solder connection legs to the 9, 3, 11, GND and VCC pins just like me.

On the schematic are corrected the RX and TX with red font color.

Step 10: Soldering the Transistors

Picture of Soldering the Transistors

The appearence of this circuit is bad, but it's small and has a low weight. I soldered one more connector for the battery.

Step 11: Adding the Motors

Picture of Adding the Motors

And now it's time to use your soldering skills to solder the motors to the positive voltage source and to theirs transistor's collector. Sorry I haven't more pictures for this step, but I hope it's clear what should you do.

Step 12: The Done Circuit

Picture of The Done Circuit

The harder part is done. We are close to finish the project. Take your Arduino board and slowly connect to the motor shield. Be careful, do not damage or shortcircuit the circuits. Connect the battery to the device, and if the circuit's power LED lights you did a good job. :)

Step 13: Stabilize the Circuit!

Picture of Stabilize the Circuit!

Use two rubberbands and fix the circuit on the frame.

Step 14: The Application

Picture of The Application

Download this application from the Playstore: BT Voice Control for Arduino. Charge up your battery with a PSU or with a lithium polymer battery charger. If you're done try it out.

Step 15: First Flight

Picture of First Flight

As you can see at the first time I din't flew very good, but later after an hour of practice I became a good pilot. Sorry for the bad pictures, but the drone moved in the air. I crashed a few times, but nothing happened with my new gadget.

Step 16: How to Balance in the Air?

If your drone can't stay in one place in the air modify the analogWrite values in the code.

Step 17: Video

This video is made by a $5 Keychain Car Camera and has a very bad resolution and date is bad too: 2012... I don't know why. But you can see how the drone flew up the came down. The commands cannot be heard because of the very bad microphone of the camera. And wasn't very stable, because of the weight of the camera, so I can't move right or left in this video, only up, down, and forward.

Step 18: The End

Picture of The End

Thanks for watching! If you liked don't forget to give me a kindly vote. I really hope you'll enjoy to build this drone, it's very fun to make and to fly with this gadget.

Comments

ThomasV8 (author)2017-11-19

can i use arduino uno and hc-06?

FelipeB92 (author)2017-04-03

Great project! We're are trying to build 2 drones with our students, based on your project but we bumped into a problem: we got 5v arduino pro mini boards. Can the project be adapt to it? If yes, any suggestion on how?

Thanks

purushottamd3 (author)FelipeB922017-10-24

yes you can. i am facing the same problem,but i am using whole different Circuit and programme

LeonelB1 (author)2017-04-30

where do i connect the + wire of all the motors?

purushottamd3 (author)LeonelB12017-10-24

on output voltage pin in arduino

vikramd14 (author)2017-06-17

sir plz send how to control by mobile phone

purushottamd3 (author)vikramd142017-10-24

do you want to hack mobile or control it with phone? replay must

purushottamd3 (author)vikramd142017-10-23

i am making one and link will be posted soon

Tuan Ibrahim ZaimT (author)2017-08-14

hai.. what if i add servo,esc, and use brushless motor? do you have any arduino coding for servo and how to control the motor?

open this link
Check out this awesome Instructable.


https://www.instructables.com/id/Arduino-Wireless-Animatronic-Hand


and understand the code and modify it with your code

nsknaresh (author)2017-09-05

we should put arduino uno 3.3v or 5v

pls reply fast

purushottamd3 (author)nsknaresh2017-10-24

Arduino uno's operating voltage is 5v.not 3.3v,their have a pin for that you can use that but you can not get full speed on coreles motor because its rating is 3.7v

brianborjong (author)2017-09-20

what tools i use in arduino ide? the arduino pro mini? or the arduino uno?

you can use both,but you have to configure the Circuit.if you use pro mini 3.7v then you can operate whole​ Circuit with 3.7v bettery,but i you use uno or nano then you have to use 5v to 12v supply,and have to use resistors for with the help of voltage devider rule and then you can use transistor.their have pro mini 5v also be careful when you purchase.

SimonF90 (author)2017-10-01

Hey there, i would like to add a fourth motor for a quad drone style, but want to know what extra bits to add in the code, any help would be awesome thank you :)

purushottamd3 (author)SimonF902017-10-23

i am making one i will send you the link

SimonF90 (author)purushottamd32017-10-24

awesome thanks man :)

wait i have a question.sone blank pcb i saw have no straight copper connection yours is diffrent so does it work diffrently?

i meant straight copper connection

Its a dot board man

it uses the soldering lead for connection

thx for the info,but I'm still confused.Theres a blank pub with some straight lines that needs to be drill to stop current flow while some is exactly like the pcb that is used here

ask for phero board

Immediately reply when seen........ Hey could you pls tell where to connect the ground from the emmiter of the transistor to the arduino and also the positive end from motor to arduino???? Could u pls tell where to connect the pins... In

CraigM136 (author)2017-03-14

The diagram of the circuit and the pictures of the circuit look very different to me. It mentions that in the step, but it does not make sense to me. The diagram shows a resistor connected to the base of each transistor, but the picture shows a single resistor connected to either the positive or negative input from the battery. Can someone tell me if I should use the diagram or the pictures when making this project?

purushottamd3 (author)CraigM1362017-10-23

Circuit diagram is right but the Circuit is wrong that only fly up and downward,because of 1 resistor and pin r shorted,you have to use eache resistor for eache transistor

floduarte (author)2017-04-03

What transistor and what resistor must I use if my arduino pro mini is 5V rather than 3.c volts? what

purushottamd3 (author)floduarte2017-10-23

same

floduarte (author)2017-04-04

How do you know if I have uploaded the code correctly onto my pro mini board?

purushottamd3 (author)floduarte2017-10-23

by serial monitoring
send below code then tx and rex will be blinking together,and in the out pin if you connect a led with resistor that will lights up

"*fly haigher"
//with out " "

"*fly higher"

purushottamd3 (author)2017-09-16

can't find the motor on your link,plz prefer the rpm of the motor...that will help a lot....

WarenGonzaga (author)2017-07-27

This is awesome!

PavanV10 (author)2017-04-29

you can use fritzing software for building the circuit diagram

Pepex150 (author)2017-04-12

How do you charge the battery? do you disconect it, charge it and then connect it again?

PatelSagar (author)2016-09-24

Please can anyone tell me where the (+ve) wires of all the motors are to be connected. And also if the transistors are heating up as others have mentioned, what are the alternatives that i can use instead of those. I am new to this and would really like your advice. Thanks

eagleanurag (author)PatelSagar2017-03-12

try bc108 metal package transistor they are good in condition of heat

PatelSagar (author)eagleanurag2017-04-06

thnx

soumya samal (author)2016-07-19

I am a beginner can you please say what are the triangle with +mark connect to motor

eagleanurag (author)soumya samal2017-03-12

haha dude in my childhood i was also same as you those traingles are vcc it mean they are positive supply from the battery all the triangle will connet to each other

jason47pg (author)2016-10-30

The motors and propellers arent available on eBay. ANy idea if theres a website where i can order them from?

eagleanurag (author)jason47pg2017-03-12

aliexpress.com free shippin available there at low cost

Shubhamhts98 (author)2016-11-13

could u please tell me the specifications of the motor which can be used in it??

eagleanurag (author)Shubhamhts982017-03-12

the motor have used here are coreless motor they are small in size and you have to buy them with your own reqirements

BRMX7 (author)2016-11-24

what should be the code if im using 4 motors?

eagleanurag (author)BRMX72017-03-12

no problem if you're using four motor it will increase one more transistor and you need to define it in code that on which pin you are going to connect it..

eagleanurag (author)2017-03-12

hey hello yes it is possible you can go through many command sending android app given on playstore allready and you can also create your own app using MIT APP INVENTOR online service with basic knowledge of java . It is very simple..

Labib27 (author)2016-12-24

I need arduino pro mini 3.3 v o,motors and HC 05 bluetooth module....
I m from bangladesh ...how can i bue those?????

eagleanurag (author)Labib272017-03-12

you can try aliexpress there you can find any electronic component and module with free shipping facility or you can try in Dhaka and find there an electronic supplier or whole seller

Faiz Fitri (author)2017-01-15

Is the code still the same if i'm using mosfet transistor as a switch?

eagleanurag (author)Faiz Fitri2017-03-12

yes it based on what is your logic

About This Instructable

137,879views

1,134favorites

Bio: Hi, I'm Tamas (Thomas), a 17 years old Hungarian guy. My hobby started more than 10 years ago. I learn electronics, physics, programming, IoT ... More »
More by Imetomi:DIY Cheap VR FPV System for Drones, Planes, CarsUltimate Intelligent Fully Automatic Drone Robot (w/ RPi, Arduino) Jedi Force Gestures Based Home Automation (with Smartwatch)
Add instructable to: