viernes, enero 28, 2022

Inicio del proyecto Mario Brick

viernes, enero 28, 2022



Hace años que he querido iniciarme en un proyecto bonito, en el que dejar a un lado el tiempo profesional y construir un juguete (no nos engañemos) capaz de pestañear y pintar ojos y boca sobre una figura realista, a modo de animar y dar una sensación realista.

La idea principal de este proyecto es que cualquiera pueda aprender cómo funciona, construirlo e incluso aportar posibles mejoras. Qué mejor manera de hacerlo todo opensource.

Con la llegada de estas navidades he visto en el mercado un pequeño juguete que puede servir de inspiración a aportar una solución sencilla al problema:

Inspirándonos en nuestra idea inicial y que ya existe este tipo de juguetes en el mercado a un precio más o menos asequible podemos llegar a pensar que se puede diseñar y construir una solución similar desde casa, ya que:

  • Las formas son bastante cuadradas, lo que permite el diseño 3D para la impresión desde casa.
  • Las partes interactivas parecen estar integradas en una única pantalla, por lo que podríamos usar microcontroladores existentes en el mercado y abiertos, además de ahorrar en componentes ya que no necesitamos varias pantallas.
  • La parte interactiva del traje puede mostrar información, un ejemplo podría ser la hora actual o una alerta programada.

 

Con el paso de los años he ido adquiriendo una serie de conocimientos que permiten diseñar, programar, construir y realizar en diferentes lenguajes de programación bien consolidados, diseño industrial, impresión 3d, por lo que el reto tecnológico no es muy grande y cualquiera que quiera replicar los pasos para aprender y aportar puede hacerlo en su casa tranquilamente. 

Uno de estos proyectos que podrían servir fue la pequeña videoconsola que se diseñó y programó (emulador a emulador, con lanzador de aplicaciones incluído y compatible con ESP-IDF, Arduino y MicroPython) para microcontroladores ESP32. Este antiguo proyecto diseñado y programado por mí disponía de una pantalla ILI9341 de 3,2" por lo que podría utilizarse para este fin. La programación podría ser fácilmente portada y actualizada al año 2022, e incluso podríamos aprovechar las funcionalidades hardware que no decidieron diseñar en ese proyecto como el bluetooth, wifi, aplicaciones móviles para mostrar información o alertas... en definitiva, hay potencial para darle vida a este juguete.

Expuestos todos los datos a grandes rasgos, me puse manos a la obra, recordemos que la idea principal es construirlo sin ir a una factoría ni a un entorno industrial. 

Por lo que los pasos a seguir para construir nuestro primer prototipo:

  1. Diseño 3D imprimible, fácilmente editable
  2. Impresión de piezas, ensamblado y testeo
  3. Programación de componentes (microcontrolador, drivers, gráficos...)
  4. Programación de funcionalidades finales y avanzadas

Diseño 3D

La solución de diseño 3D ha sido hecha en el programa abierto ONSHAPE del que se hablará en un futuro. La verdad es que visto en una imagen el diseño no parece gran cosa, algo positivo, pero básicamente se han diseñado las piezas para ser ensambladas por medio de railes, dejando una serie de huecos para que las partes interactivas dejen ver la pantalla que tienen detrás, con ello se solventa la funcionalidad en ojos, boca y pecho:


Las dimensiones elegidas no son muy grandes ni muy pequeñas, aproximadamente 12cm de alto por 6 de ancho, lo justo para que quepan los componentes electrónicos dentro junto con su batería y no sea demasiado pequeño. También cumple el requisito de que es imprimible en cualquier impresora 3D y con componentes que cualquiera pueda replicar; desde una vista en ángulo picado puede apreciarse mejor:

Impresión 3D

Las piezas diseñadas se llevan fácilmente a la impresora, gracias a más software abierto, en este caso PrusaSlicer, en el que obtenemos los gcodes que mandamos a la impresora, para imprimir cada pieza en un color diferente.
Una pequeña prueba del ensamblado del pelo, cabeza y cuerpo sosteniendo la electrónica (con la pantalla de 2,8"):

Todo encaja, y las partes negras son visibles desde el exterior por lo que a modo funcional el diseño parece más o menos correcto.
Aquí se puede ver en qué lugar queda la pantalla y el hueco disponible para los componentes electrónicos:


 

Programación

Recordemos que nos encontramos frente a un prototipo que se desarrolla en el tiempo libre. La fase más larga y costosa en tiempo es la programación del microcontrolador. Como quiero que el dispositivo sea una muestra duradera en el tiempo, no quiero programar en Arduino utilizando librerías de otros, que al cabo de un tiempo intentas compilar y fracasa; quiero que la solución sea abierta y completamente hecha por mí para asegurarme que esto no sea un problema.
La programación tiene que estar acorde al hardware elegido, voy a utilizar un microcontrolador ESP32 porque las funcionalidades que se requieren en este proyecto son completamente soportadas por este tipo de controladores, dan muy buen rendimiento en cuanto a consumo energético y puedo diseñar una solución duradera en el tiempo.
La programación elegida es C a través de ESP-IDF 5.x, pero quiero que sea también compatible con las versiones anteriores. Expondré la solución propuesta en dos bloques:


Componentes

Los componentes son aquellos elementos que se van a utilizar, ya sean librerías o recursos que manejan y soportan la lógica principal del dispositivo. En este caso (y por el momento) los componentes son los drivers (display) y librerías (gui, textos...) que permitan mostrar en la pantalla los recursos necesarios en el proyecto ESP-IDF, en C.
Una prueba de estos componentes funcionando sobre el hardware final:

 

Funcionalidades

Recordemos que se encuentra en fase de desarrollo, pero ya se pueden mostrar una serie de funcionalidades, acordes a los compomentes desarrollados hasta el momento.
Una prueba de concepto sobre el dispositivo real en el que se mostrarían unos ojos, en este caso ha sido programado para mostrar un BMP en las posiciones de los ojos y probar componentes como son el espejo, giro.., pero se puede hacer una idea de la prueba de concepto sobre el hardware real:
 
Es un proyecto que debe seguir su ciclo de vida, se encuentra en fase de desarrollo inicial, pero creo que ya se pueden apreciar las diferentes formas que van tomando las soluciones propuestas.

Seguiré exponiendo más detalladamente en los próximos artículos cómo evoluciona y funciona todo.
Bit
Hide Me!