- Jak postavit překážku vyhýbající se robotu pomocí ultrazvukového senzoru
- Požadované komponenty
- Kruhový diagram
- Překážka vyhýbání se robotu pomocí Arduino - Code
Robot vyhýbání se překážkám je inteligentní zařízení, které dokáže automaticky vycítit překážku před sebou a vyhnout se jí tím, že se otočí jiným směrem. Tato konstrukce umožňuje robotovi navigovat v neznámém prostředí tím, že předchází kolizím, což je primární požadavek pro každého autonomního mobilního robota. Aplikace robota zabraňujícího překážkám není omezena a používá se nyní ve většině vojenských organizací, což pomáhá provádět mnoho rizikových prací, které nemohou vykonávat žádní vojáci.
Dříve jsme postavili Robot vyhýbání se překážkám pomocí Raspberry Pi a pomocí mikrokontroléru PIC. Tentokrát postavíme robota vyhýbajícího se překážkám pomocí ultrazvukového senzoru a Arduina. Zde se používá ultrazvukový senzor ke snímání překážek v cestě výpočtem vzdálenosti mezi robotem a překážkou. Pokud robot najde nějakou překážku, změní směr a pokračuje v pohybu.
Jak postavit překážku vyhýbající se robotu pomocí ultrazvukového senzoru
Před sestavením robota je důležité pochopit, jak funguje ultrazvukový senzor, protože tento senzor bude hrát důležitou roli při detekci překážky. Základním principem fungování ultrazvukového senzoru je zaznamenat čas, který senzor potřebuje k přenosu ultrazvukových paprsků a přijetí ultrazvukových paprsků po nárazu na povrch. Poté se vzdálenost vypočítá pomocí vzorce. V tomto projektu se používá široce dostupný ultrazvukový senzor HC-SR04. Chcete-li použít tento senzor, bude podobný postup vysvětlen výše.
Trigový kolík HC-SR04 je tedy vyroben vysoko pro minimálně 10 nás. Zvukový paprsek je vysílán s 8 pulsy po 40 kHz.
Signál poté zasáhne povrch a vrátí se zpět a zachycen pinem Echo přijímače HC-SR04. Echo pin se už v té době dostal vysoko.
Čas potřebný k návratu paprsku je uložen v proměnných a převeden na vzdálenost pomocí příslušných výpočtů, jak je uvedeno níže
Vzdálenost = (čas x rychlost zvuku ve vzduchu (343 m / s)) / 2
V mnoha projektech jsme použili ultrazvukový senzor, abychom se dozvěděli více o ultrazvukovém senzoru, zkontrolovali další projekty související s ultrazvukovým senzorem.
Komponenty pro robota vyhýbajícího se překážkám lze snadno najít. K výrobě podvozku lze použít jakýkoli podvozek hračky nebo jej lze vyrobit na zakázku.
Požadované komponenty
- Arduino NANO nebo Uno (libovolná verze)
- Ultrazvukový senzor HC-SR04
- Modul ovladače motoru LM298N
- 5V stejnosměrné motory
- baterie
- Kola
- Podvozek
- Propojovací dráty
Kruhový diagram
Kompletní schéma zapojení tohoto projektu je uvedeno níže, jak vidíte, že používá Arduino nano. Můžeme ale také postavit překážku, která se vyhýbá robotu pomocí Arduino UNO se stejným okruhem (postupujte podle stejného pinoutu) a kódem.
Jakmile je okruh připraven, musíme postavit naši překážku vyhýbající se autu sestavením okruhu na robotický podvozek, jak je znázorněno níže.
Překážka vyhýbání se robotu pomocí Arduino - Code
Kompletní program s ukázkovým videem je uveden na konci tohoto projektu. Program bude zahrnovat nastavení modulu HC-SR04 a výstup signálů na piny motoru, aby se odpovídajícím způsobem posunul směr motoru. V tomto projektu nebudou použity žádné knihovny.
Nejprve definujte trig a echo pin HC-SR04 v programu. V tomto projektu je trig pin připojen k GPIO9 a echo pin je připojen k GPIO10 Arduino NANO.
int trigPin = 9; // trig pin HC-SR04 int echoPin = 10; // Echo pin HC-SR04
Definujte kolíky pro vstup modulu ovladače motoru LM298N. LM298N má 4 datové vstupní kolíky sloužící k řízení směru motoru, který je k němu připojen.
int revleft4 = 4; // REVERZNÍ pohyb levého motoru int fwdleft5 = 5; // ForWarD pohyb levého motoru int revright6 = 6; // Zpětný pohyb pravého motoru int fwdright7 = 7; // ForWarD pohyb pravého motoru
V nastavení () funkce, určuje směr dat používaných GPIO piny. Čtyři piny motoru a Trig pin jsou nastaveny jako OUTPUT a Echo Pin jsou nastaveny jako Input.
pinMode (revleft4, OUTPUT); // nastavit piny motoru jako výstupní pinMode (fwdleft5, OUTPUT); pinMode (revright6, VÝSTUP); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // nastavit trig pin jako výstupní pinMode (echoPin, INPUT); // nastaví echo pin jako vstup pro zachycení odražených vln
V smyčky () funkci, se vzdálenost od HC-SR04 a na základě vzdálenosti pohybovat směrem motoru. Vzdálenost bude ukazovat vzdálenost objektu přicházejícího před robotem. Vzdálenost je měřena rozbitím ultrazvukového paprsku až na 10 us a jeho přijetím po 10 us. Chcete-li se dozvědět více o měření vzdálenosti pomocí ultrazvukového senzoru a Arduina, klikněte na odkaz.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // odeslání vln na 10 us delayMicroseconds (10); duration = pulseIn (echoPin, HIGH); // vzdálenost odražených vln = trvání / 58,2; // převést na zpoždění vzdálenosti (10);
Pokud je vzdálenost větší než definovaná vzdálenost, znamená to, že v její cestě není překážka a bude se pohybovat směrem dopředu.
if (vzdálenost> 19) { digitalWrite (fwdright7, HIGH); // posun vpřed digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Pokud je vzdálenost menší než definovaná vzdálenost, aby se zabránilo překážce, znamená to, že je před vámi nějaká překážka. V této situaci se tedy robot na chvíli zastaví a poté se zase na chvíli zastaví a poté se otočí jiným směrem.
if (vzdálenost <18) { digitalWrite (fwdright7, LOW); // Zastavit digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); zpoždění (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); zpoždění (500); digitalWrite (fwdright7, LOW); // Zastavit digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); zpoždění (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); zpoždění (500); }
Takto se robot může vyhnout překážkám v cestě, aniž by se kdekoli zasekl. Najít kompletní kód a video níže.