Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Brazo Robótico Controlado por Ethernet: Control Remoto Simplificado

Componentes y suministros

Arduino 101 × 1
WIZnet WIZ750SR × 1
Dispositivo Android × 1
Brazo robótico (4 DoF) × 1
Micro servo Metal Gear × 4

Aplicaciones y servicios en línea

Sobre el proyecto

Introducción

Me encantan los brazos robóticos. Me gusta que solo necesitas piezas mecánicas simples, servos o motores, buen software y obtienes un dispositivo no solo espectacular y divertido sino realmente útil. Quería construir uno desde que hice un curso de robótica que adoré. Se aprende mucho construyendo un brazo robótico, así que creo que es un gran proyecto de nivel intermedio para profundizar en robótica. ¡Empecemos!

Brazo robótico

Puedes comprar brazos robóticos desde ~20$. Para experimentar, empecé con uno barato. Luego construiré o compraré uno más serio, pero por ahora trabajo con este kit DIY de 4 DoF (Grados de Libertad) de Banggood por 25$.

Es un brazo 4 DoF donde 3 servos mueven y uno controla el efector (pinza). Significa que la pinza puede moverse a cualquier posición en un área específica pero sus ángulos no pueden cambiarse. Limitación significativa, pero sirve para muchas cosas.

El kit venía con 4 servos, así que tienes todos los componentes excepto el controlador. Esos servos no están mal, pero preferí estos servos Metal Gear: más rápidos y con engranajes metálicos en lugar de plástico.

Las piezas del robot vienen en 4 láminas plásticas. Hay que extraer las piezas. Recomiendo ver este video de un ruso construyendo el mismo tipo (montaje empieza en 7:43). Las instrucciones del paquete eran de muy baja calidad. Ten mucho cuidado al insertar los servos: este diseño con este plástico se rompe fácilmente al apretar tornillos. La tensión óptima también importa en otras partes: demasiado apretado y los segmentos no se mueven.

Tras el montaje, tienes tu propio brazo robótico. El servo de la pinza necesita cable más largo: desmonté, desoldé el cable original y usé uno al menos el doble de largo.

Cerebro: Arduino 101

Necesitaba un microcontrolador y elegí mi Arduino 101. Es la única placa oficial Arduino con microcontrolador Intel (Intel Curie). Tiene giroscopio y acelerómetro integrados, y Bluetooth (posibilidad de control BLE futuro). Otra característica muy útil: la comunicación serial funciona distinto. A diferencia de la mayoría de Arduinos, el USB serial y el UART en pines 0 y 1 (TX/RX) no son los mismo. Beneficios: no desconectar circuitos de comunicación de pines 0/1 al reprogramar, y útil para depuración. Si usas USB serial → Serial; si usas GPIO0/1 → Serial1.

El Arduino 101 tiene 4 GPIOs con PWM (GPIO3, 5, 6, 9) y usé todos para controlar los 4 servos.

Comunicación: WIZ750SR

Mi brazo se controla por serial (Serial1). Usé mi módulo de comunicación más nuevo, el WIZ750SR.

Es un pequeño módulo Ethernet con MCU Cortex-M0. En funcionalidad básica es un módulo Serial-a-Ethernet, pero puedes reprogramarlo fácilmente. Puedes convertirlo en I2C-a-Ethernet si quieres. Característica genial: servidor TCP integrado (o cliente). Usando el servidor TCP, puedes controlar el Arduino remotamente, igual que por USB serial, ¡desde cualquier parte del mundo! En el lado del Arduino es totalmente transparente: no necesitas código extra en tu sketch para usar este módulo.

Tengo una placa de evaluación WIZ750SR-TTL-EVB que alimenta el módulo y tiene puerto USB debug, pero solo la usé para experimentos iniciales. Tanto Arduino 101 como WIZ750SR usan 3.3V, así que no necesité conversión de nivel para TX/RX. El Arduino alimenta el módulo Ethernet desde su fuente. Los servos tienen su propia fuente de 5V. El circuito es simple (ver Esquemáticos).

Configuración del módulo

Para usar la placa hay que configurarla primero. No re-documentaré esto porque WIZnet ya lo hizo aquí (siempre documentación actualizada). Su documentación es genial pero tengo info útil y tuve algunos problemas (resueltos) que vale compartir.

Gran herramienta para probar comunicación TCP: NetCat. Conecta al servidor TCP del WIZ750SR: nc [tcp_server_ip] [tcp_server_port]. Luego envías/recibes datos directamente. La usé mucho.

Mover de A a B

Para mover un brazo robótico, dices al controlador qué quieres. Lo más simple: actualizar directamente ángulos de todos los servos. Actualizar ángulos de articulaciones se puede hacer por prueba-error y funciona bien.

En mi próximo proyecto usaré cinemática inversa para control por coordenadas mundiales, pero por ahora controlo solo con ángulos de articulaciones.

La velocidad es clave. Los servos son rápidos pero necesitan tiempo para alcanzar posición. Los cables no aguantan movimientos muy rápidos. Tuve que ralentizar tanto en hardware como software. Creé cálculo de trayectoria e inserté delays. Al enviar nuevos ángulos, proporcionas un parámetro extra: velocidad (mDelay). Básicamente dices al controlador el tiempo mínimo de paso del bucle. El calculador de trayectoria calcula un tamaño de paso opcional para cada servo de posicionamiento. Todos los servos llegan a su objetivo casi al mismo tiempo y la velocidad depende del delay. Resultado: movimiento lineal muy suave siempre.

El efector funciona distinto: solo tiene estados abierto/cerrado (con 3 niveles de fuerza de cierre), sin transición suave. Obviamente quieres agarrar el objeto cuanto antes, mientras el movimiento debe ser suave.

Dos tipos de comandos actualmente:

App Android para control remoto

En este punto puedo controlar el brazo desde cualquier parte, pero tengo que escribir cada comando manualmente. No es divertido. Necesitaba forma más amigable, así que hice una app Android.

La app tiene cliente TCP, conecta directo al servidor TCP del WIZ750SR. El brazo no guarda trayectoria de movimientos pasados/futuros; solo conoce posición objetivo actual. La app no envía toda la trayectoria, sino que envía periódicamente nuevas posiciones basadas en retroalimentación de posición. Si cierras la app o te desconectas, el brazo para al alcanzar su última posición recibida.

Tras conectar, llegas a pantalla Configure con 3 pestañas: Run, Init, Loop. Init y Loop son iguales, solo difieren en dónde guardan la posición. Pantalla tiene 4 barras deslizantes y botón pinza además de botón guardar. Sliders para posición y velocidad; botón pinza para abrir/cerrar. Cambios son instantáneos: ves nueva posición en el brazo inmediatamente. Clic en guardar para añadir a la trayectoria. Si cambias pinza y posición, se guardan como dos comandos separados (pinza primero, luego posición).

Campos son EditText: puedes editar/borrar contenido fácilmente. Si no quieres sliders, escribes comandos a mano. Puedes copiar/pegar la trayectoria. La app recuerda la última trayectoria ejecutada.

Primera línea bajo "Configure" es feedback visual para test: izquierda = última posición objetivo enviada (S - sent), derecha = posición actual del brazo (R - received). La app envía nueva posición objetivo en cuanto objetivo y actual coinciden.

Con solo Init, el brazo para al terminar comandos Init. Con Init + Loop, los comandos Loop se repiten forever (hasta parar).

Resultados

Usé Init y Loop y permitieron tareas moderadamente complejas. Video: brazo coloca patos de goma (Init) y luego los mueve uno a uno alrededor de sí mismo, forever (Loop). Movimientos muy suaves, continuos y precisos considerando que es un brazo muy barato con limitaciones hardware serias.

Conclusión

Mi software funciona muy bien y en el futuro mejorar este brazo o construir uno más avanzado. Logré todo lo planeado sin problemas bloqueantes graves.

Arduino 101 genial para esto. Única limitación: solo 4 GPIOs PWM. Podría ser problema futuro si construyo brazo con más DoF, pero serial USB y GPIO separados es muy útil en desarrollo y la placa da mucha potencia computacional.

La app Android fue buena idea, pero haré más robusta, amigable y funcional. Es versión alpha ahora.

El WIZ750SR fue grata sorpresa. Temía más problemas, pero tras configurar funcionó perfecto. Totalmente transparente, cero problemas. Dispositivo muy fácil de usar y mejor módulo Ethernet que he usado con microcontroladores.

Trabajar con brazos robóticos es extremadamente divertido, ¡así que definitivamente aprenderé más y compartiré conocimiento en el futuro! ¡Gracias por leer!

Código

Esquemáticos

Actualmente el sistema usa dos fuentes de alimentación separadas: una del puerto USB del Arduino y otra de 5V para mover los servos. Diagrama incluido.

Proceso de manufactura

  1. Construya un robot Raspberry Pi controlado por Bluetooth con retroalimentación de audio
  2. Robot Controlado por Gestos con Raspberry Pi
  3. Construye un Robot Controlado por Voz con Windows 10 IoT Core en Raspberry Pi 2
  4. Construye un Robot Raspberry Pi Controlado por Wi‑Fi con Python – Guía Paso a Paso
  5. ROObockey: Robot de Hockey Callejero con Asistencia de Precisión y Control Remoto
  6. Brazo Robótico MeArm V1.0 – Construye tu Brazo Robótico con Arduino y Raspberry Pi
  7. Controla LEDs con Alexa mediante Raspberry Pi – Guía paso a paso fácil
  8. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
  9. Construye un robot controlado por voz con Arduino Nano
  10. PiBot: Robot Pianista con Arduino para Interpretación Musical de Precisión
  11. Robot SCARA de doble brazo: soluciones avanzadas de ensamblaje y producción