Experiență în crearea primului robot pe Arduino (robot „vânător”)

Alo

În acest articol vreau să descriu procesul de asamblare a primului meu robot folosind Arduino. Materialul va fi util altor începători ca mine, care doresc să facă un fel de „cărucior care rulează singur”. Articolul este o descriere a etapelor de lucru cu completările mele pe diferite nuanțe. Un link către codul final (cel mai probabil nu cel mai ideal) este dat la sfârșitul articolului.

Experiență în crearea primului robot pe Arduino (robot „vânător”)

Ori de câte ori a fost posibil, l-am implicat pe fiul meu (8 ani) în participare. Ce a funcționat exact cu el și ce nu - am dedicat o parte a articolului acestui lucru, poate că va fi util cuiva.

Descrierea generală a robotului

Mai întâi, câteva cuvinte despre robotul în sine (idee). Nu am vrut să asamblez ceva standard la început. În același timp, setul de componente a fost destul de standard - șasiu, motoare, senzor ultrasonic, senzor de linie, LED-uri, tweeter. Inițial, din acest „set de supă” a fost inventat un robot care îi păzește teritoriul. El conduce către infractorul care a depășit linia cercului și apoi se întoarce în centru. Cu toate acestea, această versiune necesita o linie trasă, plus matematică suplimentară pentru a rămâne în cerc în orice moment.

Prin urmare, după câteva gânduri, am schimbat oarecum ideea și am decis să fac un robot „vânător”. La început, se întoarce în jurul axei sale, alegând o țintă (persoană) din apropiere. Dacă „prada” este detectată, „vânătorul” aprinde luminile intermitente și sirena și începe să conducă spre ea. Când persoana se îndepărtează/fuge, robotul selectează o nouă țintă și o urmărește și așa mai departe. Un astfel de robot nu are nevoie de un cerc limitat și poate funcționa în zone deschise.

După cum puteți vedea, acesta seamănă mult cu un joc de recuperare din urmă. Deși în cele din urmă robotul nu s-a dovedit a fi suficient de rapid, interacționează sincer cu oamenii din jur. Copiilor le place mai ales (uneori, totuși, se pare că sunt pe cale să o calce, inima le sare o bătaie...). Cred că aceasta este o soluție bună pentru popularizarea designului tehnic.

Structura robotului

Deci, ne-am hotărât asupra ideii, să trecem la aspect. Lista de elemente este formată din ceea ce ar trebui să poată face robotul. Totul aici este destul de evident, așa că să ne uităm imediat la numerotare:

Experiență în crearea primului robot pe Arduino (robot „vânător”)

„Creierele” robotului sunt o placă arduino uno (1); era într-un set comandat din China. Pentru scopurile noastre, este suficient (ne concentrăm pe numărul de pini folosiți). Din același kit am luat un șasiu gata făcut (2), pe care sunt atașate două roți motrice (3) și una din spate (rotind liber) (4). Setul a inclus și un compartiment gata pentru baterie (5). În fața robotului există un senzor cu ultrasunete (HC-SR04) (6), în spate este un driver de motor (L298N) (7), în centru este un intermitent LED (8), iar puțin pentru partea laterală este un tweeter (9).

În etapa de layout ne uităm la:

- ca să se potrivească totul
- sa fie echilibrat
- să fie plasat raţional

Colegii noștri chinezi au făcut deja parțial acest lucru pentru noi. Deci, compartimentul greu al bateriei este plasat în centru, iar roțile motoare sunt situate aproximativ sub el. Toate celelalte plăci sunt ușoare și pot fi plasate la periferie.

nuanțe:

  1. Șasiul din kit are o mulțime de găuri din fabrică, dar încă nu mi-am dat seama care este logica în ele. Motoarele și acumulatorul au fost asigurate fără probleme, apoi „ajustarea” a început cu găuri noi pentru a securiza cutare sau cutare placă.
  2. Rafturile din alamă și alte elemente de fixare din zonele de depozitare au fost de mare ajutor (uneori trebuia să le scoatem).
  3. Am trecut barele colectoare de la fiecare placă prin cleme (din nou, le-am găsit în depozit). Foarte convenabil, toate firele stau frumos și nu atârnă.

Blocuri individuale

Acum voi trece prin blocuri și vă voi spune personal despre fiecare.

compartiment pentru baterie

Este clar că robotul trebuie să aibă o sursă bună de energie. Opțiunile pot varia, am ales varianta cu 4 baterii AA. În total dau aproximativ 5 V, iar această tensiune poate fi aplicată direct pinului de 5V al plăcii arduino (ocolind stabilizatorul).

Desigur, am avut o oarecare prudență, dar această soluție este destul de viabilă.

Deoarece este nevoie de putere peste tot, pentru comoditate am făcut doi conectori în centrul robotului: unul „distribuie” pământul (pe dreapta) și al doilea - 5 V (pe stânga).

Experiență în crearea primului robot pe Arduino (robot „vânător”)

Motoare și șofer

În primul rând, despre montarea motoarelor. Montura este fabricată din fabrică, dar realizată cu toleranțe mari. Cu alte cuvinte, motoarele se pot clătina câțiva milimetri în stânga și în dreapta. Pentru sarcina noastră, acest lucru nu este critic, dar în unele locuri poate avea un efect (robotul va începe să se miște în lateral). Pentru orice eventualitate, am pus motoarele strict paralele și le-am fixat cu lipici.

Experiență în crearea primului robot pe Arduino (robot „vânător”)

Pentru a controla motoarele, așa cum am scris mai sus, se folosește driverul L298N. Conform documentației, are trei știfturi pentru fiecare motor: unul pentru schimbarea vitezei și o pereche de știfturi pentru sensul de rotație. Există un punct important aici. Se pare că, dacă tensiunea de alimentare este de 5 V, atunci controlul vitezei pur și simplu nu funcționează! Adică, fie nu se întoarce deloc, fie se întoarce la maxim. Aceasta este caracteristica care m-a făcut să „ucid” câteva seri. Până la urmă, am găsit o mențiune undeva pe unul dintre forumuri.

În general, aveam nevoie de o viteză mică de rotație la întoarcerea robotului - astfel încât să aibă timp să scaneze spațiul. Dar, din moment ce nu a venit nimic din această idee, a trebuit să o fac altfel: o mică întoarcere - stop - întoarcere - oprire etc. Din nou, nu atât de elegant, dar funcțional.

De asemenea, voi adăuga aici că după fiecare urmărire robotul alege o direcție aleatorie pentru o nouă viraj (în sensul acelor de ceasornic sau în sens invers acelor de ceasornic).

Senzor cu ultrasunete

Experiență în crearea primului robot pe Arduino (robot „vânător”)

O altă piesă hardware în care a trebuit să căutăm o soluție de compromis. Senzorul cu ultrasunete produce numere instabile pe obstacole reale. De fapt, asta era de așteptat. În mod ideal, funcționează undeva în competiții unde există suprafețe netede, uniforme și perpendiculare, dar dacă picioarele cuiva „fulgerează” în fața lui, trebuie introdusă o procesare suplimentară.

Ca atare procesare am stabilit filtru median pentru trei capete de acuzare. Pe baza testelor pe copii reali (niciun copil nu a fost rănit în timpul testelor!), s-a dovedit a fi destul de suficient pentru a normaliza datele. Fizica aici este simplă: avem semnale reflectate de la necesar obiecte (oferind distanța necesară) și reflectate de la cele mai îndepărtate, de exemplu, pereți. Acestea din urmă sunt emisii aleatorii în măsurători de forma 45, 46, 230, 46, 46, 45, 45, 310, 46... Acestea sunt pe care le oprește filtrul median.

După toată procesarea, obținem distanța până la cel mai apropiat obiect. Dacă este mai mică decât o anumită valoare de prag, atunci pornim alarma și mergem direct către „intrus”.

Intermitent și sirenă

Poate cele mai simple elemente dintre toate cele de mai sus. Ele pot fi văzute în fotografiile de mai sus. Nu este nimic de scris despre hardware aici, așa că acum să trecem la cod.

Program de control

Nu văd rostul să descriu codul în detaliu, cine are nevoie de el - linkul este la sfârșitul articolului, totul este destul de ușor de citit acolo. Dar ar fi bine să explicăm structura generală.

Primul lucru pe care a trebuit să-l înțelegem a fost că un robot este un dispozitiv în timp real. Mai exact, de reținut, pentru că și înainte și acum mai lucrez în electronică. Deci, uităm imediat de provocare întârziere(), pe care le place să îl folosească în schițe de exemplu și care pur și simplu „îngheață” programul pentru o anumită perioadă de timp. În schimb, așa cum ne sfătuiesc oamenii cu experiență, introducem cronometre pentru fiecare bloc. Intervalul necesar a trecut - acțiunea a fost efectuată (a crescut luminozitatea LED-ului, a pornit motorul și așa mai departe).

Temporizatoarele pot fi interconectate. De exemplu, tweeter-ul funcționează sincron cu flasherul. Acest lucru simplifică puțin programul.

Desigur, împărțim totul în funcții separate (lumini intermitente, sunet, întoarcere, deplasare înainte și așa mai departe). Dacă nu faci asta, atunci nu vei putea să-ți dai seama ce vine de unde și unde.

Nuanțe de pedagogie

Am făcut tot ce este descris mai sus în timpul liber seara. Într-un mod pe îndelete, am petrecut aproximativ trei săptămâni pe robot. Acest lucru s-ar fi putut termina aici, dar am promis și să vă povestesc despre lucrul cu un copil. Ce se poate face la această vârstă?

Lucrați conform instrucțiunilor

Am verificat mai întâi fiecare detaliu separat - LED-uri, tweeter, motoare, senzori etc. Există un număr mare de exemple gata făcute - unele chiar în mediul de dezvoltare, altele pot fi găsite pe Internet. Acest lucru cu siguranță mă face fericit. Luăm codul, conectăm piesa, ne asigurăm că funcționează, apoi începem să-l schimbăm pentru a se potrivi sarcinii noastre. Copilul face conexiunile conform diagramei și sub supravegherea mea. Asta e bine. De asemenea, trebuie să puteți lucra strict conform instrucțiunilor.

Ordinea de lucru (de la particular la general)

Acesta este un punct dificil. Trebuie să învățați că un proiect mare („face un robot”) constă din sarcini mici („conectați un senzor”, „conectați motoare”...), iar acestea, la rândul lor, constau în pași și mai mici („găsiți un program”, „conectați o placă.” „, „descărcați firmware”...). Efectuând sarcini mai mult sau mai puțin înțelese de nivel inferior, „închidem” sarcinile de nivel mediu și din ele se formează rezultatul general. Am explicat, dar cred că realizarea nu va veni curând. Undeva, probabil, prin adolescență.

Instalare

Găurire, filete, șuruburi, piulițe, lipire și miros de colofoniu - unde am fi fără el? Copilul a primit abilitățile de bază „Lucrul cu un fier de lipit” - a reușit să lipeze mai multe conexiuni (am ajutat puțin, nu o voi ascunde). Nu uitați de explicația privind siguranța.

Munca la calculator

Am scris programul pentru robot, dar am reușit totuși să obțin niște rezultate favorabile.

Prima: engleza. Tocmai o începuseră la școală, așa că ne străduiam să ne dăm seama ce sunt transliterații pishalka, migalka, yarkost și alte. Cel puțin noi am înțeles asta. În mod deliberat, nu am folosit cuvinte native în limba engleză, deoarece încă nu am ajuns la acest nivel.

În al doilea rând: munca eficientă. Am învățat combinații de taste rapide și cum să efectuați rapid operațiuni standard. Periodic, când scriam programul, eu și fiul meu ne schimbam locurile și spuneam ce trebuie făcut (înlocuire, căutare etc.). A trebuit să repet iar și iar: „faceți dublu clic pe select”, „ține apăsat Shift”, „țin apăsat Ctrl” și așa mai departe. Procesul de învățare aici nu este rapid, dar cred că abilitățile vor fi depuse treptat „în subcortex”.

Text ascunsPuteți spune că cele de mai sus sunt aproape evidente. Dar, sincer, în această toamnă am avut ocazia să predau informatica în clasa a IX-a la o școală. Asta e oribil. Elevii nu știu lucruri de bază precum Ctrl + Z, Ctrl + C și Ctrl + V, selectând text în timp ce apăsați Shift sau făcând dublu clic pe un cuvânt și așa mai departe. Asta în ciuda faptului că erau în al treilea an de studii de informatică... Trage-ți singur concluzia.

În al treilea rând: tastarea la atingere. I-am încredințat copilului comentariile din cod să tasteze (lasă-l să exerseze). Ne-am așezat imediat mâinile corect, astfel încât degetele noastre să-și amintească treptat locația tastelor.

După cum puteți vedea, încă suntem la început. Vom continua să ne perfecționăm abilitățile și cunoștințele; ele vor fi utile în viață.

Apropo, despre viitor...

Dezvoltare ulterioară

Robotul este făcut, conduce, clipește și emite un bip. Ce acum? Inspirați de ceea ce am realizat, intenționăm să-l perfecționăm și mai mult. Există o idee de a face o telecomandă - ca un rover lunar. Ar fi interesant, stând la o telecomandă, să controlezi mișcarea unui robot care conduce într-un loc complet diferit. Dar asta va fi o altă poveste...

Și la sfârșit, de fapt, eroii acestui articol (video făcând clic):

Experiență în crearea primului robot pe Arduino (robot „vânător”)

Vă mulțumim pentru atenție!

Link cod

Sursa: www.habr.com

Adauga un comentariu