- Ako pomocou ultrazvukového snímača postaviť robota, ktorý sa vyhýba robotovi
- Súčasti sú povinné
- Schéma zapojenia
- Prekážka vyhýbajúca sa robotu pomocou Arduino - kódu
Robot vyhýbajúci sa prekážkam je inteligentné zariadenie, ktoré dokáže automaticky vycítiť prekážku pred sebou a vyhnúť sa im otáčaním sa iným smerom. Táto konštrukcia umožňuje robotovi navigovať v neznámom prostredí vyhýbaním sa kolíziám, čo je primárnou požiadavkou pre každého autonómneho mobilného robota. Aplikácia robota na zabránenie prekážkam nie je obmedzená a v súčasnosti sa používa vo väčšine vojenských organizácií, čo pomáha vykonávať mnoho rizikových prác, ktoré nemôžu robiť žiadni vojaci.
Predtým sme postavili Robot vyhýbania sa prekážkam pomocou Raspberry Pi a pomocou mikrokontroléra PIC. Tentokrát postavíme robota vyhýbajúceho sa prekážkam pomocou ultrazvukového senzora a Arduina. Tu sa ultrazvukový senzor používa na snímanie prekážok v ceste výpočtom vzdialenosti medzi robotom a prekážkou. Ak robot nájde prekážku, zmení smer a pokračuje v pohybe.
Ako pomocou ultrazvukového snímača postaviť robota, ktorý sa vyhýba robotovi
Pred výrobou robota je dôležité pochopiť, ako pracuje ultrazvukový snímač, pretože tento snímač bude hrať dôležitú úlohu pri detekcii prekážky. Základným princípom fungovania ultrazvukového snímača je zaznamenanie času potrebného na prenos ultrazvukových lúčov a ich príjem po dopade na povrch. Ďalej sa vzdialenosť počíta pomocou vzorca. V tomto projekte sa používa všeobecne dostupný ultrazvukový snímač HC-SR04. Pri použití tohto snímača bude podobný prístup vysvetlený vyššie.
Trigový kolík HC-SR04 je vyrobený vysoko pre minimálne 10 nás. Zvukový lúč je vysielaný s 8 impulzmi po 40 KHz.
Signál potom zasiahne povrch a vráti sa späť a zachytený kolíkom Echo prijímača HC-SR04. Echo pin sa už v tom čase posielal vysoko.
Čas potrebný na návrat lúča je uložený v premenných a prevedený na vzdialenosť pomocou vhodných výpočtov, ako je uvedené nižšie
Vzdialenosť = (čas x rýchlosť zvuku vo vzduchu (343 m / s)) / 2
Použili sme ultrazvukový senzor v mnohých projektoch, aby sme sa dozvedeli viac o ultrazvukovom senzore, skontrolovali ďalšie projekty súvisiace s ultrazvukovým senzorom.
Súčasti tohto robota vyhýbajúceho sa prekážkam nájdete ľahko. Na výrobu podvozkov je možné použiť akýkoľvek podvozok hračiek alebo ich možno vyrobiť na mieru.
Súčasti sú povinné
- Arduino NANO alebo Uno (ľubovoľná verzia)
- Ultrazvukový snímač HC-SR04
- Modul ovládača motora LM298N
- 5V jednosmerné motory
- Batéria
- Kolesá
- Podvozok
- Prepojovacie drôty
Schéma zapojenia
Kompletná schéma zapojenia tohto projektu je uvedená nižšie, pretože môžete vidieť, že používa Arduino nano. Môžeme však tiež postaviť prekážku, ktorá sa vyhýba robotovi, a to pomocou Arduino UNO s rovnakým okruhom (postupujte podľa rovnakého pinoutu) a kódu.
Keď je okruh pripravený, musíme postaviť našu prekážku vyhýbajúcu sa autu tak, že ho zostavíme na robotický podvozok, ako je to znázornené nižšie.
Prekážka vyhýbajúca sa robotu pomocou Arduino - kódu
Kompletný program s ukážkovým videom je uvedený na konci tohto projektu. Program bude obsahovať nastavenie modulu HC-SR04 a výstup signálov do pinov motora, aby sa zodpovedajúcim spôsobom posúval smer motora. V tomto projekte nebudú použité žiadne knižnice.
Najprv definujte trig a echo pin HC-SR04 v programe. V tomto projekte je trig pin pripojený k GPIO9 a echo pin je pripojený k GPIO10 Arduino NANO.
int trigPin = 9; // trig pin HC-SR04 int echoPin = 10; // Echo pin HC-SR04
Definujte kolíky pre vstup modulu ovládača motora LM298N. LM298N má 4 vstupné kolíky dátových vstupov slúžiace na riadenie smeru motora, ktorý je k nemu pripojený.
int revleft4 = 4; // REVERZNÝ pohyb ľavého motora int fwdleft5 = 5; // ForWarD pohyb ľavého motora int revright6 = 6; // REVERZNÝ pohyb pravého motora int fwdright7 = 7; // ForWarD pohyb pravého motora
Vo funkcii setup () definujte smer dát použitých GPIO pinov. Štyri piny motora a Trig pin sú nastavené ako OUTPUT a Echo Pin sú nastavené ako Input.
pinMode (revleft4, OUTPUT); // nastaví piny motora ako výstupný pinMode (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // nastaví trig pin ako výstupný pinMode (echoPin, INPUT); // nastaví echo pin ako vstup na zachytenie odrazených vĺn
Vo funkcii loop () získajte vzdialenosť od HC-SR04 a na základe vzdialenosti posuňte smer motora. Táto vzdialenosť bude ukazovať vzdialenosť objektu prichádzajúceho pred robotom. Vzdialenosť sa meria rozbitím ultrazvukového lúča až na 10 nás a prijatím po 10us. Ak sa chcete dozvedieť viac o meraní vzdialenosti pomocou ultrazvukového senzora a Arduina, kliknite na odkaz.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // posielanie vĺn na 10 us delayMicroseconds (10); duration = pulseIn (echoPin, HIGH); // príjem odrazených vĺn vzdialenosť = trvanie / 58,2; // prepočítať na oneskorenie vzdialenosti (10);
Ak je vzdialenosť väčšia ako definovaná vzdialenosť, znamená to, že v jej ceste nie je prekážka a bude sa pohybovať smerom dopredu.
if (vzdialenosť> 19) { digitalWrite (fwdright7, HIGH); // posun vpred digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Ak je vzdialenosť menšia ako definovaná vzdialenosť, aby sa zabránilo prekážke, znamená to, že je pred vami prekážka. Takže v tejto situácii sa robot na chvíľu zastaví a potom sa vráti dozadu na chvíľu znova a potom odbočí do iného smeru.
if (vzdialenosť <18) { digitalWrite (fwdright7, LOW); // Zastaviť digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); oneskorenie (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); oneskorenie (500); digitalWrite (fwdright7, LOW); // Zastaviť digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); oneskorenie (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); oneskorenie (500); }
Takto sa robot môže vyhnúť prekážkam na svojej ceste bez toho, aby kdekoľvek uviazol. Nájsť kompletný kód a video nižšie.