OBSTACLE AVOIDING ROBOT USING
ULTRASONIC SENSOR
By:
G.ANIL KUMAR
IN ASSOSCIATION WITH
CST SERVICES
1
OBSTACLE AVOIDING ROBOT USING ULTRASONIC
SENSOR
Aim: Build an Obstacle avoiding robot using Arduino and Ultrasonic Sensor.
Introduction:
Obstacle Avoiding Robot is an intelligent device which can automatically sense the
obstacle in front of it and avoid them by turning itself in another direction. This design allows the
robot to navigate in unknown environment by avoiding collisions, which is a primary
requirement for any autonomous mobile robot.
The application of Obstacle Avoiding robot is not limited and it is used in most of the
military organization now which helps carry out many risky jobs that cannot be done by any
soldiers.
Components Required:
Arduino UNO
Ultrasonic Sensor Module HC-SR04
ROBOT Chassis complete with screw
DC Motors
L293D IC
Wheels
Bread Board
Connecting wires
Power supply or Power bank
Arduino UNO:
Arduino is an open-source micro-controller device. It is an educational development
board which is mainly used for developing different kind of projects which is equipped with
digital and analog pins.
It can be powered by using a power cable or by external 9v battery. For developing
different projects using Arduino UNO board we use software called “Arduino”.
2
Arduino UNO
Ultrasonic Sensor:
An Ultrasonic sensor is used to sense the obstacles in the path by calculating the distance
between the robot and obstacle. If robot finds any obstacle it changes the direction and continues
moving.
How Ultrasonic Sensor can be used to Avoid Obstacles:
Before going to build the robot, it is important to understand how the ultrasonic sensor
works because this sensor will have important role in detecting obstacle.
The basic principle behind the working of ultrasonic sensor is to note down the time
taken by sensor to transmit ultrasonic beams and receiving the ultrasonic beams after hitting the
surface. Then further the distance is calculated using the formula. In this project, the widely
available HC-SR04 Ultrasonic Sensor is used.
Ultra sonic sensor
3
So, the Trig pin of HC-SR04 is made high for at least 10 us. A sonic beam is transmitted with 8
pulses of 40 KHz each.
The signal then hits the surface and returns back and captured by the receiver Echo pin of
HC-SR04. The Echo pin had already made high at the time sending high.
The time taken by beam to return back is saved in variable and converted to distance
using appropriate calculations like below.
Distance= (Time x Speed of Sound in Air (343 m/s))/2
4
L293d Motor Driver Module:
The L293d Motor Driver Module is responsible for providing the necessary drive current to the motors of the
robotic car.
L293D Motor Driver
Connections:
Motor Driver to Arduino:
L293D Motor Driver Arduino
A1 Digital pin 4
A2 Digital pin 5
B1 Digital pin 6
B2 Digital pin 7
VCC Vin
GND GND
5
UltraSonic Sensor to Arduino:
UltraSonic Sensor Arduino
Trig Digital pin 9
Echo Digital pin 10
Vcc 5v
GND GND
Buzzer to Arduino:
Buzzer Arduino
Positive(+) Digital pin 12
Negative GND
DC MOTOR L293D MOTOR DRIVER
DC MOTOR1 Positive(+) OUTPUT PIN MA 1
DC MOTOR1 Negative(-) OUTPUT PIN MA 2
DC MOTOR2 Positive(+) OUTPUT PIN MA 1
DC MOTOR1 Negative(-) OUTPUT PIN MA 2
6
Procedure:
Connect Arduino uno using a cable wire
Connect the motors to motor shield
Connect the motor driver to Arduino board
Connect Bluetooth Module to the Arduino Board
After giving all the connections compile and Execute the program
Check the output or Result
Code:
#define BUZZER 16
#define TRIGGER 12
#define ECHO 11
void setup() {
Serial.begin (9600);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
7
pinMode(6,OUTPUT);// Open serial monitor at 9600 baud to see ping results.
void loop() {
long duration, distance;
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
duration = pulseIn(ECHO, HIGH);
distance = (duration/2) / 29.1;
if (distance < 30)
{
Serial.println("B");
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
delay(2000);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite (6,LOW);
delay(2000);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
}
else
8
{
Serial.println("f");
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
} delay(500);
RESULT:
In loop() function, get the distance from HC-SR04 and based on the distance move the
motor direction. The distance will show the object distance coming in front of the robot. The
Distance is taken by bursting a beam of ultrasonic up to 10 us and receiving it after 10us.
If the distance is greater than the defined distance means there is not obstacle in its path
and it will moving in forward direction.
If the distance is less than the defined distance to avoid obstacle means there is some
obstacle ahead. So in this situation robot will stop for a while and move backwards after that
again stop for a while and then take turn to another direction.
9
OBSTACLE AVOIDING ROBOT
So this is how a robot can avoid obstacles in its path without getting stuck
anywhere. Find the complete code and video below.
10