Tartalomjegyzék:
- 1. lépés: A projekt funkcionalitásának megtervezése
- 2. lépés: Beállítás és huzal diagram
- 3. lépés: Az összetevők és az alapvető kód tesztelése
- 4. lépés: MPU kalibrálás
- 5. lépés: Végső kód
Videó: Digitális iránytű és iránykereső: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Szerzői:
Cullan Whelan
Andrew Luft
Blake Johnson
Köszönetnyilvánítás:
Kaliforniai Tengerészeti Akadémia
Evan Chang-Siu
Bevezetés:
Ennek a projektnek az alapja egy digitális iránytű, amely nyomkövetéssel rendelkezik. Ez lehetővé teszi a felhasználó számára, hogy egy digitális készülék segítségével követje az irányt nagy távolságokon. Köznyelven a fejléc az óramutató járásával megegyező irányban északról mért szög, amelyet nulla foknak tekintünk, amint azt az iránytű jelzi. Az eszköznek két fő funkciója van: az első az eszköz aktuális címsorának megjelenítése a digitális kijelzőn, a második pedig a felhasználó által kért címsor megadására, amely a kijelző tetején lévő LED -ek gyűrűjén jelenik meg iránytű ház. A felhasználó ezután beállíthatja az eszköz tájolását a világító LED -hez viszonyítva. A készülék irányának megváltoztatásával a LED a középső LED felé halad, jelezve ezzel, hogy a helyes irányt sikerült beállítani.
Kellékek:
- DIYmall 6M GPS modul
- HiLetgo MPU9250/6500 9 tengelyes 9 DOF 16 Bit
- Adafruit NeoPixel gyűrű 16
- MakerFocus 4db 3,7V -os újratölthető lítium akkumulátor
- ELEGOO MEGA 2560 R3 tábla
- Adafruit Mini Lipo w/Mini -B USB Jack - USB LiIon/LiPoly töltő - v1
- 2,8 hüvelykes TFT LCD érintőképernyős törőpanellel és MicroSD foglalattal
1. lépés: A projekt funkcionalitásának megtervezése
Az első lépés a logika és a végső működési funkciók megértése. Ez a logikai diagram a három eszközállapotot és a két érzékelőállapotot ábrázolja.
1. állapot: Betöltési állapot
A betöltési állapot lehetővé teszi, hogy az Arduino Mega indításkor visszakapja az adatokat a két érzékelőből. A készülék megjeleníti a töltést a képernyőn, törli az összes számértéket a képernyőn, és a NeoPixel gyűrű LED -jei körben világítanak.
2. állapot: Iránytű mód
Ebben az állapotban a készülék digitális iránytűként fog működni. A NeoPixel gyűrű kigyullad, jelezve Észak irányát a készülék tájolásához képest. A készülék valódi fejléce is megjelenik az LCD -képernyőn, az eszköz szélességi és hosszúsági fokával együtt. Ebben az állapotban is a felhasználó megadhatja a 3. államban megjelenítendő felhasználói címsort.
3. állapot: Iránykövetési mód
Ebben az állapotban a készülék most segíteni fogja a felhasználót abban, hogy a kívánt címsorba kerüljön. A készülék mostantól megjeleníti az eszközök irányát és a felhasználók irányát az LCD -képernyőn, valamint a szélességi és hosszúsági adatokat. A NeoPixel gyűrű most kigyullad, jelezve a felhasználók irányát az eszközök tájolásához képest.
A 2. és a 3. állapoton belül is két érzékelőállapot van, ezek az érzékelési állapotok lehetővé teszik, hogy az eszköz adatokat vegyen ki az érzékelőből, amely a legpontosabb adatokat szolgáltatja az eszköz működési állapotától függően.
1. érzékelőállapot: MPU
Ha az eszköz nem mozog, akkor az irányadatok le lesznek húzva az MPU -ból, mivel ez a legpontosabb adat, amikor az eszköz nem mozog.
2. érzékelő állapota: GPS
Ha az eszköz mozog, az irányadatokat a rendszer a GPS -chipből veszi ki, mivel ez a legpontosabb adat ebben az állapotban.
A készülék bármikor átválthat ezek között érzékelőállapotokba, figyelembe véve az egység változó használati körülményeit. Ez fontos az eszköz működése szempontjából, mivel az eszközben használt két érzékelőnek vannak olyan feltételei, amelyek befolyásolják az általuk szolgáltatott adatok pontosságát. Az MPU esetében a chipet könnyen befolyásolhatják az autók és az épületek fémszerkezetei által okozott helyi mágneses mezők. Így olyan GPS chipet használnak, amely sokkal pontosabb irányt tud biztosítani, amelyet nem ugyanazok a hatások befolyásolnak. A GPS azonban csak mozgás közben tud haladási adatokat szolgáltatni, mivel a szélességi és hosszúsági adatok változása alapján számítja az irányt. Ezért a chipek kiegészítik egymást, és a két érzékelőállapot használatával a legpontosabb és legmegbízhatóbb eszközfunkciót nyújtják.
2. lépés: Beállítás és huzal diagram
A projekt a fenti táblához hasonló Arduino Mega klónlapot használ. A projekt összes összetevője ehhez a kártyához lesz csatlakoztatva. A fentiekben részletesen bemutatjuk a projekt alkatrészeinek bekötését. A gombok nem rendelkeznek részletes áramkörrel, mivel ezeket sokféleképpen lehet beállítani. Ebben a projektben 100K lehúzható ellenállást és egy egyszerű gombot használnak, hogy 3 voltos jelet küldjenek a hozzárendelt tűre.
3. lépés: Az összetevők és az alapvető kód tesztelése
A projekt a korábban leírtak szerint adatokat fog lekérni az MPU -ból és a GPS -chipből is. Három kód van mellékelve, amelyek lehetővé teszik az MPU, a GPS és az MPU adatainak képernyőn történő tesztelését az alkatrészek működésének ellenőrzésére. Fontos, hogy az alkatrészek működőképesek legyenek ebben a szakaszban, mivel a kód minden egyes chiphez külön van, és minden probléma megoldható anélkül, hogy félnének attól, hogy előre nem látható hibákat okoznak a végső kódban.
Kötelező könyvtárak:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Mindezek megtalálhatók a fenti címek keresésével. Nem teszek közzé linkeket, mivel ezekből a könyvtárakból sok másolat található több forrásból, és betartva azt a közösségi szabványt, hogy csak eredeti dokumentumokra hivatkoznak, megengedem, hogy ezeket megtalálja.
4. lépés: MPU kalibrálás
A 2. és a 3. állam MPU -ján talált címsort négy negyedre osztották. Erre azért volt szükség, mert a kalibrálási módszerünk megkövetelte a minimális és maximális nagyságok megtalálását a magnetométerből az x és y tengelye mentén. Ez úgy történt, hogy a készüléket véletlenszerűen elforgatta három tengelye körül, a Földön kívül minden jelentős elektromágneses mezőtől mentesen. Ezután felvettük a minimális és maximális értékeket az x és y tengely mentén, és beillesztettük őket egy skálázási egyenletbe annak érdekében, hogy korlátozzuk a negatív egy és egy közötti értékek közötti nagyságot. A fenti ábrán a BigX és a BigY a magnetométer adatainak maximális értékei az x és az y tengely mentén, a LittleX és a LittleY a magnetométer adatainak minimális értékei az x és y tengely mentén, IMU.getMagX_uT () és IMU A.getMagY_uT () azok az értékek, amelyeket bármikor lehúznak a magnetométerből az x és az y tengely mentén, az Mx és a My pedig az új skálázott értékek, amelyeket a fejléc kiszámításához használnak.
5. lépés: Végső kód
Az utolsó lépés a végső kód létrehozása. Csatoltam a projektek végleges kódjának másolatát. Jegyzetek készültek a kódban való navigáláshoz. Ennek a szakasznak a legnagyobb kihívása az volt, hogy a kvadránsokat megfelelően működtessük. A kvadránsok végrehajtása unalmasabbnak és logikailag meghazudtolónak bizonyult, mint amire valaha is számítottunk. Kezdetben egy alapvető arktánt (My/Mx) valósítottunk meg, majd radiánból fokra konvertáltuk, mivel az Arduino alapértelmezésben radiánban adja ki. Azonban az egyetlen kvadráns, amelyben ez működött, 90 fok és 180 fok között volt, ami negatív kimenetet eredményezett, és végül a III. A megoldás az abszolút érték felvétele volt, mivel még mindig helyesen nőtt. Ezt az értéket levonták a 360 -ból, hogy a 2. állapotban a megfelelő NeoPixel LED világítson, és hasonló matematikai műveletet alkalmaztak a 3. állapotban, attól függően, hogy a fejléc nagyobb vagy kisebb volt, mint a felhasználó beviteli címe, mindkettő látható a fenti kódot. A fenti ábrákon a Heading a NeoPixel fénynek felel meg, amely az eszköz iránya és az északi eltérés közötti különbség alapján világít a 2. állapot esetén, és a felhasználó fejlécétől. Ebben az esetben 90-180 fok felel meg a III. Mindkét esetben a tft.print hatására a képernyő észak felől olvassa az eszköz irányát.
A másik három negyedben az arctan (My/Mx) megvalósítása az eszköz elforgatásakor a növekmény inverziójához vezetett, azaz az irányszög visszaszámol, amikor fel kellett számolnia, és fordítva. Ennek a problémának a megoldása az volt, hogy az arctangent arctan (Mx/My) alakúra fordítottuk. Bár ez megoldotta a növekményes inverziót, nem adta meg a helyes eszközfejlécet, ahol a kvadránsok léptek játékba. Ennek egyszerű megoldása az volt, hogy eltolást adtunk a megfelelő kvadráns alapján. Ez látható a következő ábrákon, amelyek ismét az egyes kvadránsok 2. és 3. állapotából származó kódrészletek.
Az első if utasítás akkor kerül végrehajtásra, ha az MPU -egyenlet által számított fejléc nagyobb, mint a felhasználó fejléce. Ebben az esetben a felhasználó beviteli címe hozzáadódik az eszköz fejlécéhez, és a megfelelő érték kivonásra kerül a 360 -ból. Ezeket a feltételeket azért valósítottuk meg, hogy ne csak pontos értéket kapjunk a NeoPixelre, hanem elkerüljük azt is, hogy az elfogadható tartományon kívüli értéket kapjunk, ami 0 és 359 fok között van.
Ajánlott:
Egy apró iránytű ATtiny -vel85: 12 lépés (képekkel)
Apró iránytű ATtiny85 -tel: Ez az első projektünk az ATtiny85 -tel; egyszerű zseb digitális iránytű (J. Arturo Espejel Báez -szel együttműködve). Az ATtiny85 egy nagy teljesítményű és kis teljesítményű mikrokontroller. 8 Kbyte programozható flash memóriával rendelkezik. Ennek köszönhetően a Chal
Haptikus iránytű: 9 lépés
Haptic Iránytű öv: Arduino hajtású öv, amely észak felé rezeg. Az emberi érzékelés mindig a biológiai érzékeinkre korlátozódott, de mi lenne, ha ezen változtathatnánk? A természetben léteznek olyan állatok, amelyek képesek érzékelni a mágneses mezőket, a légköri nyomást, az ambi
Hogyan kell lebontani a digitális féknyerget és hogyan működik a digitális féknyereg: 4 lépés
Hogyan kell lebontani a digitális féknyerget és hogyan működik a digitális féknyereg: Sokan tudják, hogyan kell a féknyerget használni a méréshez. Ez az oktatóanyag megtanítja, hogyan kell lebontani a digitális féknyerget, és elmagyarázza, hogyan működik a digitális féknyereg
Digitális iránytű Arduino és HMC5883L magnetométer használatával: 6 lépés
Digitális iránytű az Arduino és a HMC5883L magnetométer használatával: Sziasztok, Ez az érzékelő jelezheti a földrajzi északot, délt, keletet és nyugatot, mi emberek is használhatjuk időnként, amikor szükséges. Így. Ebben a cikkben megpróbáljuk megérteni, hogyan működik a magnetométer érzékelő, és hogyan lehet összekötni egy mikrokontrolettel
Arduino digitális iránytű projekt: 3 lépés
Arduino digitális iránytű projekt: Hello! Ebben az utasításban látni fogja, hogyan készíthet digitális iránytűt Arduino és a feldolgozó IDE használatával. Ez egy nagyon egyszerű, de érdekes és hűvös megjelenésű Arduino projekt. Ennek az oktatóanyagnak a demó példáját megnézheti a videón