Robô evitando Obstáculo usando Arduino
Conteudo
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); } }