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

Uso de IoT para controlar de forma remota un brazo robótico

Componentes y suministros

Arduino MKR1000
× 1

Herramientas y máquinas necesarias

Cortadora láser (genérica)

Aplicaciones y servicios en línea

MATLAB
Arduino IDE

Acerca de este proyecto

Introducción

Tenía muchas ganas de intentar diseñar un brazo robótico completamente desde cero. Hay muchos diseños de código abierto disponibles, pero pensé que sería gratificante si pudiera diseñar, construir y programar uno de la nada (y lo fue).

Hablaré tanto de las fases de diseño como de programación. Pero me enfocaré más en el lado de la programación, ya que no se trata solo de controlar los ángulos de los servos.

Aquí hay un enlace al video del proyecto final en acción:https://www.mathworks.com/videos/how-to-control-a-robotic-arm-from-a-remote-location-using-iot-1538564659095. html.

Usé Simulink para programar un Arduino MKR1000, que es la MCU que controla el brazo robótico. Luego agregué la capacidad de controlar el brazo del robot desde prácticamente cualquier lugar a través de ThingSpeak, una plataforma abierta de IoT con análisis de MATLAB.

Hardware necesario

  • Madera contrachapada de 15 "x 20" 1/8 de pulgada
  • Arduino MKR1000
  • 5x GS9025MG servo
  • Conector de barril de CC compatible con placa de pruebas de 2,1 mm
  • Fuente de alimentación de enchufe de barril de 6 V CC
  • Cables de puente
  • 3x 2n2222a transistores
  • 10 tuercas M2
  • 10 tornillos M2 x 10
  • 40 tuercas M3
  • 40 tornillos M3 x 25

Software utilizado

  • MATLAB
  • Simulink
  • Paquete de soporte de MATLAB para hardware Arduino
  • Paquete de soporte de Simulink para hardware Arduino
  • Paquete de soporte de MATLAB para ThingSpeak

Diseño

Quería mantener el costo de las piezas bajo, así que diseñé esto para los servos de hobby, específicamente el modelo GS-9025MG. Esto significaba que el peso y el tamaño finales eran limitados. Esto se debe a que los micro servos no pueden ejercer mucho torque y, como resultado, no pueden levantar brazos de palanca pesados.

Intenté hacer prototipos con madera contrachapada de 1/4 de pulgada, que resultó ser demasiado pesada para los servos. Reduje la longitud de los brazos y utilicé madera contrachapada de 1/8 de pulgada, y eso solucionó el problema del servocontrol. Dibujé el diseño usando Fusion 360 y descargué el diseño como un archivo.dxf, que luego corté con láser.

Además, resultó necesario suministrar voltaje continuo de CC desde un tomacorriente de pared porque la corriente extraída de los paquetes de baterías era muy alta y los agotaba muy rápidamente.

En cuanto al control de los motores, el Arduino MKR1000 tiene 4 pines PWM, pero necesitaba 5 para controlar los 5 servos. Me volví creativo y usé un pin PWM para controlar 2 servos y un pin digital para alternar entre los dos servos y controlar uno a la vez.

Aquí está el circuito que describe eso:

Aquí está el cableado de los servos al Arduino:

Programación

Había dos partes de la programación, la fase de creación de prototipos donde lo ensamblé y logré que los servos comandaran a una ubicación determinada, y la fase de control preciso en la que pude ordenar una ubicación al servo usando ThingSpeak.

Creación de prototipos

Usando controles deslizantes y bloques constantes, pude ordenar a los servos del Arduino que se movieran a ciertos ángulos. Usé este modelo para averiguar los sesgos entre el ángulo ordenado y los ángulos reales del brazo, así como el rango de ángulos permitidos para cada servo.

Los bloques con el engranaje en ellos son los bloques de escritura PWM para ordenar el saque a un cierto ángulo entre 0 y 180.

Usé cinemática inversa para un brazo en movimiento plano 2D para resolver los ángulos necesarios para mover el brazo a una coordenada XY. Encontré que este enlace explica bastante bien la cinemática:https://appliedgo.net/roboticarm/

Control preciso

Aunque esto parece más complicado que el otro, la lógica sigue siendo la misma. Los bloques de salida siguen siendo los bloques de escritura de servo con los engranajes. Los bloques de entrada ahora no son las entradas del bloque deslizante / constante, sino que se leen desde el canal ThingSpeak. Más adelante explicaré el uso de ThingSpeak. Las entradas son las posiciones X e Y del brazo, que utilizando el bloque de funciones loc2angles MATLAB se convierten en ángulos comandados para el brazo. El bloque angles2loc en la parte superior del modelo es solo una forma de monitorear el sistema para asegurarse de que el servo ángulos trasladados a la posición de entrada correcta utilizando cinemática de avance. Una de las herramientas geniales de Simulink que utilicé en este proyecto es Modo externo . Esto me permitió monitorear el sistema mientras se ejecutaba en el propio Arduino.

Los bloques con la nube gris son el bloque de lectura ThingSpeak integrado en el paquete de soporte de Simulink para Arduino. Introduzco el ID del canal, el número de campo de datos que quiero recuperar y la clave de lectura de API, y genera los datos de ese canal y campo. No se preocupe, si no está familiarizado con alguno de esos términos, lo explicaré pronto.

Uso de ThingSpeak:creación y uso de un canal

1. Vaya a https://thingspeak.com/

2. Haga clic en "iniciar sesión" en la esquina superior derecha e inicie sesión con su cuenta gratuita de MathWorks.

3. En la página del panel, haga clic en "Canal nuevo"

.

4. Complete los datos como se muestra a continuación. Los datos que se muestran es todo lo que necesita para completar.

5. Haga clic en "Guardar canal" en la parte inferior

6. Ahora ha creado un canal ThingSpeak

7. En la ventana de comandos de MATLAB o utilizando la aplicación móvil de MATLAB, puede ingresar comandos que se parecen a:thingSpeakWrite (chID, [0.6963.94 -12 0 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);

Esto escribe nuevos datos en los campos especificados en el canal ThingSpeak. Puede cambiar los valores en el segundo argumento de la llamada a la función para cambiar el valor del campo correspondiente. Después de cambiar los valores, los datos del canal deberían verse así:

Ejecución del modelo

Cuando termine de configurar el canal ThingSpeak, puede ejecutar el modelo en el Arduino en modo externo o implementándolo en el hardware. En el modelo de Simulink, vaya a 'Parámetros de configuración del modelo' haciendo clic en el engranaje pequeño en el panel del menú superior, seleccione 'Implementación de hardware' y asegúrese de que la 'Placa de hardware' sea la Arduino MKR 1000. en la misma pestaña, haga clic en Propiedades de WiFi e ingrese las credenciales de WiFi para acceder a la red.

Haga clic en el botón de ejecución verde para ejecutar el modelo en modo externo o en el botón de implementación azul para implementarlo en el hardware.

Una vez que el modelo se está ejecutando, puede escribir nuevos datos en los campos en el canal ThingSpeak desde MATLAB o MATLAB mobile en su teléfono y ver cómo mueve su brazo robótico.

Código

https://www.mathworks.com/matlabcentral/fileexchange/68880-controlling-a-robotic-arm-from-anywhere-using-iot


Proceso de manufactura

  1. Control remoto universal usando Arduino, 1Sheeld y Android
  2. Controlar el aceptador de monedas con Arduino
  3. Centro de control de Arduino
  4. Monitor de frecuencia cardíaca con IoT
  5. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  6. Brazo robótico Arduino impreso en 3D
  7. Controla Arduino Rover usando Firmata y el controlador Xbox One
  8. Control del humidificador Arduino
  9. Brazo robótico controlado por Nunchuk (con Arduino)
  10. Brazo robótico simple e inteligente con Arduino
  11. Control total de su televisor con Alexa y Arduino IoT Cloud