Introduction: DIY Multi Featured Robot With Arduino

Picture of DIY Multi Featured Robot With Arduino

This robot was mainly built for understanding Arduino and combining various projects of Arduino to form a Multi Featured Arduino Robot. And further, who doesn't want to have a pet robot? So I named it BLUE ROVIER 316. I could have bought a beautiful tracked chassis but making it from scratch teaches you more and gives you more pride after you have completed it.

The robot is capable of understanding voice commands, answering simple questions, controlling as an RC car and even avoiding obstacles while moving. It is mainly controlled through an Android phone which is connected to it through Bluetooth. Based on Android features such as Google Voice Recognition and Tilt sensing, it can really behave like a cute, smart robot. I added BLUE in its name because it is mainly based on Bluetooth. It was actually my first Arduino project and I wanted it to be unique .

If you like the project, please do vote for me in the Robotics Contest !

Step 1: Demonstration Video

You can watch the demo of the robot at this site:

Step 2: Story of ROVIER

Picture of Story of ROVIER

You can jump to the next step if you do not want to go through the cute little story of BLUE ROVIER 316.

About a year back, I received an Arduino UNO as a gift from my father. Since it was my first step in the field of Arduino, I wanted to create something different and unique from the general Arduino projects. It needed to be a cute and smart robot which can understand Voice commands and do many more intelligent things such as Remote Control, Following Lines, Avoiding Obstacles and so on. The question was how to combine them together. And after surfing the net for a really nice time, I concluded that Bluetooth would be the cheapest mode. And so, BLUE ROVIER was set into motion.

But a situation arose where I had to exclude many features of the robot which I had expected it to posses, mainly because of the lack of memory on the Arduino UNO (even the less number of the digital pins on the UNO). Doesn’t matter, I proceeded. It took me really a good time to create the final version of the Robot. And so after many trials and failures, BLUE ROVIER finally came into being.

And so now on we can move to the making of the robot.

Step 3: Components and Parts

Picture of Components and Parts

You will need just the following components:

1. Android system

2. Arduino Uno

3. wtv020-sd-16p module and 8ohm speaker

4. 2x L293d motor controller circuit

5. 4x bo motors and wheels

6. HC SR04 ultrasonic sensor

7. 9g servo

8. 8 AA battery holder and batteries

9. 1gb micro SD card

10. small switch box for chassis.

11. HC 05 Bluetooth Module

I know it looks costly! But don't worry, it will only cost about two or three thousand rupees. Talking about the Android, it won't be a great issue to posses one because most have it nowadays. But having newer versions (above 5.0) might increase the performance.

Try to buy motors having moderate rpm (60 to 100). This would help to keep the speed of the robot under control, as no other speed control circuit is installed. And 8 aa batteries are enough to power the robot for a good time. And considering the Bluetooth, HC 05 is suitable for the robot because it is cheap enough, and the performance is outstanding too.

The 1 GB micro SD card is needed to store voice files which are played when any question is asked to the robot [ Discussed in detail in the later part of the intstructable ]. The other components are discussed in detail in their respective step.

Now let's move onto some simple "Theories" that are used in this robot.

Step 4: Voice Control Theory

Picture of Voice Control Theory

The robot can understand voice commands through an android phone. I guess everyone is familiar with Google Voice Recognition, the feature in Android where we say the word and Google types it.

The same feature is used here for recognising voice commands and converting them into text commands. The app here converts speech to text through Google and sends it to the robot through Bluetooth. The robot is programmed to follow these commands received through Bluetooth. It is also capable of answering a good number of questions. You can even add some more commands in the code to make the robot do some more awesome things.

Here is the Android Application:

Step 5: Gesture Control Theory

Picture of Gesture Control Theory

The gesture control or motion control mode is also done through the Android. In this mode, the robot can be controlled as an RC car by using the Android as the steering wheel. There is a sensor called "Accelerometer" in all Androids which is used in this mode. This accelerometer can determine the angle at which the phone is titled by measuring the acceleration forces acting on the Android. It is this sensor that makes the Android rotate its screen when we tilt the phone. The app here uses the phone accelerometer to determine the angle at which the phone is tilted. Then a character (A, B....) is sent to the robot through Bluetooth. The arduino is programmed to work according to the data received.

If the phone is tilted ahead, character A is sent and robot moves forward. When tilted back, character B is sent and the robot moves backward and so on for left and right. When the Android is placed horizontally, the character E is sent and the robot stops moving.

Step 6: Bluetooth Control Theory

Picture of Bluetooth Control Theory

In this mode,the robot works as a general RC car. Nothing new in this mode, it is just the same as a general remote controlled car available in the market, the only difference being that we are using an Android app to control the robot.

There are different buttons in the app, each having different characters associated with it. When any key is touched, a character is sent to the robot through Bluetooth, just like the gesture control mode. Further, the same characters are sent when the respective keys are touched, and the robot follows the incoming characters.

I have used the 360 and -360 degree buttons in the app to make the robot look right and left. You can change it in the code if you want to make the robot do some other things.

Step 7: Obstacle Avoidance Theory

Picture of Obstacle Avoidance Theory

In this mode, the robot works as an Obstacle Avoidance robot, preventing itself from colliding with any object. This is done with the HC SR04 sensor.

I guess you know about SONAR (Sound Navigation And Ranging). The HC SR04 sensor continously emits ultrasonic sound waves. These waves get bounced back after striking a solid surface and come back to the sensor. The time taken by the waves to come back to the sensor is recorded.

Since sound travels at 340 m/s approximately and we know that SPEED × TIME = DISTANCE, we can determine the distance ahead.

For example, if the sound takes 2 seconds to come back, we can determine the distance through the above formula i.e. 340 × 2 = 680 m. This is how the robot can measure the distance ahead of it through the sensor.

While moving, the robot continuously measures the distance ahead through the sensor. If it senses that the clear space ahead of it is less than 30 cm, it stops moving.

Then it looks left and right and compares the distance of each side. If the left side has a greater distance, the robot turns left. Else if the right side is greater, the robot turns right. If both sides have equal distances, the robot turns back. This simple mechanism helps the robot to avoid the obstacles.

Step 8: Assembling the Chassis

Picture of Assembling the Chassis

Making the chassis on your own, you must be very careful about the measurements and alignments. I chose to do so because I couldn't find one on the net that satisfied me.

A general switch box used for power supply purposes is being used as the chassis. I guess, you can easily get one from an electrical appliance store. Firstly, attach the four motors at the bottom with some glue or clamps and then attach the wheels. Then you have to make the head of the robot (the servo and HC SR04 sensor).For the head, cut a small piece of perfboard and attach it to the servo through a screw. Then attach the ultrasonic sensor to the perfboard with some glue. Cut a small square hole at the top of the box and fix the servo in it.

Then attach the battery holder at the back of the robot through a screw. Put the circuits and the other components inside the box and your chassis is ready. Don't forget to make some holes in front of the speaker for the sound to come out and produce a better quality.

Step 9: Preparing the Voice Module

Picture of Preparing the Voice Module

The speaking mode of the robot is fulfilled by the WTV 020 SD module. The module is used to play voice files for the robot. When any question is asked, the arduino will make the module play the respective voice file in the SD card. There are four serial data lines on the module for communicating with the arduino, the reset, clock, data and busy pins.

Remember that the names of the files should be in decimal (0001, 0002...). And that the files should either be in AD4 or WAV format. Further the module works only on a 1gb micro SD card. Some modules even work on 2gb cards and the card can hold a maximum of 504 voice files. So you can include a good number of voice files to play for a good number of questions.

You can even make your own voice AD4 files ( You can skip this part if you can adjust with the voice files provided along with this intstructable ).

Firstly, you must have two softwares, a sound editing software and a software called 4D SOMO TOOL which would convert the files to the AD4 format. Secondly, you have to prepare the Robot Voices. You can either convert text to speech or even record your own voice and make the Robot voices. Both of these can be done in the Sound Editing Software. But surely, robots do not look good if they speak human voices. So it should be better to convert text to speech. There are various engines like Microsoft Anna and Microsoft Sam your Computer that would help to do this.

After preparing the voice files, you have to save it in 32000 Hz and in the WAV Format. This is because the module can play voice files upto 32000 Hz. Then use the 4D SOMO TOOL to convert the files to the AD4 format. To do so, just open the SOMO TOOL, select the files, and click AD4 Encode and your voice files are ready. You can check the picture above for reference.

If you want further details in making robotic voices, you can go here:

[ Making Robotic Voices ]

Here are the original voice files and the software:

Step 10: Making the Connections

Picture of Making the Connections

Short all the Vcc pins of the respective modules together and connect it to the 5v pin on the arduino. Do the same for gnd pins.

Here are the connections of the different modules.

HC 05 module:

RX pin to arduino dig pin 0.

TX pin to arduino dig pin 1.

HC SR04 sensor:

Echo pin to arduino dig pin 6.

Trig pin to arduino dig pin 7

WTV020-SD module:

pin1 (reset pin) to arduino dig pin2.

pin4 to speaker +

pin5 to speaker -

pin7 (clock) to arduino dig pin3.

pin8 to gnd.

pin10 (data) to arduino dig pin4.

pin15 (busy) to arduino dig pin5.

pin16 to 3.3v

Then, connect the servo signal (yellow) wire and to dig pin 12.

L293d motor controller:

pin A1 to arduino dig pin 8.

pin A2 to arduino dig pin 9.

pin B1 to arduino dig pin 10.

pin B2 to arduino dig pin 11.

Remember that in this robot, we are using two L293d modules. This is because one module has the capacity to power up to two motors. In order to control four motors, we are using two motor drivers. So do remember to make duplicate connections on both the motor controller modules. For e.g connect the Arduino pin 8 to pin A1 of both the driver modules. Do not forget to connect the output of one module on two motors and the other module onto the other two motors.

Check the diagram for further reference.

Step 11: The Arduino Code

Picture of The Arduino Code

It was an exciting time making the code. It is not a complicated code at all, it just uses some libraries to communicate with the Android and the sound module. A major part of the work is done in the Android and not in the Arduino. The code is based on Bluetooth communication and the incoming data from the Bluetooth. The code is made in such a way that we have to give voice commands to the robot to execute the different modes and the Arduino continuously checks for incoming Bluetooth Signals. To stop any mode, we just have to say "stop".

The only problem with the code is that we have to manually switch off the robot when it is in the Obstacle Avoidance Mode. We cannot use the "stop" command in this mode. This is because setting this feature on affects the speed of scanning the distance of the objects. The Arduino will have to read simultaneously both the distance of an object as well as the incoming Bluetooth signals. This interferes the mode and the robot fails to protect itself fully from obstacles. The robot might fail to stop instantly even if the distance ahead is less than 30 cm. So it would be good not to include this feature in this mode.

Just download the libraries and the code and Upload it to the Arduino. But do not forget to take out the TX and RX (0, 1) pins from the Arduino before uploading. These pins are used for Serial communication and are in use during the uploading of the code. And in this robot, these pins are used for connecting the Bluetooth module. So do remember to take them off else it might hamper your Bluetooth Module.

Here are the code and the libraries:

Step 12: Sorting Out Problems and Making Improvements

Picture of Sorting Out Problems and Making Improvements

You can skip this step because it only deals with improvements of the robot.

Many problems arise in the WTV-020-SD-16p module, regarding the capacity of the memory card. This is because some modules work on 2 GB cards while some do not. So it is better to use a 1 GB micro SD card.

There would not be much problem in using different versions of the components. Mention may be made of the different versions of the wtv 020 sd module. This is because there exists only packaging difference between the modules, while most of the other internal things remain the same.

Another important thing, using a PCB for the robot will help in reducing current consumption to a great extent. If you are connecting the different components just like me, it would cost you some current because a good amount of it will be lost in the wires, having a high resistance. This is because the circuit is quite big enough. This intstructable does not include the designing of a PCB ( because I did not make one) but it can increase the power efficiency of the robot.

But BLUE ROVIER 316 is not done yet! I thought of including some more features such as following lines, solving mazes and many other things. But it remained a dream because of the lack of pins on the Arduino UNO ( BLUE ROVIER really eats many pins of the Arduino). So I think of improving all the features of this robot and combine them together to form a more sophisticated and useful Arduino Robot. So be ready to see the modified view of ROVIER in a few months!!!
I even wish to see other modified versions of the robot by some other people possessing more creativity than mine!!!!

Step 13: Playing With the Robot

Picture of Playing With the Robot

Turn on the robot and see how it greets you, plays with you. Ask any question (not stupid ones!) and watch it's answer. You can tell to follow lines or to go ahead. Just say 'stop' when you want to stop the robot.


HarDizzeR (author)2017-09-06

Nice, but I have 2 questions :
1-Can I use this :
2- aren't 8 AA batteries connected to 5v pin to arduino ? I burnt an arduino before bec. I connected 6v battery to 5v pin

RS3655 (author)HarDizzeR2017-11-03


I am absolutely regretful about the answer I gave you about the sd card module. This module is used for reading and writing on sd cards through Arduino. So I don't think that it would be much useful in playing music files.


RS3655 (author)HarDizzeR2017-09-10


Firstly talking about the power, the 8aa batteries aren't connected to the 5v pin on arduino. They are connected to the Vin pin as it outputs a 12v power which will surely damage the arduino if connected to any other pin.

Secondly you can use the SD card module in the robot, with surely some modifications in the code.

Thirdly, you can use motors from 60 rpm to 100 rpm or even more depending upon your requirements. Since the weight of the robot can vary, so you should decide the torque of the motors. Mine have 1.9

HarDizzeR (author)HarDizzeR2017-09-06

Oh, and also:
3-more motor details please. like. volt, RPM, torque ?

rehan1024 (author)2017-11-01

i want to use this sd module. does this module works.

please also give me changes required in code.......

RS3655 (author)rehan10242017-11-03


I don't think that this module would be appropriate to play music files. I had been asked the same question before and I suppose I gave the wrong answer, this module is used for reading and writing files on the sd card through Arduino. So I think that wtv020sd module is the best to be used to play music files.


rehan1024 (author)2017-11-01

can i use any other wtv020 sd module to support 16 gb micro sd card.

RS3655 (author)rehan10242017-11-03

I do not guess that there is a module that can play 16gb cards.

vishnumk14581 (author)2017-10-31

If you don't mind can you correct the image that you are provided

RS3655 (author)vishnumk145812017-11-03

Thanks for pointing it out; I have corrected it.

vishnumk14581 (author)2017-10-30

What is the output supply of battery

RS3655 (author)vishnumk145812017-10-30

Well, the battery outputs a 12v power.

vishnumk14581 (author)RS36552017-10-31

It means all the battery a connected in series.isn't it?

RS3655 (author)vishnumk145812017-10-31

Yes, surely it does.

vishnumk14581 (author)2017-10-20

Some problem with my Bluetooth
It's gets auto disconnected within seconds
Why is it like that

RS3655 (author)vishnumk145812017-10-26

Make sure you have made the connections well and have provided 5v supply. Also make sure that the distance between you and the Bluetooth is not greater than 9-10 metres.

vishnumk14581 (author)RS36552017-10-26

I am near to it. it will not be more than 1meters

RS3655 (author)vishnumk145812017-10-30

Are you sure you have given 5v supply to the Bluetooth? It might be because of that. And tell me is your Bluetooth getting connected even once to the android?

vishnumk14581 (author)2017-10-19

can anyone help me ....
I have completed the circuit but it's not working, I haven't used the SD card slot.
Will it be a problem? Will it run without the card?

RS3655 (author)vishnumk145812017-10-20


You can surely run the robot without the SD card, but also there wouldn't be any voice of the robot. As I have mentioned above, the robot voices are stored in the SD card which are played by the sound module.

So you do have to insert the 1 gb SD card in order to fully run the robot. but yes, you can run it without the SD card but there wouldn't be any voice.

mdniyaz888 (author)2017-09-19

can you please give me a clear picture of the breadboard and arduino connection?

yash090 (author)2017-09-18

my motors are running very very slow so what can i do in this case..

is it because i have not connected external 12v supply yet?

plz give me a reply


RS3655 (author)yash0902017-09-19

Hello, tell me how much power are you applying to your robot. It is important to note the the motor controller should be provided a supply of 12v to run the four motors. I think this is the main reason behind your slow running of the motors.

houssemhajji (author)2017-09-16

Sir , how can i edit the code to use a motor shield

Md Niyaz (author)2017-09-16

I have 2 doubts..

1)will there not be any problem in connecting the motors to the L239D and connecting them to the Arduino..because my Arduino burned when I connected the motor directly to the Arduino..

2)tell me regarding the Arduino program.. should the code and library given by you uploaded together as a same program

NawarE (author)2017-07-18

Arduino: 1.8.3 (Windows 10), Board: "Arduino/Genuino Uno"

Build options changed, rebuilding all
C:\Users\1\Downloads\Arduino\Arduino.ino: In function 'void obstacleavoidance()':

Arduino:243: error: 'class Ultrasonic' has no member named 'Ranging'

distance = ultrasonic.Ranging(CM); // (Use CM for centimeter and INC for inches)


C:\Users\1\Downloads\Arduino\Arduino.ino: In function 'void distances()':

Arduino:262: error: 'class Ultrasonic' has no member named 'Ranging'

leftLook = ultrasonic.Ranging(CM);


Arduino:268: error: 'class Ultrasonic' has no member named 'Ranging'

rightLook = ultrasonic.Ranging(CM);


Multiple libraries were found for "Servo.h"
Used: C:\Users\1\OneDrive\Documents\Arduino\libraries\Servo
Not used: C:\Program Files (x86)\Arduino\libraries\Servo
Multiple libraries were found for "Wtv020sd16p.h"
Used: C:\Users\1\OneDrive\Documents\Arduino\libraries\Wtv020sd16p
Not used: C:\Program Files (x86)\Arduino\libraries\Wtv020sd16p
Multiple libraries were found for "Ultrasonic.h"
Used: C:\Users\1\OneDrive\Documents\Arduino\libraries\Ultrasonic
Not used: C:\Program Files (x86)\Arduino\libraries\Ultrasonic
exit status 1
'class Ultrasonic' has no member named 'Ranging'

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.



SameerV1 (author)2017-07-10

where you have connected the two wires originating from battery holder? .and the batterys are connected in seres or parallel.?

Batteries is must connected in series to produce 12Vdc.

If you connect in parallel, you got only 1.5Vdc and the current increases but not enough voltage to make run and work the project... Have a nice and wonderful technological day my friend...

; D

RS3655 (author)SameerV12017-07-11

You can connect the positive wire to the Vin pin on the arduino and ground the negative. Further the batteries are connected in series.

yaswanth- (author)2017-07-03

can I increase its features using mega like face tracking. Etc

Can we connect the robot to internet

RS3655 (author)yaswanth-2017-07-05

Surely, you can increase its features using mega. This robot is just the base for better versions.

You can use OpenCV for tracking faces, along with a connected computer.

And I guess it is possible to connect it to the Internet.

yaswanth- (author)2017-07-02

Can I use aurdino mega 2560

RS3655 (author)yaswanth-2017-07-03

Surely you can

yaswanth- (author)2017-07-02

CA I use aurdino mega 2560

OscarO52 (author)2017-05-04

Hello sorry for my English, I would like if you could upload the connection scheme with the drivers l293d as I am quite newbie and I get lost with that a1 a2 b1 b2 a drawing would help me a lot and thanks for your project is great

RS3655 (author)OscarO522017-05-10

Try to check the pin diagram of l293d included in the instructable. Thanks,

RanjuB1 (author)2017-05-03

Well done...good job

RS3655 (author)RanjuB12017-05-04


joshboye (author)2017-04-29

This project is a winner project. Voted !

RS3655 (author)joshboye2017-04-29


sandeep_____ (author)2017-04-28

hey author can you please provide us pcb design

RS3655 (author)sandeep_____2017-04-28

Sorry, as mentioned above, there is no PCB design available for the robot.

sandeep_____ (author)2017-04-25

hey author... i am confused between hc 05 and there any difference between this two.....most importantly how much rpm motor should i take for this project.

RS3655 (author)sandeep_____2017-04-25

The zs 040 version of HC 05  would not create any problem. Both of these are same except in zs 040, there is an EN pin instead of a KEY pin, and this pin is not used here.

Considering the rpm of the motors, it should be a medium one, about 60 to 100, so that it is under control, as no speed controller is installed in the robot.

robarteman (author)2017-04-22

This is a fun looking project. Nice work!

How were the voice AD4 files created and can anyone make new ones?

RS3655 (author)robarteman2017-04-22

Thanks Robarteman, You can surely make new voice files. Firstly you must have some robotic voice files. There is a software called "4D SOMO TOOL" which can convert the files to the AD4 format. And as mentioned above, the files should be named in decimal (0001, 0002....).

robarteman (author)RS36552017-04-23

Thank you sharing the 4D SOMO Tool information. Now you stated that you must have some robotic files to use with the tool. Where do those come from and what format are they in?

RS3655 (author)robarteman2017-04-25

Well you have to make them using some sound editing software. Firstly convert text to speech through engines like Microsoft Anna. Then increase the echo and the tempo of the files to make them robotic. Save the files and then use the SOMO Tool. Thanks,

kehaldoshi (author)2017-04-18

Very cool project.

About This Instructable



Bio: Hello, I am Debashish, a regular 13 year old boy from India who likes to explore and invent different kinds of robotic and electronic stuff ... More »
Add instructable to: