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 a través de Ethernet

Componentes y suministros

Arduino 101
× 1
WIZnet WIZ750SR
× 1
dispositivo Android
× 1
Brazo robótico
Puedes usar cualquier otro brazo robótico, pero es posible que debas ajustar el código si tu brazo robótico es demasiado diferente
× 1
Micro Servo Metal Gear
× 4

Aplicaciones y servicios en línea

Arduino IDE
Herramienta de configuración WIZnet S2E
Android Studio

Acerca de este proyecto

Introducción

Me encantan los brazos robóticos. Me gusta que solo necesitas algunas partes mecánicas simples, algunos servos o motores, un buen software y puedes obtener un dispositivo que no solo sea espectacular y divertido, sino también realmente útil. Quería construir uno ya que tenía un curso de robótica que realmente me encantaba.

Puedes aprender mucho cuando construyes un brazo robótico, así que creo que este es un gran proyecto de nivel intermedio para profundizar tus conocimientos en robótica. ¡Empecemos!

Brazo robótico

Puedes comprar brazos robóticos desde unos 20 $. Para experimentar, quería empezar con uno más económico. Más tarde construiré o compraré un brazo robótico más serio, pero por ahora trabajaré en este brazo robótico DIY de Banggood por 25 dólares.

Este es un brazo robótico de 4DoF (grados de libertad), donde se usan 3 servos para moverse y uno es para el efector (lo llamé pinza en el proyecto). Significa que la pinza se puede mover a cualquier posición en un área específica, pero sus ángulos no se pueden cambiar. Esta es una limitación significativa, pero está bien por ahora y todavía es buena para muchas cosas.

El kit de bricolaje venía con 4 servos, por lo que en realidad obtienes todos los componentes para construir el brazo del robot además de un controlador. Estos servos no son malos, pero los preferí:

<>

Estos servos son más rápidos que los azules y utilizan engranajes de metal en lugar de plástico.

Las piezas del robot venían en 4 láminas de plástico. Tienes que quitar las partes de estas hojas.

El kit de brazo robótico compuesto por varias piezas. Te recomiendo que veas el siguiente video. En este video, un chico ruso está construyendo el mismo tipo de brazo robótico. La parte del edificio comienza a las 7:43.

Recibí un enlace en el paquete sobre cómo construir el brazo robótico, pero era de muy baja calidad tanto en imágenes como en instrucciones. Ese video es mucho mejor. Posiblemente pueda averiguar qué es qué, pero si hace esto, terminará en un ciclo casi infinito de ensamblaje, desensamblaje y reensamblaje.

Tenga mucho cuidado al insertar los servos. Este diseño con este tipo de plástico tiende a romperse con mucha facilidad cuando se aprietan los tornillos. El ajuste óptimo de los tornillos también es importante en algunas otras partes del robot. Ajústelos demasiado y no podrá mover los segmentos del brazo del robot con los servos.

Después de un poco de construcción, terminarás con tu propio brazo robótico.

Los servos de posicionamiento tienen un cable lo suficientemente largo, pero la pinza necesita uno mucho más largo. Desmonté ese servo, desolé el cable viejo y usé un cable de al menos el doble de largo.

Cerebro

Está bien, el brazo robótico está listo, pero es más que probable que quieras controlarlo de alguna manera. Necesitaba un microcontrolador para eso y elegí mi Arduino 101 para este trabajo.

Es la única placa Arduino oficial que utiliza un microcontrolador Intel (Intel Curie). Tiene giroscopio y acelerómetro integrados. También tiene Bluetooth, por lo que me deja la posibilidad de controlar el robot a través de BLE en el futuro. Otra característica muy útil de esta placa es cómo funciona la comunicación serial. A diferencia de la mayoría de los Arduinos, la serie USB y la UART en los pines 1 y 0 (TX y RX) no son iguales. Tiene sus beneficios, ya que no tengo que desconectar ningún otro circuito de comunicación de los pines 0 y 1 cuando reprogramo el Arduino. También es útil para depurar errores.

Si desea usar la serie del puerto USB, debe usar 'Serial' y si desea usar los pines GPIO0 y GPIO1, entonces tiene 'Serial1'

El Arduino 101 tiene 4 GPIO con capacidad PWM (GPIO3, GPIO5, GPIO6 y GPIO9) y los usé todos para controlar los servos.

Comunicación

Mi brazo robótico se puede controlar a través de serie (Serial1 para ser específico). Usé mi módulo de comunicación más nuevo, el WIZ750SR para este propósito.

Este es un pequeño módulo Ethernet con una MCU Cortex-M0. En su funcionalidad básica, es un módulo Serial to Ethernet, pero puede reprogramar fácilmente el módulo para satisfacer sus necesidades. Puede convertir esta placa en una placa I2C a Ethernet si lo desea.

Una característica muy interesante es el servidor (o cliente) TCP integrado. Usando el servidor TCP, puede controlar el Arduino de forma remota, tal como lo haría a través de USB serial, ¡pero desde cualquier parte del mundo! Por el lado de Arduino es completamente transparente. No necesita agregar ningún código adicional a su boceto para usar este módulo.

También tengo una placa de evaluación WIZ750SR-TTL-EVB. Podría alimentar el WIZ750SR y tiene un puerto USB de depuración, pero no lo usé además de algunos experimentos iniciales.

Tanto el Arduino 101 como el WIZ750SR usan 3.3V y, por lo tanto, no tuve que usar el cambio de nivel para los pines TX y RX. El Arduino también está alimentando el módulo Ethernet desde su fuente de alimentación. El circuito es muy simple y lo puedes encontrar en la sección Esquemas de este proyecto. Los servos tienen su propia fuente de alimentación de 5V.

Configuración del módulo

Para utilizar esta placa tienes que configurarla primero. No volveré a documentar esta parte porque los chicos de WIZnet ya lo hicieron aquí y puede estar seguro de que siempre obtendrá la documentación más reciente allí.

Su documentación es excelente, pero tengo información útil y tuve algunos problemas (resueltos) que vale la pena compartir.

En primer lugar, puede alimentar la placa desde el puerto USB de la placa de evaluación, pero además de eso, este puerto se utiliza principalmente para depurar y flashear. Creo que no puede comunicarse con el servidor TCP del WIZ750SR usando el puerto USB, pero recibirá información de depuración si se conecta a este puerto COM. Me causó cierta confusión al principio porque no sabía qué esperar.

En segundo lugar, si el LED azul está encendido cuando el WIZ750SR se está conectando a su red, entonces su placa debería estar funcionando correctamente, continúe con la Herramienta de configuración, debería encontrar la placa.

Mi mayor problema ocurrió en este punto cuando intenté buscar el dispositivo en la Herramienta de configuración. La primera vez funcionó de maravilla, pero luego no tuve tiempo, así que me detuve allí. Después de dos semanas intenté hacerlo de nuevo, pero ya no podía encontrar la placa en múltiples sistemas operativos y computadoras en múltiples redes.

Hice una actualización a través del puerto USB de depuración de la placa de evaluación con el último firmware y funcionó. Mi PC con Windows todavía no podía encontrarlo, pero la versión de Python en Ubuntu sí. No estoy seguro de cuál era el problema, pero estos pasos finalmente resolvieron mi problema. Después de configurar con éxito el WIZ750SR, mi PC con Windows también pudo encontrarlo nuevamente, así que continué con el trabajo.

Mientras leo, las máquinas virtuales con sus adaptadores de red virtuales también estropean la búsqueda, por lo que si tiene algún problema con la búsqueda, debería echarle un vistazo.

Una gran herramienta para probar la comunicación TCP es NetCat. Con este software puede conectarse al servidor TCP en el WIZ750SR. Después de instalar NetCat, use este comando para conectarse:

  nc [tcp_server_ip] [tcp_server_port]  

Después de eso, puede enviar y recibir datos directamente desde el WIZ750SR. Usé mucho esta herramienta.

Pasar de A a B

Para mover un brazo robótico, debes decirle al controlador lo que quieres. La forma más sencilla es actualizar directamente los ángulos de todos los servos. La actualización de los ángulos de las articulaciones se puede hacer con un poco de prueba y error y, de hecho, puede funcionar bien.

En mi próximo proyecto de brazo robótico usaré cinemática inversa para controlar el brazo robótico con coordenadas mundiales, pero por ahora controlaré el robot usando solo ángulos de articulación.

La velocidad del sistema es un punto clave aquí. Los servos son muy rápidos pero aún necesitan tiempo para alcanzar la posición recibida. Por otro lado, a los cables de puente no les gustan los movimientos muy rápidos, así que tuve que ralentizar las cosas. Tanto en la parte de hardware como en la de software.

Hice esto creando un cálculo de ruta al sistema e insertando un retraso. Cuando envía nuevos ángulos de articulación para el brazo del robot, debe proporcionar un parámetro adicional:velocidad (mDelay). Básicamente, le está diciendo al controlador del brazo robótico el tiempo de paso mínimo del bucle. La calculadora de ruta calculará un tamaño de paso opcional para cada servos de posicionamiento. Significa que todos los servos alcanzarán su objetivo aproximadamente al mismo tiempo y la velocidad depende del retraso. El resultado es un movimiento lineal muy agradable y suave en todo momento.

El efector funciona de forma diferente. Básicamente, solo puede tener un estado abierto o cerrado (con 3 niveles diferentes de resistencia cerrada), sin transición suave. Obviamente, querrá agarrar el objeto lo antes posible, mientras que el movimiento debe ser suave y agradable.

Actualmente, hay 2 tipos de comandos en este sistema. Aquí hay un ejemplo para ambos:

  • G 1 -> Cerrar la pinza, ligeramente. 0 significa abierto
  • A 10 130 120 110 -> Mover el brazo del robot con un tiempo de paso de 10 ms, un ángulo de articulación superior de 130º, un ángulo de articulación inferior de 120º y un ángulo de rotación de base de 110º.

Aplicación de Android para control remoto

Muy bien, en este punto puedo controlar el brazo robótico desde cualquier parte del mundo, pero tengo que escribir manualmente cada nuevo comando. No es muy divertido de esta manera. Necesitaba una forma mucho más sencilla de controlar el brazo robótico, así que hice una aplicación de Android para hacer precisamente eso.

La aplicación tiene un cliente TCP, por lo que puede conectarse directamente al servidor TCP del WIZ750SR. El brazo robótico no almacena la trama de movimientos antiguos y futuros. Solo conoce una posición de objetivo actual. Significa que la aplicación no solo enviará el gráfico de movimiento completo al brazo del robot, sino que enviará periódicamente nuevas posiciones al brazo del robot, en función de la retroalimentación de posición. Si cierra la aplicación o se desconecta del WIZ750SR, el brazo robótico dejará de moverse tan pronto como alcance su última posición recibida.

Después de conectarse al brazo robótico, llegará a la pantalla Configurar. Contiene 3 páginas. El primero es Run (más sobre eso más adelante), el segundo es Init y el tercero es Loop. Init y Loop es básicamente lo mismo, su única diferencia es dónde guardan la posición.

La pantalla contiene 4 barras de búsqueda y un botón de agarre además del botón de guardar. Estos controles deslizantes se utilizan para establecer la posición y la velocidad del movimiento, mientras que el botón de agarre se utiliza para abrir o cerrar el efector. Todos los cambios son instantáneos, por lo que verá la nueva posición en el brazo del robot de inmediato, sin embargo, debe hacer clic en el botón Guardar para agregarlo al gráfico. Aquí hay una breve demostración al respecto:

Si cambia tanto el estado de la pinza como la posición del brazo del robot, se guardará como dos comandos diferentes. Primero el comando de pinza y luego el comando de posición.

Como era de esperar, la ejecución del gráfico se iniciará con init. Init y loop funcionan igual que las funciones de configuración y loop de Arduino. Init es bueno para movimientos que no se repetirán más tarde. Cuando terminen los comandos de inicio, seguirán los comandos de bucle. Los comandos de bucle se repetirán para siempre, o al menos hasta que detenga la trama. Si no necesita loop o init, deje ese campo vacío.

Estos campos son campos EditText, lo que significa que puede editar o eliminar su contenido fácilmente. Si no desea utilizar los controles deslizantes, puede escribir los comandos a mano. También puede copiar y pegar el gráfico. La aplicación recordará el último gráfico que ejecutó para su uso posterior.

La primera línea de "Configurar" se utiliza como información visual para las pruebas. La parte izquierda muestra la última posición objetivo para el brazo robótico (S - enviado), mientras que el campo derecho es la posición actual (R - recibido). La aplicación enviará una nueva posición de objetivo al brazo robótico tan pronto como el objetivo y las posiciones actuales sean las mismas.

Como puede ver, cuando solo había init, el brazo del robot se detuvo tan pronto como terminó los comandos de init.

Con mi aplicación, puedes hacer bastantes cosas, pero hay muchas posibilidades de mejora en el futuro. Planeo usar funciones, control condicional, bucles con argumentos, etc. en los gráficos.

Si desea construir un robot similar, puede encontrar tanto el código Arduino como la aplicación Robot Arm Controller en el segmento Código de este proyecto.

Resultados

Usé los comandos init y loop y me permitió hacer algunas tareas moderadamente complejas. Aquí hay un video sobre cómo mi brazo robótico coloca algunos patitos de goma (init) y luego comienza a moverlos uno por uno alrededor de sí mismo, para siempre (bucle).

Como puede ver si tiene en cuenta que este es un brazo robótico muy económico con serias limitaciones relacionadas con el hardware, los movimientos son muy suaves, continuos y precisos.

Conclusión

Mi software funciona muy bien y en el futuro definitivamente trabajaré para mejorar este brazo robótico, o construiré uno más avanzado. Logré todo lo que había planeado para este proyecto y sin problemas serios de bloqueo.

El Arduino 101 es ideal para este propósito. La única limitación de la placa son los únicos 4 GPIO compatibles con PWM. Podría ser un problema en el futuro si construyo un nuevo brazo robótico con más grados de libertad, pero la serie USB separada y la serie GPIO son muy útiles durante el desarrollo y esta placa también puede proporcionar mucha potencia de cálculo.

Creo que la aplicación de Android fue una buena idea, sin embargo tendré que hacerla más robusta, fácil de usar y aumentar su funcionalidad. Es una versión alfa en este momento.

El WIZ750SR fue una sorpresa muy agradable. Temí tener más problemas con esta placa, pero después de la configuración, funcionó a la perfección. Fue totalmente transparente y no tuve problemas con él. Este es un dispositivo muy fácil de usar y el mejor módulo Ethernet que he usado con cualquiera de mis microcontroladores.

Trabajar con brazos robóticos es extremadamente divertido, así que definitivamente aprenderé más sobre él y luego compartiré mis conocimientos con ustedes en el futuro. ¡Gracias por leer!

Código

Editor web Arduino
Puede usar Arduino Web Editor para acceder y cargar directamente el código Arduino de mi proyecto
Código de Arduino y Android
https://github.com/abysmalsb/Robot-Arm-Controller

Esquemas

Por el momento, el sistema utiliza dos fuentes de alimentación independientes. Uno del puerto USB del Arduino y otra fuente de 5V que se usa para mover los servos.

Proceso de manufactura

  1. Robot Raspberry Pi controlado por Bluetooth
  2. Robot controlado por gestos con Raspberry Pi
  3. Windows 10 IoT Core:Robot controlado por voz
  4. Robot controlado por Wifi usando Raspberry Pi
  5. ROObockey:Robot de hockey callejero asistido por objetivo y controlado a distancia
  6. Robot SCARA de doble brazo
  7. Brazo robótico MeArm - Su robot - V1.0
  8. LED controlados por Alexa a través de Raspberry Pi
  9. Brazo robótico controlado por Nunchuk (con Arduino)
  10. Robot controlado por voz
  11. Robot de piano controlado por Arduino:PiBot