Tabla de contenido:

OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino: 5 pasos (con imágenes)
OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino: 5 pasos (con imágenes)

Video: OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino: 5 pasos (con imágenes)

Video: OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino: 5 pasos (con imágenes)
Video: ROBOT EVITA OBSTÁCULOS - Programación y funcionamiento MBLOCK WALL-e 2024, Junio
Anonim
Image
Image
OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino
OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino
OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino
OAREE - Impreso en 3D - Robot para evitar obstáculos para la educación en ingeniería (OAREE) con Arduino

OAREE (Robot para evitar obstáculos para la educación en ingeniería)

Diseño: El objetivo de este instructivo era diseñar un robot OAR (Robot para evitar obstáculos) que fuera simple / compacto, imprimible en 3D, fácil de ensamblar, utiliza servos de rotación continua para el movimiento y tiene la menor cantidad de piezas compradas como sea posible. Creo que he logrado crear este increíble robot y lo he llamado OAREE (Robot para evitar obstáculos para la educación en ingeniería). Este robot detectará obstáculos, se detendrá, mirará a la izquierda y a la derecha, luego girará en la dirección sin obstáculos y continuará hacia adelante.

Antecedentes: Internet tiene numerosos robots que evitan obstáculos, pero la mayoría son voluminosos, difíciles de montar y costosos. Muchos de estos robots tienen código Arduino suministrado, pero fue difícil encontrar un ejemplo de trabajo bien pensado. También quería usar servos de rotación continua para las ruedas (en lugar de motores de CC), lo que aún no se había hecho. Entonces, me puse en marcha en una misión para desarrollar un robot OAR compacto e inventivo para compartir con el mundo.

Desarrollo adicional: este robot se puede desarrollar aún más para una mejor precisión de ping, agregando sensores IR para la capacidad de seguimiento de línea, pantalla LCD para mostrar la distancia del obstáculo y mucho más.

Suministros

  • 1x Arduino Uno -
  • 1 protector de sensor V5 -
  • 1x soporte de batería 4xAA con interruptor de encendido / apagado -
  • 1x SG90 Servo -
  • 2x Servos de rotación continua -
  • 1x cable de alimentación de batería de 9V para Arduino (OPCIONAL) -
  • 1x sensor ultrasónico HC-SR04 -
  • 4x cables de puente hembra-hembra -
  • 2x bandas de goma
  • 1x batería de 9V (OPCIONAL)
  • 4 pilas AA
  • 4 tornillos pequeños (4 x 1/2 o algo similar)
  • Destornillador Phillips
  • Pegamento para sujetar bandas de goma a las ruedas

Paso 1: Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje del sensor ultrasónico

Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje de sensor ultrasónico
Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje de sensor ultrasónico
Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje de sensor ultrasónico
Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje de sensor ultrasónico
Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje de sensor ultrasónico
Impresión 3D: cuerpo, ruedas, rueda de mármol, perno / tuerca de 6 mm y montaje de sensor ultrasónico

Hay 5 partes para imprimir en 3D.

  1. Cuerpo
  2. Ruedas
  3. Rueda de mármol
  4. Perno / tuerca de 6 mm (opcional, se puede sustituir por una tuerca / perno de metal)
  5. Montaje del sensor ultrasónico

Todos los archivos. STL necesarios se incluyen en este instructivo, así como los archivos de Sketchup. Se recomienda un 40% de relleno.

Paso 2: programa el Arduino

Image
Image
Ensamblar el robot
Ensamblar el robot

Enviar código a Arduino UNO: usando el IDE de Arduino, envíe el código (en el archivo adjunto) a su módulo Arduino. Deberá descargar e incluir las bibliotecas servo.hy newping.h con este boceto.

El código está completamente comentado, por lo que puede ver lo que hace cada comando. Puede cambiar fácilmente la distancia del sensor ultrasónico a un valor mayor o menor si lo desea. Este es un código inicial y está destinado a ser ampliado y utilizado para un mayor desarrollo del proyecto.

// ROBOT PARA EVITAR OBSTÁCULOS // [email protected], [email protected], Universidad de TN en Chattanooga, Ingeniería Eléctrica, OTOÑO 2019 // Materiales necesarios: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3) HCSR04 Ulrasonic Sensor, 4) FS90 Servo (para sensor ultrasónico) // 5 y 6) 2x SERVOS DE ROTACIÓN CONTINUA para las ruedas // 7) Mármol de 16 mm para pivote de las ruedas traseras, 8 y 9) 2 bandas de goma para ruedas // 10- 15) 1x (4xAA) Soporte de batería con interruptor de encendido / apagado, 16 y 17) Batería de 9V con conector para alimentar Arduino UNO // IMPRESIÓN 3D: // 18) Cuerpo del ROBOT, 19 y 20) 2x Ruedas, 21) Rueda de mármol, 22) Sensor ultrasónico Montaje y tornillo de 6 mm (ver archivos adjuntos) // -------------------------------------- -------------------------------------------------- ----------------------------------------- #include // Incluir biblioteca de servos #include // Incluir biblioteca Newping // ------------------------------------------- -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // Disparador de EE. UU. Al pin 12 en Arduino #define ECHO_PIN 13 // Eco de EE. UU. Al pin 13 en Arduino #define MAX_DISTANCE 250 // Distancia al ping (el máximo es 250) int distancia = 100; // ------------------------------------------------ -------------------------------------------------- ------------------------------- Servo US_Servo; // Sensor ultrasónico Servo Servo Left_Servo; // Servo de la rueda izquierda Right_Servo; // Sonar NewPing del servo de la rueda derecha (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Configuración NewPing de pines y distancia máxima. // ------------------------------------------------ -------------------------------------------------- ------------------------------- void setup () // ENTRADA / SALIDA, DONDE CONECTAR, ESTABLECER POSICION / MOVIMIENTO INICIAL {pinMode (12, SALIDA); // Pin de disparo establecido como salida pinMode (13, INPUT); // Pin de eco establecido como entrada US_Servo.attach (11); // US Servo configurado en el pin 11 US_Servo.write (90); // US SERVO MIRA HACIA ADELANTE

Left_Servo.attach (9); // Servo de la rueda izquierda al pin 9

Left_Servo.write (90); // SERVO RUEDA IZQUIERDA en STOP

Right_Servo.attach (10); // Servo de la rueda derecha en el pin 10

Right_Servo.write (90); // SERVO RUEDA DERECHA en STOP delay (2000); // Espere 2 segundos distancia = readPing (); // Obtener la distancia de ping en posición directa delay (100); // Espere 100 ms moveForward (); // EL ROBOT SE MUEVE HACIA ADELANTE} // ------------------------------------------ -------------------------------------------------- ------------------------------------- bucle vacío () {int distanceRight = 0; // Inicia la distancia de EE. UU. Hacia la derecha en 0 int distanceLeft = 0; // Inicia la distancia de EE. UU. A la izquierda en 0 //US_Servo.write(90); // Centro servo estadounidense // delay (50); // US_Servo.write (70); // Mira un poco a la derecha // delay (250); // US_Servo.write (110); // Mira un poco a la izquierda // delay (250); // US_Servo.write (90); // Centro de mirada

if (distancia <= 20) // El robot SE MUEVE HACIA ADELANTE {moveStop (); // El robot SE DETIENE a distancia = distancia a la izquierda) // Decide en qué dirección girar {turnRight (); // El lado derecho tiene la mayor distancia, EL ROBOT GIRA A LA DERECHA para un retraso de 0.3s (500); // Este retardo determina la longitud del turno moveStop (); // El robot SE DETIENE} else {turnLeft (); // La mayor distancia del lado izquierdo, EL ROBOT GIRA A LA IZQUIERDA para un retraso de 0.3s (500); // Este retardo determina la longitud del turno moveStop (); // Robot SE DETIENE}} else {moveForward (); // El robot SE MUEVE HACIA ADELANTE} distancia = readPing (); // EE. UU. LEE NUEVO PING para la nueva dirección de viaje} // ----------------------------------- -------------------------------------------------- -------------------------------------------- int lookRight () // Sensor ultrasónico FUNCIÓN LOOK RIGHT {US_Servo.write (30); // El servo de EE. UU. SE MUEVE A LA DERECHA para ángulo de retardo (500); int distancia = readPing (); // Establecer el valor de ping para la demora derecha (100); US_Servo.write (90); // El servo de EE. UU. SE MUEVE AL CENTRO distancia de retorno; // La distancia está configurada} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int lookLeft () // Sensor ultrasónico FUNCIÓN LOOK IZQUIERDA {US_Servo.escribir (150); // El servo de EE. UU. SE MUEVE A LA IZQUIERDA al ángulo de retardo (500); int distancia = readPing (); // Establecer el valor de ping para el retardo izquierdo (100); US_Servo.write (90); // El servo de EE. UU. SE MUEVE AL CENTRO distancia de retorno; // La distancia está configurada} // ------------------------------------------ -------------------------------------------------- ------------------------------------- int readPing () // Leer función Ping para sensor ultrasónico. {retraso (100); // 100ms entre pings (tiempo mínimo de ping = 0.29ms) int cm = sonar.ping_cm (); // La distancia PING se recopila y se establece en cm if (cm == 0) {cm = 250; } return cm; } // ----------------------------------------------- -------------------------------------------------- -------------------------------- void moveStop () // ROBOT STOP {Left_Servo.write (90); // LeftServo 180 hacia adelante, 0 hacia atrás Right_Servo.write (90); // RightServo 0 hacia adelante, 180 hacia atrás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveForward () // ROBOT ADELANTE {Left_Servo.escribir (180); // LeftServo 180 hacia adelante, 0 hacia atrás Right_Servo.write (0); // RightServo 0 hacia adelante, 180 hacia atrás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void moveBackward () // ROBOT HACIA ATRÁS {Left_Servo.escribir (0); // LeftServo 180 hacia adelante, 0 hacia atrás Right_Servo.write (180); // RightServo 0 hacia adelante, 180 hacia atrás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnRight () // ROBOT DERECHA {Left_Servo.escribir (180); // LeftServo 180 hacia adelante, 0 hacia atrás Right_Servo.write (90); // RightServo 0 hacia adelante, 180 hacia atrás} // --------------------------------------- -------------------------------------------------- ---------------------------------------- void turnLeft () // ROBOT LEFT {Left_Servo.escribir (90); // LeftServo 180 hacia adelante, 0 hacia atrás Right_Servo.write (0); // RightServo 0 hacia adelante, 180 hacia atrás} // --------------------------------------- -------------------------------------------------- ----------------------------------------

Paso 3: ensamble el robot

Image
Image
Ensamblar el robot
Ensamblar el robot
Ensamblar el robot
Ensamblar el robot

Ahora es el momento de armar su robot. Los pasos se enumeran a continuación.

1) Fije el disco servo redondo y las bandas de goma a las ruedas: todos los servos vienen con tornillos y tornillería de montaje de plástico. Busque los discos redondos y atorníllelos en los dos orificios del lado plano de las ruedas. Las bandas de goma se ajustan alrededor de la rueda para proporcionar agarre. Es posible que desee agregar un poco de pegamento para mantener las bandas elásticas en su lugar.

2) Accesorio de rueda de mármol: use dos tornillos pequeños para sujetar la rueda de mármol a los dos triángulos en la parte trasera. La rueda de mármol es un reemplazo simple para una rueda trasera y proporciona un punto de pivote trasero.

3) Inserte los servos en las ranuras (no se necesitan tornillos): coloque el servo FS90 (para el sensor ultrasónico) en la ranura frontal del cuerpo. Los dos servos de rotación continua se deslizan hacia las ranuras izquierda y derecha. Las ranuras están diseñadas para un ajuste perfecto, por lo que no se requieren tornillos para mantener los servos en su lugar. Asegúrese de que los cables del servo pasen por las ranuras de las ranuras de modo que queden orientados hacia la parte posterior del cuerpo.

4) Colocación de la batería de 9 V (OPCIONAL): Coloque la batería de 9 V + el conector de alimentación Arduino detrás del servo frontal.

5) Conjunto de montaje del sensor ultrasónico: Utilice dos tornillos pequeños para fijar uno de los accesorios de servo de plástico blanco incluidos en la parte inferior de la placa de montaje del sensor ultrasónico. A continuación, utilice el perno / tuerca de 6 mm impreso en 3D (o sustitúyalo por un perno / tuerca de metal) para fijar la caja del sensor ultrasónico a la placa de montaje. Finalmente, coloque el sensor en el estuche con los pines hacia arriba y encájelo en la parte posterior del estuche.

6) Caja de batería AA 4x: Coloque la caja de batería AA en el área rectangular grande, con el interruptor de encendido / apagado mirando hacia la parte trasera.

7) Arduino Uno + V5 Sensor Shield: coloque el protector en el Arduino y colóquelo en los soportes sobre la caja de la batería. El conector de alimentación debe mirar hacia la izquierda.

¡Tu robot está construido! ¿Lo que queda? Programación del Arduino y conexión de cables de puente: servos, sensor ultrasónico y fuente de alimentación.

Paso 4: Conecte los cables del sensor

Image
Image
¡¡¡Finalizado!!! Conecte la fuente de alimentación Arduino de 9V, encienda la batería y comience a evitar obstáculos con OAREE
¡¡¡Finalizado!!! Conecte la fuente de alimentación Arduino de 9V, encienda la batería y comience a evitar obstáculos con OAREE

Conecte los cables del servo al blindaje V5:

  1. El servo de rotación continua izquierda se conecta al PIN 9
  2. El servo de rotación continua derecha se conecta al PIN 10
  3. El servo FS90 frontal se conecta al PIN 11

Conecte los pines del sensor ultrasónico (a través de 4 cables de puente hembra a hembra) al blindaje V5:

  1. Activar al PIN 12
  2. Eco al PIN 13
  3. VCC a cualquiera de los pines marcados con 'V'
  4. Conecte a tierra a cualquiera de los pines marcados con 'G'

Conecte la caja de la batería AA al V5 Shield:

  1. Conecte el cable rojo positivo al conector VCC
  2. Conecte el cable negro negativo a la conexión a tierra

Paso 5: ¡¡¡Terminado !!! Conecte la fuente de alimentación Arduino de 9V, encienda la batería y comience a evitar obstáculos con OAREE

Image
Image
¡¡¡Finalizado!!! Conecte la fuente de alimentación Arduino de 9V, encienda la batería y comience a evitar obstáculos con OAREE
¡¡¡Finalizado!!! Conecte la fuente de alimentación Arduino de 9V, encienda la batería y comience a evitar obstáculos con OAREE

¡¡¡Finalizado!

1) Conecte la fuente de alimentación Arduino de 9 V (opcional)

2) Encienda la batería

3) ¡¡¡Empiece a Evitar Obstáculos con OAREE !!!

Estoy seguro de que le gustará a su nuevo amigo, OAREE, después de verlo sentir un obstáculo, retroceder y cambiar de dirección. OAREE funciona mejor con objetos grandes de los que el sensor ultrasónico puede hacer ping (como paredes). Tiene dificultades para hacer ping a objetos pequeños como patas de sillas debido a su pequeña superficie y esquinas. Comparta, desarrolle más y avíseme de los ajustes o errores necesarios. ¡Esta ha sido una gran experiencia de aprendizaje y espero que te diviertas tanto haciendo este proyecto como yo!

Concurso de robótica
Concurso de robótica
Concurso de robótica
Concurso de robótica

Finalista en el Concurso de Robótica

Recomendado: