Če mikrokrmilniku Arduino dodate modul kompasa, odprete številne možnosti za projekte. Tukaj je opisano, kako ga povežete in uporabite.
V sodobnih DIY projektih je precej pogosto najti napredne senzorje, kot so merilniki pospeška in magnetometri, ki so povezani z mikrokontrolerji. Čeprav ste te senzorje morda uporabljali v telefonu, si je težko predstavljati, kako ti moduli delujejo, vendar je presenetljivo preprosto.
Senzor kompasa GY-271 magnetometer omogoča zaznavanje orientacije za različne aplikacije. Tukaj bomo raziskali postopek povezovanja senzorja GY-271 z mikrokrmilnikom Arduino, kako ga kalibrirati in si ogledali težave, s katerimi se lahko soočite pri tem.
Kaj je modul kompasa GY-271?
Modul kompasa GY-271 je zelo občutljiv magnetometer, ki lahko meri magnetna polja v treh dimenzijah. Uporablja se za zaznavanje zemeljskega magnetnega polja in določanje smeri ali orientacije naprav v aplikacijah, kot so navigacijski sistemi, robotika in brezpilotna letala. Zamislite si ga kot zelo natančen digitalni kompas. Ta senzor je opremljen s kompaktno in robustno zasnovo, ki omogoča enostavno namestitev in uporabo v številnih projektih.
Kako deluje modul kompasa GY-271?
Modul kompasa GY-271 HCM5883L vsebuje 3-osni senzor magnetometra, ki temelji na anizotropni magneto-uporovni (AMR) tehnologiji. Senzor meri moč in smer zemeljskega magnetnega polja tako, da zaznava spremembe upora njegovih notranjih AMR elementov.
Ko je senzor izpostavljen magnetnemu polju, se upornost elementov AMR spremeni in ustvari napetost, ki je sorazmerna z jakostjo in smerjo magnetnega polja. Digitalni signalni procesor senzorja nato to napetost pretvori v digitalni signal, ki ga lahko bere mikrokrmilnik. Z merjenjem napetosti v vseh treh oseh lahko senzor zagotovi zelo natančne odčitke jakosti in smeri magnetnega polja v treh dimenzijah.
Povezovanje GY-271 z Arduino Uno
Priključitev tega modula na Arduino je precej enostavna. Pokrili smo tudi druge moduli Arduino, ki so enostavni za uporabo ki vam lahko pomagajo razširiti vaš projekt v prihodnosti. Modul GY-271 ima skupaj pet zatičev VCC, GNDin trije signalni zatiči (SDA, SCL, in DRDY).
Potrebovali boste naslednje komponente:
- GY-271 HMC5883L modul kompasa
- Arduino Uno (ali drug model)
- Premostitvene žice (moški na moški in moški na žensko)
- Breadboard (neobvezno)
Najprej povežite VCC in GND zatiči modula GY-271 na 5V in GND zatiči Arduino Uno oz.
Nato povežite SDA in SCL zatiči modula na A4 in A5 analognih zatičev Arduino Uno oz.
Namestitev potrebnih knjižnic
Preden lahko začnete delati z modulom kompasa GY-271 in Arduinom, morate namestiti potrebne knjižnice za komunikacijo s senzorjem.
Prva knjižnica, ki jo morate vključiti v svojo skico, je knjižnica Wire, ki se uporablja za komunikacijo I2C med Arduino in senzorjem. Knjižnica Wire je vnaprej nameščena z Arduino IDE, zato vam je ni treba prenesti posebej. Za namestitev drugega, the HMC5883L knjižnici, boste morali slediti tem korakom:
Odprite Arduino IDE in pojdite na Skica > Vključi knjižnico > Upravljanje knjižnic.
V upravitelju knjižnice poiščite HMC5883L v iskalni vrstici.
Izberite HMC5883L knjižnica posebej iz Adafruita. Ko je knjižnica nameščena, jo lahko vključite v svojo skico Arduino tako, da obiščete Skica > Vključi knjižnico > HMC5883L.
Razumevanje kodeksa
Napisati morate program, ki inicializira senzor, prebere njegove podatke in izračuna moč in smer zemeljskega magnetnega polja. Celotno kodo lahko prenesete z našega uradnika Repozitorij GitHub.
Na začetku kode morate vključiti potrebne knjižnice, ki ste jih pravkar prenesli.
#vključujejo
#vključujejo
#vključujejo
Ne pozabite senzorju dodeliti edinstvenega ID-ja. Za to uporabite to vrstico:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
V nastavitveni kodi zaženite serijski nadzor in preverite, ali se senzor odziva. Za posodobitev stanja senzorja lahko natisnete sporočila na monitor:
prazninanastaviti(praznina)
{
Serijski.začeti(9600);
Serijski.println("Preskus magnetometra HMC5883"); Serijski.println("");
/* Inicializiraj senzor */
če(! mag.začeti())
{
Serijski.println("Ojoj, HMC5883 ni zaznan... Preverite ožičenje!");
medtem(1);
}
}
V zanki najprej pridobite nov dogodek senzorja:
senzorji_dogodek_t dogodek;
mag.getEvent(&dogodek);
Nato prikažite odčitke senzorja na serijski monitor. Ne pozabite nastaviti hitrosti prenosa na 9600.
Serijski.tiskanje("X:"); Serijski.tiskanje(event.magnetic.x); Serijski.tiskanje(" ");
Serijski.tiskanje("Y:"); Serijski.tiskanje(event.magnetic.y); Serijski.tiskanje(" ");
Serijski.tiskanje("Z:"); Serijski.tiskanje(event.magnetic.z); Serijski.tiskanje(" ");Serijski.println("uT");
Držite modul tako, da Z kaže "navzgor" in z njim izmerite smer X in Y. S tem lahko izračunate smer, ko je magnetometer vodoravno. Ta vrstica kode pomaga pri tem:
lebdi naslov = atan2(event.magnetic.y, event.magnetic.x);
Ko enkrat imate svojega naslov, potem morate dodati svoje deklinacijski kot, kar je napaka magnetnega polja na vaši lokaciji.
lebdi deklinacijski kot = 0.663;
smer += deklinacijski kot;
Naklonski kot vašega lokalnega območja lahko priročno najdete na Spletno mesto za magnetno deklinacijo. Če iz nekega razloga ne morete najti svojega kota deklinacije, zakomentirajte dve vrstici iz svoje kode.
Komentiranje dveh vrstic kode lahko povzroči napačne odčitke senzorjev. Po najboljših močeh poskusite umeriti senzor pred uporabo.
Na koncu natisnite naslov na serijski monitor in dodajte zakasnitev, da počakate pol sekunde, preden ponovno preberete.
Serijski.tiskanje("Naslov (stopinje): ");
Serijski.println(naslov Stopnje);
zamuda(500);
Tukaj lahko kodo prilagodite potrebam vašega projekta in dodate dodatne funkcije, kot je beleženje podatkov.
Če bi raje uporabljali knjižnico Adafruit, priporočamo, da jo pridobite pri Adafruitov repozitorij GitHub.
Branje in interpretacija podatkov kompasa
Podatki senzorja, prikazani na serijskem monitorju, prikazujejo vektorske vrednosti magnetnega polja, izmerjene z magnetometrom v mikroteslu (μT) za os X, Y in Z. Te vrednosti se lahko uporabijo za določitev orientacije in velikosti magnetnega polja.
Vrednost smeri, prikazana v stopinjah, je prav tako pomembna in predstavlja smer severnega magnetnega pola glede na položaj senzorja. Ta odčitek se lahko uporablja v projektih, kjer je treba določiti smer premikajočega se predmeta, na primer v sistemih robotike, navigacije in geolokacije.
Kalibracija senzorja
Če ste že namestili drugo knjižnico za modul HMC5883L, jo boste morali odstraniti ali izbrisati. V nasprotnem primeru lahko med umerjanjem dobite napake pri prevajanju ali vidite opozorila v serijskem monitorju. Priporočamo uporabo Knjižnica Jarzebskega na voljo na GitHubu, saj ima vse vire za umerjanje, potrebne za ta razdelek.
Najprej prenesite zip datoteko iz repozitorija s klikom na Koda > Prenesite ZIP.
Nato odprite Arduino IDE in kliknite Skica > Vključi knjižnico > Dodaj knjižnico.
Izberite Arduino-HMC5883 zip, ki ste jo pravkar prenesli, in Arduino IDE bo nato samodejno namestil knjižnico namesto vas.
Zaženite kalibracijsko skico, ki je na voljo v repozitoriju, medtem ko senzor po nalaganju premikate po ravni površini. Vrednosti, pridobljene iz serijskega monitorja, so vrednosti odmika vašega senzorja, ki jih lahko uporabite za popravljanje odčitkov med uporabo kompasa med projekti.
Težave, v katere lahko naletite
Obstaja več napak, na katere lahko nekdo naleti pri povezovanju modula kompasa z Arduinom. Tukaj je nekaj primerov in njihovih rešitev:
Napake pri kompilaciji: Do tega lahko pride, če potrebne knjižnice niso vključene ali če so v kodi sintaksne napake. Če želite to popraviti, se prepričajte, da ste namestili pravilne knjižnice, in preverite, ali so v kodi sintaksne napake. Kot smo že večkrat videli, ste morda pomotoma namestili več knjižnic HCM5883L.
Napaka pri kompilaciji: 'Adafruit_HMC5883_Unified' počne ne poimenujte vrsto
Komunikacijske napake: Če ne morete komunicirati z modulom kompasa, se prepričajte, da ste ga povezali s pravimi nožicami na vašem Arduinu in da je vaše ožičenje pravilno. Morda boste morali prilagoditi tudi naslov I2C modula v vaši kodi, če se razlikuje od privzetega, ki je 0x1E.
Napaka uporabo hmc5883l/testnaprava (linija246) Napaka pri komunikaciji s senzorjem HMC5883L. Vrednost prebrati od ID_A, ID_B in registri ID_C nareditine ujemati s pričakovanimi vrednostmi.
Magnetne motnje: Če so odčitki kompasa nestabilni ali nihajo, je to morda posledica magnetnih motenj bližnjih predmetov. Premaknite modul stran od magnetov ali drugih virov magnetnih motenj, da dobite stabilnejše odčitke.
Nadgradite svoje projekte z modulom kompasa GY-271
Možnost uporabe modula kompasa GY-271 HCM5883L odpira vrata za gradnjo bolj zapletenih projektov DIY z uporabo Arduina, kot so GPS-vodeni roverji in droni DIY. Možnosti so neskončne, še posebej, če dodate druge senzorje.