Cómo construir el pad de control de la grúa para traslado Akoui

Autor: José Olin
Publicado: 2023-09-30


La grúa para traslado Akoui es la propuesta de Olin Robotics para traslado de usuarios de la silla de ruedas a la cama u otros asientos.

El pad de control permite al usuario controlar los módulos de movimiento vertical y horizontal; y, por lo tanto, el uso completamente autónomo de la grúa (siempre que el usuario pueda colocarse los soportes en brazos y rodillas).

Este post pertenece a una serie de documentación de la grúa para traslado Akoui, y en esta ocasión documentaremos cómo construir y programar el pad de control.

Al finalizar tendrás un pad de control electrónico para la grúa Akoui, como el de la imagen; aunque puedes usarlo para controlar cualquier dispositivo que requiere encender o apagar, subir o bajar, abrir o cerrar, etc. al que puedas integrarle un microcontrolador ESP para comunicación inalámbrica por WiFi.



Diagrama general de la Akoui

Los componentes electrónicos de la grúa para traslado Akoui se muestran en el siguiente diagrama.

El pad de control es el que opera el usuario y envía comandos por Wifi a los módulos vertical y horizontal. Cada módulo tiene un microcontrolador ESP para la comunicación por Wifi; el módulo del pad tiene un ESP-WROOM-32 (ESP-32), y cada módulo de movimiento un WeMos D1 Mini (ESP-8266).

Los módulos se comunican en una arquitectura cliente-servidor, usando el protocolo TCP. Cada módulo de movimiento es un servidor, al que el pad de control se conecta como cliente para enviar comandos.

Como puedes ver en el código del loop de la siguiente imagen, el programa lee y valida el estado de los botones, despliega el estado de cada uno (1 si no está presionado, 0 si está presionado) y si alguno está presionado envía un comando de movimiento por WiFi, usando el protocolo TCP.

prog-micro-1-codigo-loop.png

Si se presiona el botón de subir o bajar, se envía la cadena <u> o <d>, respectivamente, al módulo de movimiento vertical; si se presiona el botón de izquierda o derecha, se envía <l> o <r>al módulo de movimiento horizontal.

NOTA: Es necesario contar con un router inalámbrico al que se conecten todos los módulos para la comunicación.


Materiales

Herramientas

  • Cautín
  • Pinzas de corte.
  • Pinzas de punta


Detalles acerca del Shield de botones

El shield de Arduino con botones y palanca es una tarjeta con 6 botones y un joystick de 2 ejes. Es directamente compatible con los pines del Arduino UNO, sin embargo podemos usarlo con el WROOM-ESP32, haciendo algunas conexiones manualmente.

Shield con botones y joystick

Tiene dos opciones de acceso a los botones; además de los pines estándar de Arduino, los botones están conectados al header amarillo, lo que facilita el uso de los botones.


Instrucciones

Construir el pad requiere programar el código en el WROOM-32, construir el circuito para conectar el shield de botones al WROOM-32 e imprimir la carcasa para colocar el circuito construido.

materiales-1.jpeg

Primero programaremos el WROOM, después construiremos el circuito y finalmente imprimiremos la carcasa.


Programación del microcontrolador ESP-WROOM-32

Para grabar el programa en el microcontrolador, descargaremos el código del repositorio de la Akoui en Github y lo descomprimimos.

El programa para el pad se encuentra en:

Software/Control_Pad_Programas/Grua_ControlPad_TCPClient.

prog-micro-1-carpeta-proyectp.png

Esa carpeta es un proyecto de PlatformIO, con el código en Arduino que se programa en el microcontrolador WROOM-32 del pad de control.

Si te interesa una introducción rápida a PlatformIO y cómo usarlo con VS Code te recomendamos este post de LinkedIn. Para utilizar PlatformIO con QtCreator en Linux puedes revisar esta guía en el blog de Olin Robotics; y para una guía de PlatformIO con VS Code en Windows puedes revisar este post de Programar Fácil.

Aunque el proyecto se desarrolló usandoQtCreator, VS Code reconoce perfectamente la carpeta como un proyecto de PlatformIO, así que puedes usar cualquiera de los dos IDEs para programar el proyecto en el microcontrolador WROOM-32.

Antes de grabar el código en el WROOM-32, es necesario modificar el archivo CommTCP.h, para indicar el nombre de nuestra red (ssid) y su contraseña (password), así como las IP's de los módulos de movimiento.

prog-micro-code-comm-tcp-h-ips-access.png

En las líneas 58 y 59 definimos el nombre y contraseña de nuestra red Wifi. En nuestro caso, probamos el Pad de control tanto en casa como en el Dojo, así que hemos definido dos redes y seleccionamos cuál usaremos modificando una línea en el archivo Config.h

prog-micro-code-config-h.png

En las líneas 35 y 36 se definen las IP's de los módulos de movimiento horizontal y vertical. Cuando construyamos los módulos de movimiento les asignaremos estas IP's fijas en nuestro router para garantizar que el pad de control se conecte con ellos.

prog-micro-code-comm-tcp-h-ips.png

Una vez hechas las modificaciones compilamos nuevamente el código

Si la compilación es exitosa, obtendremos la salida siguiente:

Y podemos grabar el código en la tarjeta WROOM-32 conectándolo por USB.

En la salida nos mostrará el progreso de grabación.

Una vez que el proyecto se grabe completamente en la tarjeta, ejecutamos el monitor de PlatformIO. Si has seguido la guía de configuración del blog de Olin Robotics, el monitor se ejecutará automáticamente; de otra forma, si estás en Linux: Abre el menú contextual de la carpeta del proyecto, con Clic derecho en un espacio en blanco, y después haz clic en Abrir en un terminal. Y ejecutamos:

$ pio device monitor

ProgMicro-1-pio-monitor.png

En la terminal deberá mostrarse un punto cada medio segundo, indicando que está conectándose a nuestra red Wifi.

prog-micro-pio-monitor-1-sin-conexion.gif

Una vez conectado al router, en la terminal se mostrará el nombre de la red y la IP que ha tomado el WROOM-32, después si logró conectarse a los módulos de movimiento y, finalmente, empezará a mostrar el estado de los botones y el joystick del shield.

prog-micro-pio-monitor-2-con-conexion.gif

Si estás recibiendo los estados de los botones por terminal, hemos terminado la programación del microcontrolador.

NOTA: Si los botones no están conectados aún, mostrará todos los botones en 0.


Construcción del circuito

A continuación puedes ver el diagrama general del circuito.

Diagrama general del sistema

Considera que los componentes no se sueldan directamente al WROOM, sino a las tiras de 15 pines hembra, sobre las que colocamos el WROOM, como puedes ver en la imagen.

Si el WROOM logra conectarse a nuestra red WiFi encenderá el LED amarillo. Si logra conectarse a los módulos vertical y horizontal se encenderan los LEDs azul y verde, respectivamente.

Después de 30 segundos los LEDs se apagan para un modo más discreto durante la noche. Al presionar cualquier botón los LEDs vuelven a encender indicando el estado de conexión a la red y los módulos de movimiento.

Una vez conectado el shield con los botones, al presionar cualquiera de estos, su valor debe pasar de 1 a 0.

akoui-pio-monitor-con-conexion.gif


NOTA: Los botones tipo microswitch del diagrama son opcionales y funcionan en paralelo con los botones de movimiento horizontal del shield.


Impresión de la carcasa

Una vez construido el circuito imprimimos la carcasa donde se coloca. Los archivos para las carcasas están en la carpeta Hardware/Control_Pad/3D_Pieces/Cubierta_Control del repositorio.

El diseño de la carcasa Inferior es ControlPad_Bottom_v3.stl.

Se puede imprimir con PLA o ABS, usando 10% de relleno.

En nuestra Tevo Tarantula le llevó alrededor de 6 horas tener la pieza lista.

NOTA 1: La carcasa superior está en proceso y estará en la misma carpeta del repositorio.

NOTA 2: Una vez con la pieza impresa hubo algunas modificaciones, como el recorte rectangular para poder conectar el WROOM-32 por USB mientras está colocado en la carcasa. Se publicará una nueva versión en la misma carpeta.

NOTA 3: En caso de usar los botones tipo micro-switch también es necesario rebajar la carcasa para colocarlos.


Pad de control finalizado

Sólo falta montar el circuito en la carcasa y tenemos nuestro pad de control electrónico terminado.

Aunque el WROOM funciona a 3.3V, el circuito puede alimentarse con 5V.

Acá un ejemplo de uso con José Olin controlando el movimiento vertical y horizontal.


Conclusiones

En este post vimos cómo construir el pad de control de la grúa para traslado Akoui, de Olin Robotics. La idea de esta serie de post es documentar la grúa un post a la vez y avanzar en nuestra visión de un mundo donde la tecnología para una vida independiente es libre y accesible. Un dispositivo a la vez.

¡Hasta la Autonomía Siempre!




.
Esta publicación es posible gracias a nuestros Patreons.