Přidání modulu kompasu do mikrokontroléru Arduino otevírá řadu možností pro projekty. Zde je návod, jak jeden připojit a používat.
V moderních DIY projektech je docela běžné najít pokročilé senzory, jako jsou akcelerometry a magnetometry, které jsou propojeny s mikrokontroléry. I když jste možná použili tyto senzory na svém telefonu, je těžké si představit, jak tyto moduly fungují, ale je to překvapivě jednoduché.
Snímač kompasového magnetometru GY-271 umožňuje snímání orientace pro různé aplikace. Zde prozkoumáme proces propojení senzoru GY-271 s mikrokontrolérem Arduino, jak jej zkalibrovat a podíváme se na problémy, se kterými se při tom můžete setkat.
Co je modul kompasu GY-271?
Modul kompasu GY-271 je vysoce citlivý magnetometr, který dokáže měřit magnetická pole ve třech rozměrech. Používá se k detekci magnetického pole Země a určení směru nebo orientace zařízení v aplikacích, jako jsou navigační systémy, robotika a drony. Představte si to jako velmi přesný digitální kompas. Tento senzor je vybaven kompaktním a robustním designem, který usnadňuje instalaci a použití v široké řadě projektů.
Jak funguje modul kompasu GY-271?
Modul kompasu GY-271 HCM5883L obsahuje 3osý magnetometrový senzor, který je založen na anizotropní magnetorezistivní (AMR) technologii. Senzor měří sílu a směr magnetického pole Země pomocí detekce změn odporu jeho vnitřních prvků AMR.
Když je senzor vystaven magnetickému poli, mění se odpor prvků AMR a generuje napětí, které je úměrné síle a směru magnetického pole. Digitální signálový procesor snímače pak toto napětí převede na digitální signál, který může být čten mikrokontrolérem. Měřením napětí ve všech třech osách může senzor poskytovat vysoce přesné údaje o síle a směru magnetického pole ve třech rozměrech.
Připojení GY-271 k Arduino Uno
Připojení tohoto modulu k Arduinu je docela jednoduché. Zabývali jsme se i jinými snadno použitelné moduly Arduino které mohou pomoci rozšířit váš projekt v budoucnu. Modul GY-271 má celkem pět pinů, včetně VCC, GNDa tři signální kolíky (SDA, SCL, a DRDY).
Budete potřebovat následující komponenty:
- Modul kompasu GY-271 HMC5883L
- Arduino Uno (nebo jiný model)
- Propojovací kabely (samec-samec a samec-samice)
- Breadboard (volitelné)
Nejprve připojte VCC a GND piny modulu GY-271 k 5V a GND piny Arduino Uno, resp.
Dále připojte SDA a SCL kolíky modulu k A4 a A5 analogové piny Arduino Uno, resp.
Instalace potřebných knihoven
Než budete moci začít pracovat s modulem kompasu GY-271 a Arduinem, musíte nainstalovat potřebné knihovny pro komunikaci se senzorem.
První knihovnou, kterou musíte do náčrtu zahrnout, je knihovna Wire, která se používá pro I2C komunikaci mezi Arduinem a senzorem. Knihovna Wire je dodávána s předinstalovaným Arduino IDE, takže ji nemusíte stahovat samostatně. Chcete-li nainstalovat druhý, HMC5883L knihovny, budete muset provést následující kroky:
Otevřete Arduino IDE a přejděte na Skica > Zahrnout knihovnu > Správa knihoven.
Ve Správci knihoven vyhledejte HMC5883L ve vyhledávací liště.
Vybrat HMC5883L knihovna konkrétně od Adafruit. Jakmile je knihovna nainstalována, můžete ji zahrnout do své skici Arduino tím, že přejdete na Skica > Zahrnout knihovnu > HMC5883L.
Porozumění kodexu
Musíte napsat program, který inicializuje senzor, přečte jeho data a vypočítá sílu a směr magnetického pole Země. Celý kód si můžete stáhnout z našeho oficiálního webu úložiště GitHub.
Na začátku kódu musíte zahrnout potřebné knihovny, které jste právě stáhli.
#zahrnout
#zahrnout
#zahrnout
Nezapomeňte senzoru přiřadit jedinečné ID. K tomu použijte tento řádek:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
V kódu nastavení spusťte sériový monitor a zkontrolujte, zda senzor reaguje. Chcete-li aktualizovat stav senzoru, můžete tisknout zprávy na monitor:
prázdnotazaložit(prázdnota)
{
Seriál.začít(9600);
Seriál.println("Test magnetometru HMC5883"); Seriál.println("");
/* Inicializujte senzor */
-li(!mag.začít())
{
Seriál.println("Jejda, nebyl zjištěn žádný HMC5883... Zkontrolujte kabeláž!");
zatímco(1);
}
}
Ve smyčce nejprve získejte novou událost senzoru:
sensors_event_t událost;
mag.getEvent(&událost);
Poté zobrazte hodnoty senzoru na sériovém monitoru. Nezapomeňte nastavit přenosovou rychlost na 9600.
Seriál.tisk("X: "); Seriál.tisk(událost.magnetická.x); Seriál.tisk(" ");
Seriál.tisk("Y:"); Seriál.tisk(event.magnetic.y); Seriál.tisk(" ");
Seriál.tisk("Z:"); Seriál.tisk(event.magnetic.z); Seriál.tisk(" ");Seriál.println("uT");
Držte modul tak Z směřuje "nahoru" a změřte směr pomocí X a Y. Tímto způsobem pak můžete vypočítat kurz, když je magnetometr ve vodorovné poloze. Tento řádek kódu s tím pomáhá:
plovák nadpis = atan2(event.magnetic.y, event.magnetic.x);
Jakmile budete mít svůj nadpis, musíte přidat svůj úhel sklonu, což je chyba magnetického pole ve vaší poloze.
plovák deklinaceAngle = 0.663;
nadpis += deklinaceÚhel;
Úhel deklinace vaší místní oblasti můžete pohodlně najít na Webová stránka magnetické deklinace. Pokud z nějakého důvodu nemůžete najít svůj úhel deklinace, zakomentujte dva řádky z kódu.
Zakomentování dvou řádků kódu může vést k chybným hodnotám senzoru. Před použitím se snažte senzor zkalibrovat.
Nakonec vytiskněte záhlaví na sériový monitor a přidejte půlsekundovou prodlevu, než budete znovu číst.
Seriál.tisk("Nadpis (stupně): ");
Seriál.println(nadpisStupně);
zpoždění(500);
Zde můžete upravit kód tak, aby vyhovoval potřebám vašeho projektu, a přidat další funkce, jako je protokolování dat.
Pokud dáváte přednost použití knihovny Adafruit, doporučujeme ji použít Adafruitův GitHub repozitář.
Čtení a interpretace dat kompasu
Data senzoru zobrazená na sériovém monitoru ukazují hodnoty vektoru magnetického pole naměřené magnetometrem v mikroteslach (μT) pro osy X, Y a Z, v tomto pořadí. Tyto hodnoty lze použít k určení orientace a velikosti magnetického pole.
Důležitá je také hodnota kurzu zobrazená ve stupních a představuje směr severního magnetického pólu vzhledem k poloze senzoru. Toto čtení lze použít v projektech, kde je třeba určit směr pohybujícího se objektu, jako je robotika, navigace a geolokační systémy.
Kalibrace senzoru
Pokud jste již nainstalovali jinou knihovnu pro modul HMC5883L, budete ji muset odinstalovat nebo odstranit. V opačném případě se mohou během kalibrace objevit chyby při kompilaci nebo se na vašem sériovém monitoru zobrazí varování. Doporučujeme používat Jarzebského knihovna dostupné na GitHubu, protože má kompletní kalibrační zdroje potřebné pro tuto sekci.
Nejprve si stáhněte soubor zip z úložiště kliknutím na Kód > Stáhnout ZIP.
Dále otevřete Arduino IDE a klikněte na Skica > Zahrnout knihovnu > Přidat knihovnu.
Vybrat Arduino-HMC5883 zip, který jste si právě stáhli, a Arduino IDE pak knihovnu automaticky nainstaluje za vás.
Spusťte kalibrační náčrt, který je k dispozici v úložišti, a pohybujte senzorem po rovném povrchu při nahrávání. Hodnoty získané ze sériového monitoru jsou hodnoty offsetu vašeho senzoru, které můžete použít k opravě naměřených hodnot při používání kompasu během vašich projektů.
Problémy, na které můžete narazit
Existuje několik chyb, na které může někdo narazit při propojení modulu kompasu s Arduinem. Zde je několik příkladů a jejich řešení:
Chyby při kompilaci: Mohou nastat, pokud nejsou zahrnuty potřebné knihovny nebo pokud jsou v kódu syntaktické chyby. Chcete-li tento problém vyřešit, ujistěte se, že jste nainstalovali správné knihovny, a zkontrolujte, zda kód neobsahuje chyby syntaxe. Jak jsme viděli mnohokrát, možná jste omylem nainstalovali více knihoven HCM5883L.
Chyba kompilace: 'Adafruit_HMC5883_Unified' dělá ne pojmenujte typ
Chyby v komunikaci: Pokud nejste schopni komunikovat s modulem kompasu, ujistěte se, že jste jej připojili ke správným kolíkům na vašem Arduinu a že je vaše zapojení správné. Možná budete muset upravit I2C adresu modulu ve vašem kódu, pokud se liší od výchozí – což je 0x1E.
Chyba použitím hmc5883l/testDevice (čára246) Chyba při komunikaci se snímačem HMC5883L. Hodnota číst z ID_A, ID_B a Registry ID_C dělatne odpovídat očekávaným hodnotám.
Magnetické rušení: Pokud jsou hodnoty kompasu nestabilní nebo kolísají, může to být způsobeno magnetickým rušením blízkých objektů. Přesuňte modul dále od magnetů nebo jiných zdrojů magnetického rušení, abyste získali stabilnější hodnoty.
Oživte své projekty s modulem kompasu GY-271
Možnost používat kompasový modul GY-271 HCM5883L otevírá dveře k budování složitějších DIY projektů pomocí Arduina, jako jsou rovery naváděné GPS a drony pro kutily. Možnosti jsou nekonečné, zvláště když přidáte další senzory.