Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Obstacle Avoidance with Arduino

Importance and Utility of Obstacle Avoidance

Obstacle avoidance is a crucial aspect of robotics and automation systems. It allows robots and other devices to navigate their environment safely by detecting and avoiding obstacles in their path. This capability is essential in various applications, including autonomous vehicles, drones, and smart home systems. By implementing obstacle avoidance, these systems can operate efficiently and avoid potential collisions or accidents.

Project: Obstacle Avoidance Robot

The project aims to create a simple obstacle avoidance robot using an Arduino board and ultrasonic sensors. The robot will be able to detect obstacles in its path and change direction to avoid them. The main objectives of this project are to demonstrate the principles of obstacle avoidance and provide a foundation for more complex robotics projects.

List of Components:

  • Arduino Uno board x1
  • Ultrasonic sensor HC-SR04 x1
  • Motor driver L298N x1
  • DC motors x2
  • Wheels x2
  • Chassis x1
  • Jumper wires
  • 9V battery x1
  • Breadboard x1

[Links for purchasing the components can be added here if applicable]

Examples:

Example 1: Basic Obstacle Avoidance

#include <NewPing.h>

#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(50);
  int distance = sonar.ping_cm();

  if (distance <= 20) {
    // Obstacle detected, change direction
    // Implement appropriate motor control logic here
  } else {
    // Move forward
    // Implement appropriate motor control logic here
  }
}

Explanation: In this example, we use the NewPing library to interface with the ultrasonic sensor. The sensor is connected to the Arduino board's digital pins 12 and 11 for trigger and echo respectively. The sonar.ping_cm() function is used to measure the distance to the nearest obstacle in centimeters. If the distance is less than or equal to 20 cm, an obstacle is detected, and the robot can change its direction to avoid it.

Example 2: Advanced Obstacle Avoidance with Motor Control

#include <NewPing.h>

#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200

#define MOTOR1_PIN1 2
#define MOTOR1_PIN2 3
#define MOTOR2_PIN1 4
#define MOTOR2_PIN2 5

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
  Serial.begin(9600);
  pinMode(MOTOR1_PIN1, OUTPUT);
  pinMode(MOTOR1_PIN2, OUTPUT);
  pinMode(MOTOR2_PIN1, OUTPUT);
  pinMode(MOTOR2_PIN2, OUTPUT);
}

void loop() {
  delay(50);
  int distance = sonar.ping_cm();

  if (distance <= 20) {
    // Obstacle detected, change direction
    digitalWrite(MOTOR1_PIN1, LOW);
    digitalWrite(MOTOR1_PIN2, HIGH);
    digitalWrite(MOTOR2_PIN1, HIGH);
    digitalWrite(MOTOR2_PIN2, LOW);
  } else {
    // Move forward
    digitalWrite(MOTOR1_PIN1, HIGH);
    digitalWrite(MOTOR1_PIN2, LOW);
    digitalWrite(MOTOR2_PIN1, HIGH);
    digitalWrite(MOTOR2_PIN2, LOW);
  }
}

Explanation: This example extends the basic obstacle avoidance by adding motor control. The motors are connected to the Arduino board's digital pins 2, 3, 4, and 5 through a motor driver. When an obstacle is detected, the motor control logic is implemented to change the direction of the robot accordingly.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.