Let's Make Robots!

Easy Arduino Robot Tutorial - Part I

guibot's picture
Seeks Light
Time to build: 
3 hours
Cost to build: 
$55

UPDATE: I decided to remove the H-Bridge part, now the motors are directly connected to the AA batteries, and the Arduino is connected to the 9V battery. This little bot will move only forward.

In Part II, I will add an H-Bridge and two SPDT Bump Switches. The robot will move in both directions and void obstacles.

------------------------------------------------------------

Hi! And Welcome to the Easy Arduino Robot Tutorial - Part I !!
For your own sake
read this before you move further : ]

Index:

1 - Introduction
2 – Before Start
3 – Parts List
4 – Hello Hardware!
5 – Assemble Process
5.1 – First Car
5.2 – Second Car
5.3 – Servo and front wheels
5.4 - Batteries
5.5 - The Circuit
5.6 - The Servo
5.7 - LDR
6 - Program!!!

---------------------------------------------------

1 - Introduction

In this tutorial you will see that you don´t have to be an electronic guru, or a super skilled programmer to make a simple, easy and funny robot.

It won´t have any IR sensor or ultrasonic.

So what will this robot do.. you may ask..
It will be an insane light seeker!!

2870155214_51cabbcd4a.jpg?v=0

If you decide to follow this tutorial, at least you should be able to use a breadboard, and if possible to do a little solder, and a bit of hot glue.

--------------------------------------------------

2 – Before Start


-------------

Have you ever used one BREADBOARD ?

Here you have a nice tutorial and explanation on the way it works:
http://letsmakerobots.com/node/596

-------------

 
In section 4 I will show you how to read analog inputs and how to make one servo move but..

If you don´t know:
-    how to blink an LED;
-    read a potenciomenter analog input;
-    use the Serial command;
-    understand the basics of OOP (Object Oriented Program).

I advice you to visit this links:

Getting Started with Arduino

Here is a nice set of tutorials:

http://itp.nyu.edu/physcomp/Tutorials/Tutorials

http://todbot.com/blog/bionicarduino/
http://todbot.com/blog/spookyarduino/

-------------

NOTE:
Always take one step at the time. Every time you assemble something test it, and if successful, move to the next step.
This is a good practice, and it will make you save precious time and patience.

---------------------------------------------------

3 - Parts list:

Generic parts:

1 Arduino Diemicila
1 Breadboard
1 Servo
2 LDR (Light Dependant Resistance)
2 10k resistors
2 On / off switchs
5 - 1 Ohm resistor
Prototype Wires (colored if possible)

Customizable parts:

Batteries - it depends on your motors needs

I will use:

1 9V battery  with power plug to connect to the Arduino
3 AA NiMh to power the motor

------------

I choosed to use toys instead of premade parts. It is faster to get them and they are also cheap, and fun to work with, the other reason is: it enhances your criativity and you get used to be a solution finder.

------------

In 1 Euro stores, or chinese stores you can find lots of cheap toys, waiting to be vandalized!  : )
2870153318_2decc88a44.jpg?v=0

This was 5€ and I will use it´s chassis as platform

2869326231_c444bd6d70.jpg?v=0

This little car was 2€ and I will use it´s front wheels for steering.

--------------------------------------------------------

4 - Hello Hardware:

LDR - Light Dependant Resistors

This part is for beginners in Arduino, I will show briefly how to move a servo, and read analog inputs through LDR´s.

-----------

Reading LDR analog inputs:

The LDR can be placed in either way and also the resistors. This means they don´t have a + or - .

LDR.jpg

Take one wire and connect into one Arduino Analog Pin of your choice

LDR CODE

-----------

Now for the Servo:

Before you use the servo code, you must install Servotimer1 library. Unpack it into your hardware/libraries folder to add the library. Then restart the Arduino Software.

Take the black wire that comes from the servo and plug it into the black line on the breadboard, the Red wire into the red line on the breadboard, and the Yellow wire into the Arduino pin 9.

Take two more wires and connect the 5V on the Arduino into the red line on the breadboard and the GND on the Arduino into the black line on the breadboard.

The Arduino can be powered from USB cable.

SERVO CODE

2870154746_56769ab226.jpg?v=0

Now that you are more familiar with Arduino bits and bytes, LET THE FUN BEGIN   :D

---------------------------------------------------------

5 – Assemble Process

5.1 – First Car

Disassemble the car wich will provide platform for components and also traction system, and remove all the parts except the rear wheels and the motor.

2869326171_801e11be65.jpg?v=0

Solder two cables to the motor pins.

2869326113_82a708389b.jpg?v=0

Also soldered one black wire to the Ground pin on the battery case and one red wire to the power switch.

This was the first and the last time you see solder in this tutorial.     :)

-----------

5.2 - Second Car

2869326231_c444bd6d70.jpg?v=0

Another little car was vandalized, this time I will use the front wheels to have the steerings.

-----------

5.3 - Servo and Front Wheels:

2870154832_4236268678.jpg?v=0

This is not a very pretty glue work i know..  try to center the wheels the best you can.

Next, I used hot glue to place the servo next to the chassis.

ATTENTION: Certify that both wheels touch the ground when turning, otherwise you might have problems.

2870154930_6294664734.jpg?v=0

Left wheel doens´t touch the ground = PROBLEM

2869365113_00aec2cfce.jpg?v=0

Both wheels touch the ground = Problem solved      : ]

-----------

5.4 - Batteries

I was lucky with this little car. The 9V battery fits perfectly inside the chassis,  and I can use the 3 AA batteries case, and save space to put the breadboard on the top.

2889740373_e72e6941a5.jpg?v=0
2870153520_cbd46c6ff5.jpg?v=0

-----------

5.5 - The Circuit

The Arduino is plugged from the 9V battery.
Red and black wires connect the 5V and Ground from the Arduino to the breadboard main row´s.

2889690009_7968cf945e.jpg?v=0

Now connect the Red wire from the AA batts into one row of the breadboard

2889690253_497dedb098.jpg?v=0

Next, I will use five resistor´s of 1 ohm between the motor and the 3 AA batts.

This is low value resistors, each one of this resistors will make the motor go slower.

I could use only one resistor of 5 ohms, but using five of 1 ohm, I can have more control on the motor power.

If I want less or more motor power, I will remove or add another 1 ohm resistor.

This way the motor won´t burn out and it still have a good speed.

2890525724_fd654746f0.jpg?v=0
2889690423_dab3d0122b.jpg?v=0

Note the Ground wire is connect to another row.

2889690515_117fb9c0b8.jpg?v=0

And this way I connect the motor wires. Turn on the power and see if it moves forward and if has enough power to drive your robot.

-----------

5.6 - The Servo

2889690713_b8bd04b919.jpg?v=0

Connect the Servo to the breadboard.

2889690809_d74a66dee1.jpg?v=0

Grab two wires and connect it into the breadboard main row´s 5V and Ground.
Grab another wire and connect the Servo Signal wire into Digital Pin 9 on the Arduino.

-----------

5.7 - LDR

Final step:

2889690889_09ed16f351.jpg?v=0
Place the LDR and resistors, they don´t have + or -. So you can place them in any direction.
2889690997_e3a5c1c4d4.jpg?v=0

The green wires to connect them into the Arduino Analog Input Pins 4 and 5.

------------------

( test the LDR as you did before)

2889691095_1ca5537590.jpg?v=0

This is the final look of our circuit.
Every physical steps are done! So now let´s upload some code into the Arduino.

-------------------------------------------------------

6 - Program!!!

Robot Program

---------------------------------------------------------

2890526796_a634dc7c38.jpg?v=0
I´ve made the LDR antennas longer so it can be more sensitive to light variations.

-------------------------------------------------------
2869327939_803da02f8c.jpg?v=0

I hope you find this tutorial usefull!!  And I hope to see your Arduino robots posted soon  ;)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Hey guys. I have a problem finding any Arduino...so i was wondering if i do find one miracalously, but isnt diecimila would it still work?

guibot's picture

yes

I have one question for arduinos. Even though both duemilanove and diecimila looks the same and I know they got different AVRchips. So the only thing I'm asking is....is it possible to replace the chip for the duemilanove with the ATmega168 chip thats from the diecimila?
guibot's picture

Yes, then on the Arduino software go to - Tools - Board - and select Diecimila, Duemilanove w/ ATMega168

samdaman's picture

Okay thanks, I got it i think.

Thanks again.

samdaman's picture
How do they plug into the servo?
guibot's picture

you can do this
2870154746_56769ab226.jpg?v=0

or this is how I am connecting the servo on the tutorial:

use 3 wires, solder 3 pins on each side of the wires, one side goes to the servo connector, other side goes to the breadboard

2889690713_b8bd04b919.jpg?v=0

2889690809_d74a66dee1.jpg?v=0

 

samdaman's picture

How did you connect the servo to the breadboard? What connnecters/cords?

Great tutorial, explains circuitry well.

guibot's picture

I used 3 male pins to connect to the breadboard, and then 3 colored wires to connect to the arduino.

 MPin3-DSCN3996-300.jpg

If you don't have male pins you can only the wires:

red - +5v
black - ground
yellow - signal

 

 

Awesome tutorial, it really helped me to build my first robot, Charruino 1.0 ;) You can find a video here http://www.youtube.com/watch?v=InTHxxQV_hg

As you may see, I used an H-bridge to control the front DC motor and re-use the car chasis. 

guibot's picture

Awesome!! It's so cool!!!! Good work!!  :D

Ought to post the Charruino as a robot!!!   ;-)

 

Hi, Inside the car I have taken apart there is a motor which controls the steering. Is it possible to wire this up in the same way as a servo ? There is only two wires coming out of it though .... Obviously there is no data cable.

 

TeleFox's picture
If there are only 2 wires it can't be a servo, at least not a normal one. Most likely a regular DC motor, perhaps a geared motor.

Hi, as far as I know it is just a regular  DC motor but I was thinking that it might be possible to make a servo with that motor so I can keep the original motor. Does anyone have any experience with this or know how I can do it ?

 Thanks 

guibot's picture

making a servo from a regular DC motor would be a bit hard to achieve, at least to a regular hobbyist.. if you want the motor to just turn the wheel why not leaving it there making its function?

can you send us a picture?

Hi, thanks for the reply ! I think that it might be easier for me if I use a normal servo, but supposing I did try to use the motor how would I go about incorporating it into this robot to replace the servo ?? (I can't post a picture as I don't have a camera with me) Also in terms of the resistors I need will the ones in the image be okay (they are 1 ohm ) ?

 

Thanks,

 

Ben resistorslogo.jpg

guibot's picture

1 ohm resistor is ok to tune the motor speed

I never tried to build a servo motor from scratch, mas someone did: http://letsmakerobots.com/node/1524

I know the websites, i have the book "Getting started wth arduino" i didn't have the board yet. All i'm saying is that how can it be possible to have the program editor if people bought the arduino diecimila and duemilanove plus the usb cable. IF they don't even know how to find the editor on the computer.

CaptainObvious's picture

Say what?

Computerreasearcher... the whole Arduino software setup is free. You should have gotten that first, before you got your board. :P

http://arduino.cc

Then click download, then choose your operating system.   Also, if this is your first board, I HIGHLY reccomend you start with all the tutorials on the Arduino website, before you start making the robot. Makes understanding things 94% easier.

 Also here's a good PDF for tutorials,

http://earthshinedesign.co.uk/ASKManual/Site/ASKManual.html

There's also a few more links at the bottom of that page for more great tutorials.

 

how can you upload the codes from your computer to your robot if you bought an arduino with usb cable and no program editor.

Can i use a hitec hs 311 servo and an Arduino Duemilanove instead of the Diemicila?  

instead of using the Arduino Diemicila, Can i use the Arduino Duemilanove?

and i have a hitec hs 311 servo... will that work for this project???

 

CaptainObvious's picture

The Arduinos are 100% compatible, only differences (I'm sure there's a few more), they added the auto-power select, auto-reset when you're uploading a sketch. And an upgraded chip (depending on how recent you got your Duemilanove), but as far as your servo goes, I'm not really sure on that one, I'll leave that up to someone else! :D

Best of luck, and remember to post some pictures and info when you get it poppin!:)

Interesting........ I'll add that to my researcher. lol
Does the arduino have pins in the bottom of it, or does it just have adhesive tape in the bottom like the breadboard has from the tutorial from node/596. So that the arduino would stick on to th breadboard.
ezekiel181's picture
The stock standard Arduino has neither pins nor tape on the bottom. If you want one specifically for its ability to plug right onto a breadboard you could look at something like the boarduino from adafruit. Also protoshields are available which have space for mini breadboards on top, although the space is pretty limited. If that`s too small, you could make a giant breadboard shield :)
guibot's picture

just to say it won´t be any part I, I apologize for this.

I´ve done it, but its a bit wacky, too many wires and connections just to achieve a stupid goal... it was a good intention tough..  

sorry mates

3256087317_304c5a6ce7.jpg?v=0

3256917228_e245c527c4.jpg?v=0

crazyraver's picture
it stil has some great info
OddBot's picture
I don't have an Arduino so I've been slow to look at this. You've put a lot of work into it. I was just looking at those clear wheels. I reckon they'd look great with a LED behind them. Especially those RGB LEDs that automatically change colours.
guibot's picture
the original toy used to have bicolored (red and blue) leds behind the wheels, but I removed them  :-)
Is the part 2 still in the works or already up and I didnt find it?
guibot's picture
sorry mate, still haven´t the time to make it, will try to do it int the next few weeks
crazyraver's picture

cant wait to see your H-bridge tutorial,

a couple days ago i ordered this, and it looks promissing maybe you could use this schematic to build a prototype

guibot's picture
good! that is a great shield!
I started with one too, but unfortunately it got burned due to a stupid mistake and this accident made me work on a prototype, you can see it here. But wait for an update, because this HBridge prototype i´ve made, can and should be done in a more 'techy' fashion..  (with capacitors and so) ...  :-)
Raeven's picture
It seems like an awful waste of your arduino for such a purpose. I know of robots which can run without a brain on two spdt switches and still perform the same function.
guibot's picture

why don´t you make one of those?    :]

in case you haven´t noticed, the main purpose on this tutorial is to teach the basics of Arduino programming and setup 

Raeven's picture

But your not even making a robot that can avoid obstacles all it's doing is fumbling around a room till it hit somthiing and then maybe it turns a bit what I'm really saying is that we need an arduinobot more on the lines of FRITSL's first robot project see my post here: (http://letsmakerobots.com/node/2420)

 Also whats the poit of having an spdt. switch if you have I believe to be photoresistors for eyes is it for those chance occasions when the photoresistors fail? If that's the case qhy not position them to the front of the robot?

P.S. I'm not trying to be horribly mean.

guibot's picture

The keyword when we discussed about an Arduino tutorial was to be EASY, and this was what I came up with, you don´t have to buy any expensive part and you almost don´t have to solde .. 

The PART I is where the bot only moves in the light direction, the PART II will have a basic obstacle detection (the spdt switches)

If you follow it you will be able to give first steps with Arduino and move further on to more complex setups.

I´ve seen your track record, and I don´t see any robot project of your own, so maybe this could be a good starting point for you,
otherwise if you don´t like it whait untill someone make a better one, or you can make your own and share it with us

no hard feelings  :]

 

CaptainTuna's picture
i think this is an excellent start. Of course it needs improvement....but everything does!
guibot's picture

LOL

CaptainTuna's picture

Nice work, but since it is a Start Here project i would include some other things:

-explanation of the coding part

-explanation of how a breadboard works, since you are using one (this one with a few lines below it would be enough imo: http://en.wikipedia.org/wiki/Image:Breadboard-144dpi.gif)

-saying that 5 resistor of 1 ohm in series is like using a single resistor of 5 ohms 

guibot's picture

hi!

Everything you say makes great sense, I will update this text as soon as possible 

thank you for giving feedback 

by the way, I found this walkthrough about breadboarding   :)

 

EDIT: the text is done, only is missing the code explanation.. 

lordofthedonuts's picture
Why do you use 5 1 ohm resistors, why not just 1 5ohm with a bigger wattage ?
guibot's picture

I found that if I use 1 ohm resistors I could be more precise setting the motor speed

Chriskid's picture

I have everything working and i was pretty impressed, but i noticed that my motor driver gets hot, ist that normal or is there something i should worry about.

guibot's picture
I think it´s normal, I don´t have the habbit of touching IC´s .. 

Is it really hot that you almost can´t touch it? Or is it just warm?
Chriskid's picture
They are just kinda warm. I only touched it cause i was picking the thing up and i was like, "Hmmmmm..... Thats starnge."
guibot's picture
That is quite normal..   :)
neutronfluxlabs's picture
Every where i have read it is recommended to put a heat sink on this motor driver chip. i recommend RAM Heat sink's for PC's and Thermal Glue.
jka's picture
Speaking of heatsinks. Does anyone know if aluminium is a goo material for heatsinks?