Dijelovi za kreiranje robota koristeći Arduino. Četvoronožni robot baziran na Arduinu

Pretplatite se
Pridružite se zajednici “koon.ru”!
U kontaktu sa:

U današnjem članku ću vam reći kako vlastitim rukama napraviti robota koji izbjegava prepreke na temelju Arduino mikrokontrolera.



Da biste napravili robota kod kuće, trebat će vam sama ploča mikrokontrolera i ultrazvučni senzor. Ako senzor otkrije prepreku, servo će mu omogućiti da zaobiđe prepreku. Skeniranjem prostora desno i lijevo, robot će odabrati najpoželjniji put da izbjegne prepreku.

Codebender je IDE zasnovan na pretraživaču, najlakši način za programiranje vašeg robota iz pretraživača. Morate kliknuti na dugme “Run on Arduino” i to je to, ne može biti jednostavnije.

Umetnite bateriju u pretinac i jednom pritisnite funkcijsko dugme i robot će krenuti naprijed. Da zaustavite kretanje, ponovo pritisnite dugme.

/* Arduino robot za izbjegavanje prepreka sa servo motorom i ultrazvučnim senzorom HC-SR04 LED i zujalom */ // Biblioteke #include #include "Ultrasonic.h" //Konstante const int tipka = 2; //Dugme pin na pin 2 const int led = 3; //LED pin (preko otpornika) na pin 3 const int buzzer = 4; //Pin visokotonca na pin 4 const int motorA1= 6; //pozitivni (+) pin motora A na pin 6 (PWM) (od modula L298!) const int motorA2= 9; //negativni pin (-) motora A na pin 9 (PWM) const int motorB1=10; // pozitivan (+) pin motora B na pin 10 (PWM) const int motorB2=11; // negativni pin (-) motora B na pin 11 (PWM) Ultrazvučni ultrazvučni (A4, A5); //Kreiraj objekat ultrasonic(trig pin,echo pin) Servo myservo; //Kreirajte servo objekat za kontrolu servo uređaja //Variables int distance; //Varijabla za pohranjivanje udaljenosti do objekta int checkRight; int checkLeft; int funkcija=0; //Varijabla za pohranjivanje funkcije robota: "1" - kretanje ili "0" - zaustavljeno. Zaustavljeno po defaultu int buttonState=0; //Varijabla za pohranjivanje stanja gumba. Default "0" int pos=90; //varijabla za pohranjivanje servo položaja. Podrazumevano 90 stepeni - senzor će gledati unapred int flag=0; //korisna zastavica za pohranjivanje stanja dugmeta kada je dugme otpušteno void setup() ( myservo.attach(5); //servo pin je povezan na pin 5 myservo.write(pos); // govori servo za prelazak na poziciju u varijabli "pos" pinMode(dugme, INPUT_PULLUP); pinMode(led, OUTPUT); pinMode(zujalica, OUTPUT); pinMode(motorA1,OUTPUT); pinMode(motorA2,OUTPUT); pinMode(motorB1, OUTPUT); pinMode(motorB2, OUTPUT) ; ) void loop() ( //Provjera stanja gumba buttonState = digitalRead(button); unsigned long currentMillis = millis(); //count... //Mijenja glavnu funkciju ( zaustavljen/pomera se) kada se pritisne dugme if (buttonState = = LOW) (//Ako se dugme pritisne jednom... kašnjenje (500); if (zastava == 0)( funkcija = 1; zastava=1; / /promijeni varijablu zastave) else if (zastava == 1)( / /Ako se dugme pritisne dvaput function = 0; flag=0; //promijeni varijablu zastave ponovo ) ) if (funkcija == 0)( // Ako se dugme otpusti ili pritisne dvaput, tada: myservo.write(90); //podesite za servo 90 stepeni – senzor će gledati unapred stop(); //robot ostaje nepomičan noTone(buzzer); //biper je isključen digitalWrite(led, HIGH);// i dioda je uključena ) inače if (funkcija == 1)(//Ako je tipka pritisnuta, tada: //Očitaj udaljenost... udaljenost = ultrasonic.Ranging(CM); //Savjet: Koristite "CM" za centimetre i "INC" za inče //Provjerite objekte. .. if (distance > 10)( naprijed(); //Sve je jasno, idemo naprijed! noTone(zujalica); digitalWrite(led,LOW); ) else if (udaljenost<=10){ stop(); //Обнаружен объект! Останавливаемся и проверяем слева и справа лучший способ обхода! tone(buzzer,500); // издаём звук digitalWrite(led,HIGH); // включаем светодиод //Начинаем сканировать... for(pos = 0; pos =0; pos-=1){ //идём от 180 градусов к 0 myservo.write(pos); // говорим серво пройти на позицию в переменной "pos" delay(10); // ждём 10 мс, пока сервопривод достигнет нужной позиции } checkRight= ultrasonic.Ranging(CM); myservo.write(90); // Датчик снова смотрит вперёд //Принимаем решение – двигаться влево или вправо? if (checkLeft checkRight){ right(); delay(400); // задержка, меняем значение при необходимости, чтобы заставить робота повернуться. } else if (checkLeft <=10 && checkRight <=10){ backward(); //Дорога перекрыта... возвращаемся и идём налево;) left(); } } } } void forward(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void backward(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void left(){ digitalWrite(motorA1, HIGH); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, HIGH); } void right(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, HIGH); digitalWrite(motorB1, HIGH); digitalWrite(motorB2, LOW); } void stop(){ digitalWrite(motorA1, LOW); digitalWrite(motorA2, LOW); digitalWrite(motorB1, LOW); digitalWrite(motorB2, LOW); }

Klikom na dugme "Uredi", možete urediti skicu prema vašim potrebama.

Na primjer, promjenom vrijednosti “10” izmjerene udaljenosti na prepreku u cm, smanjit ćete ili povećati udaljenost koju će robot Arduino skenirati u potrazi za preprekom.

Ako se robot ne kreće, može promijeniti kontakte elektromotora (motorA1 i motorA2 ili motorB1 i motorB2).

Korak 7: Završen robot

Vaš domaći robot za izbjegavanje prepreka baziran na Arduino mikrokontroleru je spreman.

Ljudi počinju učiti Arduino stvaranjem jednostavnih robota. Danas ću govoriti o najjednostavnijem robotu na Arduino Uno, koji će poput psa pratiti vašu ruku ili bilo koji drugi predmet koji reflektira infracrveno svjetlo. Ovaj robot će zabaviti i djecu. Moj trogodišnji nećak se nestrpljivo igrao sa robotom :)

Počeću nabrajanjem delova koji će biti potrebni tokom izgradnje - Arduino UNO;

Infracrveni daljinomjeri;

-3-voltni motori sa mjenjačima i kotačima;

- konektori za 3A baterije;

-baterija (ako nema dovoljno baterija);

-Releji za upravljanje motorima;

Pa, i drugi materijali koji će biti potrebni tokom procesa stvaranja.
Prvo napravimo bazu. Odlučio sam da ga napravim od drveta. Ispilio sam drvenu dasku na način da se motori savršeno uklapaju u utore


Zatim stegnem motore drvenom trakom, zavrtajući ovu traku

Zatim sam na kućište postavio arduino, relej, Bradboard, daljinomjere i rotirajuću šasiju ispod baze

Sada sve povezujemo prema dijagramu

Na kraju, otpremite sljedeću skicu na Arduino:

Const int R = 13; //pinovi na koje su spojeni IR daljinomjeri const int L = 12; int motorL = 9; //pinovi na koje je spojen relej 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); ) else ( digitalWrite(motorL,LOW); ) ) ) )

Princip rada je vrlo jednostavan. Lijevi daljinomjer je odgovoran za desni kotač, a desni za lijevi

Da vam bude jasnije, možete pogledati video koji prikazuje proces kreiranja i rad robota

Ovaj robot je vrlo jednostavan i svako ga može napraviti. Pomoći će vam da shvatite principe rada modula kao što su releji i IR daljinomjeri i kako ih najbolje koristiti.

Nadam se da vam se svidio ovaj zanat, zapamtite da su zanati cool!

Zdravo svima. Ovaj članak je kratka priča o tome kako uradi robot njihov ruke. Zašto priča, pitate se? To je zbog činjenice da je za proizvodnju takvih zanati potrebno je koristiti značajnu količinu znanja, koja je vrlo teško predstaviti u jednom članku. Proći ćemo kroz proces izgradnje, zaviriti u kod i na kraju oživjeti kreaciju iz Silikonske doline. Savjetujem vam da pogledate video kako biste stekli predstavu o tome šta biste trebali završiti.

Pre nego što krenete dalje, obratite pažnju na sledeće: tokom proizvodnje zanati korišten je laserski rezač. Možete izbjeći korištenje laserskog rezača ako imate dovoljno iskustva u radu svojim rukama. Preciznost je ključ uspješnog završetka projekta!

Korak 1: Kako funkcionira?

Robot ima 4 noge, sa 3 servo na svakoj od njih, koji mu omogućavaju da pomera svoje udove u 3 stepena slobode. Kreće se "puzećim hodom". Možda je spor, ali je jedan od najglatkijih.

Prvo morate naučiti robota da se kreće naprijed, nazad, lijevo i desno, zatim dodati ultrazvučni senzor, koji će pomoći u otkrivanju prepreka/prepreke, a zatim i Bluetooth modul, zahvaljujući kojem će kontrola robota dostići novi nivo .

Korak 2: Potrebni dijelovi

Skeleton od pleksiglasa debljine 2 mm.

Elektronski dio domaćeg proizvoda sastojat će se od:

  • 12 servos;
  • arduino nano (može se zamijeniti bilo kojom drugom arduino pločom);

  • Štit za upravljanje servosom;
  • napajanje (u projektu je korišteno napajanje od 5V 4A);

  • ultrazvučni senzor;
  • hc 05 bluetooth modul;

Da biste napravili štit, trebat će vam:

  • štampana ploča (po mogućnosti sa zajedničkim vodovima (sabirnicama) napajanja i uzemljenja);
  • pin konektori među pločama - 30 kom;
  • utičnice po ploči – 36 kom;

  • žice.

Alati:

  • Laserski rezač (ili vješte ruke);
  • Super ljepilo;
  • Toplo topljivo ljepilo.

Korak 3: Skelet

Upotrijebimo grafički program za crtanje komponenti skeleta.

Nakon toga smo izrezali 30 dijelova budućeg robota bilo kojom dostupnom metodom.

Korak 4: Montaža

Nakon rezanja skinite zaštitni omotač od papira sa pleksiglasa.

Zatim počinjemo sa sastavljanjem nogu. Elementi za pričvršćivanje ugrađeni u dijelove skeleta. Sve što treba učiniti je spojiti dijelove zajedno. Veza je prilično čvrsta, ali za veću pouzdanost možete nanijeti kapljicu superljepila na elemente za pričvršćivanje.

Zatim morate modificirati servo (zalijepiti šraf nasuprot servo vratila).

Ovom modifikacijom robota ćemo učiniti stabilnijim. Potrebno je modificirati samo 8 servo motora; preostala 4 će biti pričvršćena direktno na tijelo.

Noge pričvršćujemo na spojni element (zakrivljeni dio), a ovo zauzvrat na servo pogon na tijelu.

Korak 5: Izrada štita

Izrada ploče je prilično jednostavna ako pratite fotografije predstavljene u koraku.

Korak 6: Elektronika

Pričvrstimo pinove servo pogona na arduino ploču. Pinovi moraju biti povezani ispravnim redoslijedom, inače ništa neće raditi!

Korak 7: Programiranje

Vreme je da oživimo Frankenštajna. Prvo, učitajmo legs_init program i uvjerimo se da je robot u poziciji kao na slici. Zatim, učitajmo quattro_test da provjerimo da li robot reagira na osnovne pokrete, kao što je kretanje naprijed, nazad, lijevo i desno.

VAŽNO: Morate dodati dodatnu biblioteku u arduino IDE. Link do biblioteke nalazi se u nastavku:

Robot mora napraviti 5 koraka naprijed, 5 koraka nazad, skrenuti lijevo za 90 stepeni, skrenuti desno za 90 stepeni. Ako Frankenstein uradi sve kako treba, krećemo se u pravom smjeru.

P. S: Postavite robota na šolju, kao na postolje, tako da ga ne morate svaki put stavljati na početnu tačku. Nakon što testovi pokažu da robot radi normalno, možemo nastaviti testiranje tako što ćemo ga postaviti na tlo/pod.

Korak 8: Inverzna kinematika

Inverzna kinematika je ono što zapravo pokreće robota (ako vas ne zanima matematička strana ovog projekta i žurite da završite projekat, možete preskočiti ovaj korak, ali znajući šta pokreće robota uvijek će vam biti korisno).

Jednostavno rečeno, inverzna kinematika, ili skraćeno IR, je “dio” trigonometrijskih jednačina koje određuju položaj oštrog kraja noge, ugao svakog servo uređaja, itd., što na kraju određuju nekoliko preliminarnih postavki. Na primjer, dužina svakog koraka robota ili visina na kojoj će se tijelo nalaziti tijekom kretanja/odmora. Koristeći ove unaprijed definirane parametre, sistem će izdvojiti količinu za koju bi svaki servo trebao biti pomaknut kako bi kontrolirao robota koristeći date komande.

Rezultat je prilično smiješan robot koji može vidjeti prepreke ispred sebe, analizirati situaciju i onda, samo izabravši najbolju rutu, kreće dalje. Pokazalo se da je robot vrlo upravljiv. Može se okretati za 180 stepeni, a ugao rotacije je 45 i 90 stepeni. Autor je kao glavni kontroler koristio Iteaduino, koji je analog Arduina.

Materijali i alati za izradu robota:
- mikrokontroler (Arduino ili sličan Iteaduino);
- ultrazvučni senzor;
- držač baterije;
- kineske igračke za stvaranje međuosovinskog razmaka (možete kupiti gotovu);
- rezači žice;
- ljepilo;
- žice;
- motori;
- lesonita;
- ubodna testera;
- tranzistori (D882 P).

Proces proizvodnje robota:

Prvi korak. Kreiranje međuosovinskog razmaka
Kako bi stvorio međuosovinsko rastojanje, autor je kupio dva kineska autića. Međutim, ne morate da brinete o tome ako imate viška novca, jer možete kupiti već gotovu bazu. Koristeći sekače žice, automobili su prerezani na dva dijela kako bi se stvorile dvije pogonske osovine. Ovi dijelovi su zatim zalijepljeni zajedno. Međutim, u ovom slučaju možete koristiti i lemilicu; plastika se može savršeno zalemiti.

Prilikom odabira automobila najbolje je uzeti igračke s običnim kotačima, jer, prema riječima autora, sa šiljcima poput njegovih, robot mnogo skače.

Postoji još jedan trenutak kada će žice izaći iz motora; na jednom od njih morate zapamtiti da promijenite polaritet.


Drugi korak. Izrada gornjeg poklopca
Gornji poklopac robota je od fiberboard-a, a za ove svrhe se može koristiti i debeli karton. Na poklopcu možete vidjeti pravokutnu rupu, koja bi trebala biti smještena tako da je os servo pogona, koji će biti umetnut u njega, smještena simetrično. Što se tiče rupe u sredini, žice će izaći kroz nju.


Treći korak. Robot stuffing
Najbolje je koristiti odvojeno napajanje za spajanje kućišta, budući da je kontroleru potrebno 9V za napajanje, dok je motorima potrebno samo 3V. Općenito, držači baterija su već ugrađeni u šasiju takvih mašina, samo ih je potrebno paralelno povezati.








Motori su povezani sa kontrolerom pomoću tranzistora tipa D882 P. Izvučeni su sa stare kontrolne table mašine. Najbolje je, naravno, koristiti tranzistore snage tipa TIP120B, ali ih je autor jednostavno odabrao na osnovu odgovarajućih karakteristika. Svi elektronski dijelovi su povezani prema navedenoj shemi.

Nakon flešovanja firmvera robota, biće spreman za testiranje. Da bi robot imao vremena da se okrene pod određenim kutom, potrebno je odabrati pravo vrijeme rada za motore.

Što se tiče senzora, ultrazvučni je potrebno spojiti na 7. digitalni izlaz mikrokontrolera. Servo motor je spojen na 3. digitalni ulaz, baza tranzistora lijevog motora je spojena na pin 11, a baza desnog spojena na 10..

Ako se Krona koristi kao napajanje, onda je minus spojen na GND, a plus na VIN. Također morate spojiti emiter tranzistora i negativni kontakt iz napajanja šasije robota na GND.

Dragi naši čitatelji, otvaramo seriju članaka posvećenih kreiranju robota baziranog na Arduinu. Pretpostavlja se da je čitalac početnik i da ima samo osnovno znanje o predmetu. Trudićemo se da sve predstavimo što detaljnije i jasnije.

Dakle, uvod u problem:

Počnimo s konceptom: želimo robota koji se može samostalno kretati po prostoriji, izbjegavajući sve prepreke na koje se naiđe na putu. Zadatak je postavljen.

Sada da shvatimo šta nam treba:

  1. Platforma (telo). Ovdje postoje opcije: uradite sve sami, kupite dijelove i sastavite ih ili kupite gotove. Birajte šta god želite

Komplet obično uključuje platformu i jedan motor za dva pogonska točka (gusjenica) i pretinac za baterije. Postoje opcije pogona na sve kotače - s motorom za 4 kotača. Za početnike preporučujemo uzimanje platformi tipa tenk

Dva pogonska točka i treći potporni točak.

  1. Zatim nam je potreban daljinomjer. Sonar (aka daljinomjer, aka Ultrazvučni modul) Kao daljinomjer, u početku je bio izbor između ultrazvučnog i infracrvenog. Kako su ultrazvučne karakteristike znatno bolje (maksimalni domet je oko 4-5 metara, naspram 30-60 cm), a cijena približno ista, izbor je pao na Ultrasonic. Najčešći model je HC-SR04.

  1. Motor Driver.

Sta da radim? Prvo što vam pada na pamet je da se na izlaz mikrokontrolera stavi tranzistor i iz njega napajaju motori. Ovo je dobro, naravno, ali neće ići ako želimo da okrenemo motor u drugom smjeru... Ali H-most, koji je malo složenije kolo od para tranzistora, će se dobro nositi sa ovaj zadatak. Ali u ovom slučaju ih ima dosta u obliku gotovih integriranih kola, tako da mislim da nema potrebe da izmišljamo točak - kupit ćemo gotov. Uz to, cijena je 2-3 dolara... Idemo dalje. Za te svrhe kupit ćemo L293D čip, ili, još bolje, Motor Shield baziran na njemu.

Štit motora na L298N čipu

  1. Generacija zvuka - piezo emiter

Najjednostavnija opcija za generiranje zvuka je korištenje piezo emitera.

Piezokeramički emiteri (piezo emiteri) su uređaji za elektroakustičnu reprodukciju zvuka koji koriste piezoelektrični efekat. (efekat polarizacije dielektrika pod uticajem mehaničkih naprezanja (direktni piezoelektrični efekat). Postoji i inverzni piezoelektrični efekat - pojava mehaničkih deformacija pod uticajem električnog polja.

Direktan piezoelektrični efekat: u piezo upaljačima, za dobijanje visokog napona preko iskrišta;

Obrnuti piezoelektrični efekat: u piezo emiterima (efikasni na visokim frekvencijama i malih dimenzija);)

Piezo emiteri se široko koriste u raznim elektronskim uređajima - budilnikima, telefonima, elektronskim igračkama i kućnim aparatima. Piezokeramički emiter se sastoji od metalne ploče na koju se nanosi sloj piezoelektrične keramike, koja ima provodljivi premaz s vanjske strane. Ploča i sprej su dva kontakta. Piezo emiter se može koristiti i kao piezoelektrični mikrofon ili senzor.

To je sve što nam treba u početku. Prvo, pogledajmo kako sastaviti i učiniti da ovi dijelovi rade pojedinačno u zasebnim lekcijama.

Lekcija 2. Rad sa ultrazvučnim senzorom za mjerenje udaljenosti (daljnomjerom)

Lekcija 3. Arduino i motorni štit baziran na L298N

Lekcija 4. Reprodukcija zvuka - piezo emiter

Lekcija 5. Sastavljanje robota i otklanjanje grešaka u programu

Povratak

×
Pridružite se zajednici “koon.ru”!
U kontaktu sa:
Već sam pretplaćen na zajednicu “koon.ru”