Spisu treści:
- Krok 1: Projektowanie funkcjonalności projektu
- Krok 2: Konfiguracja i schemat połączeń
- Krok 3: Testowanie komponentów i podstawowego kodu
- Krok 4: Kalibracja MPU
- Krok 5: Kod końcowy
Wideo: Kompas cyfrowy i wyszukiwarka kierunku: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Autorski:
Cullan Whelan
Andrzej Luft
Blake Johnson
Podziękowanie:
Kalifornijska Akademia Morska
Evan Chang-Siu
Wstęp:
Podstawą tego projektu jest cyfrowy kompas ze śledzeniem kursu. Umożliwia to użytkownikowi śledzenie kursu na duże odległości za pomocą aparatu cyfrowego. Potocznie kurs jest kątem mierzonym zgodnie z ruchem wskazówek zegara od północy, który jest uważany za zero stopni, jak wskazuje kompas. Urządzenie ma dwie główne funkcje: pierwsza to wyświetlanie aktualnego kursu urządzenia na cyfrowym wskaźniku odniesienia, a druga to możliwość wprowadzenia żądanego przez użytkownika kursu, który będzie wyświetlany na pierścieniu diod LED na górze obudowa kompasu. Użytkownik mógłby wtedy dostosować orientację urządzenia w odniesieniu do podświetlonej diody LED. Gdy kierunek urządzenia zostanie zmieniony, dioda LED przesunie się do środkowej diody LED, wskazując w ten sposób, że ustanowiono prawidłowy kurs.
Kieszonkowe dzieci:
- Moduł GPS DIYmall 6M
- HiLetgo MPU9250/6500 9-osiowy 9 DOF 16 Bit
- Pierścień Adafruit NeoPixel 16
- MakerFocus 4 szt. Akumulator litowy 3,7 V;
-Płyta ELEGOO MEGA 2560 R3
- Adafruit Mini Lipo z gniazdem Mini-B USB - Ładowarka USB LiIon/LiPoly - v1
- Wyświetlacz LCD TFT o przekątnej 2,8 cala z płytką zaciskową z ekranem dotykowym i gniazdem MicroSD
Krok 1: Projektowanie funkcjonalności projektu
Pierwszym krokiem jest zrozumienie logiki i ostatecznej funkcjonalności operacyjnej. Ten schemat logiczny przedstawia trzy stany urządzenia i dwa stany czujników.
Stan 1: Stan ładowania
Stan ładowania umożliwia Arduino Mega odzyskanie danych z dwóch czujników po uruchomieniu. Urządzenie wyświetli ładowanie na ekranie, wyczyści wszystkie wartości liczbowe na ekranie, a diody LED na pierścieniu NeoPixel zaświecą się w kółko.
Stan 2: Tryb kompasu
W tym stanie urządzenie będzie działać jak cyfrowy kompas. Pierścień NeoPixel zaświeci się, wskazując kierunek północny w odniesieniu do orientacji urządzenia. Prawdziwy nagłówek urządzenia będzie również wyświetlany na ekranie LCD wraz z szerokością i długością geograficzną urządzenia. W tym stanie użytkownik będzie mógł również wprowadzić nagłówek użytkownika, który będzie wyświetlany w stanie 3.
Stan 3: Tryb śledzenia kursu
W tym stanie urządzenie pomoże teraz użytkownikowi ustawić się na pożądanym kursie. Urządzenie wyświetli teraz kierunek urządzeń i użytkowników na ekranie LCD wraz z danymi o szerokości i długości geograficznej. Pierścień NeoPixel zaświeci się teraz, wskazując kierunek użytkowników w odniesieniu do orientacji urządzeń.
Zarówno w stanie 2, jak i w stanie 3 istnieją dwa stany czujnika, te stany czujnika umożliwiają urządzeniu pobieranie danych z czujnika, który zapewnia najdokładniejsze dane w zależności od stanu pracy urządzenia.
Stan czujnika 1: MPU
Jeśli urządzenie się nie porusza, dane kierunku zostaną pobrane z MPU, ponieważ są to najdokładniejsze dane, gdy urządzenie się nie porusza.
Stan czujnika 2: GPS
Jeśli urządzenie się porusza, dane kierunku zostaną pobrane z chipa GPS, ponieważ są to najdokładniejsze dane w tych warunkach.
Urządzenie może w dowolnym momencie przełączać się między tymi stanami a czujnikami, aby uwzględnić zmieniające się warunki użytkowania urządzenia. Jest to ważne dla działania urządzenia, ponieważ oba czujniki zastosowane w urządzeniu mają warunki, które wpływają na dokładność dostarczanych przez nie danych. W przypadku MPU na chip mogą łatwo wpływać lokalne pola magnetyczne wytwarzane przez samochody i metalowe materiały konstrukcyjne w budynkach. W ten sposób używany jest chip GPS, który może zapewnić znacznie dokładniejszy kurs, na który nie wpływają te same czynniki. Jednak GPS może dostarczać dane o kursie tylko podczas ruchu, ponieważ oblicza kierunek na podstawie zmian danych o szerokości i długości geograficznej. Dlatego chipy wzajemnie się uzupełniają i wykorzystując dwa stany czujników zapewniają najbardziej dokładną i niezawodną funkcjonalność urządzenia.
Krok 2: Konfiguracja i schemat połączeń
Projekt wykorzystuje płytkę klonu Arduino Mega podobną do powyższej płyty. Wszystkie komponenty w projekcie zostaną podłączone do tej płyty. Powyżej znajdują się szczegółowe diagramy, jak okablować komponenty do tego projektu. Przyciski nie mają szczegółowego obwodu, ponieważ można je skonfigurować na wiele sposobów. W tym projekcie używają rezystora ściągającego 100K i prostego przycisku do wysłania sygnału 3 V do przypisanego pinu.
Krok 3: Testowanie komponentów i podstawowego kodu
Projekt pobierze dane zarówno z układu MPU, jak i GPS, jak opisano wcześniej. Dołączone są trzy kody, które umożliwiają testowanie danych z MPU, GPS i MPU z ekranem do weryfikacji funkcjonalności części. Ważne jest, aby komponenty działały na tym etapie, ponieważ kod jest oddzielny dla każdego układu, a wszelkie problemy można rozwiązać bez obawy o spowodowanie nieprzewidzianych błędów w końcowym kodzie.
Wymagane Biblioteki:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS++.h
Adafruit_NeoPixel.h
MPU9250.h
Wszystko to można znaleźć, przeszukując powyższe tytuły. Nie będę zamieszczał linków, ponieważ istnieje wiele kopii tych bibliotek z wielu źródeł i stosując się do standardu społeczności dotyczącego linkowania tylko do oryginałów, pozwolę ci je znaleźć dla siebie.
Krok 4: Kalibracja MPU
Nagłówek znaleziony przez MPU w Stanie 2 i Stanie 3 został podzielony na cztery ćwiartki. Było to konieczne, ponieważ nasza metoda kalibracji wymagała znalezienia minimalnej i maksymalnej wielkości z magnetometru wzdłuż jego osi x i y. Dokonano tego poprzez losowe obracanie urządzenia wokół jego trzech osi, wolne od jakichkolwiek znaczących pól elektromagnetycznych innych niż Ziemia. Następnie wzięliśmy wartości minimalne i maksymalne wzdłuż osi x i y i wstawiliśmy je do równania skalowania, aby ograniczyć wartości między wartościami ujemnymi jeden i jeden. Na powyższym rysunku BigX i BigY to maksymalne wartości danych magnetometru odpowiednio wzdłuż osi x i y, LittleX i LittleY to minimalne wartości danych magnetometru odpowiednio wzdłuż osi x i y, IMU.getMagX_uT() i IMU.getMagY_uT() to wartości pobierane z magnetometru w dowolnym momencie odpowiednio wzdłuż osi x i y, a Mx i My to nowe skalowane wartości używane do obliczania kierunku.
Krok 5: Kod końcowy
Ostatnim krokiem jest stworzenie ostatecznego kodu. Załączam kopię ostatecznego kodu projektu. W ramach notatek poczyniono, aby ułatwić poruszanie się po kodzie. Największym wyzwaniem tej sekcji było prawidłowe działanie kwadrantów. Wdrożenie kwadrantów okazało się bardziej żmudne i sprzeczne z logiką, niż mogliśmy się spodziewać. Początkowo zaimplementowaliśmy podstawowy arctan (My/Mx), a następnie przekonwertowaliśmy z radianów na stopnie, ponieważ Arduino domyślnie wyświetla w radianach. Jednak jedyny kwadrant, w którym działał, miał zakres od 90 stopni do 180 stopni, co dało nam wynik ujemny i ostatecznie okazało się, że jest to kwadrant III. Rozwiązaniem tego problemu było przyjęcie wartości bezwzględnej, ponieważ nadal prawidłowo się zwiększała. Wartość ta została następnie odjęta od 360, aby zaświecić prawidłową diodę NeoPixel w stanie 2, a podobna operacja matematyczna została użyta w stanie 3 w oparciu o to, czy nagłówek był większy czy mniejszy niż nagłówek wejściowy użytkownika, które można zobaczyć w powyższy kod. Na powyższych rysunkach Kurs odpowiada lampce NeoPixel, która będzie świecić w oparciu o różnicę między kierunkiem urządzenia a odchyleniem od północy w przypadku stanu 2 oraz od kierunku użytkownika. W tym przypadku 90 do 180 stopni odpowiada kwadrantowi III. W obu przypadkach tft.print powoduje, że ekran odczytuje kierunek urządzenia z północy.
W przypadku pozostałych trzech kwadrantów implementacja arctan (My/Mx) doprowadziła do odwrócenia inkrementacji w miarę obracania urządzenia, tj. kąt kursu będzie odliczał, gdy ma liczyć w górę i na odwrót. Rozwiązaniem tego problemu było odwrócenie arcus tangensa do postaci arctan (Mx/My). Chociaż rozwiązało to odwrócenie inkrementacji, nie podało prawidłowego nagłówka urządzenia, w którym w grę wchodzą kwadranty. Prostym rozwiązaniem tego problemu było dodanie przesunięcia w oparciu o odpowiednią ćwiartkę. Można to zobaczyć na poniższych rysunkach, które są ponownie fragmentami kodu ze Stanów 2 i 3 każdego kwadrantu.
Pierwsza instrukcja if jest wykonywana, jeśli nagłówek obliczony przez równanie MPU jest większy niż nagłówek użytkownika. W tych warunkach nagłówek wejściowy użytkownika jest dodawany do nagłówka urządzenia, a odpowiadająca mu wartość jest odejmowana od 360. Jeśli wykonywane jest polecenie else, równanie nagłówka MPU jest odejmowane od nagłówka wejściowego użytkownika. Warunki te zostały wprowadzone w celu nie tylko uzyskania dokładnej wartości dla NeoPixela, ale także uniknięcia uzyskania wartości poza dopuszczalnym zakresem, który wynosi od 0 do 359 stopni.
Zalecana:
Czujnik kierunku przepływu: 16 kroków
Czujnik kierunku przepływu: De sensor zal de stromingsrichting in één dimensie meten, namelijk stroming naar links of naar rechts. De sensor bestaat uit twee buizen die beiden loodrecht op de stromingsrichting staan. Beide buizen hebben een klepje die opengaat als er stroming
Jak zrobić sterownik kierunku silnika prądu stałego E-Bike: 4 kroki
Jak zrobić sterownik kierunku silnika prądu stałego E-Bike: jest to sterownik kierunku silnika prądu stałego dla twojego roweru elektrycznego. W tym obwodzie użyłem mostka N-Channel MOSFET H i zatrzasku SR. Kontrola obwodu mostka H Kierunek przepływu prądu. Obwód zatrzasku SR zapewnia pozytywny sygnał na obwodzie mostka H. Komp
ESPcopter i Visuino - Konwersja kierunku kompasu do kąta 3D: 6 kroków
ESPcopter i Visuino - Konwersja Compass Heading do 3D Angle: ESPcopter jest teraz w pełni obsługiwany przez najnowszą wersję Visuino, co czyni go prawdopodobnie najłatwiejszym do zaprogramowania istniejącego drona! :-) Dzięki obsłudze Visuino możesz sterować silnikami, LED, pracuj z akcelerometrem, żyr
Kompas cyfrowy wykorzystujący Arduino i magnetometr HMC5883L: 6 kroków
Cyfrowy kompas wykorzystujący Arduino i magnetometr HMC5883L: Cześć, ten czujnik może wskazywać geograficzną północ, południe, wschód i zachód, my, ludzie, możemy go również używać w razie potrzeby. Więc. W tym artykule spróbujmy zrozumieć, jak działa czujnik magnetometru i jak połączyć go z mikrokontrolerem
Jak korzystać z modułu GY511 z Arduino [Zrób cyfrowy kompas]: 11 kroków
Jak korzystać z modułu GY511 z Arduino [Utwórz cyfrowy kompas]: Przegląd W niektórych projektach elektronicznych musimy znać położenie geograficzne w dowolnym momencie i odpowiednio wykonać określoną operację. W tym samouczku dowiesz się, jak używać modułu kompasu LSM303DLHC GY-511 z Arduino do tworzenia cyfrowego kompasu