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

Autonomous+Navigation

Autonomous Navigation com Arduino

Introdução

A navegação autônoma é uma área crucial da robótica moderna, permitindo que robôs e veículos naveguem de forma independente em ambientes dinâmicos e desconhecidos. Com a popularidade do Arduino, a criação de sistemas de navegação autônoma se tornou acessível para entusiastas e profissionais. Este artigo explora como implementar um sistema básico de navegação autônoma utilizando o Arduino, destacando sua importância e fornecendo um exemplo prático.

Projeto

Objetivo: Criar um robô autônomo capaz de navegar em um ambiente evitando obstáculos. O robô será equipado com sensores de ultrassom para detecção de obstáculos e motores para movimentação.

Funcionalidades:

  • Detecção de obstáculos à frente.
  • Desvio automático de obstáculos.
  • Movimentação contínua em um ambiente desconhecido.

Informações Relevantes:

  • Utilizaremos o Arduino Uno devido à sua simplicidade e ampla comunidade de suporte.
  • Sensores de ultrassom serão usados para detecção de obstáculos devido à sua precisão e facilidade de integração.

Lista de Componentes

  • 1x Arduino Uno
  • 2x Motores DC
  • 1x Driver de motor L298N
  • 2x Sensores de Ultrassom HC-SR04
  • 1x Chassi de robô com rodas
  • 1x Suporte de bateria (4x pilhas AA)
  • 1x Protoboard e cabos jumpers

Exemplos

Código para Navegação Autônoma:

// Incluindo as bibliotecas necessárias
#include <NewPing.h>

// Definindo os pinos dos sensores de ultrassom
#define TRIGGER_PIN_FRONT  12
#define ECHO_PIN_FRONT     11
#define TRIGGER_PIN_LEFT   10
#define ECHO_PIN_LEFT      9
#define MAX_DISTANCE 200

// Configurando os sensores de ultrassom
NewPing sonarFront(TRIGGER_PIN_FRONT, ECHO_PIN_FRONT, MAX_DISTANCE);
NewPing sonarLeft(TRIGGER_PIN_LEFT, ECHO_PIN_LEFT, MAX_DISTANCE);

// Definindo os pinos do driver do motor
#define ENA 5
#define IN1 6
#define IN2 7
#define ENB 8
#define IN3 9
#define IN4 10

void setup() {
  // Configurando os pinos dos motores como saída
  pinMode(ENA, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

  // Inicializando a comunicação serial
  Serial.begin(9600);
}

void loop() {
  // Obtendo a distância dos sensores de ultrassom
  int distanceFront = sonarFront.ping_cm();
  int distanceLeft = sonarLeft.ping_cm();

  // Exibindo as distâncias no monitor serial
  Serial.print("Front: ");
  Serial.print(distanceFront);
  Serial.print("cm, Left: ");
  Serial.print(distanceLeft);
  Serial.println("cm");

  // Lógica de navegação autônoma
  if (distanceFront > 20) {
    // Se não houver obstáculo à frente, mover para frente
    moveForward();
  } else {
    // Se houver obstáculo à frente, verificar o lado esquerdo
    if (distanceLeft > 20) {
      // Se não houver obstáculo à esquerda, virar à esquerda
      turnLeft();
    } else {
      // Se houver obstáculo à esquerda, virar à direita
      turnRight();
    }
  }

  delay(100);
}

void moveForward() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 200);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(ENB, 200);
}

void turnLeft() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, 200);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
  analogWrite(ENB, 200);
  delay(500);
  stopMotors();
}

void turnRight() {
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 200);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
  analogWrite(ENB, 200);
  delay(500);
  stopMotors();
}

void stopMotors() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 0);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
  analogWrite(ENB, 0);
}

Comentários sobre o código:

  • Bibliotecas: A biblioteca NewPing é usada para facilitar a interação com os sensores de ultrassom.
  • Pinos: Os pinos do Arduino são configurados para os sensores e motores.
  • Lógica de navegação: O robô se move para frente se não houver obstáculos à frente. Caso contrário, ele verifica o lado esquerdo e decide virar à esquerda ou à direita com base na presença de obstáculos.
  • Funções de movimento: As funções moveForward, turnLeft, turnRight e stopMotors controlam a movimentação dos motores.

Tags

Arduino, Navegação Autônoma, Robótica, Sensores de Ultrassom, Motores DC, Driver de Motor, Automação

Este artigo fornece uma introdução prática à navegação autônoma utilizando o Arduino. O exemplo apresentado pode ser expandido para incluir mais sensores, algoritmos de navegação avançados e integração com outros sistemas robóticos.

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.