Spisu treści:

Wykrywaj przeszkody asynchronicznie za pomocą ultradźwięków: 4 kroki
Wykrywaj przeszkody asynchronicznie za pomocą ultradźwięków: 4 kroki

Wideo: Wykrywaj przeszkody asynchronicznie za pomocą ultradźwięków: 4 kroki

Wideo: Wykrywaj przeszkody asynchronicznie za pomocą ultradźwięków: 4 kroki
Wideo: Life Beyond: Kosmiczna podróż do tajemniczego układu planetarnego Wolf 1061 | Dokument o kosmosie 2024, Lipiec
Anonim
Wykrywaj przeszkody asynchronicznie za pomocą ultradźwięków
Wykrywaj przeszkody asynchronicznie za pomocą ultradźwięków

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?

Na czym dokładnie polega problem z czujnikami ultradźwiękowymi i mikrokontrolerami?
Na czym dokładnie polega problem z czujnikami ultradźwiękowymi i mikrokontrolerami?
Na czym dokładnie polega problem z czujnikami ultradźwiękowymi i mikrokontrolerami?
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?

Jak to działa ?
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ć?

Jak wdrożyć?
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.

Zalecana: