¿Y si una celda de ensamblaje automatizada, de esas que uno asocia a fábricas gigantes, cupiera sobre tu escritorio y se armara con piezas que consigues en Chile? Eso es exactamente lo que vamos a desarmar en esta guía: cómo un brazo robótico, una cámara y un microcontrolador se coordinan para armar solos un pequeño auto de juguete impreso en 3D, verificando cada pieza antes de tomarla.
El proyecto original de Circuit Digest usa hardware industrial de primer nivel (un brazo MechArm 270 y una NVIDIA Jetson). Acá lo tomamos como referencia conceptual y te mostramos, además, una ruta DIY de bajo costo. brazo de servos, ESP32 y visión con OpenCV sobre Raspberry Pi. para que puedas construir la misma idea sin un presupuesto de planta.
Qué vas a aprender
Al terminar esta guía vas a entender cómo se integran las cuatro piezas de una celda de ensamblaje robótico moderna: visión artificial para inspeccionar componentes, control de movimiento para desplazar el brazo, electrónica embebida para coordinar sensores y actuadores, y un panel web para monitorear todo en tiempo real. Vas a saber por qué cada subsistema existe, cómo se comunican entre sí, y con qué componentes en stock local puedes replicar una versión propia.
Cómo funciona: la arquitectura del sistema
En lugar de listar pasos de inmediato, conviene ver el sistema como un todo. Todo gira en torno a una unidad de procesamiento central (una Jetson Nano en el original; una Raspberry Pi en la versión DIY) que actúa como cerebro y coordina el resto. Una cámara montada cerca del brazo captura imágenes de las bandejas de componentes y se las envía a esa unidad, donde algoritmos de visión con OpenCV revisan que la pieza correcta esté presente y tenga el color esperado antes de cada movimiento.

El controlador embebido (una placa basada en ESP32) se encarga de lo que exige tiempo real: mover el riel lineal, leer sensores y accionar periféricos. Separar el "pensar" (visión, en la Raspberry Pi) del "actuar" (movimiento, en el ESP32) es una decisión de diseño clave: así el procesamiento de imágenes nunca frena el control del hardware, y viceversa.
El flujo de trabajo de ensamblaje
En vez de tomar piezas a ciegas, el sistema inspecciona cada punto de recogida antes de mover el brazo. Ese paso de verificación es lo que hace confiable el proceso. El ciclo completo se ve así:

- Inicialización. Al encender, la Raspberry Pi, el ESP32 y el brazo arrancan. El riel ejecuta una secuencia de homing usando el final de carrera para fijar su posición de referencia.
- Mover a la bandeja. El ESP32 desplaza el brazo por el riel hasta la bandeja del componente que toca según la secuencia definida.
- Inspección. La cámara captura la bandeja y la Raspberry Pi procesa la imagen con OpenCV para verificar presencia y color de la pieza.
- Tomar la pieza. Si la verificación es exitosa, el efector recoge el componente. Si no detecta la pieza, el sistema espera o reintenta.
- Ensamblar. El brazo coloca la pieza en su posición dentro de la estación de ensamblaje. Se repite hasta completar todas las piezas.
- Ciclo completo. Con la última pieza puesta, el brazo vuelve a su posición de reposo y queda listo para el siguiente ciclo.
El brazo robótico
El corazón del proyecto original es un MechArm 270 de Elephant Robotics: un manipulador de seis ejes compacto, de escritorio, con ecosistema amigable (Python, ROS, USB y WiFi). Se controla de forma inalámbrica desde la unidad de procesamiento, que le envía comandos de movimiento después de cada inspección visual.

La versión DIY chilena: no necesitas un brazo comercial para replicar el concepto. Un brazo de 6 grados de libertad con servos MG996 cumple el mismo rol de manipulador multieje. La diferencia técnica honesta: los servos dan menos repetibilidad y par que un brazo industrial, pero para piezas livianas impresas en 3D es más que suficiente y cuesta una fracción.
El efector final: vacío vs. garra mecánica
El original reemplaza la pinza estándar por un gripper de vacío, que levanta piezas planas y livianas por succión. Es ideal para plástico liviano y difícil de agarrar mecánicamente, y se alimenta directo desde el GPIO del brazo, sin cableado externo.

En la versión DIY, montar una bomba de vacío es engorroso, así que una garra mecánica accionada por servo hace el mismo trabajo de tomar y soltar. No es la misma tecnología (agarre mecánico en vez de succión), pero para un auto de juguete resuelve igual.
El riel lineal: sumando un eje
Un brazo de escritorio tiene alcance limitado (unos 270 mm de radio en el MechArm). Para que llegue a varias bandejas y a la estación de ensamblaje, se monta sobre un riel lineal motorizado, que agrega efectivamente un eje de movimiento en X.

La plataforma se arma con perfil de aluminio, una guía lineal de precisión y un motor paso a paso que da movimiento suave y exacto. Piezas impresas en 3D sujetan el brazo al carro móvil. Un final de carrera en un extremo funciona como sensor de homing: al arrancar, el carro va hasta ahí para establecer un origen conocido antes de empezar el ciclo.
Un detalle técnico que vale la pena entender: el driver de pasos usa microstepping para dividir cada paso completo del motor en fracciones (1/16, 1/32…). Eso suaviza el movimiento y aumenta la resolución de posicionamiento del riel, algo crítico cuando el brazo debe llegar siempre al mismo punto de recogida.
El panel de control y la electrónica
Toda la electrónica vive en un panel central: control de movimiento, procesamiento de visión, distribución de energía y monitoreo. Centralizar en un gabinete ordenado simplifica el cableado y protege los componentes.

En el original, una entrada de 240V AC pasa por un disyuntor, se divide en dos ramas (una para el controlador y la Jetson, otra independiente para el brazo, con parada de emergencia y contactor) y alimenta todo con fuentes DIN rail industriales. En la versión DIY reemplazamos ese esquema industrial por una fuente switching de 12V, más que suficiente para servos, motor de pasos y lógica.
La placa controladora ESP32
El proyecto usa una placa controladora personalizada basada en ESP32-S3 que reúne todo en un solo PCB: control del riel, entradas de sensores, salidas de relé y periféricos. Eso elimina múltiples placas de desarrollo y cableado disperso.

Sus funciones se reparten así:
- Comunicación: se conecta por WiFi e intercambia comandos y estado con la unidad de visión mediante WebSocket.
- Control de movimiento: maneja el driver del motor de pasos, ejecuta el homing y posiciona el riel según los comandos recibidos.
- Sensores y periféricos: monitorea temperatura y el switch de puerta del gabinete, y controla relé, buzzer e indicadores.
- Interfaz de dashboard: hospeda un servidor web asíncrono y actualiza el panel con posición del riel, temperatura y estado del sistema.
La visión por computador
Para procesar las imágenes de la cámara se necesita una plataforma de cómputo. El original usa una NVIDIA Jetson Nano: una Raspberry Pi bastaría para OpenCV básico, pero la Jetson aporta GPU para futuras funciones de IA (clasificación de objetos, detección de defectos).

En la versión DIY, una Raspberry Pi 4 corre perfectamente la visión con OpenCV; solo renuncias a la aceleración por GPU CUDA para modelos de deep learning pesados. El pipeline de visión funciona así: la cámara captura la bandeja, la imagen se undistort con parámetros de calibración y se recorta a una Región de Interés (ROI). Esa ROI se pasa de BGR a HSV, donde se aplica un umbral de color para generar una máscara binaria de la pieza. Operaciones morfológicas limpian el ruido, y la detección de contornos con filtrado por área identifica la pieza y su posición.
¿Por qué HSV y no RGB? Porque en HSV el tono (Hue) queda separado del brillo. Si detectaras color en RGB, cualquier cambio de iluminación. una nube, una lámpara. movería los tres canales a la vez y romperías el umbral. En HSV, el tono de una pieza roja se mantiene estable aunque cambie la luz; solo varía el canal de brillo (Value), que puedes tolerar con rangos amplios. Por eso es el espacio de color estándar para detección robusta.
El software y los waypoints

El software se divide en cuatro módulos: visión, control del brazo, firmware del ESP32 y dashboard web. Una decisión de diseño elegante es cómo controla el brazo: en vez de calcular trayectorias en tiempo real, carga ángulos de articulación predefinidos desde archivos JSON de waypoints, enseñados manualmente durante la calibración. Cada waypoint guarda los seis ángulos, la velocidad, el preset del riel y el estado del gripper:
Algunas funciones típicas de la API de Python del brazo: MechArm270("COM3", 115200) establece la comunicación, get_angles() devuelve los ángulos actuales de los seis ejes, get_coords() entrega las coordenadas cartesianas, send_angles([...], speed) mueve las articulaciones y release_all_servos() libera los motores para posicionar a mano.
Este enfoque basado en datos separa el movimiento del robot de la lógica de la aplicación: el programa solo carga el waypoint que corresponde a la etapa actual y ordena el movimiento. Recalibrar o agregar posiciones es tan simple como editar un JSON.
El dashboard web

Desarrollado con Flask, HTML, CSS y JavaScript, el panel se comunica con el backend por WebSockets (Flask SocketIO) para datos en tiempo real sin recargar la página. Tiene tres vistas: el Dashboard principal (feed de cámara con detección OpenCV, progreso, estado de sensores y logs), la configuración de cámara y ROI (dibujas las regiones de interés directo sobre el video), y el control de brazo y riel (mueves articulaciones manualmente, creas y editas waypoints, y los exportas como JSON).
Variantes y mejoras
Tres ideas concretas para llevar este proyecto más allá de lo que muestra el original:
- Detección con IA en el borde (YOLO): en vez de umbrales de color por ROI, corre un modelo YOLO liviano sobre la Raspberry Pi (o una Jetson si buscas GPU). Elimina la necesidad de definir ROIs a mano y vuelve el sistema robusto ante cambios de iluminación, orientación y disposición de las bandejas.
- Pick and-place dinámico: en lugar de posiciones fijas guardadas en JSON, que la visión estime la posición y orientación real de cada pieza y genere las coordenadas de recogida en tiempo real. Así el brazo toma piezas sin importar dónde estén dentro de su espacio de trabajo.
- Telemetría a tu celular: agrega un envío de estado por MQTT desde el ESP32 hacia un broker, y monitorea el ciclo de ensamblaje (o recibe alertas de parada) desde el teléfono, sin depender del dashboard local.
Personalización para Chile
Esta es la lista de componentes para armar la versión DIY de bajo costo con stock local en MechatronicStore. Donde el original usa hardware industrial, indicamos el equivalente accesible:
- Brazo Robótico 6 DOF con servos MG996 (SKU M-506). $114.990 CLP. Equivalente DIY al MechArm 270: mismo concepto de manipulador de seis ejes, accionado por servos.
- Placa ESP32 (SKU X2-10V2). $7.990 CLP. Controlador del riel, sensores y periféricos. El original usa un ESP32-S3; el ESP32 estándar comparte el mismo entorno Arduino.
- Motor paso a paso NEMA 17 17HS4401 (SKU X3-4). $13.990 CLP. Mueve el riel lineal en el eje X.
- Driver DRV8825 (SKU K-246). $3.290 CLP. Controla el motor de pasos con interfaz STEP/DIR; reemplaza al TMC5160 industrial del original.
- Controlador de servos PCA9685 16 canales (SKU X5-6). $3.990 CLP. Acciona los seis servos del brazo por I2C liberando pines del ESP32.
- Garra robótica metálica para servo (SKU X1-8). $9.000 CLP. Efector final; reemplaza el gripper de vacío por un agarre mecánico.
- Micro final de carrera (limit switch) (SKU GC1-11). $790 CLP. Sensor de homing del riel.
- Raspberry Pi 4 Model B 8GB (SKU M-204). $239.990 CLP. Procesa la visión OpenCV; reemplaza la Jetson Nano (sin GPU CUDA, suficiente para OpenCV).
- Módulo Cámara para Raspberry Pi (SKU M-434). $7.690 CLP. Captura las bandejas para la inspección visual.
- Fuente switching 12V 5A (SKU K-405). $9.990 CLP. Alimenta servos, motor de pasos y lógica.
- Filamento PLA SunLu 1.75mm (SKU SL-003). $13.990 CLP. Para imprimir soportes, carro del riel y el auto de juguete.
- Cables macho hembra 30cm (SKU C-418). $1.990 CLP. Conexiones entre placas, sensores y actuadores.
La guía lineal de precisión y el perfil de aluminio 2020 del riel puedes conseguirlos en tiendas de fierro/aluminio locales si no los tienes.
Recursos
- Tutorial original: Machine Vision Based Robotic Assembly System with MechArm 270
- Repositorio GitHub (código, firmware y archivos PCB): machine vision-robotic assembly-system
Versión chilena inspirada en el proyecto original, re angulada con componentes en stock local en MechatronicStore.







