Dodavanje modula kompasa vašem Arduino mikrokontroleru otvara mnoštvo mogućnosti za projekte. Evo kako ga spojiti i koristiti.
U modernim DIY projektima prilično je uobičajeno pronaći napredne senzore kao što su akcelerometri i magnetometri povezani s mikrokontrolerima. Iako ste možda koristili ove senzore na svom telefonu, teško je zamisliti kako ti moduli rade, ali iznenađujuće je jednostavno.
GY-271 magnetometar s kompasom omogućuje senzor orijentacije za razne primjene. Ovdje ćemo istražiti proces povezivanja GY-271 senzora s Arduino mikrokontrolerom, kako ga kalibrirati i pogledati probleme s kojima se možete susresti pritom.
Što je GY-271 modul kompasa?
Modul kompasa GY-271 vrlo je osjetljiv magnetometar koji može mjeriti magnetska polja u tri dimenzije. Koristi se za otkrivanje Zemljinog magnetskog polja i određivanje smjera ili orijentacije uređaja u aplikacijama kao što su navigacijski sustavi, robotika i dronovi. Zamislite to kao vrlo precizan digitalni kompas. Ovaj senzor je opremljen kompaktnim i čvrstim dizajnom koji olakšava instalaciju i korištenje u širokom rasponu projekata.
Kako radi modul kompasa GY-271?
Modul kompasa GY-271 HCM5883L sadrži 3-osni magnetometarski senzor koji se temelji na anizotropnoj magnetootpornoj (AMR) tehnologiji. Senzor mjeri snagu i smjer Zemljinog magnetskog polja otkrivajući promjene u otporu njegovih unutarnjih AMR elemenata.
Kada je senzor izložen magnetskom polju, otpor AMR elemenata se mijenja, generirajući napon koji je proporcionalan jačini i smjeru magnetskog polja. Procesor digitalnog signala senzora zatim taj napon pretvara u digitalni signal, koji može očitati mikrokontroler. Mjerenjem napona u sve tri osi, senzor može dati vrlo precizna očitanja jakosti i smjera magnetskog polja u tri dimenzije.
Spajanje GY-271 na Arduino Uno
Povezivanje ovog modula s Arduinom prilično je jednostavno. Pokrili smo i druge Arduino moduli jednostavni za korištenje koji mogu pomoći u skaliranju vašeg projekta u budućnosti. GY-271 modul ima ukupno pet pinova, uključujući VCC, GND, i tri signalna pina (SDA, SCL, i DRDY).
Trebat će vam sljedeće komponente:
- GY-271 HMC5883L modul kompasa
- Arduino Uno (ili drugi model)
- Premosne žice (muški na muški i muški na ženski)
- Mašinska ploča (opcionalno)
Prvo povežite VCC i GND pinovi modula GY-271 na 5V i GND pinovi Arduino Uno, respektivno.
Zatim spojite SDA i SCL pinovi modula na A4 i A5 analogni pinovi Arduino Uno, respektivno.
Instaliranje potrebnih biblioteka
Prije nego počnete raditi s modulom kompasa GY-271 i Arduinom, trebate instalirati potrebne biblioteke za komunikaciju sa senzorom.
Prva biblioteka koju trebate uključiti u svoju skicu je biblioteka Wire, koja se koristi za I2C komunikaciju između Arduina i senzora. Biblioteka Wire dolazi unaprijed instalirana s Arduino IDE-om, tako da je ne morate posebno preuzimati. Da biste instalirali drugi, HMC5883L knjižnici, morat ćete slijediti ove korake:
Otvorite Arduino IDE i idite na Skica > Uključi knjižnicu > Upravljanje knjižnicama.
U Upravitelju knjižnice potražite HMC5883L u traci za pretraživanje.
Odaberite HMC5883L knjižnica posebno iz Adafruita. Nakon što je biblioteka instalirana, možete je uključiti u svoju Arduino skicu tako da odete na Skica > Uključi knjižnicu > HMC5883L.
Razumijevanje Kodeksa
Morate napisati program koji inicijalizira senzor, čita njegove podatke i izračunava snagu i smjer Zemljinog magnetskog polja. Cijeli kod možete preuzeti s naše službene stranice GitHub spremište.
Na početku koda trebate uključiti potrebne biblioteke koje ste upravo preuzeli.
#uključiti
#uključiti
#uključiti
Ne zaboravite dodijeliti jedinstveni ID senzoru. Koristite ovu liniju da to učinite:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
U kodu za postavljanje pokrenite serijski monitor i provjerite reagira li senzor. Možete ispisati poruke na monitor za ažuriranje statusa senzora:
poništitipostaviti(poništiti)
{
Serijski.početi(9600);
Serijski.println("Test magnetometra HMC5883"); Serijski.println("");
/* Inicijaliziraj senzor */
ako(! mag.početi())
{
Serijski.println("Ooops, HMC5883 nije otkriven... Provjerite svoje ožičenje!");
dok(1);
}
}
Prvo u petlji dohvatite novi događaj senzora:
senzori_događaj_t događaj;
mag.getEvent(&event);
Zatim prikažite očitanja senzora na serijskom monitoru. Ne zaboravite postaviti brzinu prijenosa podataka na 9600.
Serijski.ispisati("X: "); Serijski.ispisati(event.magnetic.x); Serijski.ispisati(" ");
Serijski.ispisati("Y:"); Serijski.ispisati(event.magnetic.y); Serijski.ispisati(" ");
Serijski.ispisati("Z:"); Serijski.ispisati(event.magnetic.z); Serijski.ispisati(" ");Serijski.println("uT");
Držite modul tako da Z pokazuje "gore" i njime mjerite smjer x i Y. Na taj način možete izračunati smjer kada je magnetometar u ravnini. Ovaj redak koda pomaže u tome:
plutati naslov = atan2(event.magnetic.y, event.magnetic.x);
Jednom kada budete imali svoje naslov, tada morate dodati svoje deklinacijski kut, što je pogreška magnetskog polja na vašoj lokaciji.
plutati kut deklinacije = 0.663;
smjer += kut deklinacije;
Možete lako pronaći kut deklinacije vašeg lokalnog područja na Web stranica o magnetskoj deklinaciji. Ako iz nekog razloga ne možete pronaći svoj kut deklinacije, komentirajte dva retka iz svog koda.
Komentiranje dviju linija koda može dovesti do pogrešnih očitanja senzora. Pokušajte kalibrirati senzor prije upotrebe.
Na kraju ispišite naslov na serijski monitor i dodajte odgodu da pričekate pola sekunde prije ponovnog čitanja.
Serijski.ispisati("Naslov (stupnjevi): ");
Serijski.println(naslov Stupnjevi);
odgoditi(500);
Odavde možete prilagoditi kôd kako bi odgovarao potrebama vašeg projekta i dodati dodatne značajke kao što je bilježenje podataka.
Ako radije koristite biblioteku Adafruit, preporučujemo da je nabavite iz Adafruit GitHub repozitorij.
Čitanje i tumačenje podataka kompasa
Podaci senzora prikazani na serijskom monitoru pokazuju vrijednosti vektora magnetskog polja izmjerene magnetometrom u mikroteslama (μT) za osi X, Y i Z. Ove vrijednosti mogu se koristiti za određivanje orijentacije i veličine magnetskog polja.
Vrijednost smjera prikazana u stupnjevima također je važna i predstavlja smjer sjevernog magnetskog pola u odnosu na položaj senzora. Ovo se očitanje može koristiti u projektima gdje treba odrediti smjer pokretnog objekta, kao što su robotika, navigacija i geolokacijski sustavi.
Kalibracija senzora
Ako ste već instalirali drugu biblioteku za modul HMC5883L, morat ćete je deinstalirati ili izbrisati. U suprotnom, možete dobiti pogreške kompilacije ili vidjeti upozorenja na serijskom monitoru tijekom kalibracije. Preporučujemo korištenje Knjižnica Jarzebskog dostupno na GitHubu budući da ima sve resurse za kalibraciju potrebne za ovaj odjeljak.
Najprije preuzmite zip datoteku iz repozitorija klikom na Kodirati > Preuzmite ZIP.
Zatim otvorite Arduino IDE i kliknite na Skica > Uključi knjižnicu > Dodaj biblioteku.
Odaberite Arduino-HMC5883 zip datoteku koju ste upravo preuzeli, a Arduino IDE će zatim automatski instalirati biblioteku umjesto vas.
Pokrenite skicu kalibracije koja je dostupna u repozitoriju dok pomičete senzor po ravnoj površini nakon učitavanja. Vrijednosti dobivene sa serijskog monitora su vrijednosti pomaka vašeg senzora, koje možete koristiti za ispravljanje svojih očitanja dok koristite kompas tijekom svojih projekata.
Problemi na koje možete naići
Postoji nekoliko pogrešaka na koje netko može naići prilikom povezivanja modula kompasa s Arduinom. Evo nekoliko primjera i njihova rješenja:
Greške kompilacije: To se može dogoditi ako potrebne biblioteke nisu uključene ili ako postoje sintaktičke pogreške u kodu. Da biste to popravili, provjerite jeste li instalirali ispravne biblioteke i provjerite ima li koda u sintaksi. Kao što smo vidjeli mnogo puta, možda ste slučajno instalirali više HCM5883L biblioteka.
Pogreška kompilacije: 'Adafruit_HMC5883_Unified' radi ne imenovati vrstu
Greške u komunikaciji: Ako ne možete komunicirati s modulom kompasa, provjerite jeste li ga spojili na ispravne pinove na vašem Arduinu i je li vaše ožičenje ispravno. Možda ćete također trebati prilagoditi I2C adresu modula u svom kodu ako se razlikuje od zadane—što je 0x1E.
Greška korištenjem hmc5883l/testDevice (crta246) Pogreška u komunikaciji sa senzorom HMC5883L. Vrijednost čitati od ID_A, ID_B i ID_C registri činine odgovaraju očekivanim vrijednostima.
Magnetske smetnje: Ako su očitanja kompasa nestabilna ili variraju, to može biti zbog magnetskih smetnji od obližnjih objekata. Udaljite modul od magneta ili drugih izvora magnetskih smetnji kako biste dobili stabilnija očitanja.
Poboljšajte svoje projekte s modulom kompasa GY-271
Mogućnost korištenja modula kompasa GY-271 HCM5883L otvara vrata izgradnji složenijih DIY projekata koristeći Arduino kao što su GPS-vođeni roveri i DIY dronovi. Mogućnosti su beskrajne, pogotovo kada dodate druge senzore.