Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Buduję dla zabawy robota, którym chcę autonomicznie poruszać się w domu.
To długa praca i robię krok po kroku.
Ten instruktażowy koncentruje się na wykrywaniu przeszkód za pomocą Arduino Mega
Czujniki ultradźwiękowe HC-SR04 vs HY-SRF05 są tanie i proste w użyciu, ale mogą być trudne do zintegrowania z pętlą mikrokontrolera w złożonym robocie. Chciałem uruchomić wykrywanie przeszkód w sposób asynchroniczny.
_
Opublikowałem już 3 instrukcje dotyczące funkcji tego robota:
- Zrób swój enkoder koła
- Stwórz swoją bramkę WIFI
- Użyj jednostki modułu inercyjnego
Oraz dokumentacja o połączeniu sztucznej inteligencji i ultradźwięków w lokalizacji robota.
Krok 1: Na czym dokładnie polega problem z czujnikami ultradźwiękowymi i mikrokontrolerami?
Synchroniczne czekanie i ograniczenia Arduino
Kod mikrokontrolera działa w pętli i nie obsługuje wielowątkowości. Czujniki ultradźwiękowe są oparte na czasie trwania sygnału. Czas ten trwa do 30 ms, co jest bardzo długim okresem oczekiwania wewnątrz pętli, gdy mikrokontrolery mają do czynienia z wieloma silnikami i czujnikami (na przykład serwosilniki i silniki prądu stałego z enkoderami kół).
Chciałem więc stworzyć obiekt działający asynchronicznie.
Krok 2: Jak to działa?
Został zaprojektowany dla Atmegi do wykrywania przeszkód. Obsługuje do 4 czujników ultradźwiękowych.
Dzięki okresowej przerwie czasowej system może monitorować do 4 czujników ultradźwiękowych. Kod główny musi tylko określić, który czujnik aktywować z warunkiem i progiem. Główny zostanie przerwany tylko w przypadku pojawienia się (warunek, próg).
Główne funkcje to:
- Alert jest podstawowym wykrywaniem przeszkód i zapewnia przerwanie, jeśli co najmniej 1 z 4 czujników wykryje odległość poniżej progu
- Monitor to rozszerzona funkcja, która zapewnia przerwanie w przypadku kombinacji warunków odległości do 4 czujników. Możliwe warunki są powyżej, poniżej, równe lub nie równe progom.
Krok 3: Szczegóły techniczne
Użyj timera4, aby pin 6 7 8 nie mógł być używany jako PWM.
Dla każdego czujnika obiekt potrzebuje kodu PIN wyzwalacza i kodu PIN przerwania.
W górnej części czujników przerwania PIN-ów obiekt potrzebuje innego przerwania PIN-u do korzystania z oprogramowania.
Krok 4: Jak wdrożyć?
Podłącz czujniki jak powyżej
Pobierz z tego repozytorium GitHub
- Wykrywanie Przeszkód Echo.cpp,
- EchoObstacleDetection.h
- PrzykładEchoObstacleDetection.ino
Utwórz katalog EchoObstacleDetection w swojej bibliotece IDE i przenieś.cpp i.h
Sprawdź to
Otwórz PrzykładEchoObstacleDetection.ino.
Jest to prosty przykład wykrywania przeszkód działający z 2 czujnikami ultradźwiękowymi.
Wyjście kierowane jest na monitor szeregowy. Najpierw wydrukuje odległości wykryte przez 2 czujniki, a następnie wydrukuje alerty w zależności od odległości poniżej progów.