Arduino HC-SR04 Ultrasonic Rover

168,118

449

66

Introduction: Arduino HC-SR04 Ultrasonic Rover

Simple Arduno Rover with HC-SR04 Ultrasonic sensor.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1:

YOU will need to build this:

HC-SR04 Ultrasonic sensor

Battery holder for 6 AA batteries

6 AA batteries

Arduino UNO (I use UNO R2)
Motor Shield for Arduino (L293)

9g Servo

2 gear motors with wheels

CD box

4 male-to-male cables

4 female-to-female cables

few cable ties

I buy all components for this rover on ebay.

First you will need 2pcs Plastic Tire Wheel + DC 6V Gear Motor 48:1.

I solder 2 male-to-male cables and 104 capacitors.

I used slim CD box as a chassis, I made 2 holes on each side of CD box and then fixed gear motors with cable tie.

Step 2:

You can see all the components you need on this photo.

  1. HC-SR04 Ultrasonic sensor
  2. Battery holder for 6 AA batteries
  3. 6 AA batteries
  4. Arduino UNO (I use UNO R2)
  5. Motor Shield for Arduino (L293)

  6. 9g Servo
  7. 2 gear motors with wheels on CD box chassis.
  8. 4 male-to-male cables
  9. 4 female-to-female cables
  10. few cable ties

Step 3:

Сonnection scheme is very easy.

  1. Connect 9g servo to SERVO_2 pins on motorshield
  2. Left motor to M4
  3. Right motor to M1
  4. Echo - pin A4
  5. Trig - pin A5
  6. Vcc - pin +5 ; Gnd - Gnd

I fix servo on battery box with cable tie

Step 4:

Final result and video.


Faster version without servo        http://youtu.be/hBHpOV5TOY8

Step 5:

Put AFMotor.h and AFMotor.cpp to folder AFMotor in libraries folder Aduino.

123D Circuits Contest

Participated in the
123D Circuits Contest

Full Spectrum Laser Contest

Participated in the
Full Spectrum Laser Contest

2 People Made This Project!

Recommendations

  • LED Strip Speed Challenge

    LED Strip Speed Challenge
  • Sculpting Challenge

    Sculpting Challenge
  • Clocks Contest

    Clocks Contest

66 Discussions

0
Mickey The Maker
Mickey The Maker

Question 11 days ago

Can I use a L298N control,if I can please put the code in the comments .
thanks.
👍👍

0
leumasestrada
leumasestrada

1 year ago

no sirve tu mierda hijo de puta


0
amitbs99
amitbs99

2 years ago

hello I have made it but it couldn't work. when I operate it the servo once starts and then stops

temp_1380710663.jpg
0
Earl DsanielV
Earl DsanielV

Reply 2 years ago

it only means that you did not follow all the direction carefully...

0
IsraelD3
IsraelD3

2 years ago

I make the connections correctly but still it goes crazy, the servant stays looking to one side and goes forward and back without stopping other times it seems to work well but then it goes back malfunctioning.

0
ZarishMark
ZarishMark

3 years ago

Hi, i've seen the codes guy's i need a code of ultrasonic sensor to stop the object on which it's implemented after sensing the obstacle can anyone help?

0
Eagle199393
Eagle199393

Reply 6 years ago on Introduction

Ок, I uploaded correct version of the code. It works. Try it.

0
RVIRENDER
RVIRENDER

Reply 3 years ago

where is the code

0
amitbs99
amitbs99

3 years ago

Hi,

Can i have circuit diagram for this project?

Thanks

0
joshuaron
joshuaron

3 years ago

Hi,

The Ultrasonic sensor doesn't work for me when I connect it to pins A4,A5 in the MotorShield board. Can anyone explain me how does it make sense to use them, if they are "Analog In" pins, wheras the UltraSonic sensor requires "Digital In" & "Digital Out" pins ?!

0
sonasec
sonasec

Reply 3 years ago

pinMode(pinTrig, OUTPUT);

pinMode(pinEcho, INPUT);

thise for configuration

-----

digitalWrite(pinTrig, LOW);

digitalWrite(pinTrig, HIGH);

digitalWrite(pinTrig, LOW);

duration=pulseIn(pinEcho,HIGH);

distance=(duration/2)*Vson;

Serial.print(distance);

Serial.println("cm");

and this on for mesur distance (#define Vson 0.034 // cm/us)

0
MarkJ108
MarkJ108

3 years ago

i tried this but my bot keeps circling. i didnt change the code and followed each and every instruction properly. please help

0
Archit B
Archit B

3 years ago

hey pleasee help earliest mine isnt working it just keeps on rotating i have to submit it by tommorrow help help help
i have
arduino ide 1.6.9
arduino uno rev3
afmotorsheild is same using 12v and 1ah
hcsro4
heeellllp

0
ahmeda489
ahmeda489

3 years ago

please van you send me a code without the sensor ?

0
EdizonBlu
EdizonBlu

5 years ago on Introduction

a

Hi guys, I would like to ask on how to stabilize my ultrasonic sensor mounted in a servo motor. It is because everytime an "Out of Range" displays in the serial monitor it gives current to the servo motor causing it to sweep. The possibility of sweeping the servo left or right only is when there is an object being detected. BTW, the ultrasonic sensor is mounted above the servo mtor.

Here is my code://

#define trigPin 13

#define echoPin 12

#define led 11

#define led2 10

#include <Servo.h>

int pos = 0; // variable to store the servo position

int defPOS = 0;

Servo myservo;

void setup() {

Serial.begin (9600);

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode(led, OUTPUT);

pinMode(led2, OUTPUT);

myservo.attach(9);

myservo.write(0);

}

void loop() {

long duration, distance;

digitalWrite(trigPin, LOW); // Added this line

delayMicroseconds(2); // Added this line

digitalWrite(trigPin, HIGH);

// delayMicroseconds(1000); - Removed this line

delayMicroseconds(10); // Added this line

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration/2) / 29.1;

//0 Left

//1 Center

//2 Right

int buttonState1 = digitalRead(led); //red

int buttonState2 = digitalRead(led2); //green

if( (buttonState1 == 0 && buttonState2 == 1) && (defPOS != 1))

{

delay(2000);

if(defPOS == 2)

{

for(pos = 0; pos <= 90; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(2); // waits 15ms for the servo to reach the position

}

}

else if(defPOS == 0)

{

for(pos = 0; pos <= 90; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(2); // waits 15ms for the servo to reach the position

}

}

defPOS = 1;

}

if (distance < 30) { // This is where the LED On/Off happens

digitalWrite(led,HIGH); // When the Red condition is met, the Green LED should turn off

digitalWrite(led2,LOW);

if(defPOS == 0)

{

for(pos = 90; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees

{

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(2); // waits 15ms for the servo to reach the position

}

defPOS = 2;

}

else if(defPOS == 2)

{

for(pos = 0; pos <= 90; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(2); // waits 15ms for the servo to reach the position

}

defPOS = 1;

}

else if(defPOS == 1)

{

for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees

{ // in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(2); // waits 15ms for the servo to reach the position

}

defPOS = 0;

}

//myservo.write(180);

// delay(1000);

//myservo.write(0);

}

else {

digitalWrite(led,LOW);

digitalWrite(led2,HIGH);

}

if (distance >= 400 || distance <= 0){

Serial.println("Out of range");

}

else {

Serial.print(distance);

Serial.println(" cm");

}

delay(500);

}

0
pchaure
pchaure

Reply 4 years ago

i want the full code the code u posted is only of the ultrasonic sensor and servo... what about the motors?can u plz help me thanks in advance