Robô evitando Obstáculo usando Arduino

Tempo de leitura: 3 minutes

Robô evitando Obstáculo usando Arduino

Como fazer um robô para evitar obstáculos usando o Arduino.

Bem vindos ao pessoal neste projeto, faremos um Robô evitando Obstáculo usando Arduino e kit. você sabe sobre o obstáculo evitando o robô? bem, vou explicar a você o que faz e como funciona. basicamente, é um robô que anda automaticamente com a ajuda do sensor ultrassônico. um sensor ultrassônico é usado em muitos outros projetos, como robôs inteligentes. obstáculo evitando robô, também conhecido como robô autônomo. Que toma a decisão de si mesmo. se houver algo na frente do robô, ele mudará seu caminho como um humano. então, está em algum lugar inteligente. é o projeto mais popular da atualidade e procurado pela maioria dos alunos atualmente. e todo mundo gosta desse robô. neste projeto, você também aprenderá muitas coisas, por exemplo, como usar o sensor ultrassônico e usando o monitor serial também, discutiremos o código também.

 

Como funciona?

Em Robô evitando Obstáculo, há um sensor que é conhecido como sensor ultrassônico. que têm a capacidade de medir a distância na frente do sensor, no parágrafo abaixo saberemos como funciona o sensor, neste robô evitando o obstáculo usando o Arduino Uno, ele funciona como um medidor de distância.

Um sensor ultrassônico com duas partes, uma é o transmissor e a outra é o receptor, conhecido como gatilho e ecos. o gatilho é a parte transmissora e transmite a onda ultrassônica. outra parte que é o receptor de um eco recebe as ondas ultrassônicas do transmissor transmitidas do gatilho. agora calculamos em quanto tempo as ondas ultrassônicas retornam ao receptor e divididas por 2 porque a viagem no tempo é o dobro.

calculamos a distância pela fórmula de tempo e velocidade

distância = tempo X velocidade

da onda ultrassônica = 340 m/s

 

Componentes necessários para robô ao evitar obstáculos

  • Arduino NANO ou Uno (qualqer versão)
  • Sensor Ultrassônico HC-SR04
  • Módulo Motor LM298N Motor
  • Motores 5V DC
  • Bateria
  • Rodas
  • Chassis
  • Fios de Jumper

 

este é um robô especial evitando obstáculo com pescoço para detectar a distância aqui e ali também. o sensor ultrassônico é conectado ao servo que gira se houver algum obstáculo no caminho do robô como um ser humano. quando cruzamos a estrada. o robô anda reto e se encontrar algum obstáculo no caminho gira o pescoço e compara a distância da direita e da esquerda então de acordo com a distância que toma a decisão. por exemplo, ele detecta qualquer obstáculo no caminho, então ele irá parar e verificar à direita e à esquerda onde está a distância máxima. então ele vai virar para a direita ou esquerda de acordo com a distância máxima.

 

Diagrama de circuito do carro para evitar obstáculos Arduino

 

Código do Arduino para o robô evitando obstáculo:

int duration=0;
long distance=0;
int firstduration=0;
long firstdistance=0;
int secondduration=0;
long seconddistance=0;

#include "servo.h"
Servo myservo; 

int pos = 0;   

void setup() {
  pinMode(5,OUTPUT);
  pinMode(6,INPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  myservo.attach(3);
  Serial.begin(9600); 
}

void loop() {
  digitalWrite(5, HIGH);
  delayMicroseconds(10);
  digitalWrite(5, LOW);
  delayMicroseconds(2);
  duration= pulseIn(6,HIGH);
  delay(100);
  distance=duration*0.034/2;
  Serial.println(distance);
  if(distance<=20) {
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    delay(300);
    digitalWrite(7, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    delay(350);
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    myservo.write(0);
    delay(500);
    digitalWrite(5, HIGH);
    delayMicroseconds(10);
    digitalWrite(5, LOW);
    delayMicroseconds(2);
    firstduration=pulseIn(6,HIGH);
    delay(100);
    firstdistance=firstduration*0.034/2;
    int first = firstdistance;     
    Serial.println(firstdistance);
    myservo.write(90);
    delay(500);
    myservo.write(180);
    delay(500);
    digitalWrite(5, HIGH);
    delayMicroseconds(10);
    digitalWrite(5, LOW);
    delayMicroseconds(2);
    secondduration= pulseIn(6,HIGH);
    delay(100);
    seconddistance=secondduration*0.034/2;
    int second = seconddistance;
    Serial.println(seconddistance);
    myservo.write(90);
    delay(500);
    if(first < second ) { 
      digitalWrite(7, LOW); 
      digitalWrite(8, HIGH); 
      digitalWrite(9, HIGH); 
      digitalWrite(10, LOW); 
      delay(500); 
    } else if(first > second  ) {
      digitalWrite(7, HIGH);
      digitalWrite(8, LOW);
      digitalWrite(9, LOW);
      digitalWrite(10, HIGH);  
      delay(500);
    }
  } else {
    digitalWrite(7, HIGH);
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    digitalWrite(10, LOW);
 }
}