Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Staviam pre zábavu robota, ktorého chcem autonómne pohybovať v dome.
Je to dlhá práca a robím ju krok za krokom.
Toto poučenie sa zameriava na detekciu prekážok pomocou Arduino Mega
Ultrazvukové snímače HC-SR04 vs HY-SRF05 sú lacné a ľahko sa používajú, ale je ťažké ich integrovať do slučky mikrokontroléra v komplexnom robote. Chcel som spustiť detekciu prekážok asynchrónnym spôsobom.
_
Už som zverejnil 3 návody na funkcie tohto robota:
- Vyrobte si kodér kolies
- Vytvorte si svoju WIFI bránu
- Použite jednotku inerciálneho modulu
A dokumentácia o kombinácii umelej inteligencie a ultrazvukov na lokalizáciu robota.
Krok 1: Čo je presne problém s ultrazvukovými snímačmi a mikrokontrolérmi?
Synchrónne obmedzenia čakania a Arduina
Kód mikrokontroléra beží v slučke a nepodporuje viacvláknové. Ultrazvukové snímače sú založené na trvaní signálu. Toto trvanie trvá až 30 m s, čo je veľmi dlhé čakanie vo vnútri slučky, keď sa mikrokontroléry musia vysporiadať s viacerými motormi a snímačmi (napríklad so servomotormi a jednosmernými motormi s enkodérmi kolies).
Preto som chcel vyvinúť objekt, ktorý beží asynchrónne.
Krok 2: Ako to funguje?
Bol navrhnutý pre Atmega na detekciu prekážok. Podporuje až 4 ultrazvukové senzory.
Vďaka pravidelnému časovému prerušeniu môže systém monitorovať až 4 ultrazvukové senzory. Hlavný kód musí iba definovať, ktorý senzor sa má aktivovať s podmienkou a prahom. Hlavný bude prerušený iba v prípade, že sa objaví (podmienka, prah).
Medzi hlavné funkcie patria:
- Výstraha je základnou detekciou prekážok a poskytuje prerušenie, ak najmenej 1 zo 4 senzorov detekuje vzdialenosť pod jeho prahom
- Monitor je rozšírená funkcia, ktorá poskytuje prerušenie pri kombinácii vzdialenosti až 4 senzorov. Možné podmienky sú prahové hodnoty, sú pod nimi, rovnajú sa alebo sa im rovnajú.
Krok 3: Technické detaily
Použite timer4, takže pin 6 7 8 nemožno použiť ako PWM.
Pre každý senzor potrebuje objekt spúšťací PIN a PIN prerušenia.
Na vrchu senzorov prerušovacie PINy potrebuje objekt iný prerušovací PIN na používanie softvéru.
Krok 4: Ako implementovať?
Pripojte snímače podľa vyššie uvedeného postupu
Stiahnite si z tohto úložiska GitHub
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- PríkladEchoObstacleDetection.ino
Vytvorte adresár EchoObstacleDetection vo svojej knižnici IDE a presuňte súbory.cpp a.h
Otestujte to
Otvorte PríkladEchoObstacleDetection.ino.
Jedná sa o jednoduchý príklad detekcie prekážok, ktorý beží s 2 ultrazvukovými snímačmi.
Výstup je smerovaný na sériový monitor. Najprv vytlačí vzdialenosti detekované dvoma senzormi a potom vytlačí výstrahy v závislosti od vzdialenosti pod prahovými hodnotami.