- Componente requerido:
- Montaje del robot limpiador de suelos:
- Cableado y conexiones:
- Explicación de programación:
Los limpiafondos automáticos no son nada nuevo, pero todos comparten un problema común. Todos son demasiado caros para lo que hacen. Hoy fabricaremos un Robot Automático de Limpieza Doméstica que solo cuesta una pequeña fracción de los que hay en el mercado. Este robot puede detectar los obstáculos y objetos que tiene enfrente y puede seguir moviéndose, evitando los obstáculos, hasta que se limpie toda la habitación. Tiene un pequeño cepillo para limpiar el piso.
Consulte también nuestro Robot de limpieza por aspiración inteligente con Arduino
Componente requerido:
- Arduino UNO R3.
- Sensor ultrasónico.
- Escudo del controlador de motor Arduino.
- Chasis de robot con tracción en las ruedas.
- Computadora para programar el Arduino.
- Batería para los motores.
- Un banco de energía para alimentar el Arduino
- Un cepillo de zapatos.
- Un estropajo Scotch Brite.
Nota: En lugar de usar baterías, también puede usar un cable largo de 4 hilos como lo hicimos nosotros. Aunque esta no es una solución muy elegante o práctica, puede hacerlo si no planea usarla en el mundo real todos los días. Asegúrese de que la longitud del cable sea suficiente.
Antes de entrar en detalles, analicemos primero sobre Ultrasonic.
Sensor ultrasónico HC-SR04:
El sensor ultrasónico se utiliza para medir la distancia con alta precisión y lecturas estables. Puede medir distancias de 2 cm a 400 cm o de 1 pulgada a 13 pies. Emite una onda de ultrasonido a la frecuencia de 40 KHz en el aire y si el objeto se interpone en su camino, rebotará hacia el sensor. Utilizando el tiempo que tarda en golpear el objeto y volver, puede calcular la distancia.
El sensor ultrasónico utiliza una técnica llamada "ECHO". “ECHO” es simplemente una onda de sonido reflejada. Tendrá un ECHO cuando el sonido se refleje después de llegar a un callejón sin salida.
El módulo HCSR04 genera una vibración de sonido en rango ultrasónico cuando hacemos que el pin 'Trigger' sea alto durante aproximadamente 10us, lo que enviará una ráfaga sónica de 8 ciclos a la velocidad del sonido y, después de golpear el objeto, será recibido por el pin Echo. Dependiendo del tiempo que tarda la vibración del sonido en recuperarse, proporciona una salida de pulso adecuada. Si el objeto está lejos, se necesitará más tiempo para que se escuche ECHO y el ancho del pulso de salida será grande. Y si el obstáculo está cerca, entonces el ECHO se escuchará más rápido y el ancho del pulso de salida será menor.
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 tanto, el tiempo para alcanzar el obstáculo es solo la mitad del tiempo total necesario.
Entonces, Distancia en centímetros = 17150 * T
Anteriormente hemos realizado muchos proyectos útiles usando este sensor ultrasónico y Arduino, compruébalos a continuación:
- Medición de distancia basada en Arduino usando un sensor ultrasónico
- Alarma de puerta usando Arduino y sensor ultrasónico
- Monitoreo de contenedor basado en IOT usando Arduino
Montaje del robot limpiador de suelos:
Monte el Arduino en el chasis. Asegúrese de no cortocircuitar nada en caso de que su chasis esté hecho de metal. Es una buena idea conseguir una caja para Arduino y el protector del controlador del motor. Asegure los motores con las ruedas y el chasis con tornillos. Su chasis debería tener opciones para hacer esto de fábrica, pero si no es así, puede improvisar una solución diferente. El epoxi no es una mala idea. Monte el cepillo para zapatos en la parte delantera del chasis. Usamos una combinación de epoxi M-Seal y tornillos perforados para esto, aunque puede usar cualquier otra solución que pueda ser más fácil para usted. Monte el estropajo Scotch Brite detrás del cepillo. Usamos un eje que atraviesa el chasis que lo mantiene en juego, aunque esto también es improvisable. Se puede usar un eje con resorte para acompañarlo. Monte las baterías (o los cables en la parte posterior del chasis).Epoxi o un portapilas son buenas formas de hacer esto. El pegamento termofusible tampoco está mal.
Cableado y conexiones:
El circuito de este robot automático de limpieza del hogar es muy simple. Conecte el sensor ultrasónico al Arduino como se menciona a continuación y coloque el protector del controlador del motor en el Arduino como cualquier otro protector.
El pin Trig de Ultrasonic está conectado al pin 12 del Arduino, el pin Echo está conectado al pin 13, el pin de voltaje al pin de 5V y el pin de tierra al pin de tierra. El pin Echo y el pin Trig permiten que Arduino se comunique con el sensor. La energía se entrega al sensor a través de los pines de voltaje y tierra, y los pines Trig y Echo le permiten enviar y recibir datos con el Arduino. Obtenga más información sobre la interfaz del sensor ultrasónico con Arduino aquí.
El blindaje del motor debe tener al menos 2 salidas y deben estar conectadas a sus 2 motores. Normalmente, estas salidas están etiquetadas como “M1” y “M2” o “Motor 1” y “Motor 2”. Conecte sus baterías y el banco de energía hasta el protector del motor y Arduino respectivamente. No los conecte cruzados. El escudo de su motor debe tener un canal de entrada. Si está utilizando cables, conéctelos a adaptadores de CA.
Explicación de programación:
Abra el IDE de Arduino. Pegue el código completo de Arduino, que se proporciona al final de este tutorial, en el IDE. Conecte su Arduino a la computadora. Seleccione el puerto en Herramientas / Puerto. Haga clic en el botón de carga.
Prueba el robot. Si gira muy poco o demasiado, experimente con los retrasos hasta que sea perfecto.
Antes de entrar en el código, necesitamos instalar Adafruit Motor Shield Library para impulsar los motores de CC. Dado que estamos utilizando el protector del controlador del motor L293D, necesitamos descargar la biblioteca AFmotor desde aquí. Luego agréguelo a la carpeta de su biblioteca Arduino IDE. Asegúrese de cambiarle el nombre a AFMotor . Obtenga más información sobre cómo instalar esta biblioteca.
El código es fácil y se puede entender fácilmente, pero aquí hemos explicado algunas partes:
El siguiente código configura el robot. Primero hemos incluido la Biblioteca Adafruit para accionar los motores con el escudo del controlador del motor. Después de eso, definimos el pin Trig y el pin Echo. También configura los motores. Establece el pin Trig en salida y el pin Echo en entrada.
#incluir #definir trigPin 12 #definir echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); configuración vacía () {pinMode (trigPin, SALIDA); pinMode (echoPin, INPUT); }
El siguiente código le dice al Arduino que repita los siguientes comandos. Después de eso, usa el sensor para transmitir y recibir sonidos ultrasónicos. Calcula la distancia desde el objeto una vez que las ondas ultrasónicas rebotan, después de notar que el objeto está dentro de la distancia establecida, le dice al Arduino que gire los motores en consecuencia.
void loop () {larga duración, distancia; digitalWrite (trigPin, BAJO); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, BAJO); duración = pulseIn (echoPin, HIGH); distancia = (duración / 2) / 29,1; if (distancia <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (HACIA ATRÁS); motor2.run (HACIA ATRÁS); retraso (2000); // CAMBIAR ESTO SEGÚN GIRE EL ROBOT.
Esto hace que el robot gire girando un motor y manteniendo el otro estancado.
El siguiente código hace que el robot gire ambos motores en la misma dirección para que se mueva hacia adelante hasta que detecte un objeto en el límite antes mencionado.
else {motor1.setSpeed (160); // CAMBIE ESTO DE ACUERDO CON LA RAPIDEZ QUE DEBE IR SU ROBOT. motor2.setSpeed (160); // CAMBIAR ESTO POR EL MISMO VALOR QUE PUSO ARRIBA. motor1.run (ADELANTE); motor2.run (ADELANTE); }