Pridanie modulu kompasu do mikrokontroléra Arduino otvára množstvo možností pre projekty. Tu je návod, ako jeden pripojiť a použiť.

V moderných projektoch pre domácich majstrov je celkom bežné nájsť pokročilé senzory, ako sú akcelerometre a magnetometre, ktoré sú prepojené s mikrokontrolérmi. Aj keď ste tieto senzory mohli používať na svojom telefóne, je ťažké si predstaviť, ako tieto moduly fungujú, ale je to prekvapivo jednoduché.

Snímač kompasového magnetometra GY-271 umožňuje snímanie orientácie pre rôzne aplikácie. Tu preskúmame proces prepojenia snímača GY-271 s mikrokontrolérom Arduino, ako ho kalibrovať a pozrieme sa na problémy, s ktorými sa pri tom môžete stretnúť.

Čo je modul kompasu GY-271?

Modul kompasu GY-271 je vysoko citlivý magnetometer, ktorý dokáže merať magnetické polia v troch rozmeroch. Používa sa na detekciu magnetického poľa Zeme a určenie smeru alebo orientácie zariadení v aplikáciách, ako sú navigačné systémy, robotika a drony. Predstavte si to ako veľmi presný digitálny kompas. Tento snímač je vybavený kompaktným a robustným dizajnom, ktorý uľahčuje inštaláciu a použitie v širokej škále projektov.

instagram viewer

Ako funguje modul kompasu GY-271?

Kompasový modul GY-271 HCM5883L obsahuje 3-osový magnetometer snímač, ktorý je založený na anizotropnej magneto-rezistívnej (AMR) technológii. Senzor meria silu a smer magnetického poľa Zeme zisťovaním zmien odporu jeho vnútorných prvkov AMR.

Keď je snímač vystavený magnetickému poľu, mení sa odpor prvkov AMR a vytvára napätie, ktoré je úmerné sile a smeru magnetického poľa. Digitálny signálový procesor snímača potom prevedie toto napätie na digitálny signál, ktorý je možné prečítať mikrokontrolérom. Meraním napätia vo všetkých troch osiach môže snímač poskytnúť vysoko presné údaje o sile a smere magnetického poľa v troch rozmeroch.

Pripojenie GY-271 k Arduino Uno

Pripojenie tohto modulu k Arduinu je celkom jednoduché. Pokryli sme aj iné ľahko použiteľné moduly Arduino ktoré môžu pomôcť rozšíriť váš projekt v budúcnosti. Modul GY-271 má celkom päť pinov, vrátane VCC, GNDa tri signálne kolíky (SDA, SCL, a DRDY).

Budete potrebovať nasledujúce komponenty:

  • Modul kompasu GY-271 HMC5883L
  • Arduino Uno (alebo iný model)
  • Štartovacie káble (samec-samec a samec-samica)
  • Breadboard (voliteľné)

Najprv pripojte VCC a GND kolíky modulu GY-271 do 5V a GND kolíky Arduino Uno, resp.

Ďalej pripojte SDA a SCL kolíky modulu na A4 a A5 analógové kolíky Arduino Uno, resp.

Inštalácia potrebných knižníc

Skôr ako začnete pracovať s modulom kompasu GY-271 a Arduinom, musíte nainštalovať potrebné knižnice na komunikáciu so snímačom.

Prvá knižnica, ktorú musíte zahrnúť do svojho náčrtu, je knižnica Wire, ktorá sa používa na komunikáciu I2C medzi Arduinom a senzorom. Knižnica Wire je predinštalovaná s Arduino IDE, takže ju nemusíte sťahovať samostatne. Ak chcete nainštalovať druhý, HMC5883L knižnice, budete musieť postupovať podľa týchto krokov:

Otvorte Arduino IDE a prejdite na Skica > Zahrnúť knižnicu > Spravovať knižnice.

V Správcovi knižníc vyhľadajte HMC5883L vo vyhľadávacom paneli.

Vyberte HMC5883L knižnica konkrétne od Adafruit. Po nainštalovaní knižnice ju môžete zahrnúť do svojho náčrtu Arduino tak, že prejdete na Skica > Zahrnúť knižnicu > HMC5883L.

Pochopenie Kódexu

Musíte napísať program, ktorý inicializuje senzor, načíta jeho údaje a vypočíta silu a smer magnetického poľa Zeme. Celý kód si môžete stiahnuť z nášho oficiálneho webu úložisko GitHub.

Na začiatku kódu musíte zahrnúť potrebné knižnice, ktoré ste práve stiahli.

#zahŕňajú
#zahŕňajú
#zahŕňajú

Nezabudnite senzoru priradiť jedinečné ID. Použite na to tento riadok:

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

V kóde nastavenia spustite sériový monitor a skontrolujte, či snímač reaguje. Na aktualizáciu stavu senzora môžete vytlačiť správy na monitor:

neplatnénastaviť(neplatné)
{
Serial.začať(9600);
Serial.println("Test magnetometra HMC5883"); Serial.println("");

/* Inicializujte senzor */
ak(!mag.začať())
{
Serial.println("Ojoj, nezistil sa žiadny HMC5883... Skontrolujte si kabeláž!");
zatiaľ čo(1);
}
}

V slučke najprv získajte novú udalosť senzora:

sensors_event_t udalosť;
mag.getEvent(&udalosť);

Potom zobrazte hodnoty snímača na sériovom monitore. Nezabudnite nastaviť prenosovú rýchlosť na 9600​​​​.

Serial.vytlačiť("X: "); Serial.vytlačiť(udalosť.magnetická.x); Serial.vytlačiť(" ");
Serial.vytlačiť("Y:"); Serial.vytlačiť(event.magnetic.y); Serial.vytlačiť(" ");
Serial.vytlačiť("Z:"); Serial.vytlačiť(event.magnetic.z); Serial.vytlačiť(" ");Serial.println("uT");

Držte modul tak Z smeruje „nahor“ a zmerajte smer pomocou X a Y. Týmto spôsobom môžete vypočítať kurz, keď je magnetometer vo vodorovnej polohe. Tento riadok kódu s tým pomáha:

plavák nadpis = atan2(event.magnetic.y, event.magnetic.x);

Akonáhle budete mať svoje nadpis, musíte potom pridať svoje declinationAngle, čo je chyba magnetického poľa vo vašej polohe.

plavák declinationAngle = 0.663;
 nadpis += uhol sklonu;

Uhol sklonu vašej miestnej oblasti môžete pohodlne nájsť na Webová stránka magnetickej deklinácie. Ak z nejakého dôvodu nemôžete nájsť svoj uhol deklinácie, zakomentujte dva riadky z kódu.

Komentovanie dvoch riadkov kódu môže viesť k chybným hodnotám snímača. Pred použitím sa pokúste čo najlepšie kalibrovať senzor.

Nakoniec vytlačte hlavičku na sériový monitor a pridajte polsekundové oneskorenie pred opätovným čítaním.

Serial.vytlačiť("Nadpis (stupne): ");
Serial.println(nadpis Stupne);
meškanie(500);

Odtiaľto môžete prispôsobiť kód tak, aby vyhovoval potrebám vášho projektu, a pridať ďalšie funkcie, ako napríklad zaznamenávanie údajov.

Ak uprednostňujete používanie knižnice Adafruit, odporúčame vám ju použiť Repozitár GitHub spoločnosti Adafruit.

Čítanie a interpretácia údajov kompasu

Údaje snímača zobrazené na sériovom monitore ukazujú vektorové hodnoty magnetického poľa namerané magnetometrom v mikroteslach (μT) pre osi X, Y a Z. Tieto hodnoty možno použiť na určenie orientácie a veľkosti magnetického poľa.

Hodnota kurzu zobrazená v stupňoch je tiež dôležitá a predstavuje smer magnetického severného pólu vzhľadom na polohu snímača. Toto čítanie je možné použiť v projektoch, kde je potrebné určiť smer pohybujúceho sa objektu, ako napríklad v robotických, navigačných a geolokačných systémoch.

Kalibrácia snímača

Ak ste už nainštalovali inú knižnicu pre modul HMC5883L, budete ju musieť odinštalovať alebo vymazať. V opačnom prípade sa počas kalibrácie môžu na vašom sériovom monitore vyskytnúť chyby kompilácie alebo sa vám môžu zobraziť varovania. Odporúčame použiť Jarzebského knižnica dostupné na GitHub, pretože má kompletné kalibračné zdroje potrebné pre túto sekciu.

Najprv si stiahnite súbor zip z úložiska kliknutím na kód > Stiahnite si ZIP.

Ďalej otvorte Arduino IDE a kliknite na Skica > Zahrnúť knižnicu > Pridať knižnicu.

Vyberte Arduino-HMC5883 zip, ktorý ste si práve stiahli, a Arduino IDE potom automaticky nainštaluje knižnicu za vás.

Spustite kalibračný náčrt dostupný v úložisku a zároveň pohybujte senzorom po rovnom povrchu pri nahrávaní. Hodnoty získané zo sériového monitora sú offsetové hodnoty vášho senzora, ktoré môžete použiť na korekciu nameraných hodnôt pri používaní kompasu počas vašich projektov.

Problémy, na ktoré môžete naraziť

Existuje niekoľko chýb, na ktoré môže niekto naraziť pri prepojení modulu kompasu s Arduinom. Tu je niekoľko príkladov a ich riešení:

Chyby pri kompilácii: Môžu sa vyskytnúť, ak nie sú zahrnuté potrebné knižnice alebo ak sú v kóde syntaktické chyby. Ak to chcete vyriešiť, uistite sa, že máte nainštalované správne knižnice a skontrolujte, či váš kód neobsahuje chyby syntaxe. Ako sme už mnohokrát videli, možno ste omylom nainštalovali viacero knižníc HCM5883L.

Chyba kompilácie: 'Adafruit_HMC5883_Unified' robí nie pomenujte typ

Chyby v komunikácii: Ak nemôžete komunikovať s modulom kompasu, uistite sa, že ste ho pripojili k správnym kolíkom na vašom Arduine a či máte správne zapojenie. Možno budete musieť upraviť aj I2C adresu modulu vo vašom kóde, ak sa líši od predvolenej – čo je 0x1E.

Chyba použitím hmc5883l/testDevice (riadok246) Chyba pri komunikácii so snímačom HMC5883L. Hodnota čítať z ID_A, ID_B a Registre ID_C robiťnie zodpovedať očakávaným hodnotám.

Magnetické rušenie: Ak sú hodnoty kompasu nestabilné alebo kolísajú, môže to byť spôsobené magnetickým rušením blízkych objektov. Presuňte modul ďalej od magnetov alebo iných zdrojov magnetického rušenia, aby ste získali stabilnejšie hodnoty.

Oživte svoje projekty s modulom kompasu GY-271

Možnosť používať modul kompasu GY-271 HCM5883L otvára dvere k budovaniu zložitejších DIY projektov pomocou Arduina, ako sú rovery navádzané GPS a drony pre domácich majstrov. Možnosti sú nekonečné, najmä keď pridáte ďalšie senzory.