Tabla de contenido:

Coche robótico para evitar obstáculos: 9 pasos
Coche robótico para evitar obstáculos: 9 pasos

Video: Coche robótico para evitar obstáculos: 9 pasos

Video: Coche robótico para evitar obstáculos: 9 pasos
Video: Como hacer Carro que EVITA OBSTÁCULOS | ARDUINO | Obstacle Avoiding Car | ARDUINO 2024, Noviembre
Anonim
Obstáculo para evitar el coche robótico
Obstáculo para evitar el coche robótico
Obstáculo para evitar el coche robótico
Obstáculo para evitar el coche robótico

Cómo construir un robot para evitar obstáculos

Paso 1: caja negra

Caja negra
Caja negra

El primer paso utilicé una caja negra como base para mi robot.

Paso 2: Arduino

Arduino
Arduino

El Arduino es el cerebro de todo el sistema y orquesta nuestros motores

Paso 3: Conectando el Arduino a Blackbox

Conectando el Arduino a Blackbox
Conectando el Arduino a Blackbox

Adjunté el arduino a la caja negra con pegamento caliente

Paso 4: Sensor ultrasónico

Sensor ultrasónico
Sensor ultrasónico

Para hacer un robot que pueda moverse por sí solo, necesitamos algún tipo de entrada, un sensor que se ajuste a nuestro objetivo. Un sensor ultrasónico es un instrumento que mide la distancia a un objeto mediante ondas sonoras ultrasónicas. Un sensor ultrasónico utiliza un transductor para enviar y recibir pulsos ultrasónicos que transmiten información sobre la proximidad de un objeto.

Paso 5: Conexión de la placa de pruebas del sensor a Arduino

Conexión de la placa de pruebas del sensor a Arduino
Conexión de la placa de pruebas del sensor a Arduino
Conexión de la placa de pruebas del sensor a Arduino
Conexión de la placa de pruebas del sensor a Arduino

Usé cables para conectar la conexión entre la placa de pruebas y el arduino.

Preste atención a que su sensor de ping puede tener un diseño de pines diferente, pero debe tener un pin de voltaje, un pin de tierra, un pin de disparo y un pin de eco.

Paso 6: Escudo del motor

Escudo del motor
Escudo del motor

Las placas Arduino no pueden controlar los motores de CC por sí mismas, porque las corrientes que están generando son demasiado bajas, para solucionar este problema utilizamos protectores de motor, el protector de motor tiene 2 canales, lo que permite el control de dos motores de CC o 1 motor paso a paso. … Al direccionar estos pines, puede seleccionar un canal de motor para iniciar, especificar la dirección del motor (polaridad), establecer la velocidad del motor (PWM), detener y arrancar el motor y monitorear la absorción de corriente de cada canal

Paso 7: Conexión del protector del motor a Arduino

Conectando Motor Shield a Arduino
Conectando Motor Shield a Arduino

Simplemente conecte el protector del motor al arduino con los cables del sensor crujidos

Paso 8: Conexión de los 4 motores y baterías al blindaje

Conexión de los 4 motores y baterías al blindaje
Conexión de los 4 motores y baterías al blindaje

Cada protector de motor tiene (al menos) dos canales, uno para los motores y otro para una fuente de alimentación, conéctelos entre sí

Paso 9: programe el robot

ejecuta este código

#include #incluya

Sonda 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

booleano va hacia adelante = falso; int distancia = 80; int speedSet = 0;

configuración vacía () {

myservo.attach (10); myservo.write (115); retraso (2000); distancia = readPing (); retraso (100); distancia = readPing (); retraso (100); distancia = readPing (); retraso (100); distancia = readPing (); retraso (100); }

bucle vacío () {int distanciaR = 0; int distanciaL = 0; retraso (40); if (distancia <= 15) {moveStop (); retraso (50); mover hacia atrás(); retraso (150); moveStop (); retraso (100); distanciaR = mirarRight (); retraso (100); distanciaL = lookLeft (); retraso (100);

if (distanciaR> = distanciaL) {giro a la derecha (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distancia = readPing (); }

int lookRight () {myservo.write (50); retraso (250); int distancia = readPing (); retraso (50); myservo.write (100); distancia de regreso; }

int lookLeft () {myservo.write (120); retraso (300); int distancia = readPing (); retraso (100); myservo.write (115); distancia de regreso; retraso (100); }

int readPing () {retraso (70); int cm = sonar.ping_cm (); si (cm == 0) {cm = 200; } return cm; }

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

if (! GoForward) {GoForward = true; motor1.run (ADELANTE); motor2.run (ADELANTE); motor3.run (ADELANTE); motor4.run (ADELANTE); para (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); retraso (5); }}}

void moveBackward () {va hacia adelante = falso; motor1.run (HACIA ATRÁS); motor2.run (HACIA ATRÁS); motor3.run (HACIA ATRÁS); motor4.run (HACIA ATRÁS); para (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); retraso (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (HACIA ATRÁS); motor3.run (ADELANTE); motor4.run (ADELANTE); retraso (500); motor1.run (ADELANTE); motor2.run (ADELANTE); motor3.run (ADELANTE); motor4.run (ADELANTE); }

void turnLeft () {motor1.run (HACIA ATRÁS); motor2.run (HACIA ATRÁS); motor3.run (ADELANTE); motor4.run (ADELANTE); retraso (500); motor1.run (ADELANTE); motor2.run (ADELANTE); motor3.run (ADELANTE); motor4.run (ADELANTE); }

Recomendado: