Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Arduino - Robot à bras de contrôle via le Web

Composants et fournitures

Arduino UNO
× 1
PHoC WiFi Shield pour Arduino
× 1
Robot à bras 6DOF
× 1

À propos de ce projet

Si vous êtes débutant, je vous recommande de lire les tutoriels suivants :

  • Arduino - Moteur
  • Arduino - Servomoteur
  • Arduino - Wi-Fi

1. Démonstration

2. Interface utilisateur

Le bras du robot a 6 moteurs.

  • Zone A :Contrôlez le moteur 2, 3, 4 (contrôlez les articulations des trois mains)
  • Zone B :Moteur de commande 1 (base de commande)
  • Zone C :Contrôle du moteur 5 (contrôle de la rotation de la pince)
  • Zone D :Moteur de commande 6 (préhenseur de commande)

3. Architecture du système

4. Flux de travail

Côté client (interface utilisateur Web - écrite en JavaScript + HTML + CSS)

Lorsqu'un utilisateur touche ou balaie le doigt (ou clique ou déplace la souris), nous pouvons obtenir les coordonnées (x, y). Le flux de travail est le suivant :

Dans le cas de la zone A, pour calculer les angles du moteur 2, 3, 4, nous devons faire un calcul géométrique . Vous pouvez vous y référer à la fin de cette page.

Côté serveur (code Arduino) :

Après avoir reçu un ensemble d'angles des clients, six moteurs passent progressivement des angles actuels aux nouveaux angles. Six moteurs devraient se déplacer et atteindre de nouveaux angles en même temps. Avant de détailler comment contrôler tous les moteurs, voyons comment contrôler un seul moteur. Supposons que nous voulions déplacer un moteur de l'angle actuel (angle) au nouvel angle (new_angle). Étant donné que la vitesse du moteur est élevée, nous devons la ralentir. Pour ce faire, les deux étapes suivantes sont répétées jusqu'à ce que le moteur atteigne un nouvel angle :

  • Déplacer le moteur d'un petit pas.
  • Faites une petite pause, puis passez à une autre étape.

Le schéma suivant illustre le schéma ci-dessus dans le cas où le nouvel angle est supérieur à l'angle actuel :

Wherestep_numest le nombre de pas que le moteur doit effectuer. pas et temps est des valeurs prédéfinies. Deux plus tard décident de la vitesse et de la douceur. Ce qui précède est juste pour un seul robot. Pour que les robots commencent à se déplacer et à atteindre leur destination en même temps, nous pouvons procéder comme suit :six moteurs utilisent le même step_num , mais étape de chaque moteur est différent les uns des autres. Nous devons donc choisir step_num dans ce projet est maximum.

Généralement, le flux de travail d'Arduino est le suivant :

5. Calcul géométrique

Faisons un calcul de bras de robot dans le problème de géométrie suivant :

Connu

  • C est corrigé
  • Un point connu - D est l'entrée de l'utilisateur
  • Un point connu - CB, BA, AD (noté respectivement par b, a, d)
  • Longueurs de chaque segment de bras Rechercher : angles C, B, A Solution :
  • Faire l'hypothèse que les angles B et A sont identiques
  • Ajouter quelques points et segments supplémentaires

Calcul

  • On connaissait les points C et D => on peut calculer la longueur de DC (notée c)
  • On peut aussi calculer le δ
  • Regardez le triangle ABE, nous pouvons en déduire que AE =BE et ∠E =π - 2α.
  • Alors :
  • La loi des cosinus dans le triangle CDE :
  • Changer (1) et (2) en (3), on a :

Simplifier

  • Simplifiez ce qui précède :
  • Comme nous connaissons a, b, c et d, résolvons l'équation quadratique ci-dessus, nous pouvons calculer la valeur de . - Et β =π – α - Jusqu'à présent nous avons trouvé β, trouvons γ - La loi des cosinus dans les triangles BDC et BDA :
  • Résolvez cet ensemble d'équations, nous pouvons calculer .
  • Donc, leurs angles requis sont :(δ+γ), β et β. Ce sont les angles des moteurs 2, 3 et 4, respectivement.

6. Code source

Le code source comprend deux fichiers :

  • RobotArmWeb.ino :code Arduino
  • Remote_arm.php :code de l'application Web, qui est téléchargé sur PHPoC WiFi Shield ou PHPoC Shield. (Voir les instructions dans cet article.)

Vous devez également télécharger le fichier image flywheel.png sur PHPoC Shield.

Le meilleur kit de démarrage Arduino pour débutant

Si vous recherchez un kit Arduino, consultez Le meilleur kit Arduino pour les débutants


Références de fonction

  • Arduino - Bibliothèque Servo
  • Servo.attach()
  • Servo.write()
  • Servo.writeMicroseconds()
  • Servo.read()
  • Servo.attaché()
  • Servo.detach()
  • Serial.begin()
  • Série.println()

Code

  • RobotArmWeb
  • remote_arm.php
RobotArmWebArduino
Il s'agit du code Arduino
#include #include int angle_init[] ={90, 101, 165, 153, 90, 120} ; // lorsque le moteur se tient droit. En web, l'angle lorsque le moteur est droit est {0, 90, 130, 180, 0, 0};int angle_offset[] ={0, 11, -15, -27, 0, 137} ; // décalage entre le servomoteur réel et l'angle sur le webint cur_angles[] ={90, 101, 165, 153, 90, 120} ; // angles actuels de six moteurs (degré) int dest_angles[] ={0, 0, 0, 0, 0, 0} ; // angles destinésint angle_max[] ={180, 180, 160, 120, 180, 137};int angle_min[] ={ 0, 0, 0, 20, 0, 75};int direction[] ={1, 1 , 1, 1, 1 ,-1};int angleSteps[] ={3, 2, 2, 2, 4 ,4}; // pas de déplacement de chaque moteur (degré)Servo servo1;Servo servo2;Servo servo3;Servo servo4;Servo servo5;Servo servo6;Servo servo[6] ={servo1, servo2, servo3, servo4, servo5, servo6};serveur PhpocServer (80);PhpocClient client;int stepNum =0;void setup(){ Serial.begin(9600); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket("remote_arm"); servo1.attach(2) ; // attache le servo sur la broche 2 à l'objet servo servo2.attach(3); // attache le servo sur la broche 3 à l'objet servo servo3.attach(4); // attache le servo sur la broche 4 à l'objet servo servo4.attach(5); // attache le servo sur la broche 5 à l'objet servo servo5.attach(6); // attache le servo sur la broche 6 à l'objet servo servo6.attach(7); // attache le servo sur la broche 7 à l'objet servo pour(int i =0; i <6; i++) servo[i].write(angle_init[i]);}void loop() { PhpocClient client =server.available (); if(client) { Chaîne angleStr =client.readLine(); if(angleStr) { Serial.println(angleStr); int virgulePos1 =-1; int virgulePos2; for(int i =0; i <5; i++) { virgulePos2 =angleStr.indexOf(',', virgulePos1 + 1); int angle =angleStr.substring(virgulePos1 + 1, virgulePos2).toInt(); dest_angles[i] =angle * direction[i] + angle_offset[i] ; virgulePos1 =virgulePos2; } int angle5 =angleStr.substring(virgulePos1 + 1).toInt(); dest_angles[5] =angle5 * direction[5] + angle_offset[5] ; Numéropas =0 ; // déplace les moteurs en plusieurs petites étapes pour que le moteur se déplace en douceur, en évitant de déplacer le moteur soudainement. Ci-dessous est le calcul des étapes pour(int i =0; i <6; i++) { int dif =abs(cur_angles[i] - dest_angles[i]); int step =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] =angle_max[i] ; else if(cur_angles[i]  
remote_arm.phpPHP
Ce code est une application Web.
Arduino - Arm Robot - Web

Arduino - Robot à bras de contrôle via le Web

WebSocket :null

Schémas

Il doit fournir la source d'alimentation externe pour 6 moteurs

Processus de fabrication

  1. Robot Pi simple
  2. Centre de contrôle Arduino
  3. Utiliser l'IoT pour contrôler à distance un bras robotique
  4. Obstacles pour éviter le robot avec servomoteur
  5. Robot suiveur de ligne
  6. Contrôle de l'humidificateur Arduino
  7. Arduino - Envoyer la température au Web via série
  8. Littlearm 2C :Construire un bras de robot Arduino imprimé en 3D
  9. Robot pour une navigation intérieure super cool