Az iránytű modul hozzáadása az Arduino mikrokontrollerhez számos lehetőséget nyit meg a projektek számára. Így csatlakoztathatja és használhatja.
A modern barkácsprojektekben meglehetősen gyakori, hogy fejlett érzékelőket, például gyorsulásmérőket és magnetométereket találunk mikrokontrollerekkel összekapcsolva. Bár lehet, hogy ezeket az érzékelőket használta a telefonján, nehéz elképzelni, hogyan működnek ezek a modulok, de meglepően egyszerű.
A GY-271 iránytű magnetométer érzékelője lehetővé teszi a tájolás érzékelését különböző alkalmazásokhoz. Itt megvizsgáljuk a GY-271 érzékelő Arduino mikrokontrollerrel való összekapcsolásának folyamatát, a kalibrálás módját, és megvizsgáljuk, hogy milyen problémákkal szembesülhet ez közben.
Mi az a GY-271 iránytű modul?
A GY-271 iránytű modul egy rendkívül érzékeny magnetométer, amely három dimenzióban képes mérni a mágneses mezőket. A Föld mágneses mezejének észlelésére és az eszközök irányának vagy tájolásának meghatározására használják olyan alkalmazásokban, mint a navigációs rendszerek, robotika és drónok. Képzeld úgy, mint egy nagyon precíz digitális iránytűt. Ez az érzékelő kompakt és robusztus kialakítással rendelkezik, amely megkönnyíti a telepítést és a projektek széles körében történő használatát.
Hogyan működik a GY-271 iránytű modul?
A GY-271 HCM5883L iránytű modul 3 tengelyes magnetométer érzékelőt tartalmaz, amely anizotrop magneto-resistív (AMR) technológián alapul. Az érzékelő méri a Föld mágneses mezejének erősségét és irányát a belső AMR elemeinek ellenállásának változásainak érzékelésével.
Amikor az érzékelő mágneses térnek van kitéve, az AMR elemek ellenállása megváltozik, és olyan feszültséget generál, amely arányos a mágneses tér erősségével és irányával. Az érzékelő digitális jelfeldolgozója ezután ezt a feszültséget digitális jellé alakítja, amelyet egy mikrokontroller képes leolvasni. Mindhárom tengelyen mérve a feszültséget, az érzékelő három dimenzióban rendkívül pontos leolvasást tud adni a mágneses tér erősségéről és irányáról.
A GY-271 csatlakoztatása Arduino Uno-hoz
Ennek a modulnak az Arduinohoz való csatlakoztatása meglehetősen egyszerű. Másokkal is foglalkoztunk könnyen használható Arduino modulok amely segíthet a projekt méretezésében a jövőben. A GY-271 modulnak összesen öt érintkezője van, beleértve VCC, GND, és három jelérintkező (SDA, SCL, és DRDY).
A következő összetevőkre lesz szüksége:
- GY-271 HMC5883L iránytű modul
- Arduino Uno (vagy más modell)
- Átkötő vezetékek (apa-apa és apa-anya)
- kenyértábla (opcionális)
Először csatlakoztassa a VCC és GND a GY-271 modul érintkezőit a 5V és GND az Arduino Uno tűi, ill.
Ezután csatlakoztassa a SDA és SCL a modul érintkezőit a A4 és A5 az Arduino Uno analóg tűi.
A szükséges könyvtárak telepítése
Mielőtt elkezdené a munkát a GY-271 iránytű modullal és az Arduino-val, telepítenie kell az érzékelővel való kommunikációhoz szükséges könyvtárakat.
Az első könyvtár, amelyet bele kell foglalnia a vázlatba, a Wire könyvtár, amelyet az Arduino és az érzékelő közötti I2C kommunikációhoz használnak. A Wire könyvtár előre telepítve van az Arduino IDE-vel, így nem kell külön letöltenie. A második telepítéséhez a HMC5883L könyvtárat, kövesse az alábbi lépéseket:
Nyissa meg az Arduino IDE-t, és lépjen ide Vázlat > Tartalmazza a könyvtárat > Könyvtárak kezelése.
A Könyvtárkezelőben keressen rá HMC5883L a keresősávban.
Válaszd ki a HMC5883L könyvtár kifejezetten az Adafruittól. Miután telepítette a könyvtárat, felveheti azt az Arduino vázlatába, ha felkeresi Vázlat > Tartalmazza a könyvtárat > HMC5883L.
A kódex megértése
Olyan programot kell írni, amely inicializálja az érzékelőt, kiolvassa az adatait, és kiszámítja a Föld mágneses mezejének erősségét és irányát. A teljes kód letölthető hivatalos oldalunkról GitHub adattár.
A kód elején meg kell adnia az imént letöltött szükséges könyvtárakat.
#tartalmazza
#tartalmazza
#tartalmazza
Ne felejtsen el egyedi azonosítót rendelni az érzékelőhöz. Ehhez használja ezt a sort:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
A beállítási kódban indítsa el a soros monitort, és ellenőrizze, hogy az érzékelő reagál-e. Üzeneteket nyomtathat a monitorra az érzékelő állapotának frissítéséhez:
üresbeállít(üres)
{
Sorozatszám.kezdődik(9600);
Sorozatszám.println("HMC5883 magnetométer teszt"); Sorozatszám.println("");
/* Inicializálja az érzékelőt */
ha(!mag.kezdődik())
{
Sorozatszám.println("Hoppá, nem található HMC5883... Ellenőrizze a vezetékeket!");
míg(1);
}
}
A ciklusban először szerezzen be egy új érzékelő eseményt:
szenzorok_esemény_t esemény;
mag.getEvent(&event);
Ezután jelenítse meg az érzékelő leolvasásait a soros monitoron. Ne felejtse el beállítani az adatátviteli sebességet 9600.
Sorozatszám.nyomtatás("X: "); Sorozatszám.nyomtatás(esemény.mágneses.x); Sorozatszám.nyomtatás(" ");
Sorozatszám.nyomtatás("Y:"); Sorozatszám.nyomtatás(esemény.mágneses.y); Sorozatszám.nyomtatás(" ");
Sorozatszám.nyomtatás("Z:"); Sorozatszám.nyomtatás(esemény.mágneses.z); Sorozatszám.nyomtatás(" ");Sorozatszám.println("uT");
Tartsa úgy a modult Z "felfelé" mutat, és mérje meg a címsort x és Y. Ezzel kiszámíthatja az irányt, amikor a magnetométer vízszintben van. Ez a kódsor ebben segít:
úszó címsor = atan2(esemény.mágneses.y, esemény.mágneses.x);
Ha egyszer megvan a saját cím, akkor hozzá kell adnia a sajátját deklinációSzög, ami a mágneses mező hibája az Ön tartózkodási helyén.
úszó deklinációSzög = 0.663;
heading += deklinációSzög;
Kényelmesen megtalálhatja a helyi terület deklinációs szögét a Mágneses deklináció weboldal. Ha valamilyen oknál fogva nem találja a deklinációs szöget, írja ki megjegyzéssel a kódból a két sort.
A két kódsor megjegyzése hibás érzékelőt eredményezhet. Használat előtt próbálja meg kalibrálni az érzékelőt.
Végül nyomtassa ki a fejlécet a soros monitorra, és adjon hozzá egy késleltetést, hogy várjon fél másodpercet, mielőtt újra elolvasná.
Sorozatszám.nyomtatás("irány (fok):");
Sorozatszám.println(Fokok rovat);
késleltetés(500);
Innen testreszabhatja a kódot a projekt igényeinek megfelelően, és további funkciókat adhat hozzá, például adatnaplózást.
Ha inkább az Adafruit könyvtárat szeretné használni, javasoljuk, hogy innen szerezze be Az Adafruit GitHub tárháza.
Iránytű adatok olvasása és értelmezése
A soros monitoron megjelenített szenzoradatok a magnetométer által mért mágneses térvektor értékeket mutatják mikroteszlában (μT) az X, Y és Z tengelyekre. Ezek az értékek használhatók a mágneses tér irányának és nagyságának meghatározására.
A fokban kijelzett irányérték szintén fontos, és a mágneses északi pólus irányát jelzi az érzékelő helyzetéhez viszonyítva. Ez a leolvasás olyan projektekben használható, ahol meg kell határozni egy mozgó objektum irányát, például robotikában, navigációban és földrajzi helymeghatározó rendszerekben.
Érzékelő kalibrálása
Ha már telepített egy másik könyvtárat a HMC5883L modulhoz, akkor azt el kell távolítania vagy törölnie kell. Ellenkező esetben fordítási hibákat kaphat, vagy figyelmeztetések jelenhetnek meg a soros monitoron a kalibrálás során. Javasoljuk a használatát Jarzebski könyvtára elérhető a GitHubon, mivel rendelkezik az ehhez a szakaszhoz szükséges teljes kalibrációs erőforrásokkal.
Először töltse le a zip fájlt a tárolóból a gombra kattintva Kód > Töltse le a ZIP-t.
Ezután nyissa meg az Arduino IDE-t, és kattintson a gombra Vázlat > Tartalmazza a könyvtárat > Könyvtár hozzáadása elemre.
Válaszd ki a Arduino-HMC5883 zip fájlt, amelyet éppen letöltött, és az Arduino IDE automatikusan telepíti a könyvtárat.
Futtassa le az adattárban elérhető kalibrációs vázlatot, miközben feltöltéskor az érzékelőt sík felületen mozgatja. A soros monitorból kapott értékek az érzékelő eltolási értékei, amelyek segítségével kijavíthatja leolvasásait, miközben az iránytűt használja projektjei során.
Problémák, amelyekbe ütközhet
Több hiba is előfordulhat, amelybe valaki belefuthat, amikor az iránytű modult az Arduino-val illeszti. Íme néhány példa és a megoldásuk:
Összeállítási hibák: Ezek akkor fordulhatnak elő, ha a szükséges könyvtárak nincsenek benne, vagy ha szintaktikai hibák vannak a kódban. Ennek kijavításához győződjön meg arról, hogy a megfelelő könyvtárakat telepítette, és ellenőrizze, hogy a kódban nincsenek-e szintaktikai hibák. Amint azt már sokszor láttuk, előfordulhat, hogy véletlenül több HCM5883L könyvtárat telepített.
Összeállítási hiba: "Adafruit_HMC5883_Unified" csinál nem nevezzen meg egy típust
Kommunikációs hibák: Ha nem tud kommunikálni az iránytű modullal, győződjön meg arról, hogy az Arduino megfelelő érintkezőihez csatlakoztatta, és a vezetékek megfelelőek. Előfordulhat, hogy módosítania kell a modul I2C-címét a kódban, ha az eltér az alapértelmezetttől – ami 0x1E.
Hiba segítségével hmc5883l/testDevice (vonal246) Hiba a HMC5883L érzékelővel való kommunikáció során. Az érték olvas innen: ID_A, ID_B és ID_C regiszterek csináldnem megfelelnek a várt értékeknek.
Mágneses interferencia: Ha az iránytű leolvasott értékei instabilok vagy ingadoznak, ennek oka lehet a közeli tárgyak által okozott mágneses interferencia. Vigye távol a modult minden mágnestől vagy más mágneses interferencia forrástól, hogy stabilabb legyen a leolvasás.
Pörgessen fel projektjeit a GY-271 iránytű modullal
A GY-271 HCM5883L iránytű modul használata lehetővé teszi az Arduino használatával bonyolultabb barkácsprojektek, például GPS-vezérelt roverek és barkács drónok építését. A lehetőségek végtelenek, különösen, ha más érzékelőket ad hozzá.