- Componentes requeridos:
- Módulo de sensor ultrasónico:
- Explicación del circuito:
- Cómo funciona:
- Explicación de programación:
Los robots son máquinas que reducen los esfuerzos humanos en trabajos pesados al automatizar las tareas en industrias, fábricas, hospitales, etc. La mayoría de los robots se ejecutan usando alguna unidad de control o componentes como un botón, control remoto, joystick, PC, gestos y ejecutando algún comando usando controlador o procesador. Pero hoy estamos aquí con un Robot Automático que se mueve de forma autónoma sin ningún evento externo evitando todos los obstáculos a su paso, sí estamos hablando de Robot Evita Obstáculos. En este proyecto, hemos utilizado Raspberry Pi y el controlador del motor para conducir el robot y el sensor ultrasónico para detectar objetos en la trayectoria del robot.
Anteriormente hemos cubierto muchos Robots útiles, puede encontrarlos en nuestra sección de proyectos de Robótica.
Componentes requeridos:
- Frambuesa pi
- Módulo de sensor ultrasónico HC-SR04
- ROBOT Chasis completo con tornillo
- Motores DC
- L293D IC
- Ruedas
- Tabla de pan
- Resistencia (1k)
- Condensador (100nF)
- Cables de conexión
- Fuente de alimentación o banco de energía
Módulo de sensor ultrasónico:
Un robot evitador de obstáculos es un robot automatizado y no necesita ser controlado con ningún control remoto. Estos tipos de robots automatizados tienen algunos sensores de "sexto sentido" como detectores de obstáculos, detectores de sonido, detectores de calor o detectores de metales. Aquí hemos realizado la detección de obstáculos mediante señales de ultrasonido. Para ello, hemos utilizado el módulo de sensor ultrasónico.
Los sensores ultrasónicos se utilizan comúnmente para detectar objetos y determinar la distancia entre el obstáculo y el sensor. Esta es una gran herramienta para medir la distancia sin ningún contacto físico, como la medición del nivel de agua en el tanque, la medición de la distancia, el robot evitador de obstáculos, etc. Así que aquí, hemos detectado el objeto y medido la distancia utilizando un sensor ultrasónico y Raspberry Pi.
El sensor ultrasónico HC-SR04 se utiliza para medir distancias en el rango de 2 cm a 400 cm con una precisión de 3 mm. El módulo sensor consta de un transmisor ultrasónico, un receptor y el circuito de control. El sensor ultrasónico consta de dos ojos circulares de los cuales uno se utiliza para transmitir la onda ultrasónica y el otro para recibirla.
Podemos calcular la distancia del objeto en función del tiempo que tarda la onda ultrasónica en volver al sensor. Como se conoce el tiempo y la velocidad del sonido, podemos calcular la distancia mediante las siguientes fórmulas.
- Distancia = (tiempo x velocidad del sonido en el aire (343 m / s)) / 2.
El valor se divide por dos, ya que la onda viaja hacia adelante y hacia atrás cubriendo la misma distancia, por lo que el tiempo para alcanzar el obstáculo es solo la mitad del tiempo total necesario.
Así que hemos calculado la distancia (en centímetros) del obstáculo como se muestra a continuación:
pulse_start = time.time () while GPIO.input (ECHO) == 1: #Compruebe si el ECHO es ALTO GPIO.output (led, False) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distancia = pulse_duration * 17150 distancia = ronda (distancia, 2) avgDistance = avgDistance + distancia
Donde pulse_duration es el tiempo entre el envío y la recepción de la señal ultrasónica.
Explicación del circuito:
El circuito es muy simple para este robot para evitar obstáculos que usa Raspberry Pi. Un módulo de sensor ultrasónico, utilizado para detectar objetos, está conectado en los pines GPIO 17 y 27 de Raspberry Pi. Un controlador de motor IC L293D está conectado a Raspberry Pi 3 para impulsar los motores del robot. Los pines de entrada 2, 7, 10 y 15 del controlador del motor están conectados al pin número 12, 16, 20 y 21 de Raspberry Pi GPIO, respectivamente. Aquí hemos utilizado dos motores de CC para impulsar el robot en el que un motor está conectado a los pines de salida 3 y 6 del controlador de motor IC y otro motor está conectado a los pines 11 y 14 del controlador de motor IC.
Cómo funciona:
El funcionamiento de este robot autónomo es muy sencillo. Cuando el robot se enciende y comienza a funcionar, Raspberry Pi mide las distancias de los objetos, frente a él, mediante el uso del módulo de sensor ultrasónico y se almacena en una variable. Luego, RPi compara este valor con valores predefinidos y toma las decisiones correspondientes para mover el robot hacia la izquierda, derecha, adelante o atrás.
Aquí, en este proyecto, hemos seleccionado una distancia de 15 cm para tomar cualquier decisión de Raspberry Pi. Ahora, cada vez que Raspberry Pi se aleja a menos de 15 cm de cualquier objeto, Raspberry Pi detiene el robot y lo mueve hacia atrás y luego lo gira hacia la izquierda o hacia la derecha. Ahora, antes de moverlo hacia adelante nuevamente, Raspberry Pi nuevamente verifica si hay algún obstáculo dentro del rango de 15 cm de distancia, si es así, repite nuevamente el proceso anterior, de lo contrario, mueva el robot hacia adelante hasta que detecte cualquier obstáculo u objeto nuevamente.
Explicación de programación:
Estamos usando el lenguaje Python aquí para el Programa. Antes de codificar, el usuario debe configurar Raspberry Pi. Puede consultar nuestros tutoriales anteriores para Comenzar con Raspberry Pi e Instalar y configurar Raspbian Jessie OS en Pi.
La parte de programación de este proyecto juega un papel muy importante para realizar todas las operaciones. En primer lugar, incluimos las bibliotecas necesarias, inicializamos variables y definimos pines para sensor ultrasónico, motor y componentes.
importar RPi.GPIO como tiempo de importación GPIO #Importar biblioteca de tiempo GPIO.setwarnings (Falso) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Después de eso, hemos creado algunas funciones def forward (), def back (), def left (), def right () para mover el robot hacia adelante, atrás, izquierda o derecha respectivamente y def stop () para detener el robot, verifique las funciones en el Código que se proporciona a continuación.
Luego, en el programa principal, iniciamos Sensor ultrasónico y leímos el tiempo entre la transmisión y la recepción de la señal y calculamos la distancia. Aquí hemos repetido este proceso 5 veces para mayor precisión. Ya hemos explicado el proceso de cálculo de la distancia mediante sensor ultrasónico.
i = 0 avgDistance = 0 para i en el rango (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) while GPIO.input (ECHO) == 0: GPIO.output (led, False) pulse_start = time.time () while GPIO.input (ECHO) == 1: #Compruebe si el ECHO es ALTO GPIO.output (led, Falso) pulse_end = time.time () pulse_duration = pulse_end - pulse_start distancia = pulse_duration * 17150 distancia = ronda (distancia, 2) avgDistance = avgDistance + distancia
Finalmente, si el Robot encuentra algún obstáculo frente a él, luego de alejarnos del obstáculo, hemos programado el Robot para que tome una ruta diferente.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
El código completo para este robot para evitar obstáculos Raspberry Pi se proporciona a continuación con un video de demostración.