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

Arduino - Control Arm Robot a través de la Web

Componentes y suministros

Arduino UNO
× 1
PHPoC WiFi Shield para Arduino
× 1
Robot de brazo 6DOF
× 1

Acerca de este proyecto

Si eres principiante, te recomiendo leer los siguientes tutoriales:

  • Arduino - Motor
  • Arduino - Servo motor
  • Arduino - Wifi

1. Demostración

2. Interfaz de usuario

El brazo del robot tiene 6 motores.

  • Zona A:Controle el motor 2, 3, 4 (controle las tres articulaciones de las manos)
  • Zona B:motor de control 1 (base de control)
  • Zona C:Control del motor 5 (control de la rotación de la pinza)
  • Zona D:Motor de control 6 (pinza de control)

3. Arquitectura del sistema

4. Flujo de trabajo

Lado del cliente (interfaz de usuario web, escrita en JavaScript + HTML + CSS)

Cuando un usuario toca o mueve el dedo (o hace clic o mueve el mouse), podemos obtener las coordenadas (x, y). El flujo de trabajo es el siguiente:

En el caso de la Zona A, para calcular los ángulos del motor 2, 3, 4, necesitamos hacer algunos cálculos geométricos . Puede consultarlo al final de esta página.

Lado del servidor (Código Arduino) :

Una vez que reciben un conjunto de ángulos de los clientes, seis motores se mueven gradualmente desde los ángulos actuales a los nuevos ángulos. Seis motores deben moverse y alcanzar nuevos ángulos al mismo tiempo. Antes de entrar en detalles sobre cómo controlar todos los motores, veamos cómo controlar un solo motor. Supongamos que queremos mover un motor desde el ángulo actual (ángulo) al nuevo ángulo (new_angle). Dado que la velocidad del motor es alta, debemos reducir la velocidad. Para hacer eso, se repiten dos pasos siguientes hasta que el motor alcance un nuevo ángulo:

  • Mueva el motor con un paso pequeño.
  • Haga una pequeña pausa y luego avance otro paso.

El siguiente diagrama ilustra el esquema anterior en caso de que el ángulo nuevo sea mayor que el ángulo actual:

Wherestep_num es el número de pasos que debe dar el motor. paso y tiempo son valores predefinidos. Dos posteriores deciden la velocidad y la suavidad. Lo anterior es solo para un robot. Para que los robots comiencen a moverse y lleguen al destino al mismo tiempo, podemos hacer lo siguiente:Seis motores toman el mismo step_num , pero paso de cada motor son diferentes entre sí. Entonces tenemos que elegir step_num en este proyecto es máximo.

Generalmente, el flujo de trabajo de Arduino es el siguiente:

5. Cálculo geométrico

Hagamos un cálculo del brazo robótico en el siguiente problema de geometría:

Conocido

  • C es fijo
  • Un punto conocido:D es la entrada del usuario
  • Un punto conocido:CB, BA, AD (indicado por b, a, d respectivamente)
  • Longitudes de los segmentos de cada brazo Buscar: ángulos C, B, A Solución:
  • Suponga que el ángulo B y A son iguales
  • Agregue algunos puntos y segmentos adicionales

Cálculo

  • Conocíamos los puntos C y D => podemos calcular la longitud de DC (indicada por c)
  • También podemos calcular el δ
  • Mire el triángulo ABE, podemos inferir que AE =BE y ∠E =π - 2α.
  • Entonces:
  • La ley de los cosenos en el triángulo CDE:
  • Cambie (1) y (2) por (3), tenemos:

Simplificar

  • Simplifique lo anterior:
  • Como conocemos a, b, cyd, resolvamos la ecuación cuadrática anterior, podemos calcular el valor de α. - Y β =π - α - Hasta ahora encontramos β, busquemos γ - La ley de los cosenos en los triángulos BDC y BDA:
  • Resuelva este conjunto de ecuaciones, podemos calcular γ.
  • Entonces, sus ángulos requeridos son:(δ + γ), β y β. Estos son los ángulos de los motores 2, 3 y 4, respectivamente.

6. Código fuente

El código fuente incluye dos archivos:

  • RobotArmWeb.ino :Código Arduino
  • Remote_arm.php :Código de la aplicación web, que se carga en PHPoC WiFi Shield o PHPoC Shield. (Vea las instrucciones en este artículo).

También debe cargar el archivo de imagen flywheel.png en PHPoC Shield.

El mejor kit de inicio de Arduino para principiantes

Si está buscando un kit de Arduino, consulte El mejor kit de Arduino para principiantes


Referencias de funciones

  • Arduino - Servo Library
  • Servo.attach ()
  • Servo.write ()
  • Servo.writeMicroseconds ()
  • Servo.read ()
  • Servo.attached ()
  • Servo.detach ()
  • Serial.begin ()
  • Serial.println ()

Código

  • RobotArmWeb
  • remote_arm.php
RobotArmWeb Arduino
Este es el Código Arduino
 #include  #include  int angle_init [] ={90, 101, 165, 153, 90, 120}; // cuando el motor está recto. En web, el ángulo cuando el motor está recto es {0, 90, 130, 180, 0, 0}; int angle_offset [] ={0, 11, -15, -27, 0, 137}; // desplazamiento entre el servomotor real y el ángulo en webint cur_angles [] ={90, 101, 165, 153, 90, 120}; // ángulos actuales de seis motores (grados) int dest_angles [] ={0, 0, 0, 0, 0, 0}; // ángulos de destinoint angle_max [] ={180, 180, 160, 120, 180, 137}; int angle_min [] ={0, 0, 0, 0, 20, 0, 75}; int direction [] ={1, 1 , 1, 1, 1, -1}; int angleSteps [] ={3, 2, 2, 2, 4, 4}; // pasos en movimiento de cada motor (grado) Servo servo1; Servo servo2; Servo servo3; Servo servo4; Servo servo5; Servo servo6; Servo servo [6] ={servo1, servo2, servo3, servo4, servo5, servo6}; Servidor PhpocServer (80); cliente PhpocClient; int stepNum =0; void setup () {Serial.begin (9600); Phpoc.begin (PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket ("brazo_remoto"); servo1.attach (2); // conecta el servo en el pin 2 al objeto servo servo2.attach (3); // conecta el servo en el pin 3 al objeto servo servo3.attach (4); // conecta el servo en el pin 4 al objeto servo servo4.attach (5); // conecta el servo en el pin 5 al objeto servo servo5.attach (6); // conecta el servo en el pin 6 al objeto servo servo6.attach (7); // conecta el servo en el pin 7 al objeto servo para (int i =0; i <6; i ++) servo [i] .write (angle_init [i]);} void loop () {PhpocClient client =server.available (); if (cliente) {String angleStr =client.readLine (); if (angleStr) {Serial.println (angleStr); int commaPos1 =-1; int commaPos2; for (int i =0; i <5; i ++) {commaPos2 =angleStr.indexOf (',', commaPos1 + 1); int ángulo =ánguloStr.substring (comaPos1 + 1, comaPos2) .toInt (); dest_angles [i] =ángulo * dirección [i] + ángulo_desplazamiento [i]; commaPos1 =commaPos2; } int ángulo5 =ánguloStr.substring (commaPos1 + 1) .toInt (); dest_angles [5] =ángulo5 * dirección [5] + ángulo_desplazamiento [5]; stepNum =0; // Mueve los motores en muchos pasos pequeños para que el motor se mueva suavemente, evitando mover el motor repentinamente. El siguiente es el cálculo de pasos para (int i =0; i <6; i ++) {int dif =abs (cur_angles [i] - dest_angles [i]); int paso =dif / angleSteps [i]; if (stepNum  0) {for (int i =0; i <6; i ++) {int angleStepMove =(dest_angles [i] - cur_angles [i]) / stepNum; cur_angles [i] + =angleStepMove; if (cur_angles [i]> angle_max [i]) cur_angles [i] =ángulo_max [i]; si no (ángulos_cur [i] <ángulo_mín [i]) ángulos_curr [i] =ángulo_mín [i]; servo [i] .write (cur_angles [i]); } stepNum--; retraso (20); }} 
brazo_remoto.php PHP
Este código es una aplicación web.
     Arduino - Arm Robot - Web       

Arduino - Control Arm Robot a través de la Web

WebSocket: null

Esquemas

Necesita proporcionar la fuente de alimentación externa para 6 motores

Proceso de manufactura

  1. Robot Pi simple
  2. Centro de control de Arduino
  3. Uso de IoT para controlar de forma remota un brazo robótico
  4. Obstáculos que evitan el robot con servomotor
  5. Robot seguidor de línea
  6. Control del humidificador Arduino
  7. Arduino - Enviar temperatura a la web a través de serie
  8. Littlearm 2C:Construya un brazo robótico Arduino impreso en 3D
  9. Robot asistente doméstico autónomo
  10. Control de circuito sensible al movimiento a través de Intel Curie
  11. Robot para navegación interior supercogedora