Obstacle avoiding robot with L298N using Arduino Project

Obstacle avoiding robot with L298N using Arduino Project

Obstacle avoiding robot with L298N using Arduino Project
Obstacle avoiding robot with L298N using Arduino

 

Obstacle avoiding robot with L298N using Arduino Project

In this article we will learn how to make Obstacle avoiding robot with L298N using Arduino.

In the last post we will learn how to make Buck boost circuit using pic microcontroller in proteus. You can visit our website,
I hope you appreciate my work, let’s discuss about today’s project.

 

 

 

 

 

Components:

  1. Arduino Uno
  2. IC (L298N)
  3. Sonar sensor
  4. DC motor
  5. Humidity sensor (DHT11)
  6. LCD display
  7. Jumper wires

Construction…

  • Connect GND pin of Ultra sonic sensor with GND
  • Connect +5v pin of Ultra sonic sensor with +ve
  • Connect test pin of Ultra sonic sensor with signal pin of resistor variable
  • Connect one side of Resistor variable with +ve
  • Connect 2nd side of Resistor terminal with GND
  • Connect Trigger pin of Ultra sonic sensor with pin 7 of Arduino Uno
  • Connect Echo pin of Ultra sonic sensor with pin 8 of Arduino Uno
  • Connect pin 12 of Arduino Uno with pin 2 of DHT11
  • Connect pin 1 of DHT11 with +ve
  • Connect GND pin of DHT11 with GND
  • Connect pin 9 of Arduino Uno with signal pin of DC motor
  • Connect one terminal of DC motor with +ve
  • Connect 2nd terminal of DC motor with GND
  • Connect pin 2 of Arduino Uno with pin 10 of L298N IC
  • Connect pin 3 of Arduino Uno with pin 15 of L298N IC
  • Connect pin 5 of Arduino Uno with pin 7 of L298N IC
  • Connect pin 6 of Arduino Uno with pin 2 of L298N IC
  • Connect pin 1and 9 of L298N IC with +ve
  • Connect GND pin of IC with GND
  • Connect VSS and VS pin of L298N IC with +ve
  • Connect pin 3 of IC with one side of 1st 2 DC motors
  • Connect 2nd sides of 1st 2 DC motors with each other
  • Connect pin 6 of L298N IC at the junction of 2nd sides of 1st DC motor
  • Connect pin 11 of IC with one side of 2nd 2 DC motors
  • Connect 2nd sides of 2nd 2 DC motors with each other
  • Connect pin 14 of L298N IC at the junction of 2nd sides of 2nd DC motor
Obstacle avoiding robot with L298N using Arduino Project
Obstacle avoiding robot with L298N using Arduino

Working…

An obstacle-avoiding robot is a type of autonomous robot that is designed to navigate through an environment while avoiding obstacles in its path. These robots use various sensors and control mechanisms to detect obstacles and adjust their movements accordingly.

Circuit Diagram…

Obstacle avoiding robot with L298N using Arduino Project
Obstacle avoiding robot with L298N using Arduino, Circuit diagram

Applications…

  1. Education
  2. Prototyping
  3. Security
  4. Automation
  5. Material Handling

Advantages…

  1. Safety
  2. Efficiency
  3. Cost Savings
  4. Continuous Operation
  5. Data Collection

[dt_code]

#include <Servo.h>
#include <NewPing.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(12, DHT11);
const int LeftMotorForward = 2;
const int LeftMotorBackward = 3;
const int RightMotorForward = 5;
const int RightMotorBackward = 6;
#define trig_pin 7 //analog input 1
#define echo_pin 8 //analog input 2
#define maximum_distance 200
boolean goesForward= false;
int distance = 100;

NewPing sonar(trig_pin,echo_pin, maximum_distance); //sensor function
Servo servo_motor;//our servo name

void setup(){
lcd.init();
lcd.backlight();
dht.begin();
Serial.begin(9600);
pinMode(RightMotorForward,OUTPUT);
pinMode(LeftMotorForward,OUTPUT);
pinMode(LeftMotorBackward,OUTPUT);
pinMode(RightMotorBackward,OUTPUT);

servo_motor. attach(9);//our servo pin
servo_motor.write(90);
delay(2000);
distance =readPing();
delay(100);
distance = readPing();
delay(100);
distance =readPing();
delay(100);
distance = readPing();
delay(100);

}
void loop(){
delay(200);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();

lcd.clear();
lcd.setCursor(0, 0);
lcd.print(“Temp: “);
lcd.print(temperature);
lcd.print(” C”);
lcd.setCursor(0, 1);
lcd.print(“Humidity: “);
lcd.print(humidity);
lcd.print(” %”);
int distanceRight = 0;
int distanceLeft = 0;
delay(50);

if(distance<=30){
//Serial.println(distance);
moveStop();
delay(400);
moveBackward();
delay(400);
moveStop();
delay(400);
distanceRight = lookRight();
delay(400);
distanceLeft = lookLeft();
delay(400);

if(distance >= distanceLeft){
turnRight();
moveStop();
}
else{
turnLeft();
moveStop();
}
}
else{
moveForward();
}
distance = readPing();
}

int lookRight(){

servo_motor.write(50);
delay(500);
int distance=readPing();
delay(100);
servo_motor.write(115);
return distance;

}

int lookLeft(){
servo_motor.write(170);
delay(500);
int distance = readPing();
delay(100);
servo_motor.write(115);
return distance;
delay(100);
}
int readPing(){
delay(70);
int cm = sonar.ping_cm();
if (cm==0){
cm=250;
}
return cm;
}
void moveStop(){

digitalWrite(RightMotorForward,LOW);
digitalWrite(LeftMotorForward,LOW);
digitalWrite(RightMotorBackward,LOW);
digitalWrite(LeftMotorBackward,LOW);
}
void moveForward(){
if(!goesForward){
goesForward=true;

digitalWrite(LeftMotorForward,HIGH);
digitalWrite(RightMotorForward,HIGH);
digitalWrite(LeftMotorBackward,LOW);
digitalWrite(RightMotorBackward,LOW);

}
}
void moveBackward(){
goesForward=false;
digitalWrite(LeftMotorBackward,HIGH);
digitalWrite(RightMotorBackward,HIGH);
digitalWrite(LeftMotorForward,LOW);
digitalWrite(RightMotorForward,LOW);
}
void turnRight(){
digitalWrite(LeftMotorForward,HIGH);
digitalWrite(RightMotorBackward,HIGH);

digitalWrite(LeftMotorBackward,LOW);
digitalWrite(RightMotorForward,LOW);

delay(500);

digitalWrite(LeftMotorForward,HIGH);
digitalWrite(RightMotorForward,HIGH);

digitalWrite(LeftMotorBackward,LOW);
digitalWrite(RightMotorBackward,LOW);

}
void turnLeft(){
digitalWrite(LeftMotorBackward,HIGH);
digitalWrite(RightMotorForward,HIGH);

digitalWrite(LeftMotorForward,LOW);
digitalWrite(RightMotorBackward,LOW);

delay(500);

digitalWrite(LeftMotorForward,HIGH);
digitalWrite(RightMotorForward,HIGH);

digitalWrite(LeftMotorBackward,LOW);
digitalWrite(RightMotorBackward,LOW);
}

[/dt_code]