Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Stavím pro zábavu robota, kterého chci autonomně pohybovat v domě.
Je to dlouhá práce a dělám ji krok za krokem.
Toto instruktážní zaměření na detekci překážek pomocí Arduino Mega
Ultrazvukové senzory HC-SR04 vs HY-SRF05 jsou levné a snadno se používají, ale jejich integrace do smyčky mikrokontroléru v komplexním robotu může být obtížná. Chtěl jsem spustit detekci překážek asynchronním způsobem.
_
Již jsem publikoval 3 instruktáže o funkcích tohoto robota:
- Vyrobte si kodér kol
- Vytvořte si WIFI bránu
- Použijte jednotku inerciálního modulu
A dokumentaci o kombinaci umělé inteligence a ultrazvuku k lokalizaci robota.
Krok 1: Co je přesně problém s ultrazvukovými senzory a mikrokontroléry?
Synchronní čekání a omezení Arduina
Kód mikrokontrolérů běží ve smyčce a nepodporuje více vláken. Ultrazvukové senzory jsou založeny na délce signálu. Tato doba trvá až 30 ms, což je velmi dlouhé čekání uvnitř smyčky, když se mikrokontroléry musí vypořádat s více motory a senzory (například servomotory a stejnosměrné motory s kodéry kol).
Chtěl jsem tedy vyvinout objekt, který běží asynchronně.
Krok 2: Jak to funguje?
Byl navržen pro Atmega pro detekci překážek. Podporuje až 4 ultrazvukové senzory.
Díky pravidelnému časovému přerušení může systém monitorovat až 4 ultrazvukové senzory. Hlavní kód musí pouze definovat, který senzor se má aktivovat s podmínkou a prahem. Hlavní bude přerušen pouze v případě, že se objeví (podmínka, práh).
Mezi hlavní funkce patří:
- Alert je základní detekce překážek a poskytuje přerušení, pokud alespoň 1 ze 4 senzorů detekuje vzdálenost pod prahem
- Monitor je rozšířená funkce, která poskytuje přerušení při kombinaci vzdálenosti až 4 senzorů. Možné podmínky jsou nad, pod, stejné nebo se nerovná prahovým hodnotám.
Krok 3: Technické detaily
Použijte timer4, takže pin 6 7 8 nelze použít jako PWM.
Pro každý senzor potřebuje objekt spouštěcí PIN a přerušovací PIN.
Nahoře na čidlech přerušení PINů potřebuje objekt jiný přerušení PIN pro používání softwaru.
Krok 4: Jak implementovat?
Připojte senzory výše
Stáhnout z tohoto úložiště GitHub
- EchoObstacleDetection.cpp,
- EchoObstacleDetection.h
- PříkladEchoObstacleDetection.ino
Vytvořte adresář EchoObstacleDetection v knihovně IDE a přesuňte.cpp a.h
Vyzkoušejte to
Otevřete ExampleEchoObstacleDetection.ino.
Toto je jednoduchý příklad detekce překážek, který běží se 2 ultrazvukovými senzory.
Výstup je směrován na sériový monitor. Nejprve vytiskne vzdálenosti detekované 2 senzory a poté vytiskne výstrahy v závislosti na vzdálenostech pod prahovými hodnotami.