O zi buna! În fața voastră, dragilor, este un robot de artă care poate picta diverse obiecte sferice sau ovoide cu dimensiuni cuprinse între 4 și 9 cm.
Pentru a o face veți avea nevoie de o imprimantă 3D, un set de instrumente standard + Arduino.
Notă: Nu renunțați la proiectele care folosesc o imprimantă 3D. Dacă doriți, puteți găsi oricând un loc sau o cale de unde puteți comanda tipărirea pieselor necesare proiectului.
Pasul 1: Câteva despre robot
Robot de artă - cu două axe de casă, care poate modela pe majoritatea suprafețelor sferice. Robotul este personalizat pentru un anumit tip de obiect (mingi de ping pong, decoratiuni de Craciun, becuri si oua (rata, gasca, pui...).
Motoare pas cu pas de înaltă precizie cu cuplu mare sunt folosite pentru a roti obiectul sferic și a muta manipulatorul, iar un servomotor SG90 silențios și fiabil este folosit pentru a ridica mecanismul mânerului.
Pasul 2: Piese necesare
Pentru a face Meșteșuguri de bricolaj avem nevoie:
- 2x rulmenti 623;
- Ac de păr cu diametrul de 3 mm și lungimea de 80-90 mm;
- 1x arc (lungime 10 mm si diametru 4,5 mm);
- 2x motoare pas cu pas NEMA 17 (cuplu 4,4 kg/cm);
- Cabluri motor (lungime 14 + 70 cm);
- Cablu USB;
- 1x servomotor SG90;
- Arduino Leonardo;
- scut JJRobots;
- 2xA4988 drivere pentru motoare pas cu pas;
- Alimentare 12V/2A;
- 11x șuruburi M3 6mm;
- 4x șuruburi M3 16mm;
- 4x piulițe M3;
- 2x ventuze de 20 mm;
- 1x piuliță-fluture M3;
- 1x marker;
Pasul 3: schiță generală
Puteți folosi această diagramă ca o „foaie de cheat”.
Pasul 4: Să începem!
Robotul deplasează un manipulator cu un marker atașat, care este antrenat de un motor pas cu pas. Un alt motor pas cu pas este responsabil de rotirea obiectului pe care este aplicat desenul (ou, bila...). Două ventuze sunt folosite pentru a ține articolul în loc: una atașată la motorul pas cu pas și cealaltă pe partea opusă subiect. Un mic arc va apăsa pe ventuză, ajutându-l să țină obiectul. Servoacționarea SG90 este folosită pentru a ridica/coborâ marcatorul.
Pasul 5: Manipulator
Puneți piulița în orificiul pregătit pentru aceasta și strângeți șurubul de 16 mm. Să facem același lucru pentru suportul articolului (în dreapta în imaginea de mai sus). La crearea balamalei pentru manipulator s-au folosit 2 șuruburi de 16 mm. Această balama ar trebui să se rotească liber după strângerea șuruburilor.
Pasul 6: Fragile
Așezați una dintre ventuze în interiorul orificiului din suportul pentru articole.
Pasul 7: Montarea motoarelor pas cu pas
Atașăm ambele motoare pas cu pas la cadrul principal folosind 8 șuruburi.
Pasul 8: Axa de rotație
Să plasăm toate elementele așa cum se arată în imaginea de mai sus.
- Fraier;
- Şurub;
- Top parte;
- Arc;
- Rulment 623 (trebuie încorporat în cupa din stânga);
- cupa stângă;
- Spatiu liber pentru cadrul principal;
- cupa dreapta;
- Rulment 623;
- Inel distanțier;
- Piuliță-fluture (M3).
Pasul 9: Pune totul la locul lui
Să introducem manipulatorul asamblat pe axa motorului pas cu pas.
Să instalăm suportul din stânga pe axa motorului pas cu pas.
Markerul și oul sunt puse ca exemplu (nu este nevoie să le plasați acum).
NOTĂ: Servo va necesita ajustări. Va trebui să-i resetați unghiul în timpul procesului de calibrare.
Pasul 10: Electronice
Să fixăm electronicele pe spatele cadrului principal folosind șuruburi (2 vor fi suficiente).
Să conectăm cablurile.
Dacă inversați polaritățile la conectarea motoarelor pas cu pas, acestea se vor roti pur și simplu în direcția opusă, dar cu un servomotor situația nu va fi atât de inofensivă! Prin urmare, verificați de două ori polaritatea înainte de a conecta!
Pasul 11: Programarea Arduino Leonardo
Să programăm Arduino Leonardo folosind IDE-ul Arduino (v 1.8.1).
- Descărcați Arduino IDE (v 1.8.1) și instalați programul;
- Să lansăm software-ul. Selectați placa Arduino Leonardo și PORTUL COM corespunzător din meniul „instrumente->placă”;
- Să deschidem și să descarcăm codul Sphere-O-Bot. Să despachetăm toate fișierele dintr-un folder și să-l numim „Ejjduino_ARDUINO”.
Pasul 12: Robotul de artă este gata să creeze opere de artă
Pasul 13: Controlați robotul
Software Inkscape. Să descarcăm și să instalăm software-ul Inkscape (recomand versiunea stabilă 0.91).
Descărcați și instalați extensia EggBot Control (versiunea 2.4.0 a fost testată complet).
Extensia EggBot Control pentru Inkscape este instrumentul pe care trebuie să-l utilizați atunci când testați și calibrați EggBot-ul și transferați designul pe ou. Mai întâi trebuie să lansați Inkscape. După lansarea Inkscape, va apărea meniul „Extensii” și în el trebuie să selectați submeniul „Eggbot”. Dacă nu vedeți submeniul Eggbot, înseamnă că nu ați instalat corect extensiile. Efectuați o copie de rezervă și urmați cu atenție instrucțiunile pentru instalarea extensiilor.
Asta e tot, mulțumesc pentru atenție!)
Oamenii încep să învețe Arduino creând roboți simpli. Astăzi voi vorbi despre cel mai simplu robot de pe Arduino Uno, care, ca un câine, îți va urma mâna sau orice alt obiect care reflectă lumina infraroșie. Acest robot va distra și copiii. Nepotul meu de 3 ani s-a jucat cu nerăbdare cu robotul :)
Voi începe prin a enumera piesele care vor fi necesare în timpul construcției - Arduino UNO;
Telemetru cu infraroșu;
-motoare de 3 volți cu cutii de viteze și roți;
- conectori pentru baterii de 3A;
-baterie (dacă nu sunt suficiente baterii);
-Relee pentru controlul motoarelor;
Ei bine, și alte materiale care vor fi necesare în timpul procesului de creație.
Mai întâi facem baza. Am decis să o fac din lemn. Am tăiat o scândură de lemn în așa fel încât motoarele să se potrivească perfect în fante
Apoi prind motoarele cu o bandă de lemn, înșurubând această bandă
Apoi pe corp am plasat un arduino, un releu, un Bradboard, telemetru și un șasiu rotativ sub bază.
Acum conectăm totul conform diagramei
La sfârșit, încărcați următoarea schiță pe Arduino:
Const int R = 13; //pini la care sunt conectate telemetrul IR const int L = 12; int motorL = 9; //pini la care este conectat releul int motorR = 11; int buttonState = 0; void setup() ( pinMode(R,INPUT); pinMode(L,INPUT); pinMode(motorR,OUTPUT); pinMode(motorL,OUTPUT); ) void loop() (( buttonState = digitalRead(L); if (buttonState) == HIGH)( digitalWrite(motorR,HIGH); ) else ( digitalWrite(motorR,LOW); ) ) (( buttonState = digitalRead(R); if (buttonState == HIGH)( digitalWrite(motorL,HIGH); ) altfel ( digitalWrite(motorL,LOW); ) ) ) )
Principiul de funcționare este foarte simplu. Telemetrul din stânga este responsabil pentru roata dreaptă, iar cel din dreapta pentru stânga
Pentru a fi mai clar, puteți viziona un videoclip care arată procesul de creare și funcționarea robotului
Acest robot este foarte simplu și oricine îl poate realiza. Vă va ajuta să înțelegeți principiile de funcționare ale modulelor, cum ar fi releele și telemetrul IR și cum să le utilizați cel mai bine.
Sper că v-a plăcut acest bricolaj, amintiți-vă că DIY-urile sunt cool!
Dar și din achiziția unui robot gata făcut, cu drepturi depline, bazat pe această placă. Pentru copiii de școală elementară sau vârsta preșcolară Astfel de proiecte Arduino gata făcute sunt chiar de preferat, deoarece Tabla „neanimată” pare puțin plictisitoare. Pe aici Este potrivit și pentru cei care nu sunt deosebit de atrași de circuitele electrice.
Prin achiziționarea unui model de robot funcțional, de ex. de fapt, o jucărie high-tech gata făcută poate trezi interesul pentru proiectarea și crearea de roboți în mod independent. După ce te-ai jucat suficient cu o astfel de jucărie și ai înțeles cum funcționează, poți începe să îmbunătățești modelul, să demontați totul și să începeți să asamblați noi proiecte pe Arduino, folosind placa, unitățile și senzorii eliberați. Deschiderea platformei Arduino permite de la aceeași componente fă-ți jucării noi.
Oferim o mică prezentare generală a roboților gata de fabricație de pe placa Arduino.
Mașină Arduino controlată prin Bluetooth
Masina controlata prin Bluetooth, costând puțin sub 100 USD. Se livreaza neasamblat. Pe lângă caroserie, motor, roți, baterie cu litiuși un încărcător, primim o placă Arduino UNO328, un controler de motor, un adaptor Bluetooth, o telecomandă și multe altele.
Videoclip cu acesta și un alt robot:
Mai mult descriere detaliata jucării și posibilitatea de a cumpăra de pe site-ul magazinului online DealExtreme.
Robot țestoasă Arduino
Kit de asamblare broasca testoasa robot costă aproximativ 90 USD. Singurul lucru care lipsește este carcasa, tot ce este necesar pentru viața acestui erou este inclus: placă Arduino Uno, servo-uri, senzori, module de urmărire, receptor IR și telecomandă, baterie.
Țestoasa poate fi cumpărată de pe site-ul DealExtreme, un robot similar mai ieftin este pe Aliexpress.
Arduino a urmărit vehiculul controlat de la un telefon mobil
Vehicul urmărit controlat prin Bluetooth de la un telefon mobil, costând 94 USD. Pe lângă baza pistei, primim o placă Arduino Uno și o placă de expansiune, o placă Bluetooth, o baterie și un încărcător.
Vehiculul pe șenile poate fi achiziționat și de pe site-ul DealExtreme, există și o descriere detaliată acolo. Poate unul de fier mai interesant Rezervor Arduino pe Aliexpress.
Mașină Arduino care conduce prin labirinturi
Conducerea mașinii prin labirinturi, costând 83 USD. Pe lângă motoare, placa Arduino Uno și alte elemente necesare, conține module de urmărire și module de evitare a obstacolelor.
Robot gata făcut sau cadru pentru un robot
Pe lângă opțiunea de a folosi kituri gata făcute pentru crearea roboților Arduino discutate în recenzie, puteți cumpăra un cadru (corp) separat al robotului - poate fi o platformă pe roți sau o omidă, un umanoid, un păianjen și alte modele. În acest caz, va trebui să faceți singur umplutura robotului. O privire de ansamblu asupra unor astfel de cazuri este oferită în a noastră.
De unde mai poți cumpăra roboți gata pregătiți?
În recenzie, am selectat cei mai ieftini și mai interesanți, după părerea noastră, roboți Arduino gata de fabricație din magazinele online chinezești. Dacă nu aveți timp să așteptați un pachet din China, există o mare selecție de roboți gata pregătiți în magazinele online Amperka și DESSY. Preturi mici iar livrarea rapida este oferita de magazinul online ROBstore. Lista magazinelor recomandate.
S-ar putea să fiți interesat și de recenziile noastre despre proiectele Arduino:
Antrenament Arduino
Nu știi de unde să începi să înveți Arduino? Gândiți-vă la ce vă este mai aproape - să vă asamblați propriile modele simple și să le complicați treptat sau să cunoașteți soluții mai complexe, dar gata făcute?
Dragii noștri cititori, deschidem o serie de articole dedicate creării unui robot bazat pe Arduino. Se presupune că cititorul este începător și are doar cunoștințe de bază despre subiect. Vom încerca să prezentăm totul cât mai detaliat și clar posibil.
Deci, o introducere în problemă:
Să începem cu conceptul: ne dorim un robot care să se poată mișca independent prin cameră, evitând în același timp toate obstacolele întâlnite pe parcurs. Sarcina a fost stabilită.
Acum să ne dăm seama de ce avem nevoie:
- Platformă (corp). Există opțiuni aici: faceți totul singur, cumpărați piese și asamblați-le sau cumpărați gata făcute. Alege orice iti place
Setul include de obicei o platformă și un motor pentru două roți motrice (caterpillar) și un compartiment pentru baterii. Există opțiuni tractiune intergrala- un motor pentru 4 roti. Pentru începători, recomandăm să luați platforme de tip rezervor
Două roți motrice și o a treia roată de sprijin.
- În continuare, avem nevoie de un telemetru. Sonar (aka telemetru, alias modul Ultrasonic) Ca telemetru, inițial alegerea a fost între ultrasunete și infraroșu. Deoarece caracteristicile ultrasonice sunt semnificativ mai bune (raza maximă este de aproximativ 4-5 metri, față de 30-60 cm), iar prețul este aproximativ același, alegerea a căzut pe Ultrasonic. Cel mai comun model este HC-SR04.
- Sofer de motor.
Ce ar trebuii să fac? Primul lucru care vă vine în minte este să puneți un tranzistor la ieșirea microcontrolerului și să alimentați motoarele din acesta. Acest lucru este bine, desigur, dar nu va funcționa dacă vrem să întoarcem motorul în cealaltă direcție... Dar podul H, care este un circuit puțin mai complex decât o pereche de tranzistoare, va face față bine. aceasta sarcina. Dar în acest caz există o mulțime de ele sub formă de circuite integrate gata făcute, așa că cred că nu este nevoie să reinventăm roata - vom cumpăra una gata făcută. În plus, prețul este de 2-3 dolari... Să mergem mai departe. În aceste scopuri, vom cumpăra un cip L293D sau, și mai bine, un Motor Shield bazat pe acesta.
Scut motor pe cip L298N
- Generare de sunet - emițător piezo
Cea mai simplă opțiune pentru generarea sunetului este utilizarea unui emițător piezo.
Emițătorii piezoceramici (emițători piezo) sunt dispozitive electroacustice de reproducere a sunetului care utilizează efectul piezoelectric. (efectul apariției polarizării dielectrice sub influența tensiunilor mecanice (efect piezoelectric direct). Există și un efect piezoelectric invers - apariția deformațiilor mecanice sub influența unui câmp electric.
Efect piezoelectric direct: în brichete piezoelectrice, pentru a obține tensiune înaltă pe eclatorul;
Efect piezoelectric invers: în emițători piezoelectrici (activ la frecvente inalte si au dimensiuni mici);)
Emițătoarele piezo sunt utilizate pe scară largă în diverse dispozitive electronice - ceasuri deșteptătoare, telefoane, jucării electronice, aparate electrocasnice. Un emițător piezoceramic constă dintr-o placă metalică pe care se aplică un strat de ceramică piezoelectrică, care are la exterior un înveliș conductor. Placa și spray-ul sunt două contacte. Emițătorul piezoelectric poate fi folosit și ca microfon piezoelectric sau senzor.
Asta e tot ce ne trebuie la început. Mai întâi, să vedem cum să asamblați și să faceți ca aceste părți să funcționeze individual în lecții separate.
Lecția 2. Lucrul cu un senzor ultrasonic de măsurare a distanței (telemetru)
Lecția 3. Arduino și motor Shield bazate pe L298N
Lecția 4. Reproducerea sunetului - emițător piezo
Lecția 5. Asamblarea robotului și depanarea programului
Este foarte ușor să faci diferite mașini cu telecomandă, senzori simpli și logică folosind Arduino. De aceea, această linie este incredibil de populară. Există mulți senzori și plăci de expansiune compatibile cu acesta de vânzare. Internetul este plin de biblioteci de software gata făcute și proiecte open source pentru toate ocaziile. Aproape toate întrebările pe care le veți avea în procesul de stăpânire a Arduino au fost deja puse de cineva și veți găsi întotdeauna răspunsul.
Să începem de undeva? Întrebare principală- selectarea controlerului. Există multe revizuiri ale Arduino, precum și clone terțe construite pe deasupra acestor versiuni. Iată, poate, cele două clase cele mai interesante pentru noi:
- Arduino Uno - cea mai buna alegere pentru un începător, cea mai simplă, bugetară și cea mai comună placă. Se bazează pe un cip ATmega328 cu o frecvență de ceas de 16 MHz, 32 KB de memorie flash, 2 KB de RAM și 1 KB de EEPROM. Uno are 14 intrări/ieșiri digitale care pot fi folosite pentru a controla senzori și servo-uri și alte dispozitive;
- Arduino Mega / Mega 2560 este o placă potrivită atunci când știi dinainte că proiectul va fi complex. Principala diferență este numărul mai mare de intrări/ieșiri (48 în Mega, 54 în Mega 2560). Există, de asemenea, mult mai multă memorie: 8 KB RAM, 4 KB EEPROM și memorie flash de 128 și 256 KB (în Mega și, respectiv, Mega 2560). De asemenea, plăcile diferă între ele în cip, viteză USB și alte caracteristici.
Desigur, există și Arduino Pro, Arduino LilyPad și multe altele. Dar deocamdată să ne concentrăm pe primele două modele. În cazul nostru, totul este destul de simplu: Mega este necesar pentru un robot cu multe picioare.
Primul cod
În primul rând, să instalăm Arduino IDE (arduino.cc) - acesta este un mediu de dezvoltare gratuit pe mai multe platforme. Acum, dacă ne conectăm Arduino, putem încerca să scriem primul cod de fapt exemplu simplu: LED-ul clipește programul. Majoritatea controlerelor Arduino o au și sunt conectate la pinul 13. Apropo, în lumea Arduino, programele se numesc de obicei schițe. Iată textul schiței cu comentarii:
// Să dăm acestui pin numele LED: const int LED = 13; void setup() ( // Inițializați pinul digital // pentru ieșire: pinMode(LED, OUTPUT); ) void loop() ( // Aplică un nivel logic // la pinul 13 (aprinde LED-ul): digitalWrite(LED) , HIGH) ; // Întrerupeți execuția schiței // pentru o secundă: delay(1000 // Aplicați un nivel logic de zero // la pinul 13 (stinge LED-ul): digitalWrite(LED, LOW); / Întrerupeți execuția schiței // pentru o secundă: delay(1000);
Acordați atenție funcțiilor de configurare și buclă. Ele trebuie să fie prezente în orice schiță Arduino. Configurarea este apelată o dată la pornire sau după ce controlerul este repornit. Dacă doriți ca codul să fie executat o singură dată, aici ar trebui să îl plasați. Cel mai adesea acestea sunt tot felul de proceduri de inițializare a ceva. Schița noastră nu face excepție: pinii digitali Arduino pot funcționa atât ca intrări, cât și ca ieșiri. În funcția de configurare spunem că pinul 13 va acționa ca ieșire digitală a controlerului.
După ce funcția de configurare își încheie activitatea, este lansată automat o buclă închisă, în cadrul căreia va fi apelată funcția de buclă. Ni se cere să scriem ce vrem să facem acolo. Și vrem să aplicăm un nivel logic (5 V) la pinul 13, adică să aprindem LED-ul, apoi să așteptăm o secundă (1000 în milisecunde), apoi să aplicăm un nivel logic zero (0 V) și să așteptăm din nou o secundă. Următorul apel la buclă va repeta totul.
Acum încărcăm schița noastră în controler. Nu, nu avem nevoie de un programator. Controlerele Arduino, pe lângă schițele noastre, conțin un program special - bootloader, care, în special, controlează încărcarea codului de pe computer. Deci, pentru a încărca schița, avem nevoie doar de un cablu USB și de elementul de meniu File → Upload (Ctrl + U) din Arduino IDE.
Întrebare cheie
De câte picioare avem de fapt nevoie? Să definim multe configurații ale roboților care merg pe jos. După numărul de picioare:
- biped - biped (prototip - om);
- patruped - patruped (prototip - majoritatea mamiferelor);
- hexapod - cu șase picioare (prototip - majoritatea insectelor);
- octopod - cu opt picioare (prototip - păianjeni, scorpioni, crabi și alte artropode).
Pe lângă numărul de picioare, este importantă și configurația fiecăruia. Caracteristica principală picioare este numărul de grade de libertate sau dimensiuni de libertate (DOF). Gradul de libertate este capacitatea de a se roti sau de a se îndoi în jurul unei axe (mai rar, de a se deplasa înainte de-a lungul ei). Evident, dacă există un singur grad de libertate, atunci nu vei merge departe pe un astfel de picior. Picioarele cu două grade de libertate (2DOF) permit deja mișcării roboților cu mai multe picioare, deși 2DOF permite doar vârfului piciorului să se miște liber într-un singur plan. Și un picior 3DOF mișcă „piciorul” în spațiul 3D (cu excepția cazului, desigur, toate cele trei axe sunt paralele). Există și picioare 4DOF, care pur și simplu măresc flexibilitatea și gama de mișcare a piciorului. Insectele au cel mai adesea picioare 4DOF.
Ce înseamnă asta pentru noi? La roboții amatori ieftini, fiecare grad de libertate este realizat de un motor, mai precis, un servomotor sau serv. Configurația picioarelor determină în mod unic de câte dintre aceste servo-uri sunt necesare. Așadar, un hexapod 3DOF va necesita 18 servo, iar un păianjen 4DOF va necesita 32. Nu vă alarmați de cantitatea, servo mici folosite la amatori. modele controlate radio, foarte ieftin. Le puteți găsi în magazinele online căutând micro servo.
Pentru a programa servo, este suficient să știți că au deja un controler care face munca principală. Și tot ce aveți nevoie este să furnizați energie și semnal digital, spunând controlerului în ce poziție vrem să rotim arborele de antrenare. Informațiile despre designul lor sunt ușor de găsit. Protocolul lor este cel mai simplu dintre toate protocoalele de comunicare digitală: modularea lățimii impulsului - PWM (PWM în engleză). Toate servomotoarele simple au un conector cu trei pini: masă, +5 V (tensiunea poate varia în funcție de dimensiune și putere) și intrare de semnal. Controlerele Arduino pot genera acest semnal în două moduri diferite. Primul este PWM hardware, pe care cipul însuși îl poate scoate pe mai mulți dintre pinii săi I/O digitale. Al doilea este software-ul. Software-ul vă permite să primiți simultan mai multe semnale PWM diferite decât hardware-ul. Este furnizat un înveliș convenabil pentru acesta sub Arduino - biblioteca Servo. Vă permite să utilizați 12 servo-uri simultan pe majoritatea controlerelor de dimensiuni mici (Uno, Due, Nano) și 48 de servo-uri pe Arduino Mega și altele asemenea. Pinul de semnal servo este conectat la pinul digital Arduino. Pământ și putere - evident la pământ și putere, acestea pot fi comune tuturor serviciilor. În buclele servo cu trei fire, negru sau maro este împământat, în mijloc este de obicei roșu +5 V, iar în final alb sau galben este semnal. Din punct de vedere software, controlul este extrem de simplu:
Servo myservo; // Servo pe pinul 9 al Arduino myservo.attach(9); // Rotire la 90º myservo.write(90);
Majoritatea servomotoarelor pot roti arborele cu 180°, iar pentru ele 90° este poziția medie. Pentru a simplifica conectarea servo-urilor la placa Arduino, există o serie de soluții. Cel mai canonic este Sensors Shield. Instalându-l pe Uno și furnizând putere la bornele servo-urilor, puteți conecta conectorii acestora direct la acesta.
Baterie
O altă problemă importantă este alimentația. Dacă aveți o placă avansată care vă permite să alimentați întregul sistem printr-o singură linie de alimentare (și servomotoarele nu vor interfera cu funcționarea controlerului), atunci vă puteți descurca cu o singură sursă. Alegerea este uriașă, cele mai bune, desigur, sunt brichetele Li-Ion/Li-Po pentru modelele radio. Dar au nevoie și de corespunzătoare dispozitiv de încărcare. Dacă aveți un controler mai simplu (Uno/Due/Nano), atunci îl puteți alimenta separat, de exemplu, cu o „Krona” de 9 volți și conectați servomotoarele la bateria principală puternică. În acest fel servo-urile vor avea cu siguranță suficientă putere. Când baterii cu litiu trebuie să monitorizați tensiunea și mai atent decât de obicei, astfel încât să nu existe supradescărcare (tensiunile permise trebuie clarificate pentru un anumit tip de baterie). În acest scop, robotul Sleipnir, despre care vom discuta în continuare, are atașat și un mic voltmetru digital.
Gândacul robot de făcut-o singur
Kit
- Controler Arduino Uno: 1150 de ruble.
- Trei servomotoare. Am folosit HXT500, 200 rub. o bucată
- Compartiment baterie pentru Krona cu comutator: 50 de ruble.
- Bateria „Krona”: 145 de ruble.
- Receptor IR: 90 de frecări.
- Sârmă de oțel cu un diametru de aproximativ 1,5 mm. De exemplu, am folosit un tel spart pentru a bate ouăle
Total: 2035 rub.
DmitryDzz: Vreau să vă invit să faceți un mic bug robotizat cu șase picioare, controlat de la distanță, bazat pe controlerul Arduino Uno. Picioarele vor avea un grad de libertate, iar controlul va avea loc folosind o telecomandă obișnuită a televizorului.
Trebuie să spun că acestea sunt prețurile magazinelor scumpe din Moscova. În magazinele online chinezești, toate acestea vor costa jumătate mai mult. Se numără livrarea. Adevărat, va trebui să așteptați, din experiența mea, de la două săptămâni la trei luni.
O modalitate mai ușoară este să luați un set de constructori, deoarece în primii pași un controler nu va fi suficient. Acum multe magazine oferă astfel de seturi. De exemplu, există un minunat magazin online „Amperka”. Aici vi se vor oferi mai multe seturi de construcție similare, care diferă ca conținut și, desigur, preț. Cel mai simplu a fost suficient pentru mine - „Matryoshka X”. Include un controler Arduino Uno, un cablu USB pentru conectarea la un computer, o placă de prototipare (un lucru de neînlocuit!), un set de jumperi, LED-uri, rezistențe și alte obiecte mici.
În același magazin există o secțiune „Wiki”, unde veți găsi chiar și tutoriale video scurte minunate traduse în rusă. Asigurați-vă că le verificați. Și, desigur, există un forum unde probabil vor încerca să te ajute.
De ce instrumente veți avea nevoie:
- fier de lipit și tot ce aveți nevoie pentru lipit. Nu va trebui să lipiți mult și nu veți avea nevoie de nicio abilitate specială;
- pistol de lipici fierbinte și tije pentru acesta;
- clești pentru lucrul cu sârmă.
Dacă ai adunat totul, să începem!
Control
Să trecem la primul pas: trebuie să învățăm cum să interacționăm cu telecomanda și să aflăm codurile pentru apăsarea unora dintre butoanele acesteia. Aceste coduri vor fi mai târziu utile pentru schița de control al robotului.
În această etapă veți avea nevoie și de un receptor IR și ar fi bine să aveți o placă de prototipare. Marea majoritate a telecomenzilor IR operează la frecvențe purtătoare de 36 kHz, 38 kHz sau 40 kHz (Panasonic, Sony). Excepție fac telecomenzile de la Sharp (56 kHz), Bang & Olufsen (455 kHz) și poate cineva și mai exotic. Prin urmare, orice receptor IR la 36, 38 sau 40 kHz este destul de potrivit pentru noi. Este posibil ca frecvența să nu se potrivească exact cu frecvența purtătoare a semnalului. În acest caz, sensibilitatea receptorului va scădea, dar în practică nu am observat niciun disconfort folosind receptorul IR TSOP2136 (36 kHz - ultimele două cifre sunt frecvența) și telecomanda Sony (40 kHz).
Deci, receptoarele IR TSOP21xx, TSOP22xx, TSOP312xx sunt potrivite pentru majoritatea telecomenzilor. Ultimele două cifre pot fi 36, 37, 38 sau 40. Înainte de a porni receptorul IR, verificați cablarea contactelor acestuia - sunt doar trei: +5V (putere), GND (masă), Vs (ieșire). Să asamblam circuitul ca în ilustrație (cablare pentru TSOP2136).
După cum puteți vedea, am conectat ieșirea receptorului IR la intrarea analogică a controlerului A0.
Iată cum arată codul de schiță:
#include "IRremote.h" // Intrarea analogică a controlerului, // la care este conectat receptorul IR: const int IR_PIN = A0; // Creați un obiect receptor IR: IRrecv irrecv(IR_PIN); void setup() ( Serial.begin(9600); Serial.println("gata"); // Începeți să ascultați semnalele IR: irrecv.enableIRIn(); ) void loop() ( // Descrieți structura rezultatelor, // în care // primite și decodate // vor fi plasate comenzi IR: rezultate decode_results // Dacă comanda IR este primită și // decodificată cu succes, atunci // scoate codul primit în portul // serial al controlerului: dacă; (irrecv.decode (&rezultate)) ( Serial.println(results.value); irrecv.resume(); ) )
Schița folosește o bibliotecă specială IRremote.h, care decodifică semnalele de la o varietate de telecomenzi IR. Această bibliotecă este proiect deschis, îl puteți descărca de pe pagina https://github.com/shirriff/Arduino-IRremote. Și pentru a-l conecta la proiectul nostru, trebuie să parcurgem trei pași:
- copiați directorul bibliotecii în directorul biblioteci, care, la rândul său, se află în directorul de instalare Arduino IDE;
- reporniți IDE;
- adăugați linia #include „IRremote.h” la începutul schiței noastre.
Acum schița va avea disponibile funcții de decodare a semnalului IR. Dar pentru a vedea codurile primite, vom folosi și obiectul Serial. Cu ajutorul acestuia, vom transfera coduri pe computer prin portul serial (același cablu USB). În funcția de configurare inițializam obiectul Serial. „9600” este 9600 baud - viteza care va fi folosită pentru transmiterea datelor. După inițializare, putem scrie pe portul serial folosind funcția println. Pentru a vedea rezultatul acestei ieșiri pe computerul dvs. în Arduino IDE, selectați elementul de meniu Instrumente → Monitor serial (Ctrl + Shift + M). Doar asigurați-vă că este setat la 9600 baud.
Deci, controlerul primește energie printr-un cablu USB și transmite date prin intermediul acestuia. Încărcați schița, lansați Serial Monitor și începeți să apăsați butoanele telecomenzii. Codurile ar trebui să apară în fereastra Monitor serial. Protocoalele de telecomandă diferă, uneori poate fi un cod, alteori mai multe. În orice caz, puteți selecta oricând coduri unice pentru fiecare buton al telecomenzii.
Avem nevoie de 13 butoane de telecomandă. Am folosit următoarele:
- 1 - viraj lină la stânga;
- 2 - mișcare înainte;
- 3 - viraj lină la dreapta;
- 4 - virați la stânga pe loc;
- 5 - oprire;
- 6 - virați la dreapta pe loc;
- 7 - deplasarea înapoi cu viraj la dreapta;
- 8 - mișcare înapoi;
- 9 - deplasarea înapoi cu viraj la stânga;
- buton albastru - foarte lent;
- galben - lent;
- verde - rapid;
- roșu - foarte rapid.
Notați codurile acestor butoane, acestea vor fi necesare ulterior pentru schița de control al robotului.
Algoritm de mișcare
Schița de control al robotului este disponibilă pe pagina proiectului nostru (bit.ly/1dEwNDC). Nu uitați să schimbați valorile constantelor pentru codurile butoanelor apăsate de pe telecomandă cu codurile telecomenzii dvs. (constantele IR_COMMAND_XXX_CODES din fișierul ir_command_codes.h).
Nu ne vom uita la schiță în detaliu, cred că comentariile din cod sunt suficiente, dar o întrebare merită totuși luată în considerare.
Mișcările insectelor sunt foarte interesante. Și deși toți acești gândaci sunt foarte aproape de a cădea la pământ, din anumite motive sunt întotdeauna stabili: la un moment dat, cel puțin trei picioare (două pe o parte și unul pe cealaltă) stau la suprafață. Și în timp ce aceste picioare trag gândacul spre o țintă, celelalte trei sunt trase în sus pentru a repeta această mișcare. Sarcina noastră este să facem ceva similar.
Bug-ul nostru robot are trei servomotoare dispuse într-un rând perpendicular pe mișcare. Pentru servomotoarele din stânga și din dreapta, axa arborelui este îndreptată în sus, iar pentru servomotorul central este îndreptată înainte. Sarcina, de exemplu, a servomotorului din stânga este să pompeze două picioare simultan: partea stângă față și stânga spate. Apropo, sunt conectate rigid între ele și lipite de balansoarul acestui servo. Sarcina servo-ului central este de a ridica fie partea stângă a gândacului, fie partea dreaptă. Prin urmare, picioarele centrale stânga și dreapta, care sunt o singură piesă în formă de U, sunt atașate la balansierul acestui motor.
Schița ar trebui să asigure că robotul se mișcă înainte, înapoi, viraje netede în mișcare și se rotește pe loc. De asemenea, aș dori să controlez viteza gândacului. Pentru a descrie aceste mișcări în mod programatic, vom avea nevoie de matematică. Uită-te la diagramă.
Cercurile albastre indică picioarele gândacului robot care stau la suprafață, iar cercurile albe indică cele din aer. Vă rugăm să rețineți că atunci când vă deplasați înainte sau înapoi, servomotoarele stânga și dreapta trebuie să se miște exact la fel. Și când se rotesc pe loc, motoarele ar trebui să se rotească în direcții diferite (simetric). Un alt lucru interesant este că mișcarea înainte și înapoi diferă doar în faza servomotorului central.
Deci, cum este implementat acest lucru? Ne amintim că controlerul apelează în mod constant funcția buclă. Aceasta înseamnă că în această funcție trebuie să plasăm un cod care determină poziția curentă a servo-urilor și le setează în această poziție. Fiecare servomotor trebuie să efectueze mișcări oscilatorii. Putem calcula poziția servomotorului la momentul t folosind următoarea formulă:
X = A sin(2πt/T),
unde X este poziția dorită a servomotorului, A este amplitudinea oscilației, T este perioada de oscilație.
Deci, în funcție de momentul de timp t, vom obține o modificare a valorii lui X în intervalul de la –A la +A. Servomotoarele pot fi poziționate de la 0 la 180°. Prin urmare, este mai bine pentru noi să oscilam în jurul poziției „zero” de 90°. Și dacă dorim să oferim oscilații cu o perioadă de 1 s în jurul unei poziții de 90° cu o amplitudine de 30°, atunci formula se transformă în următoarea formă:
X = 90 + 30 sin(2πt/1000),
unde t este timpul în milisecunde care a trecut de la începutul oscilațiilor. Pentru a controla viteza gândacului robot, putem schimba perioada de oscilații. Cu cât este mai mare, cu atât viteza este mai mică.
Acum să revenim încă o dată la diagrama noastră, deoarece formula scrisă mai sus nu este încă finalizată. Cum se asigură fie mișcarea sincronă, fie contra-miscarea servomotoarelor din stânga și din dreapta? Cum se schimbă faza servomotorului central? Trebuie să adăugăm faza de oscilație la formula noastră. Schimbarea argumentului sinusului cu o sumă π pentru, de exemplu, motorul din dreapta îl va face să funcționeze în antifază spre cel din stânga, adică modul în care avem nevoie de el pentru a se întoarce pe loc. Iată cum va arăta acum formula noastră:
X = 90 + 30 sin(2πt/1000 + Φ),
unde Φ este faza de oscilație, valoarea este de la 0 la 2π.
Priviți tabelul pentru a înțelege care ar trebui să fie fazele de oscilație pentru servomotoare pentru fiecare tip de mișcare.
Asamblare
Acum să asamblam robotul pe o placă de prototip și să încărcăm schița de control.
Acesta este un pas foarte important înainte de asamblare. Încercați să deconectați cablul USB și să alimentați placa cu ajutorul unei baterii Krona. Verificați toate fazele de mișcare și asigurați-vă că totul funcționează. După asamblarea robotului, schimbarea a ceva (de exemplu, înlocuirea unui servomotor care nu funcționează) va fi mai dificilă.
Acum să trecem la asamblarea în sine. Elementul portant principal este compartimentul bateriei. Recomand folosirea compartimentului tip închisși întotdeauna cu un comutator.
Cel mai simplu mod de a asigura piesele gândacului este cu lipici fierbinte. Începeți cu servomotoare. Îndepărtați urechile de fixare inutile și conectați mașinile între ele. Apoi lipiți acest ansamblu de trei „serva” de capacul compartimentului bateriei. Nu uitați că compartimentul bateriei trebuie să se deschidă liber pentru a schimba bateria.
Cel mai simplu mod este să lipiți controlerul de compartiment, dar nu prea îmi place această opțiune, deoarece va trebui să dau Arduino Uno bug-ului pentru totdeauna. Prin urmare, vă puteți complica viața și utilizați conectori Arduino pentru a atașa compartimentul bateriei. Pe partea inferioară a compartimentului, lipiți un conector cu pini cu un pas între pini de 2,54 mm. Ar trebui să fie poziționat astfel încât să se potrivească în priza controlerului în zona pinii digitali 8-11. Oricum nu vom avea nevoie de ele încă. Dacă nu aveți un conector la îndemână, o agrafă în formă de U va fi potrivită.
Firele care provin din compartimentul bateriei trebuie conectate la pinii Vin și la GND adiacent. Nu amestecați polaritatea! Plus „Crowns” pe Vin, minus pe GND. Pentru a asigura un contact fiabil al firelor cu conectorii Arduino, pur și simplu puteți cosi vârful firului mai gros, dar am folosit o bucată scurtă de agrafă ca mufă. Și am acoperit zona de lipit cu tub termocontractabil.
Conectorii de la cablurile servomotor trebuie tăiați, firele de alimentare (+5 V - de obicei roșu și GND - negru sau maro) trebuie combinate și direcționate către prizele de 5V și GND adiacent de pe controler. Ne conectăm puțin mai târziu. Firele de semnal de control (de obicei galbene) sunt conectate la ieșirile digitale ale controlerului: servomotorul stâng la pinul 2, cel central la pinul 4, cel din dreapta la pinul 7.
„+” și „–” ale receptorului IR pot fi pur și simplu conectate la conectorul Arduino (5V și GND adiacent). Adevărat, îndoindu-le în jumătate, dublându-le grosimea. Lipim firele de alimentare conectate anterior ale servomotoarelor la aceleași picioare de putere ale receptorului IR. Este puțin probabil ca ieșirea semnalului receptorului IR să ajungă la intrarea analogică a controlerului A0 și va trebui să o măriți cu un fir.
Câteva sfaturi pentru a face picioare. Pregătiți mai întâi picioarele stânga și dreapta „față-spate”. Asigurați-vă că sunt simetrice (atenție atât la lungimi, cât și la unghiurile de îndoire). Începeți să lipiți picioarele numai după ce v-ați asigurat că servo-urile sunt setate în poziția „zero” (90°).
Este mai bine să instalați ultima pereche de picioare din mijloc. Vă sfătuiesc să faceți mai întâi picioarele din mijloc mai lungi, apoi după instalare, să le tăiați lungimea necesară. În poziția „zero”, toate cele șase picioare ar trebui să fie la suprafață. Oscilația picioarelor mijlocii cu o amplitudine de 15° nu ar trebui să interfereze cu virajele „antero-posterioare”.
Ce urmeaza?
Robozhuk este o platformă mobilă gata făcută, bazată pe unul dintre cele mai populare și mai accesibile controlere. Proiectul este deschis: https://github.com/beetle-ringo/arduino. Faceți o furcă (ramură) în GitHub și adăugați propria dvs. funcționalitate. Dă frâu liber imaginației tale - adaugă un LED IR și robotul este pregătit pentru lupta cu robotul. Conectați telemetru, senzori tactili, un giroscop... Învățați robotul să evite obstacolele sau să meargă de-a lungul unei linii, încercați să instalați o cameră web pe el. Pot exista un milion de idei și o poți alege oricând pe cea mai interesantă.
Robot Sleipnir
Kit
- Controler robot Arduino Uno Dagu Spider: 2530 de rub.
- Servoacționări SG90 9g (16 bucăți) 1150 rub.
- Baterie Pachet acumulator LiPo, 7,4 V, 1800 mAh RUR 490
- Modul radio Transceiver Bluetooth RF cu 4 pini RUR 270
- Indicator de tensiune (opțional) DC 3,3–30 V Contor de panou LED roșu RUR 100
- Coltar din aluminiu. Pe cea mai apropiată piață de construcții 135 de ruble.
- Suruburi si piulite. La cea mai apropiată piață de vechituri 35 de ruble.
Total: 4710 rub.
*Componentele au fost achiziționate de la timp diferit, iar multe poziții pot fi optimizate
poconoco: Să încercăm să asamblam o configurație non-standard - un robot 2DOF cu opt picioare. Picioarele 2DOF sunt mult mai ușor de programat și am o grămadă de servo-uri nefolosite în jur. Și cel mai important, va fi posibil să-l denumim în cinstea calului cu opt picioare al zeului Odin, Sleipnir (a visat mereu la el!).
Sleipnir-ul nostru va avea patru picioare pe fiecare parte cu două articulații. Fiecare articulație este un servomotor, ceea ce înseamnă opt servo-uri pe fiecare parte. Pentru simplitate, toate cele opt articulații de pe o parte a calului se vor roti în același plan. Deși acest lucru nu este deloc necesar. Mai mult decât atât, dacă picioarele de pe o parte sunt ușor „tablă de șah”, astfel încât două picioare adiacente să nu se atingă, acest lucru va fi și mai bine, vă va permite să faceți un pas mai larg și să galopați.
O soluție îngrijită și funcțională, dar departe de a fi cea mai ieftină, este utilizarea unei plăci de control personalizată optimizată pentru conectarea unui număr mare de servo-uri. Am dat peste controlerul robot Dagu Spider - acesta este același Arduino Mega, dar pe o placă cu conectori pini cu 3 pini pre-lipiți, unde puteți conecta imediat acele 48 de servo fără scuturi. Ideal pentru roboții cu mai multe picioare pe Arduino.
Control
Vom fi controlați prin Bluetooth. Există diverse soluții hardware pentru aceasta. Acestea sunt scuturi și carduri separate cu o interfață serială UART (ca un port COM obișnuit, doar cu niveluri de semnal de 5 V). Mi s-a părut că cel mai mic card cu interfață UART era cel mai practic. Se conectează la pinii corespunzătoare UART/Serial ai portului Arduino. Să remarcăm două nuanțe: pe Uno/Due/Nano și altele similare există un singur astfel de port și este folosit și pentru firmware prin USB. Prin urmare, poate fi necesar să opriți modulul Bluetooth în timpul actualizării firmware-ului. Și a doua nuanță - nu uitați că pinul RX al modulului este conectat la pinul TX al Arduino și TX la RX. Astfel de lucruri se întâmplă în UART.
Programarea Bluetooth nu este mai complicată decât datele pot fi citite octet cu octet, ceea ce vom folosi:
Char cmd; Serial.begin(9600); if (Serial.available()) cmd = Serial.read();
Dacă se folosește Arduino Mega și Bluetooth este conectat la al doilea port, atunci Serial1 este scris în loc de Serial. Este de remarcat faptul că nu trebuie să utilizați Bluetooth, ci să controlați robotul direct prin USB. Și nimic nu se va schimba în codul de mai sus! Acest lucru funcționează doar cu un port serial și dacă există un transmițător BT sau un convertor serial USB suspendat, nu este important pentru noi.
Cealaltă parte a Bluetooth
Cea mai convenabilă modalitate de conectare este prin utilitățile standard Linux. Pentru a funcționa, vom avea nevoie de utilitățile sdptool, rfcomm (parte a pachetului bluez din depozitele Ubuntu), precum și de minicom (așa se numește pachetul). Instrucțiunile pentru lucrul cu aceste utilitare pot fi găsite pe Internet.
Algoritm de mișcare
Pentru un hexapod, mersul cel mai simplu ar fi acesta: picioarele sunt împărțite în două grupuri de trei picioare, iar unul dintre grupuri este complet pe pământ, celălalt este în aer, rearanjat înainte. Acesta este departe de a fi singurul mers posibil. Poți ține doar două labe în aer, sau chiar una, iar celelalte patru sau cinci pe pământ. Există, de asemenea, multe mersuri pentru un octapod. O vom lua pe cea mai simplă, tot cu două grupe de patru picioare.
Deci, ce trebuie să facem pentru a lucra cu 16 servo-uri și un mers selectat? Răspunsul corect este să citiți despre cinematica inversă (IR). Lungimea articolului nu ne permite să ne extindem pe scară largă asupra subiectului, dar există o mulțime de material pe Internet. Pe scurt, IR rezolvă problema găsirii semnalelor de control necesare astfel încât sistemul din spațiu să ocupe poziția dorită. Pentru picior, aceasta înseamnă că pe baza coordonatele punctului în care piciorul ar trebui să lovească, ar trebui determinate unghiurile servo-urilor care trebuie setate pentru aceasta. Și controlând coordonatele picioarelor, puteți controla poziția corpului. Avem picioare 2DOF, axele sunt paralele, deci piciorul se mișcă întotdeauna în același plan. Problema IR în acest caz este redusă la spațiu 2D, ceea ce o simplifică foarte mult.
Fie originea locală a coordonatelor O pentru fiecare picior să fie arborele servo-ului superior, adică șoldurile. Și avem coordonatele punctului A unde piciorul trebuie să lovească. Apoi, este ușor de observat că trebuie să rezolvați problema găsirii punctelor de intersecție a două cercuri (vezi diagrama picioarelor unei laturi, aceasta este ilustrată pe piciorul din dreapta). După ce am găsit punctul de intersecție B al cercurilor (alegând oricare dintre ele), este ușor să calculați unghiurile necesare folosind conversia din coordonatele carteziene în cele polare. În cod, soluția la această problemă arată astfel:
Float A = -2 * x; float B = -2 * y; float C = sqr(x) + sqr(y) + sqr(HipLength) - sqr(shinLength); float X0 = -A * C / (sqr(A) + sqr(B)); float Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(hipLength) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt(sqr(D) / (sqr(A) + sqr(B))); float ax, ay, bx, by; ax = X0 + B * mult; bx = X0 - B * mult; ay = Y0 - A * mult; prin = Y0 + A * mult; // sau bx pentru alt punct de intersecție float jointLocalX = ax; // sau prin pentru alt punct de intersecție float jointLocalY = ay; float hipPrimaryAngle = polarAngle(jointLocalX, jointLocalY); float hipAngle = hipPrimaryAngle - hipStartAngle; float shinPrimaryAngle = polarAngle (x - jointLocalX, y - jointLocalY); float shinAngle = (shinPrimaryAngle - hipAngle) - shinStartAngle;
unde x și y sunt coordonatele punctului unde trebuie să ajungeți cu piciorul; hipStartAngle - unghiul la care „șoldul” este rotit inițial (cu servo-ul în poziția de mijloc), în mod similar - shinStartAngle. Apropo, în aceste calcule unghiurile sunt în mod evident în radiani, dar trebuie să fie transferate la obiectele Servo în grade. Codul complet de firmware funcțional, inclusiv această piesă, este postat pe GitHub, vezi linkul de la sfârșitul articolului. Aceasta este o bucată de IR, dar în afară de aceasta aveți nevoie de un cod mai puțin mai simplu pentru a utiliza acest IR pe toate picioarele (vezi funcțiile legsReachTo(), legWrite()). Veți avea nevoie, de asemenea, de cod care implementează de fapt mersul - deplasarea unui set de picioare „înapoi” (deci robotul se mișcă înainte), în timp ce celălalt set de picioare este ridicat și mutat înainte pentru pasul următor, consultați funcția stepForward(). Este nevoie de un pas cu parametrii dați. Cu acești parametri, apropo, puteți face un pas înapoi, în ciuda numelui funcției. Dacă această funcție este apelată într-o buclă, robotul va face un pas înainte.
Acum primim comenzi și le interpretez. Să adăugăm o stare la program:
Stare Enum ( STOP, FORWARD, BACKWARD, FORWARD_RIGHT, FORWARD_LEFT );
Și în bucla principală de execuție loop() ne vom uita la starea curentă (variabila de stare) și vom trage stepForward() dacă ne mișcăm înainte (cu sau fără rotație), și din nou stepForward(), dar cu un argument negativ xamp, dacă trebuie să mergem înapoi. Virajele vor fi gestionate în legWrite(), iar pentru o viraj la dreapta picioarele din partea dreaptă vor sta nemișcate (în timp ce cele din stânga sunt rânduite). Iată un astfel de tanc de cai. Brutal, dar foarte simplu și funcționează. Rotirea lină se poate face numai cu picioare 3DOF, un exemplu în acest sens poate fi văzut în depozitul buggybug.
Comutare (stare) (case FORWARD: case FORWARD_RIGHT: case FORWARD_LEFT: pas înainte(h, dh, xamp, xshift); pauză; case BACKWARD: pas înainte (h, dh, - xamp, xshift); pauză; )
Comanda Char; while (Serial1.available()) comanda = Serial1.read(); comutați (comandă) (case „w”: stare = FORWARD; pauză; case „s”: stare = BACKWARD; break; case „d”: stare = FORWARD_RIGHT; break; case „a”: stare = FORWARD_LEFT; pauză; implicit : stare = STOP;
Aici s-au terminat punctele principale ale firmware-ului, restul sunt tot felul de lucruri mărunte. Deși probabil mai există unul punct important- capacitatea de reglare fină a servomotoarelor. Chiar și cu cea mai atentă asamblare, dacă comandați tuturor servo-ului să se rotească cu 90°, unele dintre ele vor ajunge totuși cu un unghi ușor deplasat. Prin urmare, avem nevoie de capacitatea de a o ajusta. Cum am făcut acest lucru poate fi văzut în metodele hipsWrite() și shinsWrite() și în matricele de reglare fină hipsTune și shinsTune.
Asamblare
Pentru astfel de modele, nu aveți nevoie de nimic special: o foaie de plexiglas de grosimea potrivită (de la cea mai apropiată piață de vechituri) și un ferăstrău sau un ferăstrău pentru tăierea pieselor vor fi potrivite. Și, desigur, un burghiu pentru a găuri. În loc de plexiglas, puteți folosi placaj (apoi puteți face și o inscripție memorabilă folosind un arzător pe structura finală). De asemenea, puteți folosi foi sau colțuri din aluminiu. Cu Sleipnir am mers exact pe calea folosirii unui colt de aluminiu cu nervuri de 1 cm (cumparat de undeva intr-un supermarket de constructii).
Baza va fi un cadru dreptunghiular. Membre - dungi de 4 centimetri. De asemenea, merită să faceți aprovizionare cu o mulțime de șuruburi și piulițe mici. Tăiem colțul în bucățile necesare, tăiem caneluri pentru servo și găurim pentru șuruburile și șuruburile de montare. Este mai bine să arăți designul decât să-l descrii. Dimensiunile pot fi orice, roboții trebuie să fie variați. Dar rețineți: cu cât picioarele sunt mai lungi, cu atât va trebui să împingă pârghia servo și cu atât va avea mai multă sarcină. Până la punctul de a nu se putea întoarce și chiar de a se rupe. Dar 4-5 cm nu este o problemă.
Pentru roboții ușori de buget, deseori nu se deranjează cu o articulație articulată separată pentru membre, iar întreaga sarcină cade în întregime pe arborele de antrenare servo. Având în vedere greutatea redusă, acest lucru nu este deloc critic. Și cu o greutate mai mare, ar trebui să te gândești la servo-uri cu roți dințate metalice și lagăr cu bile.
Fiecare servo vine de obicei cu câteva șuruburi și un set de atașamente care pot fi înșurubate pe arbore pentru aplicatii diverse. Cea mai bună alegere a noastră este un singur „claxon” (sau claxon), care vă permite să atașați o bară la servo. Deci, axele a două servo-uri sunt atașate la o bară, iar bara devine un „șold”. În acest caz, un servo este atașat de corp, iar celălalt devine parte a piciorului inferior. Merită să-i atașați o altă bară, doar pentru a o prelungi sau a face membrul mai interesant. Un pic de muncă minuțioasă - și platforma este gata (seturi convenabile de șurubelnițe, chei, pensete, tăietori de sârmă etc. accelerează foarte mult procesul).
Ce urmeaza?
Întregul proiect este disponibil la https://github.com/poconoco/sleipnir. Am descris una dintre cele mai nepractice configurații - o mulțime de picioare 2DOF, înalte, înguste, ușor de căzut pe o parte. Încercați să faceți un robot mai bun cu picioare 3DOF. Cu picioare 4DOF. Cu gheare sau fălci. Ca exemplu de cinematică inversă 3DOF, vă puteți referi la depozitul buggybug - firmware-ul hexapod este acolo. De asemenea, puteți crea roboți inteligenți, mai degrabă decât cei controlați, instalând senzori de distanță în loc de Bluetooth și învățați robotul să evite pereții și obstacolele. Dacă puneți un astfel de senzor pe un servomotor și îl rotiți, puteți scana zona, aproape cu un sonar.