sábado, 29 de febrero de 2020

Robot Otto / Zowi

Hola a td@s.

En este tema vamos a ver los diferentes pasos para iniciar la construcción y programación del robot bípedo Otto que es una versión más económica del robot original de BQ Zowi:






Como puede verse ambos robot son muy similares y de hecho comparten códigos de programación de manera que con un mismo programa de arduino podemos controlar los dos modelos y las aplicaciones móviles de uno pueden usarse con el otro.
Además en ambos casos permiten iniciarse en la programación usando programación por bloques.

IMPRESIÓN 3D DE LAS PIEZAS:

Lo primero que necesitaremos son las piezas para montar el robot. Para la parte de impresión en 3D hay diferentes opciones en internet y nos hemos decantado por imprimir las piernas y los pies de este modelo de la web:


La idea es imprimir las piernas y los pies y construir de manera manual la parte del cuerpo y la cabeza.
El motivo es porque el Otto original esta diseñado para que entre en él un arduino Nano con un shield de conexión de servos y nosotros vamos a montarlo con los arduinos UNO que tenemos y por tanto necesitaremos algo más de espacio para la parte del cuerpo.

Existen algunos modelos imprimibles de Otto con cuerpo para arduino UNO como el de esta web:


Puede verse en la imagen el de arduino Nano a la izquierda y el de arduino UNO a la derecha.



Pero al final lo mejor será ajustar manualmente los espacios construyéndolo en madera o incluso con cualquier otro material reciclado del taller.


Una vez tengamos la piezas la siguiente fase será montar los componentes empezando por los 4 servos que nos van a permitir realizar los diferentes movimientos.

Existen en la webs de Otto manuales como el de este enlace:


Recordar que es fundamental asegurarse que el engranaje de los servos está a 90º antes de montarlos. Para ello conviene realizar un sencillo programa que los coloque a 90º.


En este sencillo programa realizado en bitbloq aprovechamos además para comprobar que el servo realiza bien todo el rango de movimientos haciendole hasta 175º y 5º (conviene evitar los grados extremos de 180 y 0) donde permanece 1 segundo en cada posición y quedandose 6 segundos en la posición de 90º que es en la que deberemos desconectar el servo o la placa para así asegurarnos que el engranaje está a 90º y podemos montarlo correctamente.

Además de esos manuales tenemos en internet vídeos como los de estos 4 enlaces diferentes:

En este primero vemos un vídeo de la web de Otto que explica de manera rápida el montaje:



Este otro vídeo explica con más detalle como montarlo incidiendo en los posibles problemas que se pueden presentar y como solucionarlos:




En este otro vídeo veremos una versión avanzada de Otto con brazos y matriz de leds para las expresiones de la boca:




Por último en este vídeo vemos un resumen de los diferentes movimientos que podemos programar a nuestro robot:



Una vez que tengamos a Otto montado podemos empezar a programarlo. Una primera opción puede ser cargar algunos de los códigos de arduino ya existentes que hacen moverse a Otto y nos permiten además controlarlo mediante las aplicaciones móviles ya existentes.
En el siguiente enlace podéis descargar un código de arduino que permite hacer funcionar a Otto aunque no tenga interruptor de manera que el robot va haciendo movimientos aleatorios de su base de movimientos hasta que nos conectamos por bluetooth momento en el que ya queda a la espera de las ordenes que le mandemos:


Las aplicaciones de Otto y Zowi para controlarlo podemos descargarlas en PlayStore son estas dos:



Importante tener en cuanta que en ambas (como puede verse en el código de arduino) el bluetooth que hayamos montado debe de estar configurado para usarse a 115200 de baudrate y que para la aplicación de Zowi para usar Otto el bluetooth debe tener de nombre "Zowi" y tener de pin "1234" ya que esa aplicación no permite seleccionar el módulo bluetooth y busca uno con ese nombre automáticamente. La versión de de la aplicación de Otto si que permite elegir el módulo bluetooth como haremos nostros al crear nuestra propia aplicación para el control del robot.

En los siguiente temas iremos viendo las diferentes opciones para programar los movimientos y los componentes de nuestro robot usando arduino/bitbloq y appinventor.

Un saludo,
Raúl.




miércoles, 26 de febrero de 2020

Programación ascensor. Seguridad en caso de fallo de sensor

Hola a tod@s.

Continuando con el proyecto del ascensor hemos comprobado que podíamos mejorar la seguridad del funcionamiento en caso de fallo de los sensores.

Tal y como estaba programado anteriormente el ascensor cuando le llamábamos desde una planta en la que no estaba el ascensor se movía en ese sentido hasta llegar a ella, pero al probarlo hemos comprobado que si está en la planta baja y le llamamos desde la planta primera y el sensor que detecta que ha llegado a la primera no hace buen contacto y el ascensor sigue subiendo ya nada lo detendrá ni siquiera al llegar a la segunda planta y por tanto el motor seguirá girando aunque llegue al techo.
Lo mismo ocurriría si estuviese en la planta segunda y le llamamos desde la primera, si el sensor no funciona el motor seguiría funcionando incluso cuando este en el suelo.

Repasando nuestro programa es en estas dos partes que hemos marcado en rojo donde deberemos actuar:


En la primera estaría en la planta baja "on_baja = 1" y le llamamos desde la primera "llamar_1 = 1" y en la segunda estaría en la planta segunda "on_2 = 1" y le llamamos desde la primera "llamar_1 = 1".

Anteriormente lo teníamos programado así:


Si esta en la planta baja y le llamamos desde la planta primera activamos el motor y le ponemos a girar en sentido antihorario. A continuación ponemos un mientras que no hace nada (es decir el programa no avanza más allá de ese mientras) mientras se cumpla la condición que le ponemos que es que el sensor_1 sea 0. Es decir que el programa no va a hacer otra cosa y por tanto motor va a estar girando mientras el sensor_1 el de la planta primera este a 0. Cuando ese sensor detecte algo el programa continua en la siguiente línea que como puede verse para el motor y pone a 0 la variable de que se ha llamado al ascensor.

Como hemos explicado antes con este programa si el ascensor no hace buen contacto con ese sensor y sigue subiendo por encima de él ya nada lo va a parar. Es por eso que podemos añadir una medida de seguridad haciendo que en ese caso pare también si detecta que ha llegado a la segunda planta es decir si el sensor:2 pasa a ser 1.
La programación quedaría de la siguiente manera:


Como puede verse en la parte marcada en rojo para que el bucle mientras sea cierto y por tanto el motor siga girando ahora es necesario que se cumplan las dos condiciones de que los dos sensores estén a 0, con que uno de los dos sensores, el de la planta 1 o el de la planta 2 pase a ser 1 el mientras ya no se cumple y el programa pasa a la siguiente linea que lo que hace es parar el motor.

Lo mismo tendremos que hacer para el caso de que el ascensor este en la segunda planta y le llamamos desde la primera:


En este caso con que el sensor de la primera o el de la planta baja pasen a ser 1 el motor se pararía.

De esta manera mediante una sencilla modificación en la programación podemos añadir un sistema extra de seguridad a nuestro ascensor en caso de fallo al pasar por un sensor.

Un saludo,
Raúl.

miércoles, 12 de febrero de 2020

Imágenes programación final semáforo comentadas

Hola a tod@s

En las siguientes imágenes vamos a ver los archivos finales de la programación de Appinventor y Bitbloq del semáforo comentadas.

Por un lado la parte de diseño de Appinventor



Nos fijamos en el detalle de que el clock está configurado cada 100ms de manera que esa será la velocidad de envío de datos. (después veremos que bitbloq recibe cada 500ms)

Y por otro la parte de bloques de programación

Y finalmente toda la secuencia de programación en bitbloq comentando el contenido de cada parte:










Un saludo,
Raúl.

lunes, 10 de febrero de 2020

Lista de comprobación y manual drone grande

Hola a tod@s.


En este tema, al igual que hicimos con el drone pequeño, vamos a trabajar con una lista de control o checklist, una herramienta fundamental en los proyectos de ingeniería, que nos ayudará a ir comprobando paso a paso que todas las fases de construcción y configuración de nuestro drone grande se han realizado correctamente y por tanto podemos comenzar la práctica de vuelos.

En la siguiente imagen puede verse una imagen de la lista que hemos creado:


Y en el siguiente enlace puede accederse a una hoja de cálculo con la lista en formato lectura que puede usarse para hacer una copia de la misma y utilizarla para comprobar que cada fase se ha realizado de manera adecuada.

Descarga Lista comprobación drone grande

El el siguiente enlace pude accederse al manual de conexión y configuración del drone grande:

Manual drone grande

Es importante tener en cuenta un par de cosas que pueden cambiar respecto al manual.
Por un lado que en esta imagen aparece conectada la receptora a UART2 (el de arriba) y la configuración esta hecha para UART1 por lo que el cable amarillo debería estar conectado en el pin de abajo.

Y mucho más importante: Tenemos dos tipos de controladoras, una que va directamente conectado con el pin de cables de la controladora de motores de manera sencilla como viene en el manual: 

Y  otra que hay que conectar con la siguiente configuración:


Las placas controladoras que tienen que ir con esta segunda conexión tienen pines dupond soldados en todas sus conexiones para que sea más sencilla la conexión y no haya que soldar los cables.

Es muy importante tenerlo en cuenta porque si se confunden las placas y se conectan de manera errónea seguramente se fundirán los componentes y la placa quedaría inservible.

Un saludo,
Raúl.