Sisukord:
- Samm: projekti funktsionaalsuse kujundamine
- 2. samm: seadistamine ja traadiskeem
- 3. samm: komponentide ja põhikoodi testimine
- 4. samm: MPU kalibreerimine
- Samm: lõppkood
Video: Digitaalne kompass ja kursiotsija: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
Autorid:
Cullan Whelan
Andrew Luft
Blake Johnson
Tänuavaldused:
California mereakadeemia
Evan Chang-Siu
Sissejuhatus:
Selle projekti aluseks on digitaalne kompass koos kursi jälgimisega. See võimaldab kasutajal digitaalse aparaadi abil jälgida suunda pikkade vahemaade taha. Kõnekeeles on suund põhjast päripäeva mõõdetud nurk, mida loetakse kompassi järgi nullikraadiks. Seadmel on kaks põhifunktsiooni: esimene kuvab seadme praeguse rubriigi digitaalkuval ja teine võimalus sisestada kasutaja soovitud pealkiri, mis kuvatakse seadme ülaosas oleval LED -rõngal kompassi korpus. Seejärel reguleerib kasutaja valgustatud LED -iga seotud seadme suunda. Seadme suuna muutmisel liigub LED keskmisele LED -ile, näidates seega, et õige suund on määratud.
Tarvikud:
- DIYmall 6M GPS -moodul
- HiLetgo MPU9250/6500 9-telg 9 DOF 16 bit
- Adafruit NeoPixel Ring 16
- MakerFocus 4tk 3,7V liitiumaku
- ELEGOO MEGA 2560 R3 pardal
- Adafruit Mini Lipo koos Mini -B USB -pesaga - USB LiIon/LiPoly laadija - v1
- 2,8 -tolline TFT -LCD koos puuteekraaniga eraldusplaadiga ja MicroSD -pesaga
Samm: projekti funktsionaalsuse kujundamine
Esimene samm on mõista loogikat ja lõplikku funktsionaalsust. See loogikaskeem kujutab kolme seadme olekut ja kahte anduri olekut.
Olek 1: laadimisolek
Laadimisolekut kasutatakse selleks, et Arduino Mega saaks käivitamisel kahe anduri andmed tagasi. Seade kuvab ekraanil laadimise, kustutab ekraanilt kõik numbriväärtused ja NeoPixeli rõnga LED -id süttivad ringikujuliselt.
Olek 2: kompassi režiim
Selles olekus toimib seade nagu digitaalne kompass. NeoPixeli rõngas süttib, näidates põhja suunda seadme orientatsiooni suhtes. Seadme tegelik pealkiri kuvatakse LCD -ekraanil koos seadme laius- ja pikkuskraadidega. Samuti saab selles olekus kasutaja sisestada olekus 3 kuvatava kasutaja pealkirja.
Olek 3: Suuna jälgimise režiim
Selles olekus aitab seade nüüd kasutajal soovitud pealkirja kinnistada. Seade kuvab nüüd LCD -ekraanil seadmete pealkirja ja kasutajate kursi koos laius- ja pikkuskraadidega. Nüüd süttib NeoPixeli rõngas, mis näitab kasutajate suunda seoses seadme orientatsiooniga.
Nii olekus 2 kui ka olekus 3 on kaks anduri olekut, mis võimaldavad seadmel tõmmata andmeid andurilt, mis annab sõltuvalt seadme tööseisundist kõige täpsemaid andmeid.
Anduri olek 1: MPU
Kui seade ei liigu, tõmmatakse suunaandmed MPU -st, kuna need on kõige täpsemad andmed, kui seade ei liigu.
Anduri olek 2: GPS
Kui seade liigub, tõmmatakse suunaandmed GPS -kiibilt, kuna need on selles olukorras kõige täpsemad andmed.
Seade võib lülituda nende vahel anduri olekutele igal ajal, et võtta arvesse seadme kasutustingimusi. See on seadme töö seisukohalt oluline, kuna mõlemal seadmes kasutataval anduril on tingimused, mis mõjutavad nende esitatud andmete täpsust. MPU puhul võivad kiibi kergesti mõjutada kohalikud magnetväljad, mida põhjustavad autod ja metallkonstruktsioonimaterjalid hoonetes. Seega kasutatakse GPS -kiipi, mis võib anda palju täpsema suuna, mida ei mõjuta samad mõjud. GPS võib aga anda suunaandmeid ainult liikudes, kuna see arvutab suuna, kasutades laius- ja pikkuskraadi muutusi. Seetõttu täiendavad kiibid üksteist ja kahe anduri oleku abil tagavad seadme kõige täpsema ja usaldusväärsema funktsionaalsuse.
2. samm: seadistamine ja traadiskeem
Projekt kasutab ja Arduino Mega klooniplaati, mis sarnaneb ülaltoodud plaadiga. Selle projektiga ühendatakse kõik projekti komponendid. Ülal on üksikasjalikud skeemid selle projekti komponentide ühendamiseks. Nuppudel pole üksikasjalikku vooluringi, kuna neid saab seadistada mitmel viisil. Selles projektis kasutavad nad 100K tõmbetakistit ja lihtsat nuppu, et saata 3 -voldine signaal sellele määratud tihvtile.
3. samm: komponentide ja põhikoodi testimine
Projekt võtab andmeid nii MPU kui ka GPS -kiibist, nagu varem kirjeldatud. Lisatud on kolm koodi, mis võimaldavad testida MPU, GPS ja MPU andmeid ekraaniga, et kontrollida osade funktsionaalsust. Selles etapis on oluline komponendid tööle saada, kuna kood on iga kiibi jaoks eraldi ja kõiki probleeme saab lahendada kartmata, et lõplikus koodis tekivad ettenägematud vead.
Nõutavad raamatukogud:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Kõiki neid leiate ülaltoodud pealkirjadest otsides. Ma ei postita linke, kuna neid raamatukogusid on palju koopiaid mitmest allikast ja järgides ainult originaalidega linkimise kogukonna standardeid, lasen teil need ise leida.
4. samm: MPU kalibreerimine
Osariigis 2 ja osariigis MPU kaudu leitud pealkiri jagati neljaks kvadrandiks. See oli vajalik, kuna meie kalibreerimismeetod nõudis magnetomeetri minimaalse ja maksimaalse suuruse leidmist piki selle x- ja y -telge. Seda tehti seadme juhusliku pööramise teel ümber kolme telje, mis ei sisalda muid olulisi elektromagnetvälju peale Maa. Seejärel võtsime miinimum- ja maksimumväärtused piki x- ja y -telge ning ühendasime need skaleerimisvõrrandiga, et piirata negatiivse ja ühe väärtuste vahelist suurust. Ülaltoodud joonisel on BigX ja BigY magnetomeetri andmete maksimaalsed väärtused vastavalt x- ja y-teljel, LittleX ja LittleY on magnetomeetri andmete miinimumväärtused vastavalt x- ja y-teljel, IMU.getMagX_uT () ja IMU.getMagY_uT () on väärtused, mis tõmmatakse magnetomeetrist igal ajal vastavalt x- ja y-teljele ning Mx ja My on uued skaala väärtused, mida kasutatakse pealkirja arvutamiseks.
Samm: lõppkood
Viimane samm on lõpliku koodi loomine. Lisasin projekti lõpliku koodi koopia. Koodis navigeerimiseks on tehtud märkmeid. Selle jaotise suurim väljakutse oli kvadrantide korrektseks töötamiseks. Kvadrantide rakendamine osutus tüütumaks ja loogikat trotsivamaks, kui oleksime osanud oodata. Algselt rakendasime põhiarkaani (My/Mx) ja teisendasime seejärel radiaanidest kraadideks, kuna Arduino väljastab vaikimisi radiaanides. Kuid ainus kvadrant, milles see töötas, oli vahemikus 90 kraadi kuni 180 kraadi, mis andis meile negatiivse väljundi ja lõpuks oli see III kvadrant. Selle lahenduseks oli absoluutväärtuse võtmine, kuna see suurenes endiselt õigesti. Seejärel lahutati see väärtus 360 -st, et süttida olekus 2 õige NeoPixeli LED ja olekus 3 kasutati sarnast matemaatilist toimingut selle põhjal, kas pealkiri oli suurem või väiksem kui kasutaja sisendpealkiri, mida mõlemat saab näha ülaltoodud kood. Ülaltoodud joonistel vastab pealkiri NeoPixeli valgusele, mis süttib, lähtudes seadme kursi ja põhjas oleva kõrvalekalde vahelisest olekust 2, ning kasutaja rubriigist. Sellisel juhul vastab 90-180 kraadi III kvadrandile. Mõlemal juhul paneb tft.print ekraani lugema seadme suunda põhjast.
Ülejäänud kolme kvadrandi puhul viis arktani (My/Mx) rakendamine seadme pööramisel juurdekasvu ümberpööramiseni, st suunanurk loendati alla, kui see pidi üles lugema, ja vastupidi. Selle probleemi lahenduseks oli arktangendi pööramine arkaani kujul (Mx/My). Kuigi see lahendas juurdekasvu ümberpööramise, ei andnud see õiget seadme suunda, kus mängisid mängu kvadrandid. Selle lihtsaks lahenduseks oli vastava kvadrandi põhjal nihke lisamine. Seda on näha järgmistel joonistel, mis on taas kord koodid iga kvadrandi olekutest 2 ja 3.
Esimene, kui lause täidetakse, kui MPU võrrandiga arvutatud pealkiri on suurem kui kasutaja pealkiri. Sel juhul lisatakse seadme pealkirjale kasutaja sisendpealkiri ja 360 -st lahutatakse vastav väärtus. Kui esitatakse muu avaldus, lahutatakse MPU pealkirja võrrand kasutaja sisestuspealkirjast. Neid tingimusi rakendati selleks, et mitte ainult saada NeoPixeli täpne väärtus, vaid vältida väärtuse saamist väljaspool vastuvõetavat vahemikku, mis on vahemikus 0 kuni 359 kraadi.
Soovitan:
Pisike kompass koos ATtiny85 -ga: 12 sammu (piltidega)
Pisike kompass ATtiny85 -ga: see on meie esimene projekt ATtiny85 -ga; lihtne tasku digitaalne kompass (koostöös J. Arturo Espejel Báeziga). ATtiny85 on suure jõudlusega ja väikese võimsusega mikrokontroller. Sellel on 8 kbaiti programmeeritav välkmälu. Tänu sellele on väljakutse
Kompass astronoomidele: 7 sammu
Kompass astronoomidele: idee, mis mulle astronoomiast meeldib ja ostsin hiljuti teleskoobi. Taeva vaatlemise alustamiseks leidsin, et minu teleskoobi õigeks paigutamiseks oleks vaja tasakompassi ja kaldemõõturit. Ma saaksin kogu selle kalibreerimise teha mobiiltelefon. Siiski
Digitaalne kompass Arduino ja HMC5883L magnetomeetri abil: 6 sammu
Digitaalne kompass Arduino ja HMC5883L magnetomeetri abil: Tere poisid! See andur võib näidata geograafilist põhja-, lõuna-, ida- ja lääneosa, meie, inimesed, saaksime seda ka vajadusel kasutada. Niisiis. Proovime selles artiklis mõista, kuidas magnetomeetri andur töötab ja kuidas seda mikrokontrolliga ühendada
LED -kompass ja altimeeter: 7 sammu (piltidega)
LED -kompass ja kõrgusemõõtja: LED -idega objektid võluvad mind alati. Seetõttu ühendab see projekt populaarse digitaalse kompassianduri HMC5883L ühendamise 48 LED -iga. Asetades valgusdioodid ringi, on valgustatud LED suund, kuhu suundute. Iga 7,5 kraadi mõjub
Moraalne kompass: 7 sammu (piltidega)
Moraalne kompass: Projekt viidi läbi ITECH magistriprogrammi arvutusliku disaini ja digitaalse valmistamise seminari raames ning selle tõid teieni Vanessa Costalonga, James Hayward ja Christo van der Hoven