Índice:

Obstáculo para evitar carro robótico: 9 etapas
Obstáculo para evitar carro robótico: 9 etapas

Vídeo: Obstáculo para evitar carro robótico: 9 etapas

Vídeo: Obstáculo para evitar carro robótico: 9 etapas
Vídeo: Como hacer Carro que EVITA OBSTÁCULOS | ARDUINO | Obstacle Avoiding Car | ARDUINO 2024, Julho
Anonim
Obstáculo para evitar carro robótico
Obstáculo para evitar carro robótico
Obstáculo para evitar carro robótico
Obstáculo para evitar carro robótico

Como construir um robô para evitar obstáculos

Etapa 1: Caixa Preta

Caixa preta
Caixa preta

a primeira etapa usei uma caixa preta como base para meu robô.

Etapa 2: Arduino

Arduino
Arduino

O Arduino é o cérebro de todo o sistema e orquestra nossos motores

Etapa 3: anexando o Arduino ao Blackbox

Anexando o Arduino ao Blackbox
Anexando o Arduino ao Blackbox

Anexei o arduino à caixa preta usando cola quente

Etapa 4: sensor ultrassônico

Sensor ultrasônico
Sensor ultrasônico

Para fazer um robô que se mova sozinho, precisamos de algum tipo de entrada, um sensor que se ajuste ao nosso objetivo. Um sensor ultrassônico é um instrumento que mede a distância até um objeto usando ondas sonoras ultrassônicas. Um sensor ultrassônico usa um transdutor para enviar e receber pulsos ultrassônicos que retransmitem informações sobre a proximidade de um objeto

Etapa 5: Conexão da placa de ensaio do sensor ao Arduino

Conexão da placa de ensaio do sensor ao Arduino
Conexão da placa de ensaio do sensor ao Arduino
Conexão da placa de ensaio do sensor ao Arduino
Conexão da placa de ensaio do sensor ao Arduino

Usei fios para fazer a conexão entre a placa de ensaio e o arduino.

Preste atenção que seu sensor de ping pode ter um layout de pino diferente, mas deve ter um pino de tensão, pino de aterramento, pino de trigonometria e um pino de eco.

Etapa 6: blindagem do motor

Escudo do motor
Escudo do motor

As placas Arduino não podem controlar os motores CC por conta própria, porque as correntes que geram são muito baixas. Para resolver esse problema, usamos blindagem do motor. A blindagem do motor tem 2 canais, o que permite o controle de dois motores CC, ou 1 motor de passo. … Ao endereçar esses pinos, você pode selecionar um canal do motor para iniciar, especificar a direção do motor (polaridade), definir a velocidade do motor (PWM), parar e iniciar o motor e monitorar a absorção de corrente de cada canal

Etapa 7: Conectando a blindagem do motor ao Arduino

Conectando a blindagem do motor ao Arduino
Conectando a blindagem do motor ao Arduino

Basta conectar a blindagem do motor ao arduino com os fios do sensor triturados

Etapa 8: Conectando os 4 motores e baterias para blindar

Conectando os 4 motores e baterias para blindar
Conectando os 4 motores e baterias para blindar

Cada blindagem do motor tem (pelo menos) dois canais, um para os motores e um para uma fonte de alimentação, conecte-os um em relação ao outro

Etapa 9: programe o robô

execute este código

#include #include

Sonar NewPing (TRIG_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); Servo myservo;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

boolean goesForward = false; distância interna = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); atraso (2000); distância = leitura (); atraso (100); distância = leitura (); atraso (100); distância = leitura (); atraso (100); distância = leitura (); atraso (100); }

loop vazio () {distância interna R = 0; distância interna L = 0; atraso (40); if (distância <= 15) {moveStop (); atraso (50); mover para trás(); atraso (150); moveStop (); atraso (100); distanceR = lookRight (); atraso (100); distanceL = lookLeft (); atraso (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distância = leitura (); }

int lookRight () {myservo.write (50); atraso (250); distância interna = leitura (); atraso (50); myservo.write (100); distância de retorno; }

int lookLeft () {myservo.write (120); atraso (300); distância interna = leitura (); atraso (100); myservo.write (115); distância de retorno; atraso (100); }

leitura interna () {atraso (70); int cm = sonar.ping_cm (); se (cm == 0) {cm = 200; } return cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {

if (! vai para a frente) {vai para a frente = verdadeiro; motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); para (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); atraso (5); }}}

void moveBackward () {goesForward = false; motor1.run (PARA TRÁS); motor2.run (PARA TRÁS); motor3.run (PARA TRÁS); motor4.run (PARA TRÁS); para (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); atraso (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (PARA TRÁS); motor3.run (FORWARD); motor4.run (FORWARD); atraso (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (PARA TRÁS); motor3.run (FORWARD); motor4.run (FORWARD); atraso (500); motor1.run (FORWARD); motor2.run (FORWARD); motor3.run (FORWARD); motor4.run (FORWARD); }

Recomendado: