Sadržaj:
- Korak 1: Stvari koje će vam trebati:-
- Korak 2: Izrada ruke:-
- Korak 3: Uspostavljanje veze:-
- Korak 4: Kodiranje:-
- Korak 5: Testiranje:-
Video: Jednostavna i pametna robotska ruka pomoću Arduina !!!: 5 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
U ovoj instrukciji napravit ću jednostavnu robotsku ruku. To će se kontrolirati pomoću glavne ruke. Ruka će pamtiti poteze i igrati u nizu. Koncept nije nov. Ideju sam dobio od "mini robotske ruke -od Stoerpeaka". Dugo sam to htio napraviti, ali tada sam bio potpuno noob i nisam imao znanja o programiranju. Sada konačno gradim jedan, održavajući ga jednostavnim, jeftinim i dijelim ga sa svima vama.
Pa krenimo….
Korak 1: Stvari koje će vam trebati:-
Evo spiska stvari koje će vam trebati:-
1. Servo motori x 5 Link za SAD:- https://amzn.to/2OxbSH7Link za Evropu:-
2. Potenciometri x 5 (koristio sam 100.000.) Link za SAD:- https://amzn.to/2ROjhDMLink za Evropu:-
3. Arduino UNO. (Možete koristiti i Arduino Nano) Link za SAD:- https://amzn.to/2DBbENWLink za Evropu:-
4. Oglasna ploča. (Predlažem ovaj komplet) Link za SAD:- https://amzn.to/2Dy86w4Link za Evropu:-
5. Baterija. (opcionalno, koristim adapter od 5V)
6. Karton/drvo/ploča od sunca/akril, sve što je dostupno ili lako pronaći.
Također će vam trebati instaliran Arduino IDE.
Korak 2: Izrada ruke:-
Ovdje sam koristio štapiće od sladoleda za izradu ruke. Možete koristiti bilo koji materijal koji vam je na raspolaganju. Možete isprobati različite mehaničke dizajne kako biste napravili još bolju ruku. moj dizajn nije baš stabilan.
Upravo sam upotrijebio dvostranu traku da zalijepim servo pogone na štapić za sladoled i pričvrstim ih vijcima.
Za Master ruku zalijepio sam potenciometre na štapiće od slatkiša i napravio ruku.
Pozivom na slike dobit ćete bolju ideju.
Sve sam montirao na platnu veličine A4 koja se koristi kao osnova.
Korak 3: Uspostavljanje veze:-
U ovom koraku ćemo uspostaviti sve potrebne veze, pogledajte gornje slike.
- Prvo spojite sve servo -sisteme paralelno na izvor napajanja (Crvena žica na +ve i crna ili smeđa žica na Gnd)
- Zatim spojite signalne žice, odnosno žutu ili narančastu žicu na PWM pin arduina.
- Sada paralelno povežite potenciometre na +5v i Gnd arduina.
- Spojite srednji terminal na analogni pin ardunia.
Ovdje se digitalni pinovi 3, 5, 6, 9 i 10 koriste za upravljanje servo pogonima
Analogni pinovi A0 do A4 koriste se za ulaz sa potenciometara.
Servo spojen na pin 3 kontrolirat će se potenciometrom spojenim na A0
Servo spojen na pin 5 kontrolirat će pot na A1, i tako dalje….
Napomena:- Iako servosisteme ne napaja arduino, svakako spojite Gnd servosa na arduino ili ruka neće raditi.
Korak 4: Kodiranje:-
Logika ovog koda je prilično jednostavna, vrijednosti potenciometara su pohranjene u nizu, a zapisi se zatim prelaze pomoću for petlje, a servo upravljači izvode korake prema vrijednostima. Možete pogledati ovaj vodič koji sam koristio za referencu "Arduino potenciometar servo kontrola i memorija"
Kôd:- (Datoteka koja se može preuzeti ispod.)
Prvo ćemo globalno proglasiti sve potrebne varijable kako bismo ih mogli koristiti u cijelom programu. Za ovo nije potrebno posebno objašnjenje
#include
// Servo objekti Servo Servo_0; Servo Servo_1; Servo Servo_2; Servo Servo_3; Servo Servo_4; // Objekti potenciometra int Pot_0; int Pot_1; int Pot_2; int Pot_3; int Pot_4; // Varijabla za spremanje položaja servo int Servo_0_Pos; int Servo_1_Pos; int Servo_2_Pos; int Servo_3_Pos; int Servo_4_Pos; // Varijabla za spremanje vrijednosti prethodne pozicije int Prev_0_Pos; int Prev_1_Pos; int Prev_2_Pos; int Prethodna_3_Pos; int Prev_4_Pos; // Varijabla za spremanje vrijednosti trenutne pozicije int Current_0_Pos; int Current_1_Pos; int Current_2_Pos; int Current_3_Pos; int Current_4_Pos; int Servo_Position; // Pohranjuje kut int Servo_Number; // Broj prodavaonice servo inta Skladištenje [600]; // Niz za spremanje podataka (Povećanje veličine niza će zauzeti više memorije) int Index = 0; // Indeks niza počinje od 0. pozicije char data = 0; // varijabla za spremanje podataka iz serijskog unosa.
Sada ćemo napisati funkciju postavljanja, gdje postavljamo pinove i njihove funkcije. Ovo je glavna funkcija koja se prva izvršava
void setup ()
{Serial.begin (9600); // Za serijsku komunikaciju između arduina i IDE -a. // Servo objekti su spojeni na PWM pinove. Servo_0.priključak (3); Servo_1.priključak (5); Servo_2.priključak (6); Servo_3.priključak (9); Servo_4.priključak (10); // Servomotori su postavljeni na 100 položaj pri inicijalizaciji. Servo_0.write (100); Servo_1.write (100); Servo_2.write (100); Servo_3.write (100); Servo_4.write (100); Serial.println ("Pritisnite 'R' za snimanje i 'P' za reprodukciju"); }
Sada moramo očitati vrijednosti potenciometara pomoću pinova za analogni ulaz i preslikati ih za upravljanje servoma. Za to ćemo definirati funkciju i dati joj ime Map_Pot ();, možete ga nazvati kako god želite. To je korisnički definirana funkcija
void Map_Pot ()
{ / * Servo pogoni se rotiraju za 180 stupnjeva, ali koristiti ih do ograničenja nije dobra ideja jer čini da servo neprestano zuji što je neugodno pa ograničavamo servo da se kreće između: 1-179 * / Pot_0 = analogno čitanje (A0); // Očitajte unos iz pot -a i pohranite ga u varijablu Pot_0. Servo_0_Pos = mapa (Pot_0, 0, 1023, 1, 179); // Mapiranje servo servera prema vrijednosti između 0 do 1023 Servo_0.write (Servo_0_Pos); // Pomaknite servo u taj položaj. Pot_1 = analogRead (A1); Servo_1_Pos = mapa (Pot_1, 0, 1023, 1, 179); Servo_1.write (Servo_1_Pos); Pot_2 = analogRead (A2); Servo_2_Pos = mapa (Pot_2, 0, 1023, 1, 179); Servo_2.write (Servo_2_Pos); Pot_3 = analogRead (A3); Servo_3_Pos = mapa (Pot_3, 0, 1023, 1, 179); Servo_3.write (Servo_3_Pos); Pot_4 = analogRead (A4); Servo_4_Pos = mapa (Pot_4, 0, 1023, 1, 179); Servo_4.write (Servo_4_Pos); }
Sada ćemo napisati funkciju petlje:
void loop ()
{Map_Pot (); // Poziv funkcije za čitanje vrijednosti pot dok (Serial.available ()> 0) {data = Serial.read (); if (data == 'R') Serial.println ("Snimanje se pomiče …"); if (data == 'P') Serial.println ("Reprodukcija snimljenih poteza …"); } if (data == 'R') // Ako je uneseno 'R', započnite snimanje. {// Pohranite vrijednosti u varijablu Prev_0_Pos = Servo_0_Pos; Nazad_1_Pos = Servo_1_Pos; Nazad_2_Pos = Servo_2_Pos; Nazad_3_Pos = Servo_3_Pos; Nazad_4_Pos = Servo_4_Pos; Map_Pot (); // Mapa funkcija opozvana radi usporedbe if (abs (Prev_0_Pos == Servo_0_Pos)) // apsolutna vrijednost dobivena je usporedbom {Servo_0.write (Servo_0_Pos); // Ako se vrijednosti podudaraju, servo je promijenjen u položaj if (Current_0_Pos! = Servo_0_Pos) // Ako se vrijednosti ne podudaraju {Storage [Index] = Servo_0_Pos + 0; // Vrijednost se dodaje nizu Index ++; // Vrijednost indeksa povećana za 1} Current_0_Pos = Servo_0_Pos; } /* Slično se vrši poređenje vrijednosti za sve servomotore, +100 se dodaje svakom za unos kao diferencijalna vrijednost. */ if (abs (Prev_1_Pos == Servo_1_Pos)) {Servo_1.write (Servo_1_Pos); if (Trenutni_1_Pos! = Servo_1_Pos) {Pohrana [Indeks] = Servo_1_Pos + 100; Indeks ++; } Trenutni_1_Pos = Servo_1_Pos; } if (abs (Prev_2_Pos == Servo_2_Pos)) {Servo_2.write (Servo_2_Pos); if (Trenutni_2_Pos! = Servo_2_Pos) {Skladište [Indeks] = Servo_2_Pos + 200; Indeks ++; } Trenutni_2_Pos = Servo_2_Pos; } if (abs (Prev_3_Pos == Servo_3_Pos)) {Servo_3.write (Servo_3_Pos); if (Trenutni_3_Pos! = Servo_3_Pos) {Pohrana [Indeks] = Servo_3_Pos + 300; Indeks ++; } Trenutni_3_Pos = Servo_3_Pos; } if (abs (Prev_4_Pos == Servo_4_Pos)) {Servo_4.write (Servo_4_Pos); if (Trenutni_4_Pos! = Servo_4_Pos) {Pohrana [Indeks] = Servo_4_Pos + 400; Indeks ++; } Trenutni_4_Pos = Servo_4_Pos; } / * Vrijednosti se ispisuju na serijskom monitoru, '\ t' je za prikaz vrijednosti u tabličnom 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 ("Indeks ="); Serial.println (Index); kašnjenje (50); } if (data == 'P') // AKO je uneseno 'P', Počnite svirati snimljene poteze. {for (int i = 0; i <Index; i ++) // Prelazimo niz pomoću for petlje {Servo_Number = Storage /100; // Nalazi broj servo Servo_Position = Memorija % 100; // Pronalazi položaj servo sklopke (Servo_Number) {slučaj 0: Servo_0.write (Servo_Position); break; slučaj 1: Servo_1.write (Servo_Position); break; slučaj 2: Servo_2.write (Servo_Position); break; slučaj 3: Servo_3.write (Servo_Position); break; slučaj 4: Servo_4.write (Servo_Position); break; } kašnjenje (50); }}}
Nakon što je kôd spreman, sada ga prenesite na arduino ploču
Pametna ruka je spremna za rad. Funkcija još nije tako glatka kao ona koju je napravio Stoerpeak.
Ako možete poboljšati kôd ili imate bilo kakve prijedloge za mene, obavijestite me u odjeljku za komentare.
S obzirom na to, prijeđimo na testiranje….
Korak 5: Testiranje:-
Nakon uspješnog učitavanja koda na ploču, otvorite 'Serial Monitor' i možete ga pronaći u opciji Alati. Kada se serijski monitor pokrene, arduino će se resetirati. Sada možete upravljati robotskom rukom pomoću glavne ruke. Ali ništa se ne snima.
Za početak snimanja, unesite 'R' na monitor i sada možete izvoditi poteze koje želite snimiti.
Nakon što su potezi završeni morate unijeti 'P' da biste pustili snimljene poteze. Servomotori će nastaviti izvoditi poteze sve dok se ploča ne resetira.
Preporučuje se:
Robotska ruka sa hvataljkom: 9 koraka (sa slikama)
Robotska ruka sa hvataljkom: Berba stabala limuna smatra se teškim radom, zbog velike veličine drveća, kao i zbog vruće klime u regijama u kojima se sadi limunovo drveće. Zato nam je potrebno još nešto da pomognemo poljoprivrednim radnicima da više završe svoj posao
Moslty 3D štampana robotska ruka koja oponaša lutkarski kontroler: 11 koraka (sa slikama)
Moslty 3D štampana robotska ruka koja oponaša lutkarskog kontrolera: Ja sam student mašinstva iz Indije i ovo je moj diplomski projekat. Ovaj projekat je fokusiran na razvoj jeftine robotske ruke koja je uglavnom 3D štampana i ima 5 DOF-ova sa 2 prsta hvataljka. Robotskom rukom upravlja se
ASL Robotska ruka (lijevo): 9 koraka (sa slikama)
ASL Robotska ruka (lijevo): Projekt ovog semestra bio je stvaranje trodimenzionalne štampane robotske lijeve ruke koja je sposobna demonstrirati abecedu američkog znakovnog jezika za gluhe i osobe oštećenog sluha u učionici. Pristupačnost dokazivanja američkog znakovnog jezika
Jednostavna robotska ruka kontrolirana stvarnim pokretom ruke: 7 koraka (sa slikama)
Jednostavna robotska ruka kontrolirana stvarnim pokretom ruke: Ovo je vrlo jednostavna robotska ruka DOF za početnike. Rukom upravlja Arduino. Povezan je senzorom koji je pričvršćen na ruci operatera. Stoga operater može kontrolirati lakat ruke savijanjem vlastitog pokreta lakta
Robotska ruka koja se može kontrolirati pokretima kontrolirana pokretima putem Bluetootha do Arduina: 4 koraka
Robotska ruka koja se može upravljati pokretima kontrolirana pokretima putem Bluetootha do Arduina: Postoje dva načina rada u ruci. Prvi je ručni način rada s kojim možete pomicati ruku s bluetoothom na mobilnom telefonu pomicanjem klizača u aplikaciji. U isto vrijeme možete spremiti svoje pozicije i igrati … Drugo je način gesta koji koristi vaš ph