Dodanie modułu kompasu do mikrokontrolera Arduino otwiera wiele możliwości dla projektów. Oto jak podłączyć jeden i używać go.
W nowoczesnych projektach typu „zrób to sam” dość często spotyka się zaawansowane czujniki, takie jak akcelerometry i magnetometry, połączone z mikrokontrolerami. Chociaż mogłeś używać tych czujników w swoim telefonie, trudno sobie wyobrazić, jak działają te moduły, ale jest to zaskakująco proste.
Czujnik magnetometru kompasu GY-271 umożliwia wykrywanie orientacji w różnych zastosowaniach. Tutaj zbadamy proces łączenia czujnika GY-271 z mikrokontrolerem Arduino, jak go skalibrować i przyjrzymy się problemom, które możesz napotkać podczas wykonywania tej czynności.
Co to jest moduł kompasu GY-271?
Moduł kompasu GY-271 to bardzo czuły magnetometr, który może mierzyć pola magnetyczne w trzech wymiarach. Służy do wykrywania pola magnetycznego Ziemi i określania kierunku lub orientacji urządzeń w aplikacjach takich jak systemy nawigacji, robotyka i drony. Pomyśl o tym jak o bardzo precyzyjnym kompasie cyfrowym. Ten czujnik ma kompaktową i solidną konstrukcję, która ułatwia instalację i użytkowanie w szerokiej gamie projektów.
Jak działa moduł kompasu GY-271?
Moduł kompasu GY-271 HCM5883L zawiera 3-osiowy czujnik magnetometru, który jest oparty na anizotropowej technologii magnetooporowej (AMR). Czujnik mierzy siłę i kierunek ziemskiego pola magnetycznego, wykrywając zmiany rezystancji jego wewnętrznych elementów AMR.
Kiedy czujnik jest wystawiony na działanie pola magnetycznego, rezystancja elementów AMR zmienia się, generując napięcie, które jest proporcjonalne do siły i kierunku pola magnetycznego. Cyfrowy procesor sygnałowy czujnika przetwarza następnie to napięcie na sygnał cyfrowy, który może być odczytany przez mikrokontroler. Mierząc napięcie we wszystkich trzech osiach, czujnik może zapewnić bardzo dokładne odczyty siły i kierunku pola magnetycznego w trzech wymiarach.
Podłączanie GY-271 do Arduino Uno
Podłączenie tego modułu do Arduino jest dość proste. Omówiliśmy także inne łatwe w użyciu moduły Arduino które mogą pomóc skalować Twój projekt w przyszłości. Moduł GY-271 posiada łącznie pięć wyprowadzeń, w tym VCC, GNDi trzy piny sygnałowe (SDA, SCL, I DRDY).
Będziesz potrzebował następujących komponentów:
- Moduł kompasu GY-271 HMC5883L
- Arduino Uno (lub inny model)
- Przewody połączeniowe (męski na męski i męski na żeński)
- Deska do krojenia chleba (opcjonalnie)
Najpierw podłącz tzw VCC I GND piny modułu GY-271 do 5V I GND odpowiednio pinów Arduino Uno.
Następnie podłącz SDA I SCL piny modułu do A4 I A5 odpowiednio piny analogowe Arduino Uno.
Instalowanie niezbędnych bibliotek
Zanim zaczniesz pracować z modułem kompasu GY-271 i Arduino, musisz zainstalować niezbędne biblioteki do komunikacji z czujnikiem.
Pierwszą biblioteką, którą musisz uwzględnić w swoim szkicu, jest biblioteka Wire, która jest używana do komunikacji I2C między Arduino a czujnikiem. Biblioteka Wire jest fabrycznie zainstalowana z Arduino IDE, więc nie musisz jej pobierać osobno. Aby zainstalować drugi, HMC5883L bibliotekę, musisz wykonać następujące kroki:
Otwórz Arduino IDE i przejdź do Naszkicować > Dołącz bibliotekę > Zarządzaj bibliotekami.
W Menedżerze bibliotek wyszukaj HMC5883L w pasku wyszukiwania.
Wybierz HMC5883L biblioteka specjalnie z Adafruit. Po zainstalowaniu biblioteki możesz dołączyć ją do swojego szkicu Arduino, przechodząc do Naszkicować > Dołącz bibliotekę > HMC5883L.
Zrozumienie Kodeksu
Musisz napisać program, który zainicjuje czujnik, odczyta jego dane i obliczy siłę i kierunek pola magnetycznego Ziemi. Pełny kod można pobrać z naszego oficjalnego źródła Repozytorium GitHub.
Na początku kodu musisz dołączyć niezbędne biblioteki, które właśnie pobrałeś.
#włączać
#włączać
#włączać
Nie zapomnij przypisać unikalnego identyfikatora do czujnika. Użyj tej linii, aby to zrobić:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
W kodzie konfiguracji uruchom monitor szeregowy i sprawdź, czy czujnik odpowiada. Możesz wydrukować komunikaty do monitora, aby zaktualizować stan czujnika:
próżniaorganizować coś(próżnia)
{
Seryjny.zaczynać(9600);
Seryjny.println(„Test magnetometru HMC5883”); Seryjny.println("");
/* Inicjalizacja czujnika */
Jeśli(!mag.zaczynać())
{
Seryjny.println(„Ups, nie wykryto HMC5883… Sprawdź okablowanie!”);
chwila(1);
}
}
W pętli najpierw pobierz nowe zdarzenie czujnika:
czujniki_zdarzenie_t wydarzenie;
mag.getEvent(&zdarzenie);
Następnie wyświetl odczyty czujnika na monitorze szeregowym. Nie zapomnij ustawić szybkości transmisji na 9600.
Seryjny.wydrukować("X: "); Seryjny.wydrukować(zdarzenie.magnetyczne.x); Seryjny.wydrukować(" ");
Seryjny.wydrukować("Y: "); Seryjny.wydrukować(zdarzenie.magnetyczne.y); Seryjny.wydrukować(" ");
Seryjny.wydrukować("Z: "); Seryjny.wydrukować(zdarzenie.magnetyczne.z); Seryjny.wydrukować(" ");Seryjny.println(„uT”);
Przytrzymaj moduł tak, aby Z wskazuje „w górę” i mierzy kurs X I Y. W ten sposób możesz obliczyć kurs, gdy magnetometr jest wypoziomowany. Ten wiersz kodu pomaga w tym:
platforma nagłówek = atan2(zdarzenie.magnetyczne.y, zdarzenie.magnetyczne.x);
Kiedy już masz swoje nagłówek, musisz następnie dodać swój kąt deklinacji, czyli błąd pola magnetycznego w Twojej lokalizacji.
platforma kąt deklinacji = 0.663;
kierunek += deklinacjaKąt;
Możesz wygodnie znaleźć kąt deklinacji w swojej okolicy na Strona deklinacji magnetycznej. Jeśli z jakiegoś powodu nie możesz znaleźć swojego kąta deklinacji, wykomentuj dwie linie z kodu.
Zakomentowanie dwóch wierszy kodu może spowodować błędne odczyty czujnika. Spróbuj skalibrować czujnik przed użyciem.
Na koniec wydrukuj nagłówek na monitorze szeregowym i dodaj opóźnienie, aby odczekać pół sekundy przed ponownym odczytaniem.
Seryjny.wydrukować("Kierunek (stopnie): ");
Seryjny.println(nagłówek Stopnie);
opóźnienie(500);
Stąd możesz dostosować kod do potrzeb swojego projektu i dodać dodatkowe funkcje, takie jak rejestrowanie danych.
Jeśli wolisz korzystać z biblioteki Adafruit, zalecamy pobranie jej z Repozytorium GitHub firmy Adafruit.
Odczytywanie i interpretacja danych kompasu
Dane czujnika wyświetlane na monitorze szeregowym przedstawiają wartości wektora pola magnetycznego zmierzone przez magnetometr w mikroteslach (μT) odpowiednio dla osi X, Y i Z. Wartości te można wykorzystać do określenia orientacji i wielkości pola magnetycznego.
Wartość kierunku wyświetlana w stopniach jest również ważna i reprezentuje kierunek północnego bieguna magnetycznego względem pozycji czujnika. Odczyt ten można wykorzystać w projektach, w których należy określić kierunek poruszającego się obiektu, na przykład w robotyce, systemach nawigacji i geolokalizacji.
Kalibracja czujnika
Jeśli masz już zainstalowaną inną bibliotekę dla modułu HMC5883L, musisz ją odinstalować lub usunąć. W przeciwnym razie podczas kalibracji mogą pojawić się błędy kompilacji lub ostrzeżenia na monitorze szeregowym. Zalecamy korzystanie Biblioteka Jarzębskiego dostępne na GitHub, ponieważ zawiera pełne zasoby kalibracyjne potrzebne w tej sekcji.
Najpierw pobierz plik zip z repozytorium, klikając Kod > Pobierz ZIP.
Następnie otwórz Arduino IDE i kliknij Naszkicować > Dołącz bibliotekę > Dodaj bibliotekę.
Wybierz Arduino-HMC5883 zip, który właśnie pobrałeś, a Arduino IDE automatycznie zainstaluje bibliotekę.
Uruchom szkic kalibracji dostępny w repozytorium, przesuwając czujnik po płaskiej powierzchni podczas przesyłania. Wartości uzyskane z monitora szeregowego to wartości przesunięcia czujnika, których można użyć do skorygowania odczytów podczas korzystania z kompasu podczas projektów.
Problemy, które możesz napotkać
Istnieje kilka błędów, na które ktoś może natknąć się podczas łączenia modułu kompasu z Arduino. Oto kilka przykładów i ich obejścia:
Błędy kompilacji: Może się to zdarzyć, jeśli niezbędne biblioteki nie są dołączone lub jeśli w kodzie występują błędy składniowe. Aby to naprawić, upewnij się, że zainstalowałeś odpowiednie biblioteki i sprawdź swój kod pod kątem błędów składniowych. Jak widzieliśmy wiele razy, mogłeś przypadkowo zainstalować wiele bibliotek HCM5883L.
Błąd kompilacji: „Adafruit_HMC5883_Unified” robi nie nazwij typ
Błędy komunikacji: Jeśli nie możesz komunikować się z modułem kompasu, upewnij się, że podłączyłeś go do odpowiednich styków w Arduino i że okablowanie jest prawidłowe. Może być również konieczne dostosowanie adresu I2C modułu w kodzie, jeśli różni się on od domyślnego — czyli 0x1E.
Błąd za pomocą hmc5883l/urządzenie testowe (linia246) Błąd komunikacji z czujnikiem HMC5883L. Wartość Czytać z ID_A, ID_B I Rejestry ID_C Donie dopasować oczekiwane wartości.
Zakłócenia magnetyczne: Jeśli wskazania kompasu są niestabilne lub wahają się, może to być spowodowane interferencją magnetyczną ze strony pobliskich obiektów. Odsuń moduł od magnesów lub innych źródeł zakłóceń magnetycznych, aby uzyskać bardziej stabilne odczyty.
Zwiększ swoje projekty dzięki modułowi kompasu GY-271
Możliwość korzystania z modułu kompasu GY-271 HCM5883L otwiera drzwi do tworzenia bardziej złożonych projektów DIY przy użyciu Arduino, takich jak łaziki sterowane GPS i drony DIY. Możliwości są nieograniczone, zwłaszcza po dodaniu innych czujników.