He estado viendo los robots de escritorio, pequeñas creaciones que se usan a modo de mascotas, compañeros o algo así. Navegando por internet en videos sobre el tema, he visto muchos de los comerciales y otros tantos creados por los usuarios, en particular uno de estos últimos me hizo gracia, es de un usuario que creo es de Bangladesh y decidí probar, aquí os lo dejo por si queréis darle un vistazo.
Debo decir que en este punto Hugo no era un proyecto, de hecho no tenia ni nombre, solo era la intención de trastear con la biblioteca con la biblioteca RoboEyes para el entorno arduino, por eso su código no esta bien estructurado, porque parte de un código hecho tan solo para trastear con los "ojitos" al que posteriormente se le fueron añadiendo funciones, constantes, variables de control, etc, hasta que al final decidí implementar parte del código en pestañas, por el bien de la claridad, ya que no pienso reescribir el código.
Bueno poco a poco iré subiendo lo que voy haciendo, en este momento yo diría que el software esta en torno al 75% y el hardware al 0%, de hecho lo único que tengo de esto ultimo es un sensor casero de vibración.
Tiene implementado algunos estados como comenzar dormido, despertarse, estar contento o enfadarse y me queda añadirle un par de cosillas mas.
Este sensor es algo muy básico es algo que data de los tiempos mas analógicos. ¿Os acordáis de las maquinas de pinball? Cuando las movíais mucho pitaban falta "tilt", la máquina dejaba de funcionar y perdías la bola en juego. Pues es el mismo principio, las máquinas de pimball tenían un péndulo y en este caso, Hugo, tiene un muelle que le sirve para saber cuando enfadarse
El centro de control de Hugo es una placa Wemos D1 mini (clone), osea un ESP 8266, que configuro y programo desde el entorno arduino.
Y su otro componente importante y que le permite comunicar su estado de animo es una pantalla oled SSD1306, versión I2C
Lo siguiente en lo que estoy trabajando ahora mismo, es con los servos que utilizaré para moverlo y el sensor TCRT5000 para controlar los movimientos. Como veis todo el material es de lo mas común en cualquier proyecto de robótica clásico.
Estos son los servos Tower Pro SG 90 modificados a 360 grados y la batería que voy a usar.
Detalle de todo un clásico el sensor TCRT 5000, muy utilizado en bots seguidores de lineas.
Los que trabajáis con estas cosas ya sabéis que la teoría es una cosa y la practica otra y eso es lo que ha pasado, dos circunstancias que juntas han dado al traste con lo que pretendía.
La Wemos D1 mini (clone) es una placa con pines de uso especial para programar y demás, así que ya de por sí, es un tanto tendente a producir comportamientos erráticos en alguno de sus pines, en según que circunstancias. Además, yo compro en la conocida tienda asiática, donde consigues innumerables clones a precios estupendos, aunque juegas con la posibilidad de que no sean tan exactos como debieran.
Este proyecto nos deja con muy pocos pines libres, como consecuencia, no siempre podemos usar los más adecuados al periférico correspondiente. Después de pelearme con casi todos los cambios posibles, con el fin de colocar el servo derecho en un pin adecuado, lo máximo que he conseguido es hacerlo funcionar después de programar la placa, en el siguiente reinicio falla. He comprobado con el osciloscopio y no hay tren de señal para el pin de ese servo, ya sea por las características de la D1, porque es un clon o porque yo soy inútil, no ha funcionado.
En conclusión, cambio de "cerebro" para Hugo, dejamos la Wemos D1 mini (clone) con su ESP 8266 y pasamos a una ESP32-C3 Super Mini, también clónica (espero no tener problemas) que es más moderna y potente y para la cual, el programa que he escrito es compatible en un 95% aproximadamente.
En breve, someteré a Hugo al "trasplante cerebral" que espero y deseo salga bien, así que ya seguiré contando.
Fue una noche de pruebas con al Wemos de soldadura y vuelta a soldar, de reescritura de código pero al final ya lo tengo compilado para el ESP32-C3. Hugo esta listo para probar.
Tengo que decir que el cambio de la placa se ha notado bastante pero gobernar 2 servos directamente de la placa se esta volviendo una tortura, asi que el tema se retrasará algo mas de lo que tenia previsto, en principio voy a usar un Attiny85 para que sea el generador de los pulsos pwm de los servos y el ESP32 le mande solo una señal HIGH o LOW de control. En cuanto este seguire actualizando.
Después de los quebraderos de cabeza la generación del pwm no es correcta, no se exactamente que es lo que pasa. Tampoco voy a buscar más, he decidió hacer un "marcapasos" para Hugo. Voy a encargar la gereracion del el tren de pulsos para los servos a través de un ATtiny85 al que le llegará un numero binario del ESP32. Ya he recibido todas las piezas, ahora a buscar el tiempo para hacerlo.
Reto conseguido, el marcapasos funciona, esta el short en youtube, después habrá un video mas detallado. Lo que aún no se es si arreglaré el código de Hugo o lo reescribiré.