Hoy traigo a esta página un nuevo PrintBot. Se trata de Vorpal, hexápodo de combate.
Robot y Gamepad
Este robot nació como un proyecto en Kickstarter y tras alcanzar la financiación necesaria sus creadores se pusieron a trabajar en el desarrollo del proyecto, empleando tecnologías Open Source y 3D Printing.
En la tienda oficial se puede adquirir el robot en diferentes modalidades, si tienes impresora 3D se puede adquirir solamente el kit de componentes electrónicos, o si no dispones de impresora también se pueden comprar las piezas impresas, o ambas cosas. También hay una tercera opción y es comprar el robot montado y funcionando.
Al ser un proyecto Open Source los creadores han compartido los archivos .stl en Thingiverse además de publicar un par de vídeos en youtube donde explican el montaje del Robot y del Gamepad. Mil gracias.
Aquí hemos optado por montárnoslo nosotros mismos -que para eso somo makers- con todo lo que ello supone; imprimir, buscar los componentes, montar y solucionar los problemas que vayan surgiendo.... No ha sido un camino fácil. Me ha llevado semanas solucionar un problema de movimientos con el robot, pero al final ha funcionado y por el camino siempre se aprende algo nuevo. Sin más preámbulos vamos al lío.
Como dije un poco más arriba, los archivos .stl están disponibles en Thingiverse. Solo hay que descargarlos e imprimirlos, para tal menester he utilizado mi impresora 3D DIY. Aquí poco más que añadir.
El montaje del Robot no presenta mayor complejidad. El siguiente vídeo explica el proceso.
A la hora de montar las patas del robot, encontré que las rodillas tenían mucha holgura, lo que supone una falta importante de rigidez en las uniones, haciendo que el robot flaqueara. Es posible que el defecto se debiera a una mala impresión o un filamento de poca calidad ya que he utilizado diferentes marcas y colores para cada serie de piezas.
Para solucionarlo opté por reforzar la unión de las rótulas haciendo un taladro de 3 mm y atornillando ambas partes mediante un tornillo de M3x8.
La imagen muestra las dos articulaciones con un taladro de 3 mm.
Las dos articulaciones atornilladas y montadas en el robot
Aspecto final con el servo montado en la pata.
Hacia el minuto 15:05 del vídeo de montaje, se explica que antes de montar las patas hay que encender el robot y girar el potenciómetro hasta la posición ADJ.
En esta posición el eje está a 90º y ahí es donde hay que montar el asta, de manera que quede alineado con el cuerpo del servo, tal como se ve en la imagen siguiente.
El mando a distancia tampoco tiene mucha dificultad. Como recomendación, utiliza cables flexibles y de longitud adecuada para facilitar el enrutamiento en el interior del mando.
De nada nos sirve nuestro flamante robot sin el mando RC. Por desgracia los módulos HC-05 no traen configuración alguna cuando vienen de fábrica, o la que traen por defecto no nos vale.
Por ello el siguiente paso es configurar los módulos HC-05. Este proceso consiste en asignar a cada módulo su rol; configuraremos uno como maestro y otro como esclavo, además hay que poner el mismo password y velocidad (baud rate) en ambas antenas e indicar al maestro la dirección MAC del esclavo para que enlace y comunique correctamente.
Esta parte del tutorial no la encontraréis en la wiki oficial de Vorpal porque el proceso de configuración depende del módulo bluetooth que tenga cada uno; distinto firmware, fabricante, etc...Si no quieres complicarte la vida con este paso, en la tienda de vorpal robotics existe la posibilidad de adquirir dos módulos bluetooth ya configurados y emparejados. Pero supongo que dependiendo del país donde vivas será más o menos difícil / caro adquirir estos módulos en la tienda oficial.
Aquí no hay recetas mágicas. En mi caso compré dos módulos HC-05 confiando que sirvieran y luego me busqué la vida en internet hasta que dí con un tutorial que funcionó. Es posible que funcione con otros módulos o puede que no, es cuestión de suerte.
Para configurar los módulos HC-05 he seguido las indicaciones de este Instructable pero poniendo el módulo en modo AT como se explica en este vídeo, es decir, con Arduino desconectado del PC presionar el pulsador de reset del módulo y sin soltar conecta Arduino al PC, después suelta el pulsador. El led parpadeará lentamente.
No sé qué tipo de licencia tiene el contenido que se publica en Instructables y aunque leyera los Términos y Condiciones no lo iba a entender, así que no me atrevo a publicar aquí los pasos a seguir para configurar los módulos bluetooth, no sea que me acusen de plagio. Si alguno tiene dudas después leer el instructable y ver el vídeo, podéis mandarme un mail y os ayudaré en lo que pueda.
Una vez configurados los módulos HC-05, conectar cada uno donde corresponda, poner pilas nuevas al mando y cargar las baterías del robot al máximo.
El robot tiene un potenciómetro que sirve para seleccionar los distintos modos de funcionamiento. Comenzando con el dial girado a tope en sentido horario, iremos en sentido antihorario, seleccionando los siguientes modos.
Al girar el botón, sonará un pitido cuando pase al siguiente modo. El ajuste tendrá efecto aproximadamente un segundo después de que deje de girar el mando.
En orden, comenzando desde el extremo en sentido contrario a las agujas del reloj, las funciones son:
En esta posición el hexápodo permanece inmóvil con los servos alimentados. Esto es útil para comprobar las posiciones de las patas en posición de pie.
Si al girar el potenciómetro a la posición de stop el robot no se pone de pié, es posible que los servos giren en sentido contrario. Esto depende del fabricante de los servos.
Para solucionar este problema debes modificar una línea en el sketch del robot. Abre el IDE de Arduino y carga el sketch del robot, comenta la línea siguiente para deshabilitarla:
//int p = map(position,0,180,SERVOMIN,SERVOMAX);
y añade esta otra línea:
int p = map(position,180,0,SERVOMIN,SERVOMAX);
debe quedar así:
Cuando termines sube el sketch al Arduino del robot.
Ajustar servos es la siguiente posición girando ligeramente en el sentido de las agujas del reloj. Esta función de ajuste de servos, coloca todos los servos en la posición de 90 grados. Esto significa que los servos se alinean con el eje.
Este modo se utiliza para ajustar la posición inicial del eje de los servos durante el montaje. Para más información sobre cómo usar este ajuste durante el montaje, mira el vídeo de las instrucciones de montaje minuto 15:05.
La siguiente posición en el sentido de las agujas del reloj es Test. En este modo cada servo se mueve en orden del número 0 al número 11. Esta función se utiliza normalmente justo después de conectar el sistema eléctrico, para verificar que todos los servos funcionan y están conectados en el puerto correcto. También puede utilizar esta función en cualquier momento si sospecha que uno o más servomotores no funcionan correctamente.
Esta función hace que el hexápodo ejecute una serie de movimientos de demostración. Esto es útil para enseñar el hexápodo a tus amigos, y también es útil para una prueba rápida de todas las funciones sin necesidad de tener que construir el gamepad. También puede ser útil si tienes problemas y no estás seguro de si el problema está en el gamepad o en el robot.
Radio Control. Posición a tope en el sentido de las agujas del reloj. RC hace que el hexápodo responda a los comandos de Bluetooth desde el gamepad. Si escuchas un pitido constante en este modo, significa casi siempre que el módulo Bluetooth del robot no está conectado correctamente o que no funciona. Si el robot pita cada 15 segundos más o menos, significa que no está recibiendo señal desde el gamepad (es decir, el gamepad está apagado, tiene la batería agotada o no funciona).
Más información en la Guía del Usuario.
Como decía al principio, un problema con el robot me tuvo entretenido muuuchas semanas. Resulta que el mando a distancia funcionaba solo durante unos segundos y luego el robot se quedaba congelado, no obedecía a ningún comando, ni siquiera al potenciómetro y la única solución era apagar y encender.
Cuando encendía de nuevo el robot, éste volvía a responder a los comandos del gamepad pero solo durante unos segundos, hasta que volvía a quedarse colgado.
Al principio supuse que el problema estaba en algunas de las antenas bluetooth ya que en modo demo y test funcionaba correctamente y al pasar a moto RC se colgaba.
Compré un par de nuevas antenas -con sus correspondientes 14/21 días de envío- por si acaso alguna estaba defectuosa, pero seguía fallando. Busque nuevas maneras de vincular y emparejar las antenas, tampoco funcionó. Probé a sustituir los Arduinos, el del robot y el del gamepad, por si hubieran recibido una descarga de electricidad estática que los haya dejado tocados. Otros 21 días esperando las tarjetas para que después siguiera fallando.
Buscando en un foro alguien comentaba problemas de ruido electromagnético con las antenas, es decir, interferencias. No estaba muy convencido pero como no se pierde nada por probar, cogí mi robot y bajé al sótano lejos de los routers wifi de mi casa y de los vecinos…¡Y funcionó! ¡Todo ese tiempo peleando contra un problema fantasma!
Resulta que los módulos HC-05 y similares funcionan a la misma frecuencia de 2,4GHz que los routers wifi domésticos, si a esto sumamos que hoy en día en todos los hogares hay wifi, resulta que puede haber fácilmente 20 routers emitiendo cerca de tu casa, lo que origina un ruido de narices.
Hay que tener en cuenta que estas antenas bluetooth apenas valen 4 euros y están destinadas a hobbyist, por lo que supongo que los fabricantes no se han esmerado mucho en inmunizarlas del ruido electromagnético que hay en el ambiente.
Me las prometía muy felices y al poco tiempo el robot volvió a fallar, mismo problema, al poco de echar a andar se queda colgado. Dispuesto a descartar interferencias y ruido electromagnético cogí el coche y me fuí a un aparcamiento a las afueras, comprobé con el móvil que no había ninguna señal en la banda de 2.4GHz y probé suerte. El robot no funcionó. Y esta vez no era por el ruido ¡maldición! se me acababan las ideas.
Probé a cambiar el módulo PWM que controla los servos, tampoco funcionó. Estaba desesperado ¡sólo me faltaba imprimirlo de nuevo a ver si así se arreglaba!
Dispuesto a solucionarlo de una vez por todas desmonté el robot y el gamepad para montar ambos dispositivos sobre una protoboard con el fin de hacer pruebas y encontrar el problema.
Probé a alimentar el robot con una fuente de 12V en lugar de las baterías de litio, seguía fallando. Luego alimenté todo con una fuente de 5V eliminando así el regulador UBEC ¡y funcionó! ¡aleluya! Para asegurarme de que había encontrado el problema, volví a usar la fuente de 12V con el UBEC y falló. Ahora estaba claro; el regulador UBEC estaba defectuoso.
Otro pedido a nuestros amigos de oriente, otras dos o tres semanas esperando el paquete...Por fin llegan los nuevos reguladores, lo conecto y...sigue fallando ¡no puede ser! no es posible que tres reguladores fallen, bueno digamos que es harto improbable.
Hago más pruebas, esta vez polímetro en mano mido la tensión de salida del UBEC en tiempo real mientras le doy movimiento al robot y efectivamente, al poco tiempo la tensión de salida del regulador cae miserablemente, haciendo que el robot se quede frito como una sardina.
El regulador utilizado es el que viene en las especificaciones, un UBEC de 5V y 3A
Hago más pruebas, apago y enciendo el robot, vuelvo a dar movimiento y a los pocos segundos se queda colgado, toco el regulador y está caliente lo que significa que el consumo es elevado y no puede suministrar toda la corriente que demandan los servos.
Pongo el polímetro en corriente para ver el consumo y obtengo picos de 2,6 amperios cuando el robot se desplaza a máxima velocidad. Ahora sí está claro, el problema no es un regulador defectuoso sino mal dimensionado. Posiblemente a la mayoría de los makers les ha ido bien con el regulador de 3A, pero en mi caso se queda corto, supongo que dependiendo del fabricante de los servos, unos consumen más que otros y en mi caso se trata de un modelo bastante glotón.
Solución: cambiar el regulador de 3 amperios por otro de 5, que por supuesto no tengo, y que no pienso comprar y esperar otras tres semanas a que llegue, así que he montado dos reguladores de 3 A en paralelo y problema resuelto.
La forma de conectar los reguladores es muy sencilla. Las entradas se unen y se llevan a las baterías de litio y las salidas conectan en los puertos 12 y 14.
Ahora sí, ya puedo disfrutar de mi robot hexápodo.
Página Oficial Vorpal Robotics
Wiki Vorpal Hexapod aquí encontrarás guías de montaje, trouble shooting, guías técnicas, actividades...