Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Arduino - Robô do braço de controle via Web

Componentes e suprimentos

Arduino UNO
× 1
PHPoC WiFi Shield para Arduino
× 1
6DOF Arm Robot
× 1

Sobre este projeto


Se você é iniciante, recomendo a leitura dos seguintes tutoriais:
  • Arduino - Motor
  • Arduino - servo motor
  • Arduino - Wifi





1. Demonstração





2. Interface do usuário


O braço do robô possui 6 motores.
  • Zona A:Motor de controle 2, 3, 4 (controle de três articulações manuais)
  • Zona B:Motor de controle 1 (base de controle)
  • Zona C:Motor de controle 5 (controle de rotação da garra)
  • Zona D:Motor de controle 6 (garra de controle)





3. Arquitetura do sistema









4. Fluxo de trabalho


Cliente (interface de usuário da web - escrita em JavaScript + HTML + CSS)

Quando um usuário toca ou move o dedo (ou clica ou move o mouse), podemos obter as coordenadas (x, y). O fluxo de trabalho é o seguinte:

No caso da Zona A, para calcular os ângulos do motor 2, 3, 4, precisamos fazer alguns cálculos geométricos . Você pode consultá-lo no final desta página.

Servidor (Código Arduino) :

Depois de receber um conjunto de ângulos dos clientes, seis motores se movem dos ângulos atuais para os novos ângulos gradualmente. Seis motores devem se mover e alcançar novos ângulos ao mesmo tempo. Antes de entrar em detalhes como controlar todos os motores, vamos ver como controlar um único motor. Suponha que queremos mover um motor do ângulo atual (ângulo) para um novo ângulo (novo_ângulo). Visto que a velocidade do motor é alta, devemos desacelerá-lo. Para fazer assim, duas etapas seguintes são repetidas até que o motor alcance um novo ângulo:
  • Mova o motor com um pequeno passo.
  • Faça uma pequena pausa e, em seguida, avance para outro passo.

O diagrama a seguir ilustra o esquema acima, caso o novo ângulo seja maior do que o ângulo atual:

Wherestep_numé número de etapas que o motor deve realizar. etapa e tempo são valores predefinidos. Dois últimos decidem a velocidade e suavidade. O texto acima é apenas para um robô. Para fazer os robôs começarem a se mover e alcançar o destino ao mesmo tempo, podemos fazer o seguinte:Seis motores fazem o mesmo step_num , mas etapa de cada motor é diferente um do outro. Portanto, temos que escolher step_num neste projeto é máximo.

Geralmente, o fluxo de trabalho do Arduino é o seguinte:













5. Cálculo geométrico


Vamos fazer um cálculo do braço do robô no seguinte problema de geometria:

Conhecido
  • C é fixo
  • Um ponto conhecido - D é a entrada do usuário
  • Um ponto conhecido - CB, BA, AD (denotado por b, a, d respectivamente)
  • Comprimentos de cada segmento de braço Encontrar: ângulos C, B, A Solução:
  • Faça a suposição de que os ângulos B e A são iguais
  • Adicione alguns pontos e segmentos adicionais

Cálculo
  • Conhecíamos os pontos C e D => podemos calcular o comprimento de DC (indicado por c)
  • Também podemos calcular o δ
  • Olhe para o triângulo ABE, podemos inferir que AE =BE e ∠E =π - 2α.
  • Então:
  • A lei dos cossenos no triângulo CDE:
  • Altere (1) e (2) para (3), temos:

Simplifique
  • Simplifique o acima:
  • Como sabemos a, b, c e d, resolva a equação quadrática acima, podemos calcular o valor de α. - E β =π - α - Até agora encontramos β, vamos encontrar γ - A Lei dos Cossenos nos triângulos BDC e BDA:
  • Resolva este conjunto de equações, podemos calcular γ.
  • Portanto, seus ângulos requeridos são:(δ + γ), β e β. Estes são os ângulos dos motores 2, 3 e 4, respectivamente.













6. Código-fonte


O código-fonte inclui dois arquivos:
  • RobotArmWeb.ino :Código Arduino
  • Remote_arm.php :Código do aplicativo da Web, que é carregado para PHPoC WiFi Shield ou PHPoC Shield. (Veja as instruções neste artigo.)

Você também precisa carregar o arquivo de imagem flywheel.png para PHPoC Shield.













O melhor Arduino Starter Kit para iniciantes


Se você estiver procurando por um kit Arduino, consulte O melhor kit Arduino para iniciantes







Referências de função

  • Arduino - Biblioteca Servo
  • 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 é o código do Arduino
 #include  #include  int ângulo_init [] ={90, 101, 165, 153, 90, 120}; // quando o motor fica reto. Na banda, o ângulo quando o motor está reto é {0, 90, 130, 180, 0, 0}; int ângulo_desvio [] ={0, 11, -15, -27, 0, 137}; // deslocamento entre o servo motor real e o ângulo no webint cur_angles [] ={90, 101, 165, 153, 90, 120}; // ângulos atuais de seis motores (graus) int dest_angles [] ={0, 0, 0, 0, 0, 0}; // destined anglesint angle_max [] ={180, 180, 160, 120, 180, 137}; int ângulo_min [] ={0, 0, 0, 20, 0, 75}; direção interna [] ={1, 1 , 1, 1, 1, -1}; ângulos internosPassos [] ={3, 2, 2, 2, 4, 4}; // passos de movimento de cada motor (grau) 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; configuração vazia () {Serial.begin (9600); Phpoc.begin (PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket ("remote_arm"); servo1.attach (2); // anexa o servo no pino 2 ao objeto servo servo2.attach (3); // conecta o servo no pino 3 ao objeto servo servo3.attach (4); // conecta o servo no pino 4 ao objeto servo servo4.attach (5); // conecta o servo no pino 5 ao objeto servo servo5.attach (6); // conecta o servo no pino 6 ao objeto servo servo6.attach (7); // anexa o servo no pino 7 ao 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; para (int i =0; i <5; i ++) {commaPos2 =angleStr.indexOf (',', commaPos1 + 1); ângulo interno =ânguloStr.substring (commaPos1 + 1, commaPos2) .toInt (); ângulos_dest [i] =ângulo * direção [i] + deslocamento_ângulo [i]; commaPos1 =commaPos2; } int angle5 =angleStr.substring (commaPos1 + 1) .toInt (); ângulos_de_est [5] =ângulo5 * direção [5] + deslocamento_ângulo [5]; stepNum =0; // mova os motores em várias etapas pequenas para fazer o movimento do motor suavemente, evitando mover o motor repentinamente. A seguir está o cálculo em etapas para (int i =0; i <6; i ++) {int dif =abs (cur_angles [i] - dest_angles [i]); passo interno =dif / ânguloSteps [i]; if (stepNum  0) {for (int i =0; i <6; i ++) {int angleStepMove =(dest_angles [i] - cur_angles [i]) / stepNum; cur_angles [i] + =ânguloStepMove; if (ângulos_cur [i]> ângulo_máx [i]) ângulos_cur [i] =ângulo_máx [i]; else if (ângulos_cur [i] <ângulo_min [i]) ângulos_cur [i] =ângulo_min [i]; servo [i] .write (cur_angles [i]); } stepNum--; atraso (20); }} 
remote_arm.php PHP
Este código é um aplicativo da web.
     Arduino - Arm Robot - Web       

Arduino - Controlar robô via Web

WebSocket: null

Esquemas

Ele precisa fornecer a fonte de alimentação externa para 6 motores

Processo de manufatura

  1. Robô Pi Simples
  2. Arduino Control Center
  3. Usando IoT para controlar remotamente um braço robótico
  4. Obstáculos para evitar o robô com servo motor
  5. Robô seguidor de linha
  6. Controle do umidificador Arduino
  7. Arduino - Enviar temperatura para a Web via serial
  8. Littlearm 2C:Construir um braço de robô Arduino impresso em 3D
  9. Robô assistente autônomo da casa
  10. Robô para navegação interna supercool