Ce fel de roboți pot fi asamblați din arduino. Cum să faci un robot pe Arduino cu propriile mâini: robot de casă Arduino acasă

În acest articol, ne vom construi robotul de la zero. Ce obținem, vezi fotografia de mai jos. Robotul va conduce atât independent, cât și sub controlul unui smartphone. De asemenea, ne vom uita la construirea propriului nostru robot mobil de la zero.

3 DImprimanta

Daca vreau sa construiesc un robot trebuie sa ma decid asupra platformei pe care voi instala motoare, placi, baterii. Desigur, pot cumpăra o versiune gata făcută, dar este mai interesant să faci singur platforma. O astfel de platformă va satisface cu siguranță cerințele dumneavoastră. Platforma poate fi realizată de la org. Sticlă, placaj și îl voi face din plastic.

Poti spune ca este incomod sa faci singur platforma si vei avea nevoie de o multime de unelte, de la un poanson central pana la o polizor. Și spun că avem nevoie de imaginație și de o imprimantă 3D.

imprimantă 3d? Toată lumea este probabil familiarizată cu o imprimantă obișnuită de birou care poate imprima textul de care avem nevoie pe A4. Deci, o imprimantă 3D este o imprimantă care poate imprima piesa dorită. Există diferite imprimante 3d. Am o imprimantă cu tehnologie FDM (depunere strat cu strat). Ce alte tehnologii de imprimare 3D sunt disponibile pot fi găsite pe Internet.

Multe imprimante 3D rulează pe Arduino. Dacă doriți, vă puteți construi propria imprimantă 3D. Ideea principală a unei imprimante 3D este că puteți imprima absolut orice, dar vom imprima un corp pentru un robot.

Mai întâi, să definim descrierea platformei. Vreau ca platforma să fie cu 2 roți și să se potrivească cu un Arduino, putere, motoare și niște senzori.

Acum trebuie să desenați aspectul platformei pe hârtie și să plasați componentele necesare pe ea. De exemplu, așa.

Când aspectul este gata, va trebui să faceți un model 3D al platformei. Există multe programe pentru asta. De obicei folosesc. Nu voi învăța cum să lucrezi cu busola, dar dacă ești interesat, poți să te uiți pe internet sau să întrebi în comentarii să faci o lecție despre busola.

Aceasta este platforma cu care am venit.

După aceea, trebuie să convertiți modelul 3D într-un cod G care poate fi înțeles de imprimanta 3D. Pentru aceasta, există programe speciale - slicere. Folosesc programul Repetier-Host cu slicer-ul Sli3er. Iată cum arată piesa gata pentru a fi tipărită.

Și iată modelul imprimat.

Abia recent ne-a avut o idee, iar partea finită este deja în fața noastră. Cu ajutorul unei imprimante 3D, puteți crea lucruri unice în exemplare individuale. Imprimanta 3D este minunata. Sfatuiesc pe toata lumea!

Motoare

Acum trebuie să ne gândim cum se va mișca robotul nostru mobil. Primul lucru care îmi vine în minte sunt roțile. Deci hai sa o facem.

Dacă își amintește cineva, am încercat deja să conectăm motorul la Arduino. Cine nu-și amintește, nu știe sau nu a citit - uite. Există dezavantaje semnificative în conectarea unui motor folosind un MOSFET - este imposibil să schimbați rapid viteza și direcția de rotație. Este timpul să-l înveți pe Arduino cum să controleze motoarele cu adevărat!

Pentru a face acest lucru, puteți utiliza cipul L293D. L293D vă permite să controlați două motoare simultan, cu un curent de 600 mA pe canal și curent de vârf de până la 1000 mA, iar dacă combinați canalele, atunci până la 1200 mA și curent de vârf de 2000 mA. Despre asociație voi vorbi mai jos.

Pentru început, ca întotdeauna, ar trebui să vă uitați la Fișa de date pentru a afla unde și ce să vă conectați. Dacă nu știți despre microcircuite, atunci merită să citiți articolul.

Să începem. Să asamblam o schemă simplă cu un singur motor și să o conducem. Atenție la schema de asamblare.

Dacă nu știți engleza sau pur și simplu nu înțelegeți fișa de date, atunci iată o descriere a conexiunii. Sper că toată lumea știe numerotarea microcircuitelor sau a învățat dintr-un articol despre microcircuite.

  • Pin 1 - Responsabil pentru viteza de rotație a motorului. Unul similar este pe pinul 9. Ia valori de la 0 la 255, care pot fi organizate cu ușurință folosind PWM.Am conectat EN la al cincilea pin al Arduino, care suportă PWM.
  • Pinii 2 și 7 - Responsabili pentru direcția de mișcare a motorului. Cele similare sunt pe pinii 10 și 15. Aplicarea unuia logic la unul dintre acești pini va face motorul să se rotească într-o direcție (în funcție de conexiunea motorului), aplicarea unuia logic la celălalt va face motorul să se rotească într-o direcție. direcție opusă.
  • Pinii 3 și 6 - Trebuie să conectați motorul la ei. Polaritatea nu este importantă, doar direcția de rotație va depinde de conexiune. Similar - pe pinii 11 și 14.
  • Pinii 4 și 5 sunt împămânțați. Nu cred că are nevoie de o explicație. Similar - 12 și 13.
  • Pin 8 - Putere pentru motoare. Trebuie alimentat în intervalul de la 4,5 la 36 volți.
  • Pin 16 - o unitate logică îi este furnizată de la Arduino. 5 volți, dacă ceva.

Amenda! Motorul este conectat. Acum puteți codifica.

#definiți FRW_BUT 7 //Buton înainte #definiți BCW_BUT 6 //Butonul Înapoi #definiți SPD 5 //Controlul vitezei de rotație... #definiți FRW 4 //...direcția de rotație (înainte)... # definiți BCW 3 / /...direcția de rotație (înapoi) #define SPD_POT A5 int xspeed = 0; //Variabilă pentru determinarea vitezei de rotație a motorului int frw_move = 0; //Variabila pentru comanda "forward" int bcw_move = 0; //Variabilă pentru comanda „înapoi” void setup() ( //Design pinMode(SPD, OUTPUT); pinMode(FRW, OUTPUT); pinMode(BCW, OUTPUT); pinMode(SPD_POT, INPUT); pinMode(FRW_BUT, INPUT_PULLUP ); pinMode(BCW_BUT, INPUT_PULLUP); ) void loop() ( //Citiți citirile de la potențiometru //și aduceți-le în intervalul dorit - de la 0 la 255 //După - treceți-l la pinul de control al vitezei xspeed = analogRead(SPD_POT); constrain(xspeed, 0, 1023); xspeed = map(xspeed, 0, 1023, 0, 255); //Determină apăsarea butonului înainte if(!digitalRead(FRW_BUT)) ( frw_move = 1; ) else ( frw_move = 0; ) //Determină apăsarea butonului „înapoi” if(!digitalRead(BCW_BUT)) ( bcw_move = 1; ) else ( bcw_move = 0; ) //Apelați funcția pentru a trimite date către L293D motor(); ) void motor() ( //Trimite date la L293D analogWrite(SPD, xspeed); digitalWrite(FRW, frw_move); digitalWrite(BCW,bcw_move); )

Cum functioneazã? Funcționează simplu. Când apăsați butonul din stânga, roata se învârte într-o direcție, iar când apăsați butonul din dreapta, se învârte în cealaltă direcție. Prin rotirea butonului potențiometrului, puteți regla viteza de rotație a motorului. Funcționarea platformei noastre de testare a motoarelor este prezentată în videoclip.

Z.Y. Da, știu că calitatea videoclipului nu este grozavă, dar voi încerca să găsesc o cameră decentă și să aranjez cât mai curând un loc unde să filmez.

Acum despre conectarea canalelor L293. Dacă doriți să conectați un motor mai puternic, puteți combina canalele.

Prima modalitate este de a conecta ieșiri analoge ale microcircuitului în paralel, ceea ce va crește puterea maximă a curentului cu un factor de doi. Minus - doar un motor poate fi conectat la un microcircuit.

A doua modalitate este să lipiți un alt L293 deasupra lui L293. Luăm și lipim pinul 1 la pinul 1, pinul 2 la pinul 2 și așa mai departe. Această metodă oferă, de asemenea, o creștere a puterii curentului de două ori, dar, spre deosebire de prima, lasă capacitatea de a controla două motoare simultan. S-ar putea să aveți o idee - ar trebui să mai lipiți câteva L293? Din păcate, lipirea ulterioară a microcircuitelor nu va duce la o creștere a puterii curentului cu încă 600 mA. Creșterea va fi mică.

„Eh, va trebui să-mi curăț motorul de 12 volți...” Nu te supăra. Pentru motoare mai puternice, fratele mai mare L293 - L298 este potrivit, dar acum nu îl vom lua în considerare. Vom face asta puțin mai târziu.

Motor Scut

De acord că, cu un astfel de pachet de fire, totul nu arată foarte bine. Pentru a scăpa de el, puteți lipi circuitul cu L293 pe un circuit imprimat sau pe o placă pentru lipit, dar ce se întâmplă dacă nu doriți să lipiți sau nu știți cum? Pentru aceasta, există soluții gata făcute sub formă de scuturi pentru Arduino, de exemplu. Voi vorbi despre unul dintre ele - Motor Shield V1 de la DK Electronics.

Iată, de fapt, o fotografie a scutului.

Acest scut are două L293D, ceea ce vă permite să controlați patru motoare simultan. Există și două contacte pentru servomotoare. Alimentarea este alimentată fie la blocul de borne, fie, cu jumperul instalat, de la sursa de alimentare Arduino. Jumperul vă permite, de asemenea, să preluați puterea pentru Arduino de pe scut. Există o bibliotecă specială pentru lucrul cu acest scut. Îl poți descărca.

La minusurile tablei. Aproape toți pinii digitali sunt folosiți pentru a lucra cu scutul, cu excepția 0, 1, 2, 13. După cum știm, pinii 0 și 1 sunt folosiți de Arduino pentru firmware, așa că este mai bine să nu-i folosiți.

Există și o parte bună. Dacă nu conectați servomotoare, de exemplu, pinii 9 și 10 sunt eliberați, iar dacă nu utilizați niciunul dintre motoare, atunci pinii 3, 5, 6, 11 vor fi eliberați, în funcție de motorul neutilizat. Și mai departe. Mai avem șase ieșiri analogice disponibile, care pot fi folosite ca digitale dacă se dorește.

Să începem să conectăm motoarele. De dragul experimentului, vom crea un robot care se deplasează înainte, înapoi și, de asemenea, se rotește în jurul propriei axe. Ca platformă, mi-am luat propria dezvoltare, descrisă mai sus. Poți lua orice îți dorește inima, principalul lucru este că este potrivit din punct de vedere al caracteristicilor.

Noi vom avea nevoie

  • Arduino UNO - Poate fi utilizat orice alt factor de formă Arduino UNO. Leonardo sau Iskra, de exemplu.
  • Motor Shield - Alte versiuni ale acestui scut vor funcționa.
  • Motoare pentru 6V - Puteți lua oricare care sunt potrivite pentru caracteristicile motor Shield.
  • Roți de 42 mm – Roți care se potrivesc cu motoarele și platforma
  • Suporturi pentru motor - Motoarele trebuie atașate la platformă. Luați-l pe cel care vi se potrivește.
  • Putere - Am luat o baterie și am scos aproximativ 5 volți, ceea ce nu este suficient pentru a alimenta motoarele și Arduino, așa că am conectat un convertor DC/DC și am ridicat tensiunea la 9V. Dacă nu există un convertor, atunci puteți utiliza coroana obișnuită conectând-o la sursa de alimentare Arduino.

Este timpul să ne asamblam robotul.

Pasul 1

Conectăm Arduino și Motor Shield.

Pasul 2

Asamblam motoarele și le fixăm pe platformă.

Pasul 3

Colectăm energie printr-un convertor boost.

Pentru cei care au Crona. Nu uita săritorul!

Pasul 4

Fixăm motoarele de motor Shield cu Arduino.

Pasul 5

Adăugăm mâncare.

Pasul 6 (Opțional)

Atașați capacul - pentru estetică.

Avem un robot terminat. Acum este timpul să-l programăm. Să ne uităm la cod.

//Includeți biblioteca pentru lucrul cu Motor Shield #include //Determină motorul din stânga pe blocul de borne numărul 2 AF_DCMotor l_motor(2); //Definește motorul potrivit la blocul de borne numărul 3 AF_DCMotor r_motor(3); //Variabile pentru determinarea vitezei //și a timpului de deplasare int spd = 50; inttime(1000); void setup() ( //Setați viteza inițială și opriți motoarele l_motor.setSpeed(spd); l_motor.run(RELEASE); r_motor.setSpeed(100); r_motor.run(RELEASE); ) void loop() ( // Merge înainte l_motor.run(FORWARD); r_motor.run(FORWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); delay(time); // Merge înapoi l_motor.run(BACKWARD); r_motor. run(BACKWARD ); l_motor.setSpeed(spd); r_motor.setSpeed(spd); delay(time); // Rotire în sens invers acelor de ceasornic l_motor.run(FORWARD); r_motor.run(BACKWARD); l_motor.setSpeed(spd); r_motor . setSpeed(spd); delay(time); // Rotire în sensul acelor de ceasornic r_motor.run(FORWARD); l_motor.run(BACKWARD); l_motor.setSpeed(spd); r_motor.setSpeed(spd); delay(time); )

Amenda! E timpul să verifici. Iată un videoclip de la testul meu. Şi tu?

„Ai spus ceva despre plăcile de robotică?” - pot spune cei care citesc lecția introductivă a părții 2 a cursului. Da, există astfel de taxe. Luați în considerare platforma robotică Strela.

Visul roboticii. (Aproape). Am descris avantajele plăcii. Direct la subiect.

Pe el este instalat fratele mai mare L293 - L298. Și pinii sunt afișați în triple, ceea ce este potrivit pentru conectarea multor senzori.

Această placă poate fi conectată în loc de Arduino UNO și Motor Shield. În plus, băieții de la Amperka au scris o bibliotecă pentru lucrul cu Arrow, ceea ce face ca controlul motoarelor să fie o sarcină destul de banală.

Pentru cei care nu știu, să vă spun. Fiecare bibliotecă normală are exemple de utilizare, iar biblioteca Arrow nu face excepție. Pentru a le găsi, accesați Fișier -> Exemple -> fila Strela. Acolo selectăm exemplul StrelaMotors, în care se realizează o schiță similară cu schița folosind Motor Shield. Apropo, există și exemple pentru Motor Shield. Dacă ești interesat, aruncă o privire.

Ce altceva poți face cu Arrow - vezi mai jos. Și trecem la comunicarea fără fir prin Bluetooth.

Bluetooth

Un robot care se deplasează singur prin cameră este, desigur, bun, dar aș dori să conduc singur robotul. Pentru a face acest lucru, trebuie să organizați o conexiune între Arduino și dispozitivul de control.

Ca dispozitiv de control, am ales un smartphone. Vom organiza comunicarea folosind protocolul Bluetooth, așa că este timpul să ne cunoaștem.

Acesta este modulul HC-06. Nu voi intra în prea multe detalii, dar dacă ești interesat, hai să mergem mai departe. Scopul nostru este să conducem robotul de pe un smartphone. Să începem, poate.

Mai întâi trebuie să conectați HC-06 la Arduino. Ne vom conecta folosind Software Serial. Această bibliotecă vă permite să emulați portul serial pe pinii de care avem nevoie. De dragul experimentului, să încercăm să facem acest lucru pe pinii A0(RX) și A1(TX). Pentru ce? Amintește-ți ce am spus despre Motor Shield.

Ne conectăm astfel:

  • Vcc - la 5V
  • GND la GND
  • RX la TX
  • TX la RX

Voi conecta HC-06 la robotul pe care l-am construit mai sus. Pentru a face acest lucru, vom folosi cele trei dungi de pe motor Shield.

Robotul este gata. Rămâne de programat.

Înainte de a citi codul, trebuie să știți câteva lucruri. Motoarele nu sunt perfecte, ca orice altceva pe lumea asta. Chiar și două motoare din același lot care urmează unul pe altul vor fi ușor diferite, ceea ce va afecta diferența de număr de rotații la aceeași tensiune. Dacă motoarele sunt pur și simplu conectate la scutul motorului și au aceeași viteză, iar aceasta este aceeași tensiune, atunci robotul nu va merge drept, ci puțin, sau mult, în lateral. Acest lucru poate fi văzut în videoclipul de mai sus.

Pentru a evita acest lucru, vom aplica factori de ajustare. Roata mea din stânga se învârte mult mai repede decât cea dreaptă, așa că am pus un factor de 0,62 pentru a compensa. Valoarea coeficientului este selectată experimental.

// Includeți biblioteci pentru lucrul cu Motor Shield și Software Serial #include #include //Determină pinii pentru emularea SoftwareSerial mySerial(A0, A1); // RX, TX //Definește motorul din stânga la terminalul numărul 2 AF_DCMotor l_motor(2); //Definește motorul potrivit la blocul de borne numărul 3 AF_DCMotor r_motor(3); //Variabile pentru determinarea vitezei //și reglarea rotației float spd = 70,0; float corr_l = 0,62; float corr_r = 1; floatrot = 50,0; void setup() ( //Setați viteza inițială și opriți motoarele l_motor.setSpeed(spd); l_motor.run(RELEASE); r_motor.setSpeed(spd); r_motor.run(RELEASE); //Stabiliți conexiunea cu HC-06 mySerial .begin(9600); ) void loop() ( //Dacă există date, //apelați funcția de control dacă (mySerial.available()) ( drive(); ) ) void drive() ( //Variabilă pentru datele de intrare char control = mySerial.read(); //Setați viteza mai întâi dacă (((control - "0") >= 0) && ((control - "0")<= 9)) { spd = (control - "0") * 25.0; //сохраняем новое значение скорости } else if (control == "q") { spd = 255.0; } //Сравниваем команды, пришедшие со смартфона else if (control == "S") //Если пришла команда "S", стоим { l_motor.run(RELEASE); r_motor. run(RELEASE); } else if (control == "F") //Если пришла команда "F", едем вперед { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "B") //Если пришла команда "B", едем назад { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "I") //Если пришла команда "I", едем вперёд и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "J")//Если пришла команда "J", едем назад и направо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r + rot); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "G") //Если пришла команда "G", едем вперёд и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(FORWARD); } else if (control == "H") //Если пришла команда "H", едем назад и налево { l_motor.setSpeed(spd * corr_l + rot); r_motor.setSpeed(spd * corr_r); r_motor.run(BACKWARD); l_motor.run(BACKWARD); } else if (control == "R") //Если пришла команда "R", крутимся вправо { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); r_motor.run(FORWARD); l_motor.run(BACKWARD); } else if (control = "L") //Если пришла команда "L", крутимся влево { l_motor.setSpeed(spd * corr_l); r_motor.setSpeed(spd * corr_r); l_motor.run(FORWARD); r_motor.run(BACKWARD); } }

Robotul a fost întrebat. Acum să luăm un smartphone.

Controler RC

Există multe aplicații diferite pentru conectarea unui Arduino și a unui smartphone prin Bluetooth. În căutare, cuvintele cheie vor fi: Arduino, Bluetooth, RC.

Am ales o aplicație numită Bluetooth RC Controller. Este perfect pentru scopul nostru. Când butonul este apăsat, aplicația trimite o valoare char către HC-06, care, la rândul său, transmite valoarea primită Arduino. Valoarea trimisă atunci când se face clic pe butonul este setată automat.

Pentru a stabili o conexiune cu robotul, trebuie să faceți clic pe roată și să selectați elementul „Setări” În „Setări”, trebuie să vă asigurați că butoanele corespund acestor caractere trimise sau să schimbați codul Arduino.

După setarea caracterelor, puteți stabili o conexiune cu HC-06. Faceți clic pe roată și accesați „Conectați-vă la mașină”. Se deschide o fereastră cu dispozitivele asociate. În el selectam HC-06. Dacă nu este acolo, atunci îl căutăm folosind „Scanare pentru dispozitive”. Dacă dispozitivul este găsit, dar nu dorește să se împerecheze, atunci accesați Bluetooth pe smartphone-ul dvs. și asociați ca de obicei. Parola implicită este 1234. După aceea, accesați „Scanați dispozitivele” și conectați-vă.

Când conexiunea este stabilită, ledul verde de deasupra se va aprinde, iar HC-06 nu va mai clipi. Poți începe să conduci. Banda de deasupra este responsabilă pentru viteza de mișcare.

Să revenim la Arrow. Un alt avantaj al Arrow este capacitatea de a instala formatul Bluetooth XBee, iar lucrul bun este că alți pini rămân liberi. Și, deoarece există o bibliotecă gata făcută pentru Arrow, care ajută la reducerea codului pentru controlul motoarelor, merită să folosiți Arrow pentru a controla robotul prin Bluetooth.

Pentru a face acest lucru, trebuie să conectați XBee la Strela, să-l flash cu schița din exemplele numite „ArduinoBluetoothRCCarOnStrela” și să vă conectați la XBee prin controlerul RC.

Sfat

Robotul meu este gata și chiar conduce la comandă de pe un smartphone. Dar nu totul poate merge bine. Voi vorbi despre unele probleme și soluțiile lor, precum și să dau câteva sfaturi robotiștilor începători.

Roțile se învârt în direcția greșită- aceasta problema se elimina usor prin rearanjarea firelor in blocurile terminale sau programatic.

Modulul Bluetooth nu funcționează- trebuie să verificați prezența unui LED roșu care arde pe modul. Dacă nu este aprins, verificați dacă modulul Bluetooth este conectat corect. Dacă LED-ul este aprins, dar conexiunea este stabilită, trebuie să vă asigurați că RX-ul modulului este conectat la TX-ul plăcii și invers și, de asemenea, să încercați metoda de asociere a modulului cu Arduino prin standard. interfață Bluetooth.

Robotul nu conduce drept- Am descris această problemă puțin mai sus când am vorbit despre Bluetooth și Motor Shield.

În timpul conducerii, robotul se oprește brusc și pierde legătura cuHC-06- Există o problemă cu sursa de alimentare. Știm că Arduino are nevoie de cel puțin 7V pentru o funcționare stabilă și, de asemenea, știm că motoarele mănâncă foarte bine. Dacă aduceți sondele multimetrului la bornele de alimentare cu tensiune și măsurați tensiunea cu motoarele oprite, apoi le porniți, puteți vedea că tensiunea de pe multimetru va scădea. În plus, tensiunea poate scădea în diferite moduri.

Dacă este conectată o sursă de alimentare care nu poate furniza suficient curent pentru motoare, atunci tensiunea poate scădea foarte mult, de la 9 la 5 volți, de exemplu, iar 5V nu va mai fi suficient pentru Arduino și va reporni. Soluția este să conectați o sursă de alimentare mai puternică. Cum să calculez, voi spune mai jos.

Dacă conectați o sursă de alimentare mai puternică, atunci căderea de tensiune poate fi doar pentru câteva milisecunde, dar acestea pot fi suficiente pentru a reporni controlerul. Soluția este instalarea unui condensator de cel puțin 1000 uF în paralel cu firele de alimentare, capacitatea putând fi determinată experimental. Am pus condensatorul la 3300 uF si la 16V. Nu uitați să vă uitați la tensiunea maximă a condensatorului.

Când sursa de alimentare este suficient de puternică, căderea de tensiune nu este mai mare de 0,2 V.

Câteva sfaturi pentru robotica începători

Începând cu aspectul robotului, primul lucru de făcut este să vă ocupați de calcularea puterii unității de alimentare și de selectarea sursei de alimentare corespunzătoare. Va fi păcat dacă 4 baterii AAA nu vă alimentează 4 motoare de 6V și nu există loc pentru mai multă sursă de alimentare.

Pentru a calcula puterea, căutăm caracteristicile motoarelor, plăcilor, senzorilor. Din cursul fizicii știm că puterea poate fi calculată prin formula P = IU, unde I este puterea curentului, U este tensiunea. Folosind această formulă și caracteristici, este ușor să calculați consumul de energie al dispozitivului finit, iar cunoscând consumul de energie și tensiunea de funcționare a sursei, puteți afla puterea optimă a curentului necesară pentru funcționarea dispozitivului, cunoscând curentul. puterea, puteți determina capacitatea necesară a bateriei și durata de funcționare a dispozitivului din bateria selectată.

După cum am spus, trebuie să vă stabiliți întotdeauna un obiectiv specific, la care proiectul poate fi considerat finalizat la atingere. Există nuanțe în acest gând. Dacă proiectul este suficient de mare, atunci ajungerea la obiectiv nu este atât de ușoară, mai ales când scrieți cod. Odată ce am scris un cod mare, m-am gândit - „Acum voi scrie totul și voi verifica! ' când încercam să compilați codul, acesta nu a fost compilat imediat, deoarece au existat mai multe erori. Am eliminat erorile, dar numai codul nu a funcționat așa cum mi-am dorit. A trebuit să rescriu totul aproape de la zero, adăugând treptat cod și verificând codul rezultat pentru operabilitate. Asa ca te sfatuiesc sa faci la fel.

Dacă există un obiectiv de a face o „parolă” de trei caractere, atunci nu ar trebui să le programați pe toate trei simultan. Este mai bine să faceți o parolă dintr-un caracter, să o verificați, apoi din două, iar după verificare - din trei. Mă ajută.

Robotul este creat prin încercare și eroare. Nu se va putea programa o singura data astfel incat actiunea sa fie executata perfect. Aceiași coeficienți de tuning sunt pe roți, așa că nu ar trebui să renunți dacă ceva nu merge, iar dacă nu merge deloc, atunci poți apela la oameni amabili de pe forumuri sau îmi poți scrie, noi va ajuta cu siguranta!

Concluzie

Robotica este minunată! În curând, cred, roboții vor lua, și chiar au avut loc deja în viața oamenilor. Am realizat cel mai simplu robot-mașină controlat de pe un smartphone, ulterior ne vom ocupa de proiecte mai serioase, dar deocamdată - ne vedem curând!

Partea finală a articolului este despre un robot mic pe care îl asamblam pe un șasiu - un capac dintr-un recipient din plastic pentru alimente. Creierul robotului nostru este placa Arduino UNO, placa Driver Motor Shield controlează motoarele și servo-ul, senzorul de obstacol - Sonar cu ultrasunete - ochi ca Wally (din desene animate) - "HC-SR04 Ultrasonic Sensor". , . Cum se creează un robot pe Arduino?

9. Conectarea bateriei și a motoarelor

Când conectați bateria, trebuie să fiți absolut sigur că polaritatea este corectă, după cum se spune, măsurați de 7 ori, conectați o dată. Încercați să urmați această regulă - firul roșu este întotdeauna la + putere, firul negru este împământat, este minus, este GND. Producătorii încearcă să respecte aceleași reguli. Prin urmare, conectăm firele care vin din compartimentul bateriei la blocul + M și GND, de pe placa de comandă a motorului. Conectăm firele de la motoarele de antrenare la blocurile M1, M2 ale plăcii de control a motorului. Partea stângă, în sensul de mers, este conectată la blocul M1, partea dreaptă la blocul M2. Încă nu ar trebui să vă faceți griji cu privire la polaritatea motoarelor, aceasta poate fi schimbată dacă ceva nu merge bine în timpul testului.

10. Verificați polaritatea și conectarea corectă a modulelor

Un moment foarte important și crucial în asamblarea unui microrobot este verificarea corectă a instalării, conexiunilor, modulelor conform schemei bloc, priviți marcajele de pe plăci, verificați cu un tester, polaritatea sursei de alimentare, cine are un tester .

11. Etapa de programare Arduino

Programul este încărcat pe microcontrolerul Arduino de pe computer, folosind un cablu USB și un program special - mediul de programare și editare pentru schițe (programe) - IDE-ul Arduino. Puteți obține programul de pe site-ul web arduino.cc, secțiunea Descărcare, de unde puteți descărca oricând cea mai recentă și cea mai recentă versiune a programului. După ce mediul de programare este instalat, rămâne doar să selectați din meniul programului driver pentru ce placă doriți să utilizați - în cazul nostru, Arduino UNO și portul COM prin care Arduino este conectat prin emulare USB. Există o mulțime de manuale de tot felul pe acest subiect, așa că sărim peste această etapă (pentru orice eventualitate - meniul Instrumente > Port serial).

Programul pentru microrobot este disponibil pe site-ul nostru, deși numai după înregistrare, o glumă Mini Robot pe Arduino. Pentru ca programul să funcționeze, sunt necesare biblioteci suplimentare - AFMotor.h, Sevo.h, NewPing.h, toate sunt în arhivă, trebuie să despachetați arhiva în folderul programului Arduino IDE instalat. Pentru mine, acesta este directorul c: Program Files (x86) Arduino, bibliotecile trebuie plasate în folderul c: Program Files (x86) Arduino libraries. Apoi accesați directorul c:Program Files (x86)ArduinolibrariesAPC_4_ROBOT și faceți dublu clic pe APC_4_ROBOT.ino, aceasta este schița în sine, apoi mediul de programare va porni. Conectăm placa Arduino Uno goală (adică fără module conectate) prin cablul USB la computer, apăsăm butonul cu săgeata din dreapta, programul va începe să se încarce în controler. Întregul proces durează câteva secunde și, dacă totul este conectat corect, atunci nicio inscripție roșie nu ar trebui să se aprindă, iar indicatorul din colțul din dreapta jos își va finaliza mișcarea 100%. Programul pentru Arduino este instalat în controlerul Atmega328.

12. Pornirea robotului

Mini robot pe Arduino - gata de mutare. Robotul Wally

Este posibil să se efectueze prima rulare de probă a robotului nostru. Robotul nostru nu mergea corect, o roată se învârtea corect, iar cealaltă în direcția opusă. A trebuit să schimb polaritatea firelor motorului de pe blocul M2. Dar apoi micul nostru robot a făcut față cu onoare tuturor colțurilor și obstacolelor camerei.

Dedic acest articol tuturor începătorilor care decid să învețe Arduino. Studiul suplimentar poate fi continuat de la prima lecție - aprinderea LED-ului. Materialul cu robotul este foarte interesant și, pentru a vă interesa, am decis să încep cu exact cum să construiesc un robot care ocolește obstacolele. Restul va fi mult mai ușor și va merge ca un ceas. Acest robot chiar funcționează. Noroc tuturor!

P.S. Era o traducere destul de liberă a unui articol găsit, pe vremuri, pe vastele întinderi ale internetului, mai bineînțeles gag, pentru că totul s-a făcut într-un mod nou, desenele au fost finalizate, nu existau referiri la sursă. , deoarece documentul era un document Word.

Dragii noștri cititori, deschidem o serie de articole despre crearea unui robot bazat pe Arduino. Se presupune că cititorul este începător și are doar cunoștințe de bază ale subiectului. Vom încerca să expunem totul cât mai detaliat și de înțeles posibil.

Deci, o introducere în problemă:

Să începem cu un concept: ne dorim un robot care să se poată mișca singur prin cameră, evitând în același timp toate obstacolele în cale. Sarcina a fost stabilită.

Acum să ne dăm seama de ce avem nevoie:

  1. Platformă (carcasa). Există opțiuni aici: faceți totul singur, cumpărați piese și asamblați-le sau cumpărați gata făcute. Alege ce iti place

Setul vine de obicei cu o platformă și un motor pentru două roți motrice (caterpillar) și un compartiment pentru baterii. Există opțiuni pentru tracțiune integrală - pe un motor cu 4 roți. Pentru începători, recomandăm să luați platforme de tip rezervor

Două roți motrice și un al treilea suport.

  1. Î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 ultrasonicului sunt mult mai bune (raza maximă este de aproximativ 4-5 metri, față de 30-60 cm), iar prețul este cam același, alegerea a căzut pe Ultrasonic. Cel mai comun model este HC-SR04.

  1. Sofer de motor.

Cum să fii? 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 cu siguranță bun, dar nu va funcționa dacă dorim să pornim motorul în cealaltă direcție ... Dar H va face treaba bine - o punte, care este un circuit puțin mai complex decât o pereche de tranzistori. 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 favorabil - 2-3 dolari... Să mergem mai departe. În aceste scopuri, vom cumpăra un cip L293D, sau chiar mai bine, un Motor Shield bazat pe acesta.

Scut motor pe cipul L298N

  1. Generare de sunet - Buzzer piezo

Cea mai simplă opțiune pentru generarea sunetului este utilizarea unui emițător piezo.

Emițătorii piezoceramici (emițători piezoelectrici) sunt dispozitive electroacustice de reproducere a sunetului care utilizează efectul piezoelectric. (efectul apariției polarizării dielectrice sub acțiunea solicitărilor mecanice (efect piezoelectric direct). Există și un efect piezoelectric invers - apariția deformațiilor mecanice sub influența unui câmp electric.

Efect piezo direct: la brichete piezo, pentru a obține o tensiune mare pe eclator;

Efect piezoelectric invers: în emițători piezoelectrici (eficienți la frecvențe înalte și au dimensiuni mici);)

Emițătoarele piezo sunt utilizate pe scară largă în diverse dispozitive electronice - ceasuri deșteptătoare, telefoane, jucării electronice, aparate de uz casnic. Emițătorul piezoceramic este format dintr-o placă metalică pe care se depune un strat de ceramică piezoelectrică, având pe partea exterioară un înveliș conductor. Placa și acoperirea sunt două contacte. Soneria piezoelectrică poate fi folosită și ca microfon piezoelectric sau senzor.

Atât avem nevoie pentru prima dată. Pentru început, vom lua în considerare, sub formă de lecții separate, cum să asamblați și să facem ca aceste părți să funcționeze separat.

Lectia 2

Lecția 3. Arduino și motor Shield bazate pe L298N

Lecția 4

Lecția 5

Buna ziua. Acest articol este o scurtă poveste despre cum do robot al lor mâinile. De ce o poveste, te întrebi? Toate datorită faptului că pentru fabricarea unor astfel de meşteşuguri este necesar să folosiți o cantitate semnificativă de cunoștințe, ceea ce este foarte dificil de prezentat într-un articol. Vom parcurge procesul de construire, vom arunca o privire asupra codului și, în cele din urmă, vom aduce la viață creația Silicon Valley. Vă sfătuiesc să urmăriți videoclipul pentru a vă face o idee despre ce ar trebui să se întâmple până la urmă.

Înainte de a continua, vă rugăm să rețineți următoarele, că în fabricație meşteşuguri a folosit un tăietor cu laser. Puteți refuza un tăietor cu laser dacă aveți suficientă experiență în lucrul cu mâinile. Acuratețea este cheia pentru finalizarea cu succes a unui proiect!

Pasul 1: Cum funcționează?

Robotul are 4 picioare, cu câte 3 servo-uri pe fiecare dintre ele, care îi permit să-și miște membrele în 3 grade de libertate. Se mișcă cu un „mers târâtor”. Lasă-l să fie lent, dar unul dintre cele mai lin.

Mai întâi trebuie să înveți robotul să se deplaseze înainte, înapoi, stânga și dreapta, apoi adăugați un senzor ultrasonic, care va ajuta la detectarea obstacolelor/obstacolelor, iar apoi un modul Bluetooth, datorită căruia controlul robotului va atinge un nou nivel.

Pasul 2: Piese necesare

Schelet din plexiglas de 2 mm grosime.

Partea electronică a produsului de casă va consta din:

  • 12 servo-uri;
  • arduino nano (poate fi înlocuit cu orice altă placă arduino);

  • Scut pentru control servo;
  • alimentare (în proiect a fost folosită o sursă de alimentare de 5V 4A);

  • senzor ultrasonic;
  • modul bluetooth hc 05;

Pentru a face un scut veți avea nevoie de:

  • placa de circuit (de preferință cu linii comune (autobuze) de putere și masă);
  • conectori pini inter-placă - 30 buc;
  • prize pe placă - 36 buc;

  • fire.

Instrumente:

  • Cutter cu laser (sau maini iscusite);
  • Super-lipici;
  • Lipici fierbinte.

Pasul 3: Scheletul

Să folosim un program de grafică pentru a desena părțile componente ale scheletului.

După aceea, în orice mod disponibil, am tăiat 30 de părți ale viitorului robot.

Pasul 4: Asamblare

După tăiere, îndepărtați stratul de hârtie de protecție de pe plexiglas.

Apoi, treceți la asamblarea picioarelor. Elemente de fixare încorporate în părți ale scheletului. Tot ce rămâne de făcut este să punem piesele împreună. Conexiunea este destul de strânsă, dar pentru o mai mare fiabilitate, puteți aplica o picătură de superglue pe elementele de fixare.

Apoi trebuie să modificați servomotoarele (lipiți un șurub opus arborilor servo).

Cu acest rafinament, vom face robotul mai stabil. Rafinamentul trebuie făcut doar pentru 8 servo-uri, restul de 4 vor fi atașați direct de corp.

Atașăm picioarele la elementul de legătură (partea curbată) și acesta, la rândul său, la servo-ul de pe corp.

Pasul 5: Realizarea scutului

Realizarea plăcii este destul de simplă dacă urmați fotografiile prezentate în pas.

Pasul 6: Electronică

Fixați pinii servo de pe placa arduino. Pinii trebuie conectați în ordinea corectă, altfel nimic nu va funcționa!

Pasul 7: Programare

Este timpul să-l aducem la viață pe Frankenstein. Mai întâi, încărcați programul legs_init și asigurați-vă că robotul este în poziția prezentată în imagine. Apoi, încărcați quattro_test pentru a vedea dacă robotul răspunde la mișcările de bază, cum ar fi înainte, înapoi, stânga și dreapta.

IMPORTANT: Trebuie să adăugați o bibliotecă suplimentară la IDE-ul arduino. Link-ul către bibliotecă este prezentat mai jos:

Robotul trebuie să facă 5 pași înainte, 5 pași înapoi, să facă 90 de grade la stânga, 90 de grade la dreapta. Dacă Frankenstein face totul corect, ne mișcăm în direcția corectă.

P. S: instalați robotul pe cană ca suport, astfel încât de fiecare dată să nu-l pună la punctul inițial. Odată ce testele au arătat funcționarea normală a robotului, putem continua testarea așezându-l la parter/etaj.

Pasul 8: Cinematică inversă

Cinematica inversă este cea care controlează de fapt robotul (dacă nu sunteți interesat de latura matematică a acestui proiect și vă grăbiți să finalizați proiectul, puteți sări peste acest pas, dar să știți ce anume antrenează robotul va fi întotdeauna util).

Cu cuvinte simple, cinematica inversă sau IK pe scurt este „partea” ecuațiilor trigonometrice care determină poziția capătului ascuțit al piciorului, unghiul fiecărui servo etc., care determină în cele din urmă câteva setări preliminare. De exemplu, lungimea fiecărui pas al robotului sau înălțimea la care va fi amplasat corpul în timpul mișcării / odihnei. Folosind acești parametri predefiniți, sistemul va extrage cantitatea cu care fiecare servo trebuie să fie mișcat pentru a controla robotul cu comenzile date.

Î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. De asemenea, acest robot îi va amuza pe copii. Nepotul meu de 3 ani s-a jucat de bunăvoie cu robotul :)

Voi începe prin a enumera piesele care vor fi necesare la construirea - Arduino UNO;

Telemetru cu infraroșu;

- motoare de 3 volti cu cutii de viteze si roti;

- conectori pentru baterii de 3A;

-baterie (dacă nu sunt suficiente baterii);

- Releu pentru controlul motoarelor;

Ei bine, și alte materiale care vor fi necesare în procesul 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ă stea perfect în fante


Apoi prind motoarele cu o scândură de lemn, înșurubând această bară

Mai departe pe carcasă, am plasat un arduino, un releu, un brainboard, telemetru, iar sub baza șasiului o rotație

Acum conectăm totul conform schemei

La sfârșit, încărcăm următoarea schiță în arduino:

Const int R = 13; //pini la care sunt conectate telemetrul IR const int L = 12; int motor L = 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 creație și acțiunea robotului

Acest robot este foarte simplu și oricine îl poate realiza. Vă va ajuta să înțelegeți cum funcționează module precum releele și telemetrul IR și cum să le utilizați cel mai bine.

Sper că v-a plăcut acest meșteșug, amintiți-vă că meșteșugurile sunt mișto!