Kompaso modulio pridėjimas prie „Arduino“ mikrovaldiklio atveria daugybę projektų galimybių. Štai kaip jį prijungti ir naudoti.

Šiuolaikiniuose „pasidaryk pats“ projektuose gana įprasta rasti pažangių jutiklių, tokių kaip akselerometrai ir magnetometrai, susieti su mikrovaldikliais. Nors galbūt naudojote šiuos jutiklius savo telefone, sunku įsivaizduoti, kaip šie moduliai veikia, tačiau tai stebėtinai paprasta.

Kompaso magnetometro jutiklis GY-271 leidžia nustatyti orientaciją įvairioms reikmėms. Čia išnagrinėsime GY-271 jutiklio sąsajos su Arduino mikrovaldikliu procesą, kaip jį sukalibruoti ir pažvelgsime į problemas, su kuriomis galite susidurti tai darydami.

Kas yra GY-271 kompaso modulis?

GY-271 kompaso modulis yra labai jautrus magnetometras, galintis matuoti magnetinius laukus trimis matmenimis. Jis naudojamas aptikti Žemės magnetinį lauką ir nustatyti prietaisų kryptį ar orientaciją tokiose programose kaip navigacijos sistemos, robotika ir dronai. Pagalvokite apie tai kaip apie labai tikslų skaitmeninį kompasą. Šis jutiklis yra kompaktiško ir tvirto dizaino, todėl jį lengva montuoti ir naudoti įvairiuose projektuose.

instagram viewer

Kaip veikia GY-271 kompaso modulis?

Kompaso modulyje GY-271 HCM5883L yra 3 ašių magnetometro jutiklis, pagrįstas anizotropine magneto-resistive (AMR) technologija. Jutiklis matuoja Žemės magnetinio lauko stiprumą ir kryptį, aptikdamas jo vidinių AMR elementų varžos pokyčius.

Kai jutiklis yra veikiamas magnetinio lauko, AMR elementų varža pasikeičia, sukuriant įtampą, kuri yra proporcinga magnetinio lauko stiprumui ir krypčiai. Tada jutiklio skaitmeninis signalo procesorius paverčia šią įtampą skaitmeniniu signalu, kurį gali nuskaityti mikrovaldiklis. Matuojant įtampą visose trijose ašyse, jutiklis gali pateikti labai tikslius trijų matmenų magnetinio lauko stiprumo ir krypties rodmenis.

GY-271 prijungimas prie Arduino Uno

Šį modulį prijungti prie „Arduino“ yra gana paprasta. Apėmėme ir kitus lengvai naudojami Arduino moduliai kurie gali padėti išplėsti jūsų projektą ateityje. GY-271 modulis turi iš viso penkis kaiščius, įskaitant VCC, GNDir trys signalo kaiščiai (SDA, SCL, ir DRDY).

Jums reikės šių komponentų:

  • GY-271 HMC5883L kompaso modulis
  • Arduino Uno (arba kitas modelis)
  • Jungiklio laidai (vyras-vyras ir patinas-moteris)
  • duona (neprivaloma)

Pirmiausia prijunkite VCC ir GND GY-271 modulio kaiščiai prie 5V ir GND atitinkamai „Arduino Uno“ kaiščiai.

Tada prijunkite SDA ir SCL modulio kaiščiai prie A4 ir A5 Atitinkamai analoginiai Arduino Uno kaiščiai.

Būtinų bibliotekų diegimas

Prieš pradėdami dirbti su GY-271 kompaso moduliu ir Arduino, turite įdiegti reikiamas bibliotekas, kad galėtumėte susisiekti su jutikliu.

Pirmoji biblioteka, kurią turite įtraukti į savo eskizą, yra Wire biblioteka, kuri naudojama I2C ryšiui tarp Arduino ir jutiklio. „Wire“ biblioteka yra iš anksto įdiegta kartu su „Arduino IDE“, todėl jums nereikia jos atsisiųsti atskirai. Norėdami įdiegti antrąjį, HMC5883L biblioteką, turėsite atlikti šiuos veiksmus:

Atidarykite Arduino IDE ir eikite į Eskizas > Įtraukti biblioteką > Tvarkyti bibliotekas.

Bibliotekos tvarkyklėje ieškokite HMC5883L paieškos juostoje.

Pasirinkite HMC5883L biblioteka konkrečiai iš Adafruit. Įdiegę biblioteką, galite įtraukti ją į savo Arduino eskizą apsilankę adresu Eskizas > Įtraukti biblioteką > HMC5883L.

Kodekso supratimas

Reikia parašyti programą, kuri inicijuotų jutiklį, nuskaitytų jo duomenis ir apskaičiuotų Žemės magnetinio lauko stiprumą ir kryptį. Visą kodą galite atsisiųsti iš mūsų oficialios svetainės GitHub saugykla.

Kodo pradžioje turite įtraukti reikiamas bibliotekas, kurias ką tik atsisiuntėte.

#įtraukti
#įtraukti
#įtraukti

Nepamirškite jutikliui priskirti unikalaus ID. Norėdami tai padaryti, naudokite šią eilutę:

Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);

Sąrankos kode paleiskite serijinį monitorių ir patikrinkite, ar jutiklis reaguoja. Galite atspausdinti pranešimus į monitorių, kad atnaujintumėte jutiklio būseną:

tuštumasąranka(tuštuma)
{
Serijinis.pradėti(9600);
Serijinis.println("HMC5883 magnetometro testas"); Serijinis.println("");

/* Inicijuoti jutiklį */
jeigu(!mag.pradėti())
{
Serijinis.println(„Oi, HMC5883 neaptikta... Patikrinkite savo laidus!");
kol(1);
}
}

Pirmiausia gaukite naują jutiklio įvykį:

jutikliai_įvykis_t renginys;
mag.getEvent(&event);

Tada parodykite jutiklio rodmenis serijiniame monitoriuje. Nepamirškite nustatyti perdavimo spartos 9600​​​​.

Serijinis.spausdinti("X:"); Serijinis.spausdinti(įvykis.magnetinis.x); Serijinis.spausdinti(" ");
Serijinis.spausdinti("Y:"); Serijinis.spausdinti(įvykis.magnetinis.y); Serijinis.spausdinti(" ");
Serijinis.spausdinti("Z:"); Serijinis.spausdinti(įvykis.magnetinis.z); Serijinis.spausdinti(" ");Serijinis.println("uT");

Laikykite modulį taip Z rodo „aukštyn“ ir išmatuokite antraštę X ir Y. Tai darydami galite apskaičiuoti kryptį, kai magnetometras yra lygus. Ši kodo eilutė padeda tai:

plūdė antraštė = atanas2(event.magnetic.y, event.magnetic.x);

Kai tik turėsite savo Antraštė, tada turite pridėti savo deklinacijaKampas, tai yra jūsų vietos magnetinio lauko klaida.

plūdė deklinacijos kampas = 0.663;
 antraštė += deklinacijos kampas;

Galite patogiai rasti savo vietinės zonos nuokrypio kampą Magnetinės deklinacijos svetainė. Jei dėl kokių nors priežasčių negalite rasti deklinacijos kampo, pakomentuokite dvi kodo eilutes.

Komentuojant dvi kodo eilutes, jutiklio rodmenys gali būti klaidingi. Prieš naudodami pabandykite sukalibruoti jutiklį.

Galiausiai išspausdinkite antraštę serijiniame monitoriuje ir pridėkite delsą, kad palauktumėte pusę sekundės prieš skaitydami dar kartą.

Serijinis.spausdinti("Klausimas (laipsniai):");
Serijinis.println(antraštė Laipsniai);
delsimas(500);

Čia galite tinkinti kodą pagal savo projekto poreikius ir pridėti papildomų funkcijų, pvz., duomenų registravimo.

Jei norite naudoti Adafruit biblioteką, rekomenduojame ją įsigyti iš „Adafruit“ „GitHub“ saugykla.

Kompaso duomenų skaitymas ir interpretavimas

Serijiniame monitoriuje rodomi jutiklio duomenys rodo magnetometro išmatuotas magnetinio lauko vektorių reikšmes mikroteslomis (μT) atitinkamai X, Y ir Z ašims. Šios vertės gali būti naudojamos magnetinio lauko orientacijai ir dydžiui nustatyti.

Kurso reikšmė, rodoma laipsniais, taip pat yra svarbi ir parodo magnetinio šiaurinio poliaus kryptį, palyginti su jutiklio padėtimi. Šis rodmuo gali būti naudojamas projektuose, kuriuose reikia nustatyti judančio objekto kryptį, pavyzdžiui, robotikoje, navigacijoje ir geografinės vietos nustatymo sistemose.

Jutiklio kalibravimas

Jei jau įdiegėte kitą HMC5883L modulio biblioteką, turėsite ją pašalinti arba ištrinti. Priešingu atveju kalibravimo metu galite gauti kompiliavimo klaidų arba matyti įspėjimus serijiniame monitoriuje. Rekomenduojame naudoti Jarzebskio biblioteka pasiekiamas GitHub, nes jame yra visi šiam skyriui reikalingi kalibravimo ištekliai.

Pirmiausia atsisiųskite ZIP failą iš saugyklos spustelėdami Kodas > Parsisiųsti ZIP.

Tada atidarykite Arduino IDE ir spustelėkite Eskizas > Įtraukti biblioteką > Pridėti biblioteką.

Pasirinkite Arduino-HMC5883 zip failą, kurį ką tik atsisiuntėte, o „Arduino IDE“ automatiškai įdiegs biblioteką už jus.

Vykdykite saugykloje esantį kalibravimo eskizą, kai įkeldami jutiklį judinkite ant lygaus paviršiaus. Vertės, gautos iš serijinio monitoriaus, yra jūsų jutiklio poslinkio vertės, kurias galite naudoti norėdami koreguoti rodmenis naudodami kompasą projektų metu.

Problemos, su kuriomis galite susidurti

Yra keletas klaidų, su kuriomis kas nors gali susidurti siedamas kompaso modulį su „Arduino“. Štai keli pavyzdžiai ir jų sprendimo būdai:

Kompiliavimo klaidos: Tai gali atsirasti, jei neįtrauktos reikalingos bibliotekos arba jei kode yra sintaksės klaidų. Norėdami tai išspręsti, įsitikinkite, kad įdiegėte tinkamas bibliotekas ir patikrinkite, ar kode nėra sintaksės klaidų. Kaip jau daug kartų matėme, galbūt netyčia įdiegėte kelias HCM5883L bibliotekas.

Kompiliavimo klaida: „Adafruit_HMC5883_Unified“ daro ne pavadinkite tipą

Ryšio klaidos: Jei negalite susisiekti su kompaso moduliu, įsitikinkite, kad prijungėte jį prie tinkamų Arduino kaiščių ir ar jūsų laidai yra teisingi. Taip pat gali tekti pakoreguoti modulio I2C adresą savo kode, jei jis skiriasi nuo numatytojo, kuris yra 0x1E.

Klaida naudojant hmc5883l/testDevice (linija246) Ryšio su HMC5883L jutikliu klaida. Vertė skaityti iš ID_A, ID_B ir ID_C registrai darytine atitinka numatomas vertes.

Magnetiniai trukdžiai: Jei kompaso rodmenys nestabilūs arba svyruoja, tai gali būti dėl netoliese esančių objektų magnetinių trukdžių. Patraukite modulį toliau nuo bet kokių magnetų ar kitų magnetinių trukdžių šaltinių, kad gautumėte stabilesnius rodmenis.

Patobulinkite savo projektus naudodami GY-271 kompaso modulį

Galimybė naudoti kompaso modulį GY-271 HCM5883L atveria galimybes kurti sudėtingesnius „pasidaryk pats“ projektus naudojant „Arduino“, pvz., GPS valdomus roverius ir „pasidaryk pats“ dronus. Galimybės yra neribotos, ypač kai pridedate kitus jutiklius.