Arduino obstacle avoidance line follower robot projects 2021

Mr.ElectroUino
7

arduino obstacle avoiding car, arduino line follower robot
Arduino obstacle avoidance line follower robot
 Tutorial  @Mr ProjectsoPedia

Arduino Projects: I will teach you how to make an obstacle avoidance line follower robot with Arduino. The Arduino smart car robot can follow the line with an IR sensor and obstacle avoidance with an ultrasonic sensor.

Component requirements:
  1. Arduino Uno 
  2. Ultrasonic sensor Hc-sr04 with case to obstacle avoidance.
  3. 2 x Ir Sensor for tracing the line.  
  4. L293d motor driver shield for controlling the motor.
  5. Servo motor
  6. 4 x Bo motor with wheel.
  7. Wooden board 20 x 13
  8. Jumper wire
  9. 9v battery



Circuit diagram:

arduino line follower with obstacle avoidance

Pin connection:

1. First attach a motor driver shield onto the arduino.
2. Now connect the bo motor's to the l293d motor driver shield.
  • Motor 1 to motor driver M1
  • Motor 2 to motor driver M2
  • Motor 3 to motor driver M3
  • Motor 4 to motor driver M4
 3.  connect the IR sensor to motor driver.
  • IR sensor OUT pin is connected to motor driver A0 pin.
  • IR sensor GND pin is connected to motor driver GND pin.
  • IR sensor VCC pin is connected to motor driver 5v pin. 
  Do the same for other IR sensor but make sure that OUT pin is connected to motor driver A1.

4. Connect the servo motor to motor driver servo1 slot.
5. Connect ultrasonic sensor to motor driver.
  • Hc-sr04 TRIG pin to motor driver A2.
  • Hc-sr04 ECHO pin to motor driver A3.
  • Hc-sr04 5v pin to motor driver 5v.
  • Hc-sr04 GND pin to motor driver GND.
*There is a mistake in the youtube video for connecting an ultrasonic sensor.

Now after Doing all the connections, it's time to upload the code.



Connect the Arduino uno to pc via USB cable and open the Arduino IDE, select the Arduino board, and com port from the tool menu after that upload the given code.

 CODE: 
#include <NewPing.h>
#include <Servo.h>
#include <AFMotor.h>

//hc-sr04 sensor
#define TRIGGER_PIN A2
#define ECHO_PIN A3
#define max_distance 50

//ir sensor
#define irLeft A0
#define irRight A1

//motor
#define MAX_SPEED 200
#define MAX_SPEED_OFFSET 20

Servo servo;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, max_distance);

AF_DCMotor motor1(1, MOTOR12_1KHZ);
AF_DCMotor motor2(2, MOTOR12_1KHZ);
AF_DCMotor motor3(3, MOTOR34_1KHZ);
AF_DCMotor motor4(4, MOTOR34_1KHZ);


int distance = 0;
int leftDistance;
int rightDistance;
boolean object;

void setup() {
  Serial.begin(9600);
  pinMode(irLeft, INPUT);
  pinMode(irRight, INPUT);
  servo.attach(10);
  servo.write(90);

  motor1.setSpeed(120);
  motor2.setSpeed(120);
  motor3.setSpeed(120);
  motor4.setSpeed(120);
}

void loop() {
  if (digitalRead(irLeft) == 0 && digitalRead(irRight) == 0 ) {
    objectAvoid();
    //forword
  }
  else if (digitalRead(irLeft) == 0 && digitalRead(irRight) == 1 ) {
    objectAvoid();
    Serial.println("TL");
    //leftturn
    moveLeft();
  }
  else if (digitalRead(irLeft) == 1 && digitalRead(irRight) == 0 ) {
    objectAvoid();
    Serial.println("TR");
    //rightturn
    moveRight();
  }
  else if (digitalRead(irLeft) == 1 && digitalRead(irRight) == 1 ) {
    //Stop
    Stop();
  }
}

void objectAvoid() {
  distance = getDistance();
  if (distance <= 15) {
    //stop
    Stop();
    Serial.println("Stop");

    lookLeft();
    lookRight();
    delay(100);
    if (rightDistance <= leftDistance) {
      //left
      object = true;
      turn();
      Serial.println("moveLeft");
    } else {
      //right
      object = false;
      turn();
      Serial.println("moveRight");
    }
    delay(100);
  }
  else {
    //forword
    Serial.println("moveforword");
    moveForward();
  }
}

int getDistance() {
  delay(50);
  int cm = sonar.ping_cm();
  if (cm == 0) {
    cm = 100;
  }
  return cm;
}

int lookLeft () {
  //lock left
  servo.write(150);
  delay(500);
  leftDistance = getDistance();
  delay(100);
  servo.write(90);
  Serial.print("Left:");
  Serial.print(leftDistance);
  return leftDistance;
  delay(100);
}

int lookRight() {
  //lock right
  servo.write(30);
  delay(500);
  rightDistance = getDistance();
  delay(100);
  servo.write(90);
  Serial.print("   ");
  Serial.print("Right:");
  Serial.println(rightDistance);
  return rightDistance;
  delay(100);
}
void Stop() {
  motor1.run(RELEASE);
  motor2.run(RELEASE);
  motor3.run(RELEASE);
  motor4.run(RELEASE);
}
void moveForward() {
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
}
void moveBackward() {
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);

}
void turn() {
  if (object == false) {
    Serial.println("turn Right");
    moveLeft();
    delay(700);
    moveForward();
    delay(800);
    moveRight();
    delay(900);
    if (digitalRead(irRight) == 1) {
      loop();
    } else {
      moveForward();
    }
  }
  else {
    Serial.println("turn left");
    moveRight();
    delay(700);
    moveForward();
    delay(800);
    moveLeft();
    delay(900);
    if (digitalRead(irLeft) == 1) {
      loop();
    } else {
      moveForward();
    }
  }
}
void moveRight() {
  motor1.run(BACKWARD);
  motor2.run(BACKWARD);
  motor3.run(FORWARD);
  motor4.run(FORWARD);
}
void moveLeft() {
  motor1.run(FORWARD);
  motor2.run(FORWARD);
  motor3.run(BACKWARD);
  motor4.run(BACKWARD);
}


After the code was successfully uploaded. 
You need to do two thing.
1. Check the motor running direction.
2. Calibrating the both IR sensor by rotating it potentiometer for tracking the black line watch the video if you getting any problem.
3. Connect the 9v battery and enjoy the Arduino obstacle avoidance line follower robot car.

 Watch This Tutorial: 


If you like the projects keep support me by subscribing to youtube channel, like, share and comment any doubt.
Have a great day😇.....!


Topic :) arduino self driving car 2021 arduino obstacle avoiding car arduino line follower with obstacle avoidance code arduino line follow robot 2021 arduino make your own tesla
 

Post a Comment

7Comments

  1. Bro thanks for the video..i tried but my problem is the motor doesnt spin when i provide just 9V to the motor driver with the arduino powered up as you said
    should i give 36V or something

    ReplyDelete
    Replies
    1. have you found the solution I am facing the same issue

      Delete
  2. Sir I make all the connection properly and code uploaded successfully but car is not moving
    Please 🙏 help me
    I have invested more money
    In this project 🙏

    ReplyDelete
    Replies
    1. i also tryed i cant uplord code please help sir

      Delete
  3. motors are not working if any one can help plz

    ReplyDelete
Post a Comment