Spisu treści:

Radar podczerwieni z Arduino: 6 kroków
Radar podczerwieni z Arduino: 6 kroków

Wideo: Radar podczerwieni z Arduino: 6 kroków

Wideo: Radar podczerwieni z Arduino: 6 kroków
Wideo: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Listopad
Anonim
Image
Image

W tym małym projekcie chciałbym pokazać, jak można stworzyć prosty Radar w domu z Arduino. Istnieje wiele podobnych projektów w Internecie, ale wszystkie wykorzystują czujnik ultradźwiękowy do pomiaru odległości. W tym projekcie wykorzystuję czujnik podczerwieni do pomiaru odległości.

Moim celem jest stworzenie za jego pomocą bardzo prostego i taniego systemu LIDAR oraz wdrożenie urządzenia mapującego.

Kieszonkowe dzieci

  • Arduino (użyłem Maple Mini)
  • Czujnik odległości Sharp (użyłem Sharp GP2Y0A02YK0F)
  • Mikroserwo (9g)
  • Deska do krojenia chleba, przewody
  • Opcjonalnie: rezystor 4,7k, kondensator 100nF

Krok 1: Ultradźwiękowy czujnik podczerwieni VS

Schematyczny
Schematyczny

Główna różnica między ultradźwiękowymi i podczerwonymi czujnikami odległości polega na tym, że czujnik ultradźwiękowy mierzy odległość w szerszym zakresie. Dlatego nie jest w stanie precyzyjnie zlokalizować położenia przeszkody. Oznacza to, że mierzy odległość do najbliższego obiektu, który znajduje się w zakresie kątów ~+-30°.

Oczywiście nie oznacza to, że sensor Sharp jest lepszy. Czasami ta właściwość może być bardzo przydatna (np. wykorzystywana przez drony do pomiaru wysokości od ziemi). Właściwy wybór jest całkowicie uzależniony od wymagań Twojego projektu.

Krok 2: Schemat

Schematyczny
Schematyczny
Schematyczny
Schematyczny

Wykonanie połączenia między częściami jest bardzo proste. Wybierz wyjście PWM i wejście analogowe na płycie Arduino i podłącz czujniki odległości Servo i Sharp do tych pinów. Użyłem do tego celu następujących pinów:

  • PA0: Wejście analogowe dla czujnika odległości Sharp
  • PA9: Wyjście PWM dla serwomechanizmu

Czasami czujnik Sharp IR może mieć zaszumiony sygnał wyjściowy, dlatego musisz założyć na niego prosty filtr dolnoprzepustowy. Użyłem rezystora 4,7k i kondensatora 100nF, aby zredukować szumy na pinie analogowym. Poza tym filtrowałem również zmierzoną wartość w kodzie, odczytując ją wielokrotnie i obliczając średnią.

Krok 3: Charakterystyka czujnika

Charakterystyka czujnika
Charakterystyka czujnika
Charakterystyka czujnika
Charakterystyka czujnika

Niestety zastosowany czujnik odległości na podczerwień ma nieliniową charakterystykę. Oznacza to, że aby uzyskać odległość, nie wystarczy pomnożyć zmierzoną wartość ADC przez stałą wartość i dodać do niej kolejną stałą wartość.

Chociaż karta katalogowa czujnika podaje charakterystykę, wolę sam ją zmierzyć w konkretnym projekcie (może to zależeć od zastosowanego napięcia). W tym celu zrobiłem pary ze zmierzonej wartości ADC i odległości na każde 10 cm. (Mój czujnik był w stanie zmierzyć prawidłową odległość od 12 cm).

Użyłem tych par w kodzie, aby uzyskać prawidłową odległość za pomocą interpolacji liniowej.

Na końcu dokumentu znajduje się prosty kod Arduino do pomiaru wartości ADC podczas pomiaru charakterystyki.

Krok 4: Komunikacja szeregowa

Komunikacja szeregowa
Komunikacja szeregowa

Użyłem komunikacji szeregowej do wysłania zmierzonych wartości kąta-odległość do komputera. Ponieważ muszę wysyłać wiele bajtów i różnego rodzaju wiadomości, zaprojektowałem prosty protokół komunikacyjny.

Ten protokół umożliwia ogólne definiowanie różnych typów wiadomości. W tym projekcie wykorzystałem 2 typy wiadomości:

  • Parametry: Służy do wysyłania parametrów do aplikacji PC, zdefiniowanych na Arduino, takich jak maksymalna odległość i liczba przeszkód w rundzie.
  • Przeszkoda: Służy do wysyłania wykrytej przeszkody. Jest identyfikowany przez kąt serwomechanizmu i zmierzoną odległość. Pozycja x-y zostanie obliczona przez aplikację PC.

Krok 5: Aplikacja Qt

Aplikacja Qt
Aplikacja Qt

Aby komunikować się z Arduino i rysować mierzone punkty jak radar, stworzyłem aplikację na PC w Qt (C++). Otrzymuje pewne parametry (zdefiniowane na Arduino) oraz zmierzone punkty odległości.

Możesz również pobrać aplikację i jej kod źródłowy.

Krok 6: Kod źródłowy Arduino

Możesz dostosować niektóre parametry w górnej części kodu za pomocą makr.

Zauważ, że jeśli zmienisz charakterystykę czujnika odległości Sharp, musisz zmodyfikować wartości tablicy distAdcMap!

  • InfraRadar.c: Kod radaru. Skopiuj i wklej go do swojego projektu Arduino.
  • InfraRadarMeasurement.c: Kod do pomiaru charakterystyki. Skopiuj i wklej go do swojego projektu Arduino. Użyj konsoli szeregowej, aby sprawdzić wartości ADC.

Zalecana: