Spisu treści:

Stacjonarna tablica radarowa (LIDAR) z Arduino: 10 kroków (ze zdjęciami)
Stacjonarna tablica radarowa (LIDAR) z Arduino: 10 kroków (ze zdjęciami)

Wideo: Stacjonarna tablica radarowa (LIDAR) z Arduino: 10 kroków (ze zdjęciami)

Wideo: Stacjonarna tablica radarowa (LIDAR) z Arduino: 10 kroków (ze zdjęciami)
Wideo: When to Use an Autorouter in PCB Design 2024, Listopad
Anonim
Stacjonarna tablica radarowa (LIDAR) z Arduino
Stacjonarna tablica radarowa (LIDAR) z Arduino
Stacjonarna tablica radarowa (LIDAR) z Arduino
Stacjonarna tablica radarowa (LIDAR) z Arduino
Stacjonarna tablica radarowa (LIDAR) z Arduino
Stacjonarna tablica radarowa (LIDAR) z Arduino

Kiedy buduję dwunożnego robota, zawsze myślałem o posiadaniu jakiegoś fajnego gadżetu, który mógłby śledzić mojego przeciwnika i wykonywać za jego pomocą ruchy ataku. Istnieje już kilka projektów radarowych/lidarowych. Jednak dla mojego celu istnieją pewne ograniczenia:

  • Moduły czujników fal ultradźwiękowych są dość duże. Każdy robot wyglądałby jak WALL-E.
  • Aktualne projekty radarów zawierają czujnik (fale ultradźwiękowe, IR, laser, …) i serwomotor pośrodku. Skanowanie otoczenia wymaga, aby serwo poruszało się na boki. Poruszanie się w przód i w tył powoduje zmiany pędu, co jest niekorzystne dla równowagi dwunożnej i chodzenia.
  • Częstotliwość skanowania jest ograniczona szybkością serwomechanizmu. Prawdopodobnie można osiągnąć tylko kilka herców. Nawet jeśli częstotliwość skanowania może zostać zwiększona przez jakiś super-serwo, spowoduje to silne wibracje.
  • Układ [serwomotor centralny - czujnik] ogranicza również położenie montażowe i konstrukcję. Trudno jest zamontować coś innego niż głowicę. Co sprawia, że mój dwunożny wygląda za każdym razem jak WALL-E z drżącą głową. Nie fajnie!
  • Układ [serwo-czujnika] można również zbudować jako styl [czujnika silnika]. Czujnik (lub czujniki) obraca się w sposób ciągły wzdłuż osi silnika. Może to wyeliminować szarpnięcia pędu i problemy z niską częstotliwością skanowania, ale nie ogranicza konstrukcji tułowia. Trudność w okablowaniu również znacznie by wzrosła.

Po przeszukaniu ten malutki czujnik VL53L0X od ST wpadł mi do oczu. Zgodnie z oznaczeniem „Najmniejszy na świecie” czujnik pomiaru czasu przelotu, jego wymiary wynoszą tylko 4,4 x 2,4 x 1,0 mm. Wyposażony

  • Na chipie emiter i detektor lasera IR
  • Zasięg do 2 m (1,2 m w trybie szybkim)
  • Programowalny adres I2C
  • Pin wyjściowy przerwania GPIO
  • Bezpieczny dla oczu

Wszystkie te specjalne funkcje w połączeniu pozwoliły mi przezwyciężyć powyższe problemy, jeśli tablica czujników VL53L0X mogłaby działać. Początkowo myślałem, że ten radar będzie się nazywał radarem półprzewodnikowym, ale dowiedziałem się, że ten termin jest używany do czegoś innego. Dlatego słowo „Stacjonarne” w tytule oznacza, że w tym gadżecie radarowym nie ma żadnych ruchomych części. Ponadto, podczas gdy LIDAR (wykrywanie światła i zasięg) jest technicznie poprawnym terminem dla tego chipa, RADAR jest tutaj określany jako bardziej ogólny termin.

Powód, dla którego programowalny adres I2C i pin wyjściowy GPIO są kluczowe dla tego projektu, zostanie wyjaśniony później.

Krok 1: Narzędzia i części

Narzędzia i części
Narzędzia i części
Narzędzia i części
Narzędzia i części

Narzędzia

W tym projekcie wymagane są następujące narzędzia:

  • Lutownica
  • Pomocne dłonie lutowania
  • Zaciskarka Dupont
  • Sterownik sześciokątny 1,5 mm
  • Narzędzie do usuwania powłoki drutu
  • Przecinak do drutu
  • Pistolet na gorący klej
  • Pinceta
  • Lupa (fizyczna lub aplikacje w telefonie)
  • Szczypce płaskie

Części

W tym projekcie wykorzystywane są następujące części:

  • 10x tabliczki zaciskowe VL53L0X GY-530
  • Arduino (Uno, Nano, Mega, Zero, Mini itp.)
  • Płytka stykowa i kilka przewodów do płytki stykowej
  • Przewody AWG #26 w różnych kolorach
  • Przewód jednożyłowy AWG #30
  • 5x męskie złącza Dupont
  • 5x jednopinowe obudowy Dupont
  • 10x wydrukowanych w 3D uchwytów do tabliczek zaciskowych
  • 1x drukowana okrągła ramka 3D
  • 10x śruby z łbem płaskim M2x10
  • 10x 0804 LED (zalecane niebieskie)
  • 10x MOSFET SOT-23 AO3400 z kanałem N
  • Mały kondensator (10~100uF)

Tablica zaciskowa

Użyta przeze mnie tabliczka zaciskowa VL53L0X to GY-530. Dostępna jest również wersja Adafruit oraz wersja Pololu. Jeśli to możliwe, polecam używanie produktów Adafruit lub Pololu, ponieważ tworzą one świetne produkty, świetne samouczki i świetne biblioteki oprogramowania. Testowałem na bibliotece VL53L0X Adafruit i użyłem zmodyfikowanej wersji biblioteki VL53L0X Pololu.

Złącza dupontowe

Złącza Dupont są używane do płytki stykowej. Możesz użyć dowolnego innego rodzaju połączenia, które masz pod ręką.

Śruby i drukowane części 3D

Śruby M2, uchwyty i okrągła ramka służą do umieszczania czujników w układzie kołowym. Możesz użyć dowolnych innych metod, takich jak użycie tektur, modeli drewna, gliny, a nawet przyklejenie ich na gorąco na puszce.

Krok 2: Hakowanie tablicy Breadout

Hakowanie tablicy do chleba
Hakowanie tablicy do chleba
Hakowanie tablicy do chleba
Hakowanie tablicy do chleba
Hakowanie tablicy do chleba
Hakowanie tablicy do chleba
Hakowanie tablicy do chleba
Hakowanie tablicy do chleba

Stożek Wykrywania

Użyłem pojedynczego modułu do narysowania stożka detekcji. Używanie robota w większości wydrukowanego w 3D jako celu. Odległość jest pokazywana na wyświetlaczu LED i mierzona z grubsza. Zmierzone dane są zapisywane w pliku Microsoft Excel i wykorzystywane w funkcji dopasowania krzywej. Najlepszym dopasowaniem jest krzywa naturalnego logarytmu, z efektywną odległością od 3 cm do około 100 cm.

Przy 60 cm krzywa detekcji dla pojedynczego czujnika wynosi około 22 cm. W przypadku celu o szerokości 20 cm, okrągła separacja 10~15 stopni dla układu radarowego powinna zapewnić akceptowalną rozdzielczość skanowania.

Adres I2C

Podczas gdy adres urządzenia VL53L0X I2C jest programowalny, wymagana jest pełna kontrola pinu XSHUT przez mikrokontroler. Sekwencja do tego jest następująca:

  1. Zasilanie jest podawane na AVDD.
  2. Wszystkie układy VL53L0X są przełączane do stanu Hw Standby (reset) poprzez ustawienie WSZYSTKICH pinów XSHUT na LOW.
  3. Każdy chip jest wyprowadzany ze stanu resetowania pojedynczo. Domyślny adres I2C po uruchomieniu to 0x52.
  4. Adres chipa jest zmieniany na nowy adres za pomocą polecenia I2C. Na przykład 0x52 zmieniono na 0x53.
  5. Powtórz kroki 3 i 4 dla wszystkich żetonów.

Teoretycznie maksymalnie 126 jednostek może być napędzanych tą samą magistralą dla 7-bitowego zakresu adresów. Jednak w praktyce ograniczenie pojemności magistrali i prądu opadającego mikrokontrolera może/powinno ograniczać maksymalną liczbę urządzeń.

Nowy adres I2C nie jest przechowywany w układzie VL53L0X przed wyłączeniem lub zresetowaniem. Tak więc ten proces musi być wykonywany raz przy każdym uruchomieniu. Oznacza to, że dla każdej jednostki w tablicy radarowej wymagany jest jeden cenny pin. Jest to zbyt nieprzyjazne dla okablowania i zużycia pinów, jak na taśmę radarową z jednostkami 10+ lub 20+.

Jak wspomniano w STEP1, na szczęście istnieje pin GPIO1 w układzie VL53L0X, pierwotnie używany do przerwania, może wykonać zadanie.

Łańcuch GPIO-XSHUTN

Wyjście GPIO jest w stanie wysokiej impedancji podczas rozruchu i otwiera dren do niskiego, gdy jest aktywne. Piny GPIO i XSHUT są wyciągane wysoko do AVDD na płytce zaciskowej GY-530, zgodnie z zaleceniami w arkuszu danych. Aby niezawodnie wprowadzić wszystkie układy VL53L0X w stan gotowości Hw (sterowanie XSHUT na niskim poziomie), potrzebujemy bramki logicznej NOT (falownika) dla każdego pinu XSHUT. Następnie podłączamy wyjście GPIO jednego układu (układ N-ty) do XSHUTN (XSHUT-NOT) układu niższego rzędu (układ N+1).

Po włączeniu wszystkie piny GPIO (nieaktywne) są podciągane, wszystkie kolejne piny XSHUT są obniżane przez bramkę NOT (z wyjątkiem pierwszego układu, w którym jego pin XSHUTN jest podłączony do mikrokontrolera). Zmiana adresu I2C i zwolnienie XSHUT w dalszym układzie odbywa się w oprogramowaniu, jeden po drugim.

Jeśli używasz różnych tablic zaciskowych, musisz upewnić się, czy rezystory podciągające są na swoim miejscu, czy nie, i dokonać odpowiednich regulacji.

Dodawanie diody LED

W następnym kroku do płytki zaciskowej zostanie dodana mała dioda LED 0805 SMD, połączona z podkładki XSHUT do zacisku GND sąsiedniego kondensatora. Chociaż sama dioda LED nie wpływa na działanie modułu, daje nam dobrą wizualną sygnalizację na poziomie logicznym XSHUT.

Podłączenie diody LED szeregowo z rezystorem podciągającym (10k w moim przypadku) na pinie XSHUT wprowadzi spadek napięcia. Zamiast wysokiego poziomu logicznego 3,3 V, spadek napięcia w kierunku przewodzenia dla czerwonej diody LED 0805 wynosi 1,6 V. Chociaż to napięcie jest wyższe niż wysoki poziom logiczny (1,12 V) w arkuszu danych, niebieska dioda LED jest lepsza do tego hacka. Spadek napięcia do przodu dla niebieskiej diody LED jest mierzony około 2,4 V, czyli bezpiecznie powyżej poziomu logicznego układu.

Dodawanie falownika N-MOS (brama logiczna NOT)

Na dodanej przez nas diodzie LED nałożony jest mały kanałowy tranzystor MOSFET SOT-23. Dwa zaciski (D, S) muszą być przylutowane na płytce zaciskowej, a pozostały zacisk (G) jest podłączony do pinu GPIO płyty poprzedzającej za pomocą przewodu nr 26.

Uwagi dotyczące dodawania komponentów SMD

Lutowanie elementów SMD na tabliczce zaciskowej nie przeznaczonej do tego nie jest łatwym zadaniem. Jeśli nie słyszałeś jeszcze o 0805, SMD, SOT-23, są szanse, że nie lutowałeś wcześniej tych małych elementów. Podczas ręcznej obsługi tych drobnych elementów bardzo często zdarza się, że:

  • Mała rzecz po prostu odpadła i zniknęła na zawsze
  • Maleńkie podkładki na drobiazgu właśnie się odkleiły.
  • Małe nóżki tej małej rzeczy właśnie się złamały.
  • Cyna lutownicza po prostu zebrała się w kropelkę i nie można jej było oddzielić.
  • I więcej…

Jeśli nadal chcesz stworzyć ten radar, możesz:

  • Zmień komponenty na większy pakiet, taki jak styl DIP.
  • Uzyskaj więcej komponentów niż wymagane minimum, do ćwiczeń i konsumpcji.

Krok 3: lutowanie diody LED 0805

Lutowanie diody LED 0805
Lutowanie diody LED 0805
Lutowanie diody LED 0805
Lutowanie diody LED 0805
Lutowanie diody LED 0805
Lutowanie diody LED 0805
Lutowanie diody 0805
Lutowanie diody 0805

Lutowanie diody LED SMD 0805

Ręczne lutowanie diody LED 0805 na tabliczce zaciskowej nieprzeznaczonej do SMD nie jest wcale łatwym zadaniem. Poniższe kroki to moja rekomendacja do przylutowania diody LED.

  1. Użyj ręki pomocnika, aby przytrzymać tablicę do łamania.
  2. Nałóż trochę pasty lutowniczej na krawędź kondensatora SMD i podkładkę „XSHUT”.
  3. Użyj lutownicy, aby umieścić dodatkowy lut na krawędzi kondensatora.
  4. Umieść trochę pasty lutowniczej na obu końcach diody LED 0805.
  5. Użyj lutownicy, aby umieścić trochę cyny na obu końcach diody LED 0805.
  6. Użyj pęsety, aby umieścić diodę LED, jak pokazano na zdjęciu. Koniec katody zwykle ma zaznaczoną linię. W moim przykładzie na końcu katody znajduje się zielona linia. Umieść koniec katody na końcu kondensatora.
  7. Użyj pęsety, aby lekko docisnąć diodę LED do kondensatora i przylutuj diodę LED do końcówki kondensatora, dodając jednocześnie ciepło do końcówki kondensatora. Nie naciskaj zbyt mocno diody LED. Jego osłona może pęknąć pod wpływem ciepła i nadmiernego nacisku. Po lutowaniu delikatnie dociśnij diodę LED z boku, aby sprawdzić, czy dioda LED jest wlutowana na swoim miejscu.
  8. Teraz przylutuj diodę LED do płytki zanurzeniowej XSHUT. Ten krok powinien być łatwiejszy.

Uwaga: Koniec kondensatora pokazany na rysunku to zacisk uziemienia na tej płytce zaciskowej. A dip pad XSHUT jest podciągany przez rezystor.

Testowanie diody LED

Dioda LED powinna się zaświecić po podłączeniu zasilania (np. 5 V) i uziemieniu płytki zaciskowej.

Krok 4: Lutowanie tranzystora MOSFET z kanałem N

Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N
Lutowanie tranzystora MOSFET z kanałem N

Lutowanie MOSFET-a AO3400 z kanałem N

Ten MOSFET jest w pakiecie SOT-23. Musimy "ułożyć" go na diodzie LED, a także dodać przewód:

  1. Umieść trochę pasty lutowniczej i cyny na wszystkich trzech zaciskach.
  2. Użyj pęsety, aby umieścić MOSFET na górze diody LED 0805. Zacisk S powinien dotykać górnej części kondensatora
  3. Przylutuj końcówkę S końcówką kondensatora, jak pokazano na zdjęciu.
  4. Wytnij mały odcinek jednożyłowego drutu AWG #30 i usuń powłokę około 1 cm.
  5. Użyj lutownicy, aby stopić lut w otworze XSHUT od dołu i włóż drut #30 od góry, jak pokazano na zdjęciu.
  6. Przylutowanie górnego końca przewodu do zacisku MOSFET D.
  7. Odetnij dodatkowy przewód.

Uwaga: zacisk MOSFET S jest podłączony do końcówki kondensatora, jak pokazano na rysunku. Ten koniec to zacisk uziemienia. Terminal MOSFET D jest podłączony do oryginalnego pinu XSHUT.

Terminal G nie jest w tej chwili podłączony. Jego pozycja znajduje się tuż nad niektórymi rezystorami podciągającymi. Upewnij się, że jest między nimi przerwa (N-MOS i rezystor) i nie stykają się ze sobą.

Krok 5: Okablowanie matrycy czujników

Okablowanie matrycy czujników
Okablowanie matrycy czujników
Okablowanie matrycy czujników
Okablowanie matrycy czujników
Okablowanie matrycy czujników
Okablowanie matrycy czujników

Wspólne okablowanie magistrali

Wspólny autobus obejmuje:

  • Moc Vcc. Czerwony na zdjęciu. Używam arduino nano z logiką 5v. Deska typu breakout ma LDO i dźwignię poziomu. Więc bezpiecznie jest używać 5v jako Vin.
  • Grunt. Czarny na zdjęciu.
  • SDA. Zielony na zdjęciu.
  • SCL. Żółty na zdjęciu.

Te cztery linie są wspólnymi liniami. Dociąć przewody o odpowiedniej długości i przylutować je równolegle do wszystkich modułów czujników. Użyłem 20 cm od arduino do pierwszego czujnika, a potem po 5 cm.

Okablowanie XSHUTN i GPIO

Biały przewód o długości 20 cm biegnie od pinu sterującego arduino do pinu XSHUTN pierwszego czujnika. Jest to linia kontrolna wymagana do wyzerowania pierwszego układu VL53L0X i zmiany adresu I2C.

Biały przewód o długości 5 cm między każdym modułem jest linią sterowania łańcuchowego. Chip upstream (na przykład chip #3) pad GPIO jest podłączony do dolnej (na przykład chip #4) odnogi XSHUTN (terminal N-Channel MOSFET G).

Uważaj, aby nie stykać się zacisku G z rezystorem poniżej. Możesz dodać taśmę izolacyjną w szczelinie. Można tutaj zastosować warstwę ochronną, która zwykle jest dostarczana z chipem VL53L0X.

Użyj opalarki, aby przykleić przewód sterujący.

Gorący klej

Jak widać na zdjęciu, na białym przewodzie sterującym, w pobliżu zacisku N-MOS G, znajduje się kropelka gorącego kleju. Ten krok jest bardzo ważny i absolutnie konieczny. Lutowanie pływające bezpośrednio do nogi elementu SMD jest bardzo słabe. Nawet niewielki nacisk na drut może złamać nogę. Zrób ten krok delikatnie.

Testowanie diody LED

Po podłączeniu zasilania (np. 3,3 V-5 V) i uziemienia do układu czujników, dioda LED na pierwszym module powinna odpowiadać poziomem logicznym przewodu XSHUTN. Jeśli podłączysz XSHUTN do wysokiego stanu logicznego (np. 3,3 V-5 V), dioda LED powinna być wyłączona. Jeśli podłączysz przewód XSHUTN do niskiego (masy), dioda LED na pierwszym module powinna się świecić.

Dla wszystkich kolejnych modułów dioda LED powinna być wyłączona.

Ten test jest przeprowadzany przed podłączeniem do arduino.

Krok 6: Uzupełnianie tablicy czujników

Image
Image
Uzupełnianie tablicy czujników
Uzupełnianie tablicy czujników
Uzupełnianie tablicy czujników
Uzupełnianie tablicy czujników
Uzupełnianie tablicy czujników
Uzupełnianie tablicy czujników

Testowanie Daisy Chain

Teraz chcemy przetestować, czy zmiana adresu I2C działa dla wszystkich czujników w tablicy. Jak wspomniano, pierwszy układ sterowany jest przez arduino. Drugi chip jest kontrolowany przez pierwszy chip i tak dalej.

  1. Przygotuj deskę do chleba. 5V i szyna uziemiająca są bezpośrednio połączone z adriano 5V i uziemieniem. Pobór prądu dla każdego czujnika jest określony w karcie katalogowej 19mA.
  2. Dodaj kondensator na szynie zasilającej, aby pomóc ustabilizować Vin.
  3. Podłącz Vin i Ground z układu czujników do szyny zasilającej.
  4. Podłącz SDA do arduino Nano pin A4 (może być inny dla innych mikrokontrolerów).
  5. Podłącz SCL do arduino Nano pin A5 (może być inny dla innych mikrokontrolerów).
  6. Podłącz przewód XSHUTN do pinu D2 arduino Nano. (Można to zmienić w szkicu).
  7. Wejdź na github https://github.com/FuzzyNoodle/Fuzzy-Radar i pobierz bibliotekę.
  8. Otwórz przykład „Daisy_Chain_Testing” i prześlij szkic.

Jeśli wszystko działa, powinieneś zobaczyć, jak diody LED stanu zapalają się jedna po drugiej, podobnie jak w powyższym klipie wideo.

Możesz także otworzyć okno szeregowe i zobaczyć postęp inicjalizacji. Dane wyjściowe wyglądałyby tak:

Otwarcie portuPort otwarty Rozpoczęcie szkicu. Ustaw chip 0 w trybie resetowania. Wszystkie diody LED stanu powinny być wyłączone. Teraz konfiguruję czujniki. Dioda powinna zaświecić się jedna po drugiej. Konfiguracja chipa 0 - Zresetuj adres I2C do 83 - Zainicjuj czujnik. Konfiguracja chipa 1 - Zresetuj adres I2C do 84 - Zainicjuj czujnik. Konfiguracja chipa 2 - Zresetuj adres I2C do 85 - Zainicjuj czujnik. Konfiguracja tablicy radarowej zakończona.

Zamontuj uchwyt i ramę

  1. Ostrożnie umieść każdy moduł GY-530 na uchwycie za pomocą śruby M2x10. Nie naciskaj MOSFET-u ani nie ciągnij za przewody XSHUTN.
  2. Umieść każdy uchwyt w okrągłej ramie. Użyj gorącego kleju do sklejenia części.

Ponownie śruby M2, uchwyty i okrągła ramka służą do umieszczania czujników w układzie kołowym. Możesz użyć dowolnych innych metod, takich jak użycie tektur, modeli drewna, gliny, a nawet przyklejenie ich na gorąco na puszce.

Wykorzystane przeze mnie wydrukowane pliki 3D znajdują się poniżej. Okrągła rama ma 9 modułów, oddzielonych o 10 stopni każdy. Jeśli masz bystre oko, na poprzednich zdjęciach było 10 modułów. Powód? Wyjaśnione poniżej…

Usuń warstwę ochronną

Jeśli postępowałeś zgodnie z instrukcjami od początku, teraz jest dobry moment, aby usunąć warstwę ochronną z chipa VL53L0X. Na moich poprzednich zdjęciach są już usunięte, ponieważ muszę przetestować moduły i upewnić się, że koncepcja działa przed opublikowaniem tej instrukcji.

O warstwie ochronnej w karcie katalogowej czytamy: „Klient musi ją usunąć tuż przed zamontowaniem szyby ochronnej”. Dwa małe otwory (nadajnik i odbiornik) w układzie VL53L0X są podatne na zanieczyszczenia, takie jak kurz, tłuszcz, gorący klej itp.

Po zanieczyszczeniu zasięg może zostać zmniejszony, a odczyty mogą się różnić w oczywisty sposób. Jeden z moich testowych modułów jest przypadkowo zanieczyszczony glinką klejową, zasięg jest zmniejszony do 40cm, a odczyt odległości jest błędnie powiększony o 50%. Więc uważaj!

Krok 7: Pobieranie danych

Image
Image
Tracer laserowy (pokaz)
Tracer laserowy (pokaz)

Korzystając z przykładu Raw_Data_Serial_Output

Teraz naprawdę lubimy oglądać dane z naszej tablicy czujników. W bibliotece arduino na GitHub:

https://github.com/FuzzyNoodle/Fuzzy-Radar

Istnieje przykład o nazwie Raw_Data_Serial_Output. Ten przykład pokazuje surowe dane wyjściowe z tablicy czujników. Wartości wyjściowe podane są w milimetrach.

Po inicjalizacji czujników, podczas machania ręką przez czujniki, w okienku szeregowym powinno pojawić się coś takiego:

Zobacz klip wideo, aby zobaczyć demonstrację na żywo.

Korzystając z przykładu Fuzzy_Radar_Serial_Output

Następnym krokiem jest uzyskanie użytecznych danych z tych odczytów odległości. To, czego chcieliśmy od radaru, to odległość i kąt obiektu docelowego.

  • Odległość jest w milimetrach w odniesieniu do powierzchni czujnika. Zwrócenie 0 oznacza, że cel jest poza zasięgiem.
  • Kąt w stopniach w płaszczyźnie poziomej. Zgodnie z oczekiwanym kodem czujniki są rozmieszczone równomiernie. Zwrócenie 0 stopni oznacza, że cel znajduje się w środkowej pozycji szyku.

W bibliotece zastosowano pewien algorytm filtrowania:

  • Usuwanie szumów:

    • Krótkie (pod względem liczby próbek) odczyty są uważane za szum i są usuwane.
    • Odczyty dalekie od wartości średniej są usuwane.
  • Obliczanie kąta masy (patrz ilustracja powyżej)

    • Zakłada się, że obiekt docelowy jest płaską powierzchnią
    • Jeśli wiele czujników wykryło obiekt w tym samym czasie, waga jest obliczana dla każdego czujnika.
    • Waga każdego czujnika jest odwrotnie proporcjonalna do jego odległości.
    • Anioł wynikowy jest obliczany z ważonego kąta każdego czujnika.
  • Wybór głównego celu:

    • Jeśli istnieje więcej niż jedna grupa odczytów, pozostaje najszersza (z większą liczbą odczytów czujnika).
    • Na przykład, jeśli umieścisz dwie ręce przed matrycą czujników, ręka wykryta przez więcej czujników pozostanie.
  • Wybór najbliższego celu:

    • Jeśli istnieje więcej niż jedna wykryta grupa o tej samej szerokości, grupa w najbliższej odległości pozostanie.
    • Na przykład, jeśli umieścisz dwie ręce przed matrycą czujników, a dwie wykryte grupy mają taką samą liczbę czujników, grupa bliżej czujnika pozostanie.

Odległość i kąt wyjścia są wygładzane przez filtr dolnoprzepustowy

W Raw_Data_Serial_Output nieprzetworzone odczyty odległości są konwertowane na wartość odległości i kąta. Po przesłaniu szkicu możesz otworzyć okno numeru seryjnego, aby zobaczyć wynik podobny do tego:

Nie wykryto obiektu. Nie wykryto obiektu. Nie wykryto obiektu. Odległość = 0056 Kąt = 017 Odległość = 0066 Kąt = 014 Odległość = 0077 Kąt = 011 Odległość = 0083 Kąt = 010 Odległość = 0081 Kąt = 004 Odległość = 0082 Kąt = 000 Odległość = 0092 Kąt = 002 Odległość = 0097 Kąt = 001 Odległość = 0096 Kąt = 001 Odległość = 0099 Kąt = 000 Odległość = 0101 Kąt = -002 Odległość = 0092 Kąt = -004 Odległość = 0095 Kąt = -007 Odległość = 0101 Kąt = -008 Odległość = 0112 Kąt = -014 Odległość = 0118 Kąt = -017 Odległość = 0122 Kąt = -019 Odległość = 0125 Kąt = -019 Odległość = 0126 Kąt = -020 Odległość = 0125 Kąt = -022 Odległość = 0124 Kąt = -024 Odległość = 0133 Kąt = -027 Odległość = 0138 Kąt = - 031 Odległość = 0140 Kąt = -033 Odległość = 0136 Kąt = -033 Odległość = 0125 Kąt = -037 Odległość = 0120 Kąt = -038 Odległość = 0141 Kąt = -039 Nie wykryto obiektu. Nie wykryto obiektu. Nie wykryto obiektu.

Więc teraz masz RADAR (LIDAR):

  • Mniejsze niż moduły czujników ultradźwiękowych
  • Brak ruchomych części
  • Skanuje z częstotliwością 40 Hz.
  • W kształcie paska, można zamontować na okrągłej ramie
  • Używaj tylko trzech przewodów sterujących oraz zasilania i uziemienia.
  • Ma zasięg od 30 milimetrów do około 1000 milimetrów.

W kolejnych krokach pokażemy Ci kilka fajnych demonstracji!

Krok 8: Tracer laserowy (pokaz)

Image
Image
Tracer laserowy (pokaz)
Tracer laserowy (pokaz)

To jeden z przykładów wykorzystania radaru stacjonarnego, który zbudowaliśmy na podstawie poprzednich kroków. Ten krok nie jest szczegółowo opisany, ponieważ jest to demonstrator radaru. Ogólnie rzecz biorąc, potrzebujesz tych dodatkowych elementów, aby zbudować ten projekt demonstracyjny:

  • Dwa serwa
  • Głowica emitująca pióro laserowe
  • Tranzystor MOSFET lub NPN do sterowania wyjściem głowicy laserowej
  • Źródło zasilania serw. Powinien być oddzielony od mikrokontrolera.

Kod można pobrać tutaj.

Zobacz dostarczony film.

Krok 9: Wpatrując się w Poopeyes (demonstracja)

Image
Image

Demonstracja użycia radaru do śledzenia położenia obiektu i odległości.

Zalecana: