Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino - Control Arm Robot via internet

Componenten en benodigdheden

Arduino UNO
× 1
PHPoC WiFi Shield voor Arduino
× 1
6DOF-armrobot
× 1

Over dit project

Als je een beginner bent, raad ik je aan de volgende tutorials te lezen:

  • Arduino - Motor
  • Arduino - servomotor
  • Arduino - Wifi

1. Demonstratie

2. Gebruikersinterface

De robotarm heeft 6 motoren.

  • Zone A:Stuur motor 2, 3, 4 (stuur drie handgewrichten)
  • Zone B:Besturingsmotor 1 (besturingsbasis)
  • Zone C:Besturingsmotor 5 (besturingsrotatie van grijper)
  • Zone D:Besturingsmotor 6 (besturingsgrijper)

3. Systeemarchitectuur

4. Werkstroom

Klantzijde (webgebruikersinterface - geschreven in JavaScript + HTML + CSS)

Wanneer een gebruiker de vinger aanraakt of veegt (of klikt of de muis beweegt), kunnen we de coördinaat (x, y) krijgen. De werkstroom is als volgt:

In het geval van Zone A, om de hoeken van motor 2, 3, 4 te berekenen, moeten we een geometrische berekening doen . U kunt ernaar verwijzen aan het einde van deze pagina.

Serverzijde (Arduino-code):

Nadat ze een reeks hoeken van klanten hebben ontvangen, gaan zes motoren geleidelijk van de huidige hoeken naar de nieuwe hoeken. Zes motoren moeten tegelijkertijd bewegen en nieuwe hoeken bereiken. Laten we, voordat we in detail treden over het besturen van alle motoren, eens kijken hoe we een enkele motor kunnen besturen. Stel dat we een motor van de huidige hoek (hoek) naar een nieuwe hoek (nieuwe hoek) willen verplaatsen. Aangezien de snelheid van de motor hoog is, moeten we deze vertragen. Om dat te doen, worden twee volgende stappen herhaald totdat de motor een nieuwe hoek bereikt:

  • Verplaats de motor met een kleine stap.
  • Pauzeer even en zet dan nog een stap.

Het volgende diagram illustreert het bovenstaande schema in het geval dat de nieuwe hoek groter is dan de huidige hoek:

Waarstep_numis het aantal stappen dat de motor moet zetten. stap en tijd zijn vooraf gedefinieerde waarden. Twee latere bepalen de snelheid en soepelheid. Het bovenstaande is slechts voor één robot. Om ervoor te zorgen dat robots tegelijkertijd beginnen te bewegen en hun bestemming te bereiken, kunnen we het volgende doen:Zes motoren nemen hetzelfde step_num , maar stap van elke motor is verschillend van elkaar. We moeten dus step_num choose kiezen in dit project is maximaal.

Over het algemeen is de werkstroom van Arduino als volgt:

5. Geometrische berekening

Laten we een robotarmberekening maken voor het volgende geometrieprobleem:

Bekend

  • C is vast
  • Een bekend punt - D is de invoer van de gebruiker
  • Een bekend punt - CB, BA, AD (respectievelijk aangeduid met b, a, d)
  • Lengtes van elk armsegment Vind: hoeken C, B, A Oplossing:
  • Ga ervan uit dat hoek B en A hetzelfde zijn
  • Voeg wat extra punten en segment toe

Berekening

  • We kenden de punten C en D => we kunnen de lengte van DC berekenen (aangeduid met c)
  • We kunnen ook de δ
  • . berekenen
  • Kijk naar driehoek ABE, we kunnen afleiden dat AE =BE en ∠E =π - 2α.
  • Dus:
  • De wet van cosinus in driehoek CDE:
  • Verander (1) en (2) in (3), we hebben:

Vereenvoudig

  • Vereenvoudig het bovenstaande:
  • Omdat we a, b, c en d kennen, de bovenstaande kwadratische vergelijking oplossen, kunnen we de waarde van α berekenen. - En β =π – α - Tot nu toe hebben we β gevonden, laten we γ zoeken - De wet van cosinus in driehoeken BDC en BDA:
  • Los deze reeks vergelijkingen op, we kunnen γ berekenen.
  • Dus hun vereiste hoeken zijn:(δ+γ), β en β. Dit zijn hoeken van respectievelijk motoren 2, 3 en 4.

6. Broncode

Broncode bevat twee bestanden:

  • RobotArmWeb.ino :Arduino-code
  • Remote_arm.php :Webapp-code, die wordt geüpload naar PHPoC WiFi Shield of PHPoC Shield. (Zie de instructies in dit artikel.)

Je moet ook het afbeeldingsbestand flywheel.png uploaden naar PHPoC Shield.

De beste Arduino-starterkit voor beginners

Als u op zoek bent naar een Arduino-kit, zie dan De beste Arduino-kit voor beginners


Functiereferenties

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

Code

  • RobotArmWeb
  • remote_arm.php
RobotArmWebArduino
Dit is Arduino Code
#include #include int angle_init[] ={90, 101, 165, 153, 90, 120}; // wanneer de motor rechtop staat. In web is de hoek wanneer de motor recht staat {0, 90, 130, 180, 0, 0};int angle_offset[] ={0, 11, -15, -27, 0, 137}; // offset tussen echte servomotor en hoek op webint cur_angles [] ={90, 101, 165, 153, 90, 120}; // huidige hoeken van zes motoren (graden) int dest_angles [] ={0, 0, 0, 0, 0, 0}; // voorbestemde hoekenint angle_max[] ={180, 180, 160, 120, 180, 137};int angle_min[] ={0, 0, 0, 20, 0, 75};int richting[] ={1, 1 , 1, 1, 1 ,-1};int angleSteps[] ={3, 2, 2, 2, 4 ,4}; // bewegende stappen van elke motor (graden)Servo servo1;Servo servo2;Servo servo3;Servo servo4;Servo servo5;Servo servo6;Servo servo[6] ={servo1, servo2, servo3, servo4, servo5, servo6};PhpocServer server (80);PhpocClient-client;int stepNum =0;void setup(){Serial.begin(9600); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket("remote_arm"); servo1.bevestigen (2); // hecht de servo op pin 2 aan het servo-object servo2.attach (3); // hecht de servo op pin 3 aan het servo-object servo3.attach (4); // bevestigt de servo op pin 4 aan het servo-object servo4.attach (5); // bevestigt de servo op pin 5 aan het servo-object servo5.attach (6); // hecht de servo op pin 6 aan het servo-object servo6.attach (7); // hecht de servo op pin 7 aan het servo-object for (int i =0; i <6; i++) servo [i].write(angle_init[i]);}void loop() { PhpocClient client =server.available (); if(client) { String angleStr =client.readLine(); if(angleStr) {Serial.println(angleStr); int kommaPos1 =-1; int kommaPos2; for(int i =0; i <5; i++) { commaPos2 =angleStr.indexOf(',', commaPos1 + 1); int hoek =angleStr.substring(commaPos1 + 1, commaPos2).toInt(); dest_angles[i] =hoek * richting[i] + angle_offset[i]; kommaPos1 =kommaPos2; } int hoek5 =hoekStr.substring(commaPos1 + 1).toInt(); dest_angles[5] =angle5 * direction[5] + angle_offset[5]; stapNum =0; // verplaats motoren in veel kleine stappen om de motor soepel te laten bewegen en vermijd plotselinge bewegingen van de motor. Het onderstaande is een stapberekening voor (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
Deze code is een webapp.
Arduino - Arm Robot - Web

Arduino - Controlearmrobot via internet

WebSocket:null

Schema's

Het moet de externe stroombron voor 6 motoren leveren;

Productieproces

  1. Simple Pi Robot
  2. Arduino-controlecentrum
  3. Ioed gebruiken om een ​​robotarm op afstand te bedienen
  4. Obstakels vermijden robot met servomotor
  5. Lijnvolger Robot
  6. Arduino-luchtbevochtigerbediening
  7. Arduino - Stuur temperatuur naar internet via serieel
  8. Littlearm 2C:bouw een 3D-geprinte Arduino-robotarm
  9. Autonome Home Assistant-robot
  10. Bewegingsgevoelige circuitbesturing via Intel Curie
  11. Robot voor supercoole indoornavigatie