Satura rādītājs:
- 1. darbība: lietas, kas jums būs nepieciešamas:-
- 2. solis: rokas izgatavošana:-
- 3. darbība. Savienojumu izveide:-
- 4. darbība: kodēšana:-
- 5. darbība: pārbaude:-
Video: Vienkārša un gudra robotu roka, izmantojot Arduino !!!: 5 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Šajā pamācībā es izveidošu vienkāršu robotu roku. To kontrolēs, izmantojot galveno roku. Roka atcerēsies kustības un spēlēs pēc kārtas. Koncepcija nav jauna, es ideju ieguvu no "Stoerpeak mini robotu rokas". Es to gribēju uztaisīt jau sen, bet toreiz es biju pavisam niecīgs un nezināju par programmēšanu. Tagad beidzot es to būvēju, saglabājot to vienkāršu, lētu un dalīšos ar jums visiem.
Tātad, sāksim….
1. darbība: lietas, kas jums būs nepieciešamas:-
Šeit ir saraksts ar lietām, kas jums būs nepieciešamas:-
1. Servo motori x 5 Saite ASV:- https://amzn.to/2OxbSH7Link Eiropai:-
2. Potenciometri x 5 (esmu izmantojis 100k.) Saite ASV:- https://amzn.to/2ROjhDMLink Eiropai:-
3. Arduino UNO. (Varat izmantot arī Arduino Nano) Saite ASV:- https://amzn.to/2DBbENWLink Eiropai:-
4. Maizes dēlis. (Es iesaku šo komplektu) Saite ASV:- https://amzn.to/2Dy86w4Link Eiropai:-
5. Akumulators. (pēc izvēles, es izmantoju 5V adapteri)
6. Kartons/koks/sauļošanās dēlis/akrils, kas jebkad ir pieejams vai viegli atrodams.
Un jums būs jāinstalē arī Arduino IDE.
2. solis: rokas izgatavošana:-
Šeit es esmu izmantojis Popsicle nūjas, lai izgatavotu roku. Jūs varat izmantot jebkuru jums pieejamo materiālu. Un jūs varat izmēģināt dažādus mehāniskos dizainus, lai padarītu roku vēl labāku. mans dizains nav ļoti stabils.
Es tikko izmantoju divpusēju lenti, lai piestiprinātu servos pie Popsicle nūjas un piestiprinātu tos, izmantojot skrūves.
Meistara rokai es pielīmēju potenciometrus popsicle nūjām un izveidoju roku.
Atsaucoties uz attēliem, jūs iegūsit labāku ideju.
Visu esmu uzstādījis uz A4 izmēra audekla tāfeles, ko izmanto kā pamatu.
3. darbība. Savienojumu izveide:-
Šajā solī mēs izveidosim visus nepieciešamos savienojumus, skatiet iepriekš redzamos attēlus.
- Vispirms pievienojiet visus servos paralēli barošanas avotam (sarkanais vads līdz +ve un melnais vai brūnais vads līdz Gnd)
- Pēc tam pievienojiet signāla vadus, ti, dzelteno vai oranžo vadu arduino PWM tapai.
- Tagad savienojiet potenciometrus ar +5v un Gnd arduino.
- Savienojiet vidējo termināli ar ardunio analogo tapu.
Šeit servo vadīšanai tiek izmantotas digitālās tapas 3, 5, 6, 9 un 10
Ievadīšanai no potenciometriem tiek izmantotas analogās tapas no A0 līdz A4.
Servo, kas savienots ar 3. tapu, kontrolēs potenciometrs, kas savienots ar A0
Servo, kas savienots ar tapu 5, tiks kontrolēts ar katlu uz A1 utt.
Piezīme:- Lai gan servos nav strāvas ar arino, pārliecinieties, vai servo Gnd ir savienots ar arino, pretējā gadījumā roka nedarbosies.
4. darbība: kodēšana:-
Šī koda loģika ir diezgan vienkārša, potenciometru vērtības tiek saglabātas masīvā, pēc tam ieraksti tiek pārvietoti, izmantojot for loop, un servos tiek veiktas darbības atbilstoši vērtībām. Jūs varat pārbaudīt šo pamācību, kuru izmantoju atsaucei "Arduino potenciometra servo vadība un atmiņa"
Kods:- (Lejupielādējams fails pievienots zemāk.)
Vispirms mēs deklarēsim visus nepieciešamos mainīgos visā pasaulē, lai mēs tos varētu izmantot visā programmā. Tam nav vajadzīgs īpašs paskaidrojums
#iekļaut
// Servo objekti Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potenciometra objekti int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Mainīgais, lai saglabātu Servo pozīciju int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Mainīgais, ko uzglabāt Iepriekšējās pozīcijas vērtības int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // Mainīgais, lai saglabātu pašreizējās pozīcijas vērtības int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; // Saglabā leņķi int Servo_Number; // Servo int veikalu skaits Storage [600]; // Masīvs datu glabāšanai (masīva lieluma palielināšana patērēs vairāk atmiņas) int Index = 0; // Masīva indekss sākas no 0 pozīcijas char dati = 0; // mainīgais, lai saglabātu datus no sērijveida ievades.
Tagad mēs uzrakstīsim iestatīšanas funkciju, kurā mēs iestatām tapas un to funkcijas. Šī ir galvenā funkcija, kas tiek izpildīta vispirms
anulēts iestatījums ()
{Sērijas sākums (9600); // Sērijveida saziņai starp arduino un IDE. // Servo objekti ir pievienoti PWM tapām. Servo_0.pielikums (3); Servo_1.pielikums (5); Servo_2.pielikums (6); Servo_3.pielikums (9); Servo_4.pielikums (10); // Sākotnēji servos ir iestatīta 100 pozīcija. Servo_0.write (100); Servo_1.rakstīt (100); Servo_2.rakstīt (100); Servo_3.rakstīt (100); Servo_4.rakstīt (100); Serial.println ("Nospiediet" R ", lai ierakstītu un" P ", lai atskaņotu"); }
Tagad mums jāizlasa potenciometru vērtības, izmantojot analogās ieejas tapas, un jāsaskaņo tās, lai kontrolētu servos. Šim nolūkam mēs definēsim funkciju un nosauksim to Map_Pot ();, varat to nosaukt par visu, ko vēlaties, tā ir lietotāja definēta funkcija
anulēts Map_Pot ()
{ / * Servo elementi griežas par 180 grādiem, taču to izmantošana ierobežojumiem nav laba ideja, jo tas padara servos nepārtraukti zvana, kas ir kaitinoši, tāpēc mēs ierobežojam servo kustību starp: 1-179 * / Pot_0 = analogRead (A0); // Nolasiet ievadi no katla un uzglabājiet to mainīgajā katlā_0. Servo_0_Pos = karte (Pot_0, 0, 1023, 1, 179); // Kartes servos atbilstoši vērtībai no 0 līdz 1023 Servo_0.write (Servo_0_Pos); // Pārvietojiet servo šajā pozīcijā. Pot_1 = analogRead (A1); Servo_1_Pos = karte (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = karte (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = karte (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = karte (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }
Tagad mēs uzrakstīsim cilpas funkciju:
tukša cilpa ()
{Map_Pot (); // Funkcijas izsaukums, lai nolasītu katla vērtības, kamēr (Serial.available ()> 0) {data = Serial.read (); ja (dati == 'R') Serial.println ("Ieraksta kustības …"); ja (dati == 'P') Serial.println ("Ierakstīto kustību atskaņošana …"); } ja (dati == 'R') // Ja ir ievadīts 'R', sāciet ierakstīšanu. {// Saglabājiet vērtības mainīgajā Prev_0_Pos = Servo_0_Pos; Prev_1_Pos = Servo_1_Pos; Prev_2_Pos = Servo_2_Pos; Prev_3_Pos = Servo_3_Pos; Prev_4_Pos = Servo_4_Pos; Map_Pot (); // Kartes funkcija tiek atsaukta salīdzināšanai, ja (abs (Prev_0_Pos == Servo_0_Pos)) // absolūtā vērtība tiek iegūta, salīdzinot {Servo_0.write (Servo_0_Pos); // Ja vērtības sakrīt servo tiek pārvietots, ja (Current_0_Pos! = Servo_0_Pos) // Ja vērtības nesakrīt {Storage [Index] = Servo_0_Pos + 0; // Vērtība tiek pievienota masīvam Index ++; // Indeksa vērtība palielināta par 1} Current_0_Pos = Servo_0_Pos; } /* Līdzīgi vērtību salīdzinājums tiek veikts visiem servos, +100 tiek pievienots katram ierakstam kā starpības vērtība. */ ja (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); if (Current_1_Pos! = Servo_1_Pos) {Storage [Index] = Servo_1_Pos + 100; Indekss ++; } Current_1_Pos = Servo_1_Pos; } ja (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); ja (Current_2_Pos! = Servo_2_Pos) {Storage [Index] = Servo_2_Pos + 200; Indekss ++; } Current_2_Pos = Servo_2_Pos; } ja (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); ja (Current_3_Pos! = Servo_3_Pos) {Storage [Index] = Servo_3_Pos + 300; Indekss ++; } Current_3_Pos = Servo_3_Pos; } ja (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); ja (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; Indekss ++; } Current_4_Pos = Servo_4_Pos; } / * Vērtības tiek drukātas uz seriālā monitora, '\ t' ir vērtību parādīšanai tabulas formātā * / Serial.print (Servo_0_Pos); Serial.print ("\ t"); Serial.print (Servo_1_Pos); Serial.print ("\ t"); Serial.print (Servo_2_Pos); Serial.print ("\ t"); Serial.print (Servo_3_Pos); Serial.print ("\ t"); Serial.println (Servo_4_Pos); Serial.print ("Indekss ="); Serial.println (rādītājs); kavēšanās (50); } ja (dati == 'P') // JA tiek ievadīts 'P', sāciet atskaņot ierakstītās kustības. {for (int i = 0; i <Index; i ++) // Pārvietojiet masīvu, izmantojot cilpu {Servo_Number = Storage /100; // Atrod servo skaitu Servo_Position = Storage % 100; // Atrod servo slēdža pozīciju (Servo_Number) {case 0: Servo_0.write (Servo_Position); pārtraukums; 1. gadījums: Servo_1.write (Servo_Position); pārtraukums; 2. gadījums: Servo_2.write (Servo_Position); pārtraukums; 3. gadījums: Servo_3.write (Servo_Position); pārtraukums; 4. gadījums: Servo_4.write (Servo_Position); pārtraukums; } kavēšanās (50); }}}
Kad kods ir gatavs, tagad augšupielādējiet to arduino panelī
Viedā roka ir gatava darbam. Funkcija vēl nav tik gluda kā Stoerpeak.
Ja jūs varat uzlabot kodu vai jums ir kādi ieteikumi, lūdzu, informējiet mani komentāru sadaļā.
To sakot, pāriesim pie testēšanas….
5. darbība: pārbaude:-
Pēc koda veiksmīgas augšupielādes uz tāfeles atveriet "Sērijas monitoru", to varat atrast opcijā Rīki. Sākot sērijas monitoru, arduino tiks atiestatīts. Tagad jūs varat vadīt robotu roku, izmantojot galveno roku. Bet nekas netiek ierakstīts.
Lai sāktu ierakstīšanu, tagad monitorā ievadiet 'R', un jūs varat veikt ierakstāmās kustības.
Pēc kustību pabeigšanas jums jāievada “P”, lai atskaņotu ierakstītās kustības. Servos turpinās veikt kustības, kamēr dēlis nav atiestatīts.
Ieteicams:
Vienkārša robotu Arduino roka: 5 soļi
Vienkārša robotu Arduino roka: Šeit es jums parādīšu, kā izveidot pamata arduino robotu roku, ko kontrolē potenciometrs. Šis projekts ir ideāls, lai apgūtu arduino pamatus, ja esat satriekts par pamācību iespējām un nezināt, kur stāties
Vienkārša robota roka, kas tiek kontrolēta ar faktisko rokas kustību: 7 soļi (ar attēliem)
Vienkārša robota roka, kas tiek kontrolēta pār faktisko rokas kustību: šī ir ļoti vienkārša DOF robota roka iesācējiem. Roku kontrolē Arduino. Tas ir savienots ar sensoru, kas ir piestiprināts pie operatora rokas. Tāpēc operators var kontrolēt rokas elkoni, saliekot elkoņa kustību
ROS MoveIt robotu roka 2. daļa: robotu kontrolieris: 6 soļi
ROS MoveIt Robotic Arm 2. daļa: Robotu kontrolieris: https://github.com/AIWintermuteAI/ros-moveit-arm.git Iepriekšējā raksta daļā mēs esam izveidojuši URDF un XACRO failus savai robotizētajai rokai un palaiduši RVIZ, lai kontrolētu mūsu robotu roka simulētā vidē. Šoreiz mēs to darīsim ar reālu
Vienkārša rāpojoša zombiju roka: 15 soļi (ar attēliem)
Vienkārša rāpojoša zombiju roka: šai instrukcijai nav nepieciešams metināšanas lielgabals. Bērniem ir droši praktizēt, lai izveidotu vienkāršu ķēdi. Bet uzmanieties no maziem priekšmetiem, kurus nejauši var norīt. Materiāla nepieciešamība: -Vibrācijas motors (1,5 ~ 3V, ar vadu)-Vadoša lente (10 mm, viena puse, alum)
Trešā roka ++: daudzfunkcionāla palīdzīga roka elektronikai un citiem delikātiem darbiem: 14 soļi (ar attēliem)
Trešā roka ++: daudzfunkcionāla palīdzīga roka elektronikai un citiem delikātiem darbiem .: Agrāk esmu izmantojis trešās rokas/palīdzības rokas, kas pieejamas ķēdes elektronikas veikalos, un esmu neapmierināts ar to lietojamību. Es nekad nevarēju iegūt klipus tieši tur, kur es tos vēlējos, vai arī iestatīšana prasīja vairāk laika, nekā vajadzētu