Inicio » Aula
Archivos de la categoría: Aula
DYOR estándar controlado por bluetooth
En esta entrada se muestra como se ha creado el robot y podrás comprobar su funcionamiento.
RumbaBot – Llega a todas las esquinas
Introducción
Este robot nace de la idea de crear un limpiador de suelos, con una estructura circular que permite llegar hasta cualquier esquina e incorporando múltiples sensores para conseguir una localización precisa y fiable.
Para fabricar este robot hemos diseñado y construido la estructura con:
- Base redonda de madera (3mm). – Diseñada en AutoCAD y cortada en láser.
- Accesorios para ruedas y acoplar sensores – Diseña en Fusión 360 e impresa en 3D.
- Tornillos, arandelas y tuercas de 3mm y 4mm.
Para dar vida al robot, se han comprado los siguientes componentes:
- 1x NodeMCU ESP32-WROOM-2 con Shield de Desarrollo (Encontrar aquí)
- 2x Micro Servo SG90 rotación continua (Encontrar aquí)
- 2x Ruedas de goma 66mm (Encontrar aquí)
- 2x Sensor laser VL53L0X (Encontrar aquí)
- 5x Sensor Luz TCRT5000 (Encontrar aquí)
- 4x Batería 18650 Li-ion 2000 mAh (recicladas)
- 1x Cargador Batería 5V (Encontrar aquí)
- 20x Cables Dupont H-H
Idea inicial
Como hemos comentado, la idea inicial era hacer un robot que pudiese explorar toda una habitación (e incluso una casa), elaborar un mapa de ocupación y establecer rutas para limpiar todo el suelo.
No obstante, esta función era algo ambiciosa, por lo que se mantuvo el diseño del robot (redondo) pero la programación fue más realista y ajustada a los tiempos de los que se disponía.
Las funciones para las que ha sido diseñado este robot son:
- Sigue líneas. Con ayuda de los sensores TCRT5000, se guía por una línea negra que sigue hasta que se ordene lo contrario.
- Conducción manual. Conectado por Bluetooth con un móvil, se puede controlar con el movimiento del dispositivo celular, como si se tratase de un volante inalámbrico.
- Sigue paredes. Los dos sensores láser permiten a RumbaBot saber la distancia hasta las paredes laterales, permitiéndole seguir una trayectoria equidistante a dichas paredes. Esta función se puede combinar con el control manual, para hacer que el robot se mueva entre paredes y controlar su movimiento hacia adelante o hacia atrás.
Montaje
El diseño del robot es bastante sencillo: es un robot diferencial, con dos ruedas centrales y una rueda loca en la parte trasera. En la parte delantera tiene 5 sensores de sigue líneas (ya que son digitales, no podemos utilizar solo uno). En cada lateral, un sensor láser de distancia abastece al robot de visión lateral. Por último, la batería está ubicada en la parte trasera, sobre la rueda loca, para dar estabilidad al robot.
Una imagen del mismo se puede apreciar en la siguiente imagen:
Funciones
Control Manual con volante
La principal función del RumbaBot, y quizás la más interesante y diferente, es su control a distancia con el móvil. A priori, podría parecer que este control no tiene nada diferente, pero el punto de interés es la conducción usando el móvil como un volante. El móvil detecta dos movimientos:
- Inclinación frontal: igual que funcionaría un acelerador, si inclinamos el móvil hacia una posición horizontal, el carro acelera. Si lo colocamos a unos 30 grados, el coche se para. Para dar marcha atrás, solo hay que inclinarlo verticalmente. Con el ángulo de este eje ya tenemos el movimiento lineal, pero falta el giro.
- Inclinación lateral: al mover el móvil hacia los lados, el robot gira en esa dirección. Si la velocidad lineal del coche es nula (inclinación frontal próxima a 30º), el carro gira sobre sí mismo. Cuando combinamos velocidad lineal y angular, el robot realiza una curva.
El diseño de la aplicación móvil ha sido 100% propia, usando la plataforma Android Studio se ha conseguido una comunicación Bluetooth con el robot, la detección de la inclinación con el acelerómetro que incorpora el móvil y la transmisión de datos.
Para enviar información se ha optado por una comunicación con mensajes siguiendo el siguiente formato:
Sigue líneas
Utilizando la comunicación Bluetooth, podemos enviar el código 30 (los otros dos parámetros son indiferentes) y el robot entra en el modo sigue líneas. Para conseguir esta función, el robot utiliza los 5 sensores digitales, que detectan el color negro. Para conseguir un buen funcionamiento, ha sido necesario cubrir cada sensor con una carcasa negra para evitar el cross-talking de los sigue líneas.
El control de sigue líneas es bastante sencillo:
- Los 5 sensores son leídos y almacenados sus valores en 5 variables.
- La velocidad lineal depende únicamente de cuantos sensores detectan negro, a mayor número, mayor la velocidad. Teóricamente, si la línea que sigue el robot es recta, el robot detectará negro en 3 sensores. Al girar, solo detecta negro en 1 o 2 sensores. Por tanto, el robot decelera en las curvas y frena si no hay línea negra.
- La velocidad angular depende de la asimetría al medir negro. Dicha velocidad se calcula como una resta entre la lectura de los sensores izquierdos y derechos. Si hay equilibrio, esta velocidad será nula (esto ocurre en las rectas). Si hay disparidad, el robot girará hasta volver al equilibrio.
El funcionamiento de este modo sigue líneas se puede apreciar en el siguiente vídeo:
Como se puede observar, el movimiento no es tan suave como debería ser. Esto se debe a un fallo de diseño, por utilizar detectores de luz digitales, el control no es continuo y produce los saltos que se pueden apreciar en el vídeo.
Mejoras
Como hemos comentado, el robot no es perfecto y podría mejorarse haciendo las siguientes actualizaciones:
- Utilizar un sensor TCRT5000 con salida analógica: esto nos permite un control continuo mucho más suave. Además, solo sería necesario un sensor y evitaríamos así el cross-talking al tener múltiples sensores.
- Colocar las ruedas ligeramente descentradas respecto al eje longitudinal: esto aportaría estabilidad al robot, ya que el centro de masas estaría entre los dos puntos de apoyo (ruedas motorizadas y la rueda loca).
- Añadir un sensor láser frontal: con el fin de detectar obstáculos frontales, es recomendable añadir un sensor de distancia frontal, para evitar chocarse en la dirección del movimiento.
Código y archivos
Puedes acceder al código del programa y otros archivos multimedia en este enlace RumbaBot-DYOR en GitHub.
DYOR SapoBot
En esta entrada se muestra el proceso de la construcción del SapoBot incluyendo el diseño, los componentes y una explicación de su funcionamiento.
DYOR ARMStrong
Aquí os muestro mi proceso de toma de decisiones, diseño, montaje, programación y troubleshooting sobre mi proyecto DYOR!! (más…)
F1 ROBOT DYOR CAR
En esta entrada se muestra el proceso de construcción de F1 DYOR CAR, incluyendo el diseño, componentes y una breve explicación de las aplicaciones implementadas. (más…)