Hay pocos fierros más frustrantes que un robot bueno y barato al que el fabricante le soltó la mano. El Rotrics DexArm es justo eso: un brazo robótico chino que nació como proyecto de Kickstarter, imprime en 3D bastante bien de fábrica, acepta rieles para moverse por la mesa, y aún se vende. El problema es que su gran promesa, varios brazos coordinándose entre sí, nunca llegó, el software dejó de actualizarse y la comunidad quedó sola. La buena noticia: con un poco de maña y un ESP32 puedes reactivar la parte más interesante del brazo por tu cuenta.

Esta guía es el manual que Rotrics nunca publicó para su DIY Kit, ese accesorio que en teoría te deja agregarle funciones nuevas al brazo, pero que viene totalmente indocumentado. Después de varios días de pelearle con osciloscopios, analizadores lógicos, datasheets del STM32 y lectura del firmware derivado de Marlin, acá está la receta lista para que tú no tengas que sufrir lo mismo. Al final vas a saber cómo sacarle datos serial al DexArm y cómo dispararle comandos desde tu propio Gcode.

Brazo robótico Rotrics DexArm imprimiendo una figura 3D sobre láminas de impresión

El primer malentendido: la placa no hace nada

Lo más importante de entender antes de empezar es contraintuitivo: la placa del DIY Kit no tiene electrónica activa. No procesa, no convierte, no traduce. Es, lisa y llanamente, un expansor del puerto USB C. Su único trabajo es romper algunos pines del conector USB C del brazo hacia un header de pines cómodo, donde sí puedes soldar o pinchar cables.

¿Dónde está la gracia entonces? En que el DexArm usa, para enviar datos serial desde su microcontrolador interno, varios pines del puerto USB C que en un cable común quedarían sin uso. El DIY Kit simplemente los deja a tu alcance.

Placa del DIY Kit de Rotrics con los pines GND, 5V, TX6, RX6, D+, D-, TX3 y RX3 rotulados

Los pines correctos: olvídate de PA, PD y PC

Acá viene la parte donde la poca documentación que existe te manda directo al precipicio. Si lees el manual oficial vas a ver referencias a pines llamados "PA", "PD" o "PC": ignóralas por completo. Esos nombres son referencias internas a los pines del STM32F4 y no te dicen absolutamente nada útil para cablear.

La verdad es más simple. La versión de Marlin que usa Rotrics crea dos puertos serial:

  • Serial 1 sale por el USB normal y se usa para hablar con la app de escritorio y la pequeña pantalla TFT que trae el brazo.
  • Serial 2 es el que te interesa: sale por los pines rotulados RX3 y TX3 del header del DIY Kit.

Los pines RX6 y TX6 que también ves rotulados no están habilitados en el firmware, así que olvídate de ellos. Todo el juego pasa por RX3 y TX3.

Diagrama de pines del conector USB C macho y hembra mostrando GND, RX3, TX3, 5V, D+ y D-

Conexión: cruzado, a tierra común y siempre a 3.3V

Para leer esos datos necesitas un microcontrolador que tome los pines RX3 y TX3 del DIY Kit y los lea como serial normal. Tienes tres reglas que NO puedes saltarte:

  1. El micro del Rotrics trabaja a 3.3V. Tienes que leer la señal con una placa de 3.3V. Un Arduino "de los viejos" a 5V no solo no va a funcionar: puede dañarte la electrónica del brazo. Por eso este proyecto se hace ideal con un ESP32 o, como en la foto original del autor, con una placa Adafruit Feather M4. Cualquier placa de 3.3V con un UART por hardware sirve.
  2. El serial va cruzado. Conecta el pin TX del Rotrics al pin RX de tu microcontrolador, y el pin RX del Rotrics al pin TX de tu micro. Es la regla de oro de cualquier conexión serial: lo que uno transmite, el otro lo recibe.
  3. Tierra común obligatoria. No olvides unir el pin GND del DIY Kit con un pin de tierra (GND) de tu microcontrolador. Sin tierra compartida, los dos lados no tienen una referencia de voltaje común y la lectura será basura o simplemente no habrá lectura.

Un detalle que confunde a mucha gente: ese pin de datos viaja a un baud rate rarísimo de 1.000.000 baudios (un millón). Configura el puerto serial de tu placa a esa velocidad exacta. Acá es donde un ESP32 brilla: tiene UARTs por hardware capaces de mantener ese ritmo sin despeinarse, mientras que un puerto serial emulado por software a esa velocidad sería un caos de bytes corruptos.

Enviar comandos desde tu Gcode con M118 P2

Una vez que el ESP32 está leyendo el Serial 2, puedes mandarle texto desde el lado del DexArm con un comando Gcode muy simple:

M118 P2 tu_texto_aquí

Mientras pruebas, puedes escribir ese comando directo en el terminal de Rotrics Studio y verás el texto aparecer en el monitor serial de tu microcontrolador. Pero la parte poderosa viene cuando estás imprimiendo en 3D: puedes incrustar cualquier comando que quieras dentro de tu archivo Gcode, después del encabezado M118 P2, y programar tu ESP32 para que lea esa salida y reaccione como tú quieras, en el momento exacto de la impresión que tú definas.

Monitor serial mostrando el comando M118 P2 hello world enviado desde Rotrics Studio y su eco en la placa

En el ejemplo de arriba, un pequeño sketch que lee Serial1 y reenvía cada byte al USB confirma que el canal funciona: al escribir M118 P2 hello world en Rotrics Studio, el texto "hello world" aparece limpio en el monitor serial. Ese eco simple es tu prueba de que el cableado quedó bien antes de armar algo más complejo.

Variantes y mejoras

Una vez que dominas el canal serial, el DexArm se vuelve un robot extensible de verdad. Algunas ideas para llevar el proyecto más lejos:

  • Cuarto grado de libertad con rieles. El autor original usa este hack para que su Gcode le ordene a los rieles mover el brazo a la siguiente zona de un objeto grande durante la impresión. El Gcode le habla al microcontrolador, este le habla al notebook, y el notebook comanda un driver de motor paso a paso. Con esto sumas un eje extra al brazo como impresora 3D.
  • Si solo quieres mandar datos al notebook, ni siquiera necesitas el DIY Kit. Incrusta M118 P2 comando en cualquier parte de tu Gcode y el texto volverá a tu computador por el USB serial normal, listo para leerlo con Python. Ojo: no puedes tener Rotrics Studio conectado al mismo tiempo, porque Studio se queda con el puerto.
  • Depura tu propia señal con un analizador lógico. Si quieres aplicar ingeniería inversa a otra función del brazo o verificar el timing del UART a 1 Mbaud, un analizador lógico USB de 8 canales es la herramienta que el autor usó para descifrar todo esto. No es necesario para seguir esta receta ya resuelta, pero es tu mejor aliado si vas a explorar por tu cuenta.

Personalización para Chile

El brazo Rotrics DexArm y su DIY Kit los traes del fabricante o de importación, pero el corazón del hack, la placa que lee el serial y los cables para pinchar el header, los consigues acá mismo en MechatronicStore:

  • ESP32 ESP WROOM 32 (id 3688): $7.990 CLP. Es una placa de 3.3V con UART por hardware, ideal para leer el Serial 2 del DexArm a 1.000.000 baudios. Cumple la misma función que la Adafruit Feather M4 del tutorial original, a una fracción del precio.
  • Cables DuPont Hembra a Hembra 20cm (id 712212): desde $690 CLP. Perfectos para pinchar los pines RX3, TX3 y GND del header del DIY Kit sin tener que soldar.

Con esos dos ítems en stock local armas la parte electrónica del hack por menos de $9.000 CLP. El analizador lógico USB de 8 canales, si quieres depurar por tu cuenta, también está disponible en el catálogo, pero es opcional para esta guía.

Recursos

Guía chilena inspirada en el trabajo de zlite (DIY Robocars), con la parte electrónica armada con componentes en stock local en MechatronicStore.