Inicio » Aula » Robot Dagui

Robot Dagui

En esta entrada se describe el proceso de diseño, construcción y programación del robot Dagui. También se incluirá una demostración de su funcionamiento.

 

Diseño:

Originalmente se pretendía realizar un diseño que fuera similar al famoso personaje de la saga de Star Wars Darth Vader, sin embargo, no puedo ser posible. Se incluye los planos CAD del diseño original.

Finalmente se imprimió mediante corte láser el diseño “DYOR_LEDStrip_MetalSheet_Arms”.

Componentes utilizados:

  • Arduino Nano ( +cable mini USB –USB)
  • I/O shield para arduino
  • Power bank (+cable nano USB-USB)
  • Servo continuo FS90R x 2
  • Rueda de goma x 2
  • Rueda loca
  • Ultrasonido HC-SR04
  • Zumbador
  • Matriz de LEDs RGB WCMCU
  • IR sensor + emisor TCRT500
  • Módulo bluetooth HC-06
  • Servo SG90 x 2

Los pines de los componentes han sido conectados según correspondía a masa (GND-G), alimentación (VCC-V) o a la I/O. Estás han sido:

  • Trigger (ultrasonido) pin 2
  • Echo (ultrasonido) pin 3
  • Servo izquierda pin 4
  • Servo derecha pin 5
  • Servo espada pin 6
  • Servo escudo pin 7
  • Tx (Blueetooth) pin 8
  • Rx (Blueetooth) pin 9
  • Zumbador pin 10
  • Matriz pin 11
  • Sensor IR al pin analógico 0 (A0)

Programación AppInventor

Se ha programado una aplicación con tres pantallas distintas. La primera es la pantalla principal y tiene el siguiente aspecto:

Las aplicaciones que pueden realizarse desde esta pantalla son:

  1. Pulsando el botón de conectar Bluetooth conectas la tablet al robot.
  2. Pulsando el botón del espada, el robot mueve la espada y la aplicación realiza un sonido imitando a una espada real moverse
  3. Pulsando el botón del escudo el robot mueve el escudo y la aplicación realiza un sonido imitando a un escudo real moverse.
  4. Pulsando el botón de avance autónomo, el robot es capaz de moverse por el espacio evitando los posibles obstáculos que aparezcan en su camino gracias al ultrasonido.
  5. Pulsando el botón de la carretera el robot es capaz de realizar la aplicación segui-líneas, es decir, es capaz de moverse siguiendo una línea negra en el suelo gracias al sensor de infrarrojo
  6. Pulsando el botón de música el robot es capaz de reproducir una canción mediante el zumbador de la siguiente lista:
    • Marcha imperial (Star Wars)
    • La fuerza (Star Wars)
    • Juego de tronos
    • Harry potter
    • Piratas del caribe
    • Indiana Jones
    • Cumpleaños feliz
    • El golpe
    • Ninguna (pulsando este botón no sonará ninguna canción)
  7.  Pulsando el botón del control, la aplicación irá a una nueva pantalla, desde donde se puede controlar el movimiento del robot mediante el acelerómetro
  8. Pulsando el botón del anillo RGB, la aplicación abrirá una nueva ventana desde donde se puede controlar el color de la matriz de LEDs, así como su intensidad.
  9. Pulsando cualquier botón de las flechas, el robot avanzará en esa dirección
  10. Por último, pulsando el botón de ‘stop’ el robot parará de realiza cualquier aplicación, excepto la de la música, que una vez iniciada es necesario que la canción termine antes de que el robot pueda realizar cualquier otra opción.

La ventana del control mediante acelerómetro tiene el siguiente aspecto:

Es necesario desconectar el bluetooth de la pantalla principal y conectar el bluetooth desde esta pantalla para que todo funcione correctamente.

Esta pantalla indica, cuales son los valores de X e Y medidos con el acelerómetro cada vez que inclinemos el dispostivo.

Pulsando el botón de ‘volver a la pantalla principal’ la aplicación desconecta el bluetooth automáticamente y regresa a la ventana anterior.

Para la aplicación de la matriz de LEDs existen dos versiones la antigua que se describe a continuación y es que sale en el primer vídeo demostrativo, y una actualización, que se presenta en un segundo vídeo demostrativo.

Antes de iniciar el funcionamiento de esta ventana, se debe conectar la aplicación a Dagui, pulsando el botón de Bluetooth, una vez que hayamos conectado, podemos cambiar el color de los LEDs usando los sliders, cada uno corresponde a uno de los tres colores primarios aditivos, es decir, rojo verde y azul. Los valores posibles de cualquiera de estos es de 0 a 255. Cada vez que cualquiera de los tres thumbs varíe su posición, la aplicación envía una actualización de los valores RGB al robot.

Finalmente, pulsado el botón de ‘volver’ se vuelve a la pantalla principal y se desconecta el Bluetooth. Sin embargo, la matriz de LEDs, conserva el último color actualizado en la matriz.

La nueva actualización cuenta con la siguiente interfaz:

La nueva funcionalidad permite elegir el LED o los LEDs que queremos actualizar, mientras que los otros permanecen con el último color que se les ha actualizado. Cuando hayamos seleccionado un LED para actualizarlo es botón asociado a este LED cambiará de color a verde, mientras que si no está actualizado será rojo.

Programación Arduino

Para la programación en arduino se ha seguido una lógica muy simple, primero se incluían las librerías, ya que algunos de los componentes necesitan librerías especiales para su control, están han sido:

  • Servo.h para el control de los servos
  • SoftwareSerial.h para el control del módulo Bluetooth
  • Adafruit_NeoPixel.h para el control de la matriz RGB

Se han declarado todas las variables globales, entre ellas la variable ‘comando’ que es la va almacenar el comando enviado por la aplicación, incialmente tiene un valor ‘0’ para que no realice ninguna orden hasta que no reciba un comando nuevo, y se ha indicado a qué pin está conectado cada objeto.

En el setup, se ha inicializado la velocidad a 9600 baudios tanto para el módulo bluetooth como para el monitor Serial. También se ha indicado qué pines actúan como salida y cuáles como entrada.

En cuanto al loop se ha implementado una función para que esté continuamente leyendo los valores que son enviados desde la aplicación vía bluetooth y ejecute la acción correspondiente mediante un switch.

Se han creado además 4 funciones, una que transforma la distancia leída por el ultrasonido en cm,  otra llamada sonar_cancion(), que contiene una declaración de las notas musicales de acuerdo a su frecuencia, así como la estructura musical de las canciones que han sido implementadas, decidir una canción u otra también se ha implementado mediante un switch. Además otra función denominada beep() para hacer sonar el zumbador tanto a la frecuencia como al tiempo deseados.

Por último se ha creado otra funciona para comparar los bits del byte que contiene los LEDs que se tienen que actualizar y los que no de la matriz RGB.

Ensamblaje del robot

Tras la impresión de se obtiene una única hoja de metal que ha sido doblada de acuerdo a la forma deseada, para doblarla era necesario usar un martillo en las partes más duras. Hay que tener especial cuidado en las partes más finas porque una exceso de fuerza puede romperlas.

Los servos de las ruedas han sido atornillados en sus respectivos soportes, en cuanto a los servos de los brazos hubo que pegarlos con la pistola de cola de caliente, ya que los soportes se rompieron en el proceso de doblaje. Tanto la espada como el escudo han sido atornillados a sus respectivos servos.

El ultrasonido encaja perfectamente en los huecos de los ojos, por lo que no es necesario pegarlo.

En cuanto a la matriz RGB, ha habido un problema a la hora de colocarla en su sitio, ya que los pines soldados  chocaban con la base del robot, por lo que ha tenido que ser girada causando que no encaje en los huecos diseñados. En lugar de soldar los pines a la matriz, se han soldado cables macho-hembra para poder realizar la conexión directa.

Tanto la power bank como el módulo bluetooth se han pegado directamente a la base del robot con una pistola de cola caliente. El zumbador se ha pegado encima de la power bank.

Para colocar el segui-líneas primeramente se usó un soporte de chapa metálica, como se puede apreciar en la siguiente fotografía:

Sin embargo, de esta manera el segui-líneas estaba muy cerca del suelo, ocasionando medidas erróneas, por lo que finalmente se pegó directamente el segui-líneas a la parte de abajo del robot mediante cinta aislante. Esta es una solución un poco de «andar por casa» por lo que se espera cambiarla cuando se tengan los recursos apropiados.

En cuanto a la placa de extensión se ha pegado en un trozo de cartón con cola caliente, y por último, ese trozo de cartón se ha pegado a la chapa metálica, de nuevo para evitar que pudiera ocurrir algún cortocircuito por atornillarlo directamente a la chapa metálica.

La rueda loca ha sido atornillada en la parte de atrás del robot. Se incluyen ahora una serie de fotos del fotos del robot tras el ensamblaje

 

Demostración

A continuación se incluye un vídeo donde se puede ver una demostración completa de las aplicaciones que puede realizar Dagui.

Vídeo de la aplicación Segui-líneas

 

Por último se incluye un vídeo de la mejora de la aplicación de la matriz RGB:

 

Aspectos que se pueden mejorar

  • Incluir en la aplicación campos para poder variar los parámetros de la aplicación segui-líneas (divisor, velocidad, etc)
  • Parar la música en el momento en qué se desee, esto podría implementarse usando una de las dos interrupciones con las que cuenta Arduino NANO.