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.

miércoles, 11 de diciembre de 2019

Lista de control Minidrone

Hola a tod@s.

En este tema 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 minidrone 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.


Sobre todo es fundamental que las 13 soldaduras que debe llevar la controladora: 8 para los 4 motores, 2 a la bateria y 3 a la receptora, estén bien realizadas. En este documento pueden verse esos 13 puntos de soldadura en detalle.

Un saludo,
Raúl.

lunes, 9 de diciembre de 2019

Ejemplos de maquetas proyecto ascensor

Hola a tod@s.
En el siguiente enlace podéis ver varios proyectos de ascensores, algunos con muchas características similares al tipo de ascensor que estamos construyendo: Varias plantas, finales de carrera...
Algunas imágenes de ejemplo de los vídeos:



Un saludo,
Raúl.

Soluciones a la programación del ascensor

Hola a tod@s.
Durante la primera parte del proyecto hemos trabajado las diferentes fases de programación del ascensor:
Proyecto Ascensor.
Fase 1: Encendido de luces indicadoras de planta en modo pulsador.
Fase 2: Encendido de luces indicadoras de planta en modo interruptor.
Fase 3: Control del giro del motor en ambos sentidos y stop.
Fase 4: Sensores de detección del ascensor.
Fase 5: Programación completa del ascensor: pulsadores, motor y sensores.
En la siguiente carpeta: https://drive.google.com/drive/folders/1EKGmvvC3VYdyyJH2Ll1o1K-E4h0sWpTa?usp=sharing puedes encontrar los archivos de bitbloq de programación de las 4 primeras fases. La quinta, que permite controlar la maqueta del ascensor completamente de manera muy parecida a un ascensor real, la resolveremos durante esta segunda fase. En las siguientes imágenes puedes ver como programarla.










Un saludo,



Raúl.

miércoles, 4 de diciembre de 2019

Material Drones - El Caleidoscopio

Hola a tod@s.

Durante el curso 2018-19 participamos en La Feria Aérea organizada por El Caleidoscopio.


Los documentos de trabajo para realizar los proyectos de diseño, impresión en 3D, montaje y configuración primero de un pequeño minidron y después de un dron de un tamaño más grande y con componentes más potentes, son los siguientes:











RD-1036_2017-de-15dic-BOE-2017-15721  Real Decreto 1036/2017, de 15 de diciembre, por el que se regula la utilización civil de las aeronaves pilotadas por control remoto, y se modifican el Real Decreto 552/2014, de 27 de junio, por el que se desarrolla el Reglamento del aire y disposiciones operativas comunes para los servicios y procedimientos de navegación aérea y el Real Decreto 57/2002, de 18 de enero, por el que se aprueba el Reglamento de Circulación Aérea.


Un saludo,
Raúl.

lunes, 11 de noviembre de 2019

Planos: eléctricos y despiece acotado

Hola a tod@s.

Para el diseño final de nuestros proyectos además de los planos acotados, las herramientas y fases de fabricación, tendremos que añadir los planos eléctricos de los diferentes componentes del proyecto.

En la siguiente web podemos encontrar una imagen resumen de los más utilizados:


En esta otra web aparecen algunos algo más avanzados.


Con esta simbología podremos hacer nuestros propios esquemas eléctricos como los de los siguientes ejemplos:

Desde un sencillo encendido de una bombilla con interruptor:


A algunos más complejos como este temporizador ajustable 1-10 minutos.


En nuestro caso al incluir arduino en muchos de nuestros proyectos, los esquemas eléctricos tendrán un esquema parecido al de la siguiente figura:


Podemos realizar nuestros esquemas con un procesador de texto, como Word por ejemplo, incluyendo imágenes y utlizando las librearías de símbolos. También existen aplicaciones específicas online con las que podemos diseñar e incluso probar circuitos de manera bastante sencilla.

Dos ejemplos son: 

CIRCUIT LAB Que también es simulador

y

EasyEDA con muchas opciones de diseño y librerías


En los siguiente vídeos podemos ver como iniciarse en el uso de CircuitLab:




El esquema eléctrico también podremos realizarlo de manera detallada en tinkercad circuits: https://www.tinkercad.com/ Un ejemplo de como podría quedar nuestro ascensor:



Además de los planos eléctricos tendremos que realizar un despiece acotado de cada de las piezas que vamos a construir para nuestro proyecto. En la siguiente imagen podemos ver un ejemplo de despiece acotado de todas las piezas que componen un rodillo de campana:



Un saludo,
Raúl.



miércoles, 23 de octubre de 2019

Evolución de 5 Programas de control del coche robótico

Hola a tod@s.

En este tema vamos a ver, en 5 fases, como ir añadiendo comandos a la programación del coche robótico controlado por bluetooth para empezar simplemente haciéndole avanzar y parar y terminar controlando todos sus movimientos además de la activación del modo autónomo de detección de obstáculos con ultrasonido y servomotor.

Empezaremos por realizar una aplicación móvil que mande diferentes letras a arduino mediante bluetooth que posteriormente nos servirán para decidir el modo de funcionamiento del coche.

Un ejemplo de diseño de la aplicación con app inventor podría ser este.


Y el código de la misma el que ya hemos visto con el listpicker de conectar al bluetooth y el botón de desconectar además del resto de botones que enviarán letras para cada acción:
Aunque en la imagen del diseño se ha incluido un slider de control del giro en este tema no veremos todavía como usarlo.





En arduino empezaremos por el programa más sencillo posible que hace simplemente avanzar al coche hacia adelante o pararlo.



Es imprescindible saber que led activa cada una de las ruedas en su correspondiente sentido de giro. Y también es importante que conectemos los cables a los pines PWM de arduino (alguno de los siguientes: 3,5,6,9,10,11) que nos van a permitir controlar la potencia de encendido más adelante.

En el siguiente programa daremos un paso más allá añadiendo la posibilidad de que el coche vaya hacia atrás y gire a izquierda o derecha.




En este punto es importante añadir la función "parar" que apaga los 4 leds y que usaremos antes de indicar cada movimiento ya que si del movimiento anterior arrastramos un encendido por ejemplo de derecha_atras y en el nuevo movimiento sin apagar ese led encendemos el de derecha_alante la rueda se quedará quieta ya que estará recibiendo esas dos señales al mismo tiempo.

El siguiente paso será añadir giros no en redondo si no en arco, para ello aprochamos la posibilidad que nos dan los pines PWM de encenderlos con un valor de intensidad entre 0 y 255. En el ejemplo encendemos una rueda al máximo de potencia y la otra a la mitad dandole un valor de encendido al pin digital de 127. Esto para los 4 giros amplios que nos quedan para controlar totalmente el robot.


El siguiente paso consistirá en añadir la posibilidad de que el coche se mueva de manera autónoma detectando obstáculos mediante el sensor de ultrasonidos colocado en la parte delantera.

Para ello añadiremos dos componentes a nuestro arduino, el sensor de ultrasonidos y el servo motor sobre el que va instalado.


Para poder programar este modo de funcionamiento tendremos que generar dos nueva variables, una que guardará la distancia y otra que guardará el modo de funcionamiento seleccionado. Se definen 5 modos de funcionamiento:
El modo 0 es en el que no se usa el ultrasonido y se controla el robot con las funciones explicada antes.
El modo 1 es en el que el coche al detectar un obstáculo a 20cm o menos gira siempre hacia la izquierda para evitarlo.
El modo 2 es en el que el coche al detectar un obstáculo a 20cm o menos gira siempre hacia la derecha para evitarlo.
El modo 3 es en el que el coche al detectar un obstáculo a 20cm o menos gira aleatoriamente a la izquierda o a la derecha para evitarlo.
El modo 4 es en el que el coche al detectar un obstáculo a 20cm o menos utilizará el servo motor para mover el ultrasonido a un lado y a otro para saber hacia que lado tiene menos obstáculos y dirigirse hacia ese lado.



Si el usuario manda un comando que activa alguna de las funciones que no son de modo ultrasonido es importante que añadamos en cada una de ellas el hecho de que el "ultra_mode" pasa a ser 0.


Para el resto de letras enviadas por la aplicación activaremos los diferentes modos de funcionamiento que hemos comentado.

Los modos 1 y 2 funcionan de manera sencilla:



El 3 incluye el uso de número aleatorios y redondeo:


Y por último el modo 4 nos llevará a crear dos nuevas variables para comparar las distancia y el uso del comando detach y attach del servo para evitar que este vibrando cuando no lo usamos. Como este comando no existe en bitbloq lo añadimos con el código verde que nos permite introducir código arduino directamente.




Con esta última versión del programa tendremos un buen repertorio de formas de controlar el coche robot tanto de manera directa como autónoma.

En temas posteriores veremos como poder modificar algunos parámetros como el ángulo de los giros para el modo dirigido o cambiar la distancia de detección de obstáculos para el modo autónomo.

Un saludo,
Raúl.