Turinys:
- 1 žingsnis: reikalingi dalykai:-
- 2 žingsnis: rankos sukūrimas:-
- 3 žingsnis: užmegzkite ryšius:-
- 4 žingsnis: kodavimas:-
- 5 žingsnis: bandymas:-
Video: Paprasta ir protinga robotinė ranka naudojant „Arduino“!!!: 5 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šioje pamokoje aš padarysiu paprastą robotą ranką. Tai bus kontroliuojama naudojant pagrindinę ranką. Ranka prisimins judesius ir žais iš eilės. Koncepcija nėra nauja. Idėją gavau iš „Stoerpeak“sukurtos „mini robotų rankos“. Aš norėjau tai padaryti jau seniai, bet tada buvau visiškai niekam tikęs ir neturėjau žinių apie programavimą. Dabar pagaliau aš jį kuriu, kad tai būtų paprasta, pigu ir dalinuosi su jumis visais.
Taigi pradėkime….
1 žingsnis: reikalingi dalykai:-
Čia yra sąrašas dalykų, kurių jums reikės:-
1. Servo varikliai x 5 Nuoroda JAV:- https://amzn.to/2OxbSH7Link Europai:-
2. Potenciometrai x 5 (naudojau 100 tūkst.) Nuoroda JAV:- https://amzn.to/2ROjhDMLink Europai:-
3. Arduino UNO. (Taip pat galite naudoti „Arduino Nano“) Nuoroda JAV:- https://amzn.to/2DBbENWLink Europai:-
4. Duonos lenta. (Siūlau šį rinkinį) Nuoroda JAV:- https://amzn.to/2Dy86w4Link Europai:-
5. Baterija. (neprivaloma, naudoju 5v adapterį)
6. Kartonas/medis/saulės plokštė/akrilas, kas kada nors yra prieinama ar lengvai randama.
Be to, jums reikės įdiegti „Arduino IDE“.
2 žingsnis: rankos sukūrimas:-
Čia aš naudoju „Popsicle“lazdeles rankai gaminti. Galite naudoti bet kokią jums prieinamą medžiagą. Ir jūs galite išbandyti įvairius mechaninius dizainus, kad padarytumėte dar geresnę ranką. mano dizainas nėra labai stabilus.
Aš tiesiog naudoju dvipusę juostą, kad priklijuočiau servo prie Popsicle lazdelės ir pritvirtinčiau varžtais.
Pagrindinei rankai aš priklijavau potenciometrus prie popsicle lazdelių ir padariau ranką.
Remdamiesi nuotraukomis, turėsite geresnę idėją.
Aš viską sumontavau ant A4 dydžio drobės lentos, naudojamos kaip pagrindas.
3 žingsnis: užmegzkite ryšius:-
Šiame žingsnyje mes padarysime visus reikiamus ryšius, žiūrėkite aukščiau esančias nuotraukas.
- Pirmiausia prijunkite visas servo sistemas lygiagrečiai prie maitinimo šaltinio (raudonas laidas prie +ve ir juodas arba rudas laidas prie Gnd)
- Tada prijunkite signalo laidus, ty geltoną arba oranžinę vielą prie PWM kaiščio arduino.
- Dabar lygiagrečiai prijunkite potenciometrus prie arduino +5v ir Gnd.
- Prijunkite vidurinį terminalą prie analoginio „ardunio“kaiščio.
Čia skaitmeniniai kaiščiai 3, 5, 6, 9 ir 10 naudojami servo valdymui
Analoginiai kaiščiai nuo A0 iki A4 naudojami įvedimui iš potenciometrų.
Servo, prijungto prie 3 kaiščio, valdys potenciometras, prijungtas prie A0
Servo, prijungtą prie 5 kaiščio, bus valdomas A1 puodu ir pan.
Pastaba:- nors „Servos“nėra maitinamas „arduino“, būtinai prijunkite servo Gnd prie „arduino“, kitaip ranka neveiks.
4 žingsnis: kodavimas:-
Šio kodo logika yra gana paprasta, potenciometrų vertės yra saugomos masyve, po to įrašai perkeliami naudojant for ciklą, o servos atlieka veiksmus pagal vertes. Galite peržiūrėti šią pamoką, kurią naudojau kaip nuorodą „Arduino potenciometro servo valdymas ir atmintis“
Kodas:- (Atsisiunčiamas failas pridedamas žemiau.)
Pirmiausia paskelbsime visus reikiamus kintamuosius visame pasaulyje, kad galėtume juos naudoti visoje programoje. Tam nereikia specialaus paaiškinimo
#įtraukti
// Servo objektai Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Potenciometro objektai int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Kintamasis, skirtas saugoti servo poziciją int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Kintamasis saugoti Ankstesnės pozicijos vertės int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prev_3_Pos; int Prev_4_Pos; // Kintamasis dabartinėms pozicijų vertėms saugoti int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Dabartiniai_3_Pos; int Dabartiniai_4_Pos; int Servo_Position; // Saugo kampą int Servo_Number; // Servo int saugyklų parduotuvių skaičius [600]; // Masyvas duomenims saugoti (didinant masyvo dydį sunaudos daugiau atminties) int Index = 0; // Masyvo indeksas prasideda nuo 0 pozicijos char data = 0; // kintamasis norint saugoti duomenis iš nuoseklaus įvesties.
Dabar parašysime sąrankos funkciją, kurioje nustatysime kaiščius ir jų funkcijas. Tai yra pagrindinė funkcija, kuri pirmiausia atliekama
negaliojanti sąranka ()
{Serial.begin (9600); // Serijiniam ryšiui tarp arduino ir IDE. // Servo objektai pritvirtinti prie PWM kaiščių. Servo_0.attach (3); Servo_1.priedas (5); „Servo_2.attach“(6); Servo_3.attach (9); Servo_4.attach (10); // Paleidžiant servus, nustatyta 100 padėtis. Servo_0.write (100); „Servo_1.write“(100); „Servo_2.write“(100); „Servo_3.write“(100); Servo_4.rašyti (100); Serial.println („Paspauskite„ R “, kad įrašytumėte, o„ P “, kad paleistumėte“); }
Dabar turime perskaityti potenciometrų reikšmes naudojant analoginio įvesties kaiščius ir susieti juos su valdikliais. Tam mes apibrėžsime funkciją ir pavadinsime ją Map_Pot ();, galite jį pavadinti bet kokiu norimu, tai yra vartotojo apibrėžta funkcija
void Map_Pot ()
{ / * Servo sistemos sukasi 180 laipsnių kampu, tačiau jų naudojimas ribotiems tikslams nėra gera idėja, nes dėl to servos nuolat zuja, o tai erzina, todėl apribojame servo judėjimą tarp: 1-179 * / Pot_0 = analogRead (A0); // Skaitykite įvestį iš puodo ir saugokite jį kintamajame inde_0. Servo_0_Pos = žemėlapis (Pot_0, 0, 1023, 1, 179); // Žemėlapių servos pagal vertę nuo 0 iki 1023 Servo_0.write (Servo_0_Pos); // Perkelkite servo į tą padėtį. Pot_1 = analogRead (A1); Servo_1_Pos = žemėlapis (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = žemėlapis (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = žemėlapis (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = žemėlapis (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }
Dabar parašysime ciklo funkciją:
tuštumos kilpa ()
{Map_Pot (); // Funkcijos iškvietimas skaityti puodo reikšmes, o (Serial.available ()> 0) {data = Serial.read (); if (duomenys == 'R') Serial.println ("Įrašymo judesiai …"); if (duomenys == 'P') Serial.println ("Įrašytų judesių grojimas …"); } if (data == 'R') // Jei įvesta 'R', pradėkite įrašinėti. {// Saugokite reikšmes kintamajame 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“(); // Žemėlapio funkcija prisiminta palyginimui, jei (abs (Prev_0_Pos == Servo_0_Pos)) // absoliuti vertė gaunama lyginant {Servo_0.write (Servo_0_Pos); // Jei reikšmės atitinka servo, padėtis perkeliama, jei (Current_0_Pos! = Servo_0_Pos) // Jei vertės neatitinka {Storage [Index] = Servo_0_Pos + 0; // Vertė pridedama prie masyvo Index ++; // Indekso vertė padidinta 1} Current_0_Pos = Servo_0_Pos; } /* Panašiai verčių palyginimas atliekamas visoms servoms, +100 pridedamas kiekvieną kartą įvedant kaip diferencinė vertė. */ if (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; Indeksas ++; } Current_1_Pos = Servo_1_Pos; } if (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); if (Current_2_Pos! = Servo_2_Pos) {Storage [Index] = Servo_2_Pos + 200; Indeksas ++; } Current_2_Pos = Servo_2_Pos; } if (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); if (Current_3_Pos! = Servo_3_Pos) {Storage [Index] = Servo_3_Pos + 300; Indeksas ++; } Current_3_Pos = Servo_3_Pos; } if (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); if (Current_4_Pos! = Servo_4_Pos) {Storage [Index] = Servo_4_Pos + 400; Indeksas ++; } Current_4_Pos = Servo_4_Pos; } / * Reikšmės spausdinamos serijiniame monitoriuje, „\ t“- reikšmėms rodyti lentelės formatu * / 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 ("Indeksas ="); Serial.println (indeksas); vėlavimas (50); } jei (duomenys == 'P') // JEI 'P', pradėkite žaisti įrašytus judesius. {for (int i = 0; i <Index; i ++) // Pereikite masyvą naudodami ciklą {Servo_Number = Storage /100; // Rasti servo skaičių Servo_Position = Saugykla % 100; // Rasia servo jungiklio padėtį (Servo_Number) {atvejis 0: Servo_0.write (Servo_Position); pertrauka; 1 atvejis: Servo_1.write (Servo_Position); pertrauka; 2 atvejis: Servo_2.write (Servo_Position); pertrauka; 3 atvejis: Servo_3.write (Servo_Position); pertrauka; 4 atvejis: Servo_4.write (Servo_Position); pertrauka; } uždelsimas (50); }}}
Kai kodas bus paruoštas, dabar įkelkite jį į arduino plokštę
Išmanioji ranka paruošta darbui. Funkcija dar nėra tokia sklandi kaip „Stoerpeak“.
Jei galite patobulinti kodą ar turite pasiūlymų, praneškite man komentarų skiltyje.
Tai pasakius, pereikime prie bandymų….
5 žingsnis: bandymas:-
Sėkmingai įkėlę kodą į lentą, atidarykite „Serial Monitor“, kurį rasite „Tools“parinktyje. Kai serijinis monitorius paleidžiamas, arduino bus atstatytas. Dabar galite valdyti robotinę ranką naudodami pagrindinę ranką. Tačiau niekas nėra įrašoma.
Norėdami pradėti įrašymą, įveskite „R“į monitorių, dabar galite atlikti judesius, kuriuos norite įrašyti.
Atlikę judesius turite įvesti „P“, kad galėtumėte paleisti įrašytus judesius. Servos ir toliau atliks judesius, kol plokštė nebus atstatyta.
Rekomenduojamas:
ASL robotinė ranka (kairėje): 9 žingsniai (su nuotraukomis)
ASL robotų ranka (kairėje): Šio semestro projekto tikslas buvo sukurti 3D spausdintą robotinę kairę ranką, kuri galėtų parodyti amerikietišką gestų kalbos abėcėlę kurtiems ir klausos sutrikimų turintiems žmonėms klasėje. Prieinamumas demonstruoti amerikietišką ženklą Langu
Kaip padaryti belaidę robotinę ranką naudojant „Airsoft“kulkas: 9 žingsniai
Kaip pasidaryti belaidę robotinę ranką naudojant „Airsoft“kulkas: Sveiki draugai, šioje instrukcijoje aš jums parodysiu, kaip padaryti belaidę roboto ranką, kuri gali pasisukti, judėti aukštyn ir žemyn ir šaudyti į „airsoft“kulkas, valdydama belaidį nuotolinio valdymo pultą
Mojuojate ranka, kad valdytumėte OWI robotinę ranką Be jokių stygų: 10 žingsnių (su paveikslėliais)
Mojuojate ranka, kad valdytumėte OWI robotinę ranką … Nėra jokių eilučių: IDĖJA: „Instructables.com“yra bent 4 kiti projektai (2015 m. Gegužės 13 d.), Skirti modifikuoti ar valdyti „OWI Robotic Arm“. Nenuostabu, nes tai yra toks puikus ir nebrangus robotų rinkinys, su kuriuo galima žaisti. Šis projektas panašus į
Paprasta robotinė ranka, valdoma realiu rankos judesiu: 7 žingsniai (su nuotraukomis)
Paprasta robotinė ranka, valdoma realiu rankos judesiu: tai labai paprasta DOF robotinė ranka pradedantiesiems. Ranka valdoma „Arduino“. Jis prijungtas prie jutiklio, pritvirtinto prie operatoriaus rankos. Todėl operatorius gali valdyti rankos alkūnę lenkdamas savo alkūnės judesį
Robotinė ranka su valdomomis belaidėmis pirštinėmis - NRF24L01+ - „Arduino“: 7 žingsniai (su nuotraukomis)
Robotinė ranka su valdomomis belaidėmis pirštinėmis | NRF24L01+ | Arduino: Šiame vaizdo įraše; Galimas 3D roboto rankinis surinkimas, servo valdymas, lanksčiojo jutiklio valdymas, belaidis valdymas su nRF24L01, „Arduino“imtuvas ir siųstuvo šaltinio kodas. Trumpai tariant, šiame projekte mes išmoksime valdyti roboto ranką laidais