Voice Activated Arduino (Bluetooth + Android)

Picture of Voice Activated Arduino (Bluetooth + Android)

Control your Arduino with voice commands using an Android smartphone! Before we make a voice activated home automation system, we must first learn the basic principles of the experiment. This guide will let you command the Arduino using your Android smartphone and a HC-05 Bluetooth module.

The designer of the app did not include a sample code. I looked for alternatives in Google's PlayStore but none was as good as the app that I've found. Luckily, I was able to figure it out although it took me a while to program it. Sorry IOS users, this app isn't available in Apple's app store :/

How Does It Work?
Have you ever encountered Android's speech recognition? Yes android has one and you can use it to control your Arduino, via Bluetooth. The App works by pressing the mic button, then the it will wait for you to say a command. The app will then display the word's that you've stated and will send data strings for the Arduino to process.

Home Automation System (on July 4, 2014):
A month from now/ I'll be releasing a highly sophisticated home automation + security system. It's my biggest project ever! Our current agenda is to program a better smartphone app that work's like Siri (talks back) and sends strings (data types) to the Arduino via bluetooth. If you want to take a sneak peek of the project and it's concept, kindly skip to the last step. The prototype that I'm working on now is composed of a network of wireless switch boxes that connects to a main control panel via WiFi/ Bluetooth.

Here's A Quick Video Demo:

Remove these adsRemove these ads by Signing Up

Step 1: Parts & Materials

Picture of Parts & Materials
If your having trouble in finding them, I'm sure RadioShack has all of them. If you want to buy online try searching on Amazon or DealExtreme.

Thing that you'll need:
- 5 LED Indicators (the color of your choice)
- Arduino UNO (a clone works fine)
- HC-05 Serial Bluetooth Module
- Solderless Breadboard
- Jumper Cables

1-40 of 128Next »
BhaveshTechz5 months ago

Hi Angelo, Can i use "Wireless 4 Pin Bluetooth RF Tansciever Module RS232" in place of HC-05 bluetooth module. The link of the product is this

bluetooth module front.jpgbluetooth module back.jpg
ASCAS (author)  BhaveshTechz12 hours ago

Yes, that should work.

ASCAS (author)  BhaveshTechz5 months ago

Yes, that should work.

caferd1 month ago

Hi , I will do the project. You use the Android phone but i have got a i phone .Can i use the i phone ? how can i control it ?

ASCAS (author)  caferd12 hours ago

Sorry, I don't think the app has an apple counterpart.

TimothyB21 month ago

Can you replace the led with a 5 volt relay?

ASCAS (author)  TimothyB212 hours ago

Yes. You'll need transistors/s to drive them though.

Yo buddy, I've already completed a DIY wireless plug. It actually came out quite nice, even made a custom made PCB with materials from FRY's. It works by having an Arduino serve a webpage and it sends a command to the Wireless switch via a nRF24L01(+) 2.4GHz Wireless Transceiver. With this, I can make it VOICE CONTROLLED!

ASCAS (author)  JustnTheNick12 hours ago

Wow, that's awesome! You should make an inscrutable about it. :D

Hey JustnTheNick, Just wondering if you had a link to this DIY wireless plug instructable, Daniel

I dont, but I have the PCB layout, and parts used. Even have the sample code I tweaked. Although, its still a WIP because the receiver end sometimes freezes and it wont send an ack packet back to the server revealing its status. That would be why.

I have 2 images, and the Fritzing file. Although you might run into some errors because the Relay(T73 5v 10 amp) used had to be imported with a library.

Ive included the Arduino code. You will need to import a library or two but thats not hard at all, just google it.

I used this method to make the board,

I used the UV light sensitive Copper clad board from frys. Be aware that the etching method above is extremely slow unless you oxidize it by removing it from time to time. Took me 2 tries.

Parts used

Copper clad board presensitized

ATmega168 -20PU

28 pin socket

5.1v Zener diode for the relay(Inductors spit out high voltage when discharged)

10k ohm resistor for keeping the reset pin high.

TO-92 3.3v voltage regulator for the transciever

220uf smoothing cap.

2x 4 pin female headers for transciever

T73 10 amp 5v relay.

6 pin male header for FTDI chip. (Cap is for reset timing but couldnt get it to work, so had to use arduino uno to program. Arduino as ISP)

Power source used was a generic 5v 1 amp Ipod charger found at the dollar store. I used a Dremel to open it up and solder some wires to the usb line. So power used is a 5v line in. Used a 1mm(I think) drill bit to drill the holes.

Screen Shot 2014-10-27 at 5.16.27 PM.png

Oh yea, the mirror PDF is what I used with my method, because when you place it ink side down, it reverses to normal. Thats why I have the mirror image.

Awesome, Thanks

Skymag12 days ago
Really enjoyable !! Thx a lot :)
ASCAS (author)  Skymag12 hours ago

You're welcome! :D

can I use you're code with an Arduino MEGA 2560??

ASCAS (author)  miguelangel.ortiz.37012 hours ago


CaioP1 month ago

hello , How do I change the language? just change the language in google search and the code? changed and it did not work , could someone help me ?

Good evening, kind regards the reason for my comment is:

not if very complicated request help or information or guidance on how I connect the circuit on a mega arduino, also know as programming with blutooth module, this orientation the need for educational issues, I hope you can help me with this information my email is

VoliKoN made it!2 months ago

Nice project!

YurikoV2 months ago

Hi i'm using gizduino mini w/ ATmega328 and a bluetooth shield.. i'm having trouble with the connection.. should i stock up both or i'll apply the rx to tx?

here's the link

please help .. i badly need this for our project... :) thank you so much...

nichloe5 months ago

Hi there!

For the HC-05 Serial Bluetooth Module can we use this one?...


ASCAS (author)  nichloe5 months ago

That should work! slr.

Hi there, i have a grove serial bluetooth, can i use with it?

nichloe nichloe5 months ago

Never mind! I tried it and it worked! :)

atharva122 months ago

hi angelo i love your projects keep it up

but i am having some sort of problem the led dosent light up nor does the arduino get a serial command but when i put the module in at mode it reacts

i dont know what the problem is but please tell me a solution

amohsen53 months ago

I use HC-06 ,when i do this ,the first command applied but when i say anther command , there was no response for it !!!!!

akhilk23 months ago

hii..i am facing problem in the output. The command that i speak is displayed on the screen correctly but there is no output visible on the LEDs. And, yeah, HC-05 is connected to my android 4.4 kitkat.

Kindly solve this issue

vtrguy3 months ago

If I were you, I would use an initialized password and a menu option to actually toggle everything; you could even have that hard coded/changeable at an interface using an LCD or button series assuming the arduino is going to be secure.

If you haven't muddled with the BT pairing of the 05/06 the default 1234 could yield someone else using your goodies.

Paired with a door locking/security system may be a large vulnerability but it is a nice looking system with a couple of amendments!

imatxain4 months ago

Could the same be done with a wifi module? I would like to have this except that I would like to be able to execute the orders from another room or floor (I have a good router). Bluetooth can't be used from another floor. If the answer is yes, would I be able to follow this guide with that difference?

pls tell fast.....

can i use roboduino ATmega 328

can i use roboduino ATmega 328

can i use roboduino ATmega 328

vak524 months ago

Hi! This is a great instructable! I have a problem though. For some reason my android device isn't sending the strings properly. I am using your code, but with the commands changed to things like "*red light on". When I open the serial monitor and type in my command (ex. *red light on#) and send it, it does what it is supposed to do. There is just some issue with my arduino receiving the strings from my android. By the way, I am using the JY-MCU bluetooth module.

Thanks for this awesome instructable and I'm looking forward to your home automation project :D

Zerjio5 months ago

I´m using an Arduino Nano and a HC-05, I have problems with the data transmission. The Bluetooth is connected RX-->TX(Arduino), TX-->RX(Arduino), 5V-->5V(Arduino) and GND-->GND(Arduino). I tested the program only with the PIN13 but don't work. Any possible solution?

//Coded By: Angelo Casimiro (4/27/14)

//Voice Activated Arduino (Bluetooth + Android)

//Feel free to modify it but remember to give credit

String voice;

int led1 = 13; //Connect LED 1 To Pin #2

//led2 = 3, //Connect LED 2 To Pin #3

//led3 = 4, //Connect LED 3 To Pin #4

//led4 = 5, //Connect LED 4 To Pin #5

//led5 = 6; //Connect LED 5 To Pin #6

//--------------------------Call A Function-------------------------------//

void allon(){

digitalWrite(led1, HIGH);

// digitalWrite(led2, HIGH);

// digitalWrite(led3, HIGH);

// digitalWrite(led4, HIGH);

// digitalWrite(led5, HIGH);


void alloff(){

digitalWrite(led1, LOW);

// digitalWrite(led2, LOW);

// digitalWrite(led3, LOW);

// digitalWrite(led4, LOW);

// digitalWrite(led5, LOW);



void setup() {


pinMode(led1, OUTPUT);

// pinMode(led2, OUTPUT);

// pinMode(led3, OUTPUT);

// pinMode(led4, OUTPUT);

// pinMode(led5, 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 =; //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) {



//----------Control Multiple Pins/ LEDs----------//

if(voice == "*all on") {allon();} //Turn Off All Pins (Call Function)

else if(voice == "*all off"){alloff();} //Turn On All Pins (Call Function)

//----------Turn On One-By-One----------//

else if(voice == "*TV on") {digitalWrite(led1, HIGH);}

// else if(voice == "*fan on") {digitalWrite(led2, HIGH);}

// else if(voice == "*computer on") {digitalWrite(led3, HIGH);}

// else if(voice == "*bedroom lights on") {digitalWrite(led4, HIGH);}

// else if(voice == "*bathroom lights on") {digitalWrite(led5, HIGH);}

//----------Turn Off One-By-One----------//

else if(voice == "*TV off") {digitalWrite(led1, LOW);}

// else if(voice == "*fan off") {digitalWrite(led2, LOW);}

// else if(voice == "*computer off") {digitalWrite(led3, LOW);}

// else if(voice == "*bedroom lights off") {digitalWrite(led4, LOW);}

// else if(voice == "*bathroom lights off") {digitalWrite(led5, LOW);}


voice="";}} //Reset the variable after initiating

michaudtime6 months ago

This works great!! and it was a quick code change to remove the asterisk all I did was nest the char addition to be:

else if(c != '*') {voice +=c;} not sure if it's the most elegant way to do it but it works for me :-)


For mobile phone, click the audio button code where before there android?

I would appreciate if you send me.

Project'll do it. I gave Banners electronic products. However, links will be like?

I would appreciate information.



vgangwar1 made it!5 months ago

Made it!
addition of delay command at appropriate places in the code made it work as expeted!

Aviary Photo_130478537984066022.png
ASCAS (author)  vgangwar15 months ago

Nice! :D

1-40 of 128Next »