Turinys:
- 1 žingsnis: suprojektuokite projekto funkcionalumą
- 2 žingsnis: sąranka ir laidų schema
- 3 žingsnis: komponentų ir pagrindinio kodo tikrinimas
- 4 žingsnis: MPU kalibravimas
- 5 žingsnis: galutinis kodas
Video: Skaitmeninis kompasas ir krypčių ieškiklis: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Autoriai:
Cullanas Whelanas
Andrew Luftas
Blake'as Johnsonas
Padėkos:
Kalifornijos jūrų akademija
Evanas Chang-Siu
Įvadas:
Šio projekto pagrindas yra skaitmeninis kompasas su kursų sekimu. Tai leidžia vartotojui sekti kryptį dideliais atstumais naudojant skaitmeninį aparatą. Šnekamojoje kalboje kursas yra kampas, išmatuotas pagal laikrodžio rodyklę iš šiaurės, kuris laikomas nuliniu laipsniu, kaip rodo kompasas. Įrenginys turi dvi pagrindines funkcijas: pirmoji rodo dabartinę prietaiso poziciją skaitmeninio ekrano nuorodoje, o antroji - galimybė įvesti vartotojo prašomą antraštę, kuri bus rodoma šviesos diodų žiede viršuje. kompaso korpusas. Tada vartotojas pakoreguotų įrenginio orientaciją, susijusią su šviečiančiu šviesos diodu. Keičiant prietaiso kryptį, šviesos diodas nukeliaus į centrinį šviesos diodą, taip nurodydamas, kad nustatyta teisinga kryptis.
Priedai:
- „Pasidaryk pats“6M GPS modulis
- „HiLetgo MPU9250/6500 9-Axis 9 DOF 16 Bit“
- „Adafruit NeoPixel“žiedas 16
- „MakerFocus“4 vnt 3,7 V ličio įkraunama baterija
- ELEGOO MEGA 2560 R3 lenta
- „Adafruit Mini Lipo“su „Mini -B“USB lizdu - „USB LiIon“/„LiPoly“įkroviklis - v1
- 2,8 colio TFT LCD ekranas su jutikliniu ekranu su „MicroSD“lizdu
1 žingsnis: suprojektuokite projekto funkcionalumą
Pirmasis žingsnis yra suprasti logiką ir galutinį veiklos funkcionalumą. Šioje loginėje diagramoje pavaizduotos trys įrenginio būsenos ir dvi jutiklio būsenos.
1 būsena: pakrovimo būsena
Įkrovimo būsena naudojama, kad „Arduino Mega“galėtų paleisti duomenis iš dviejų jutiklių paleidus. Įrenginys ekrane parodys įkėlimą, išvalys visas ekrane esančias skaičių reikšmes, o „NeoPixel“žiedo šviesos diodai užsidegs ratu.
2 būsena: kompaso režimas
Šioje būsenoje prietaisas veiks kaip skaitmeninis kompasas. Užsidegs „NeoPixel“žiedas, nurodantis šiaurės kryptį, atsižvelgiant į prietaiso orientaciją. Tikroji prietaiso antraštė taip pat bus rodoma LCD ekrane kartu su įrenginio platuma ir ilguma. Taip pat šioje būsenoje vartotojas galės įvesti vartotojo antraštę, kuri bus rodoma 3 būsenoje.
3 būsena: krypties sekimo režimas
Esant tokiai būsenai, prietaisas dabar padės vartotojui įsitvirtinti norimoje pozicijoje. Dabar prietaisas LCD ekrane rodys prietaisų kryptį ir naudotojų kryptį kartu su platumos ir ilgumos duomenimis. Dabar užsidegs „NeoPixel“žiedas, rodantis naudotojų kryptį, atsižvelgiant į įrenginių orientaciją.
Tiek 2, tiek 3 būsenose yra dvi jutiklio būsenos. Šios jutiklio būsenos leidžia įrenginiui gauti duomenis iš jutiklio, kuris pateikia tiksliausius duomenis, atsižvelgiant į įrenginio veikimo būklę.
1 jutiklio būsena: MPU
Jei prietaisas nejuda, krypties duomenys bus paimti iš MPU, nes tai yra tiksliausias duomenys, kai prietaisas nejuda.
2 jutiklio būsena: GPS
Jei prietaisas juda, krypties duomenys bus paimti iš GPS mikroschemos, nes tai yra tiksliausi šios būklės duomenys.
Įrenginys gali bet kuriuo metu persijungti tarp jutiklių būsenų, atsižvelgdamas į besikeičiančias įrenginio naudojimo sąlygas. Tai svarbu įrenginio veikimui, nes abiejuose įrenginyje naudojamuose jutikliuose yra sąlygų, kurios daro įtaką jų pateiktų duomenų tikslumui. MPU atveju lustą gali lengvai paveikti vietiniai magnetiniai laukai, kuriuos sukelia automobiliai ir metalinės statybinės medžiagos pastatuose. Taigi naudojamas GPS lustas, galintis suteikti daug tikslesnę kryptį, kuriai įtakos neturi tas pats poveikis. Tačiau GPS gali pateikti krypties duomenis tik judėdamas, nes skaičiuoja kryptį, naudodamas platumos ir ilgumos duomenų pokyčius. Todėl lustai papildo vienas kitą ir naudojant dvi jutiklio būsenas užtikrina tiksliausią ir patikimiausią įrenginio funkcionalumą.
2 žingsnis: sąranka ir laidų schema
Projekte naudojama ir „Arduino Mega“klono plokštė, panaši į aukščiau pateiktą plokštę. Visi projekto komponentai bus prijungti prie šios plokštės. Aukščiau yra išsamios schemos, kaip prijungti šio projekto komponentus. Mygtukai neturi išsamios grandinės, nes juos galima nustatyti įvairiais būdais. Šiame projekte jie naudoja 100K nuleidžiamą rezistorių ir paprastą mygtuką, kad nusiųstų 3 voltų signalą į jam priskirtą kaištį.
3 žingsnis: komponentų ir pagrindinio kodo tikrinimas
Projektas surinks duomenis iš MPU ir GPS lusto, kaip aprašyta anksčiau. Pridedami trys kodai, leidžiantys patikrinti duomenis iš MPU, GPS ir MPU su ekranu, siekiant patikrinti dalių funkcionalumą. Šiame etape svarbu sudedamąsias dalis pradėti eksploatuoti, nes kiekvieno lusto kodas yra atskiras ir bet kokias problemas galima išspręsti nebijojant sukelti nenumatytų galutinio kodo klaidų.
Reikalingos bibliotekos:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
„TinyGPS ++“. H
Adafruit_NeoPixel.h
MPU9250.h
Visa tai galima rasti ieškant aukščiau pateiktų pavadinimų. Aš neskelbsiu nuorodų, nes yra daug šių bibliotekų kopijų iš kelių šaltinių ir laikantis bendruomenės standarto, pagal kurį tik pateikiamos nuorodos į originalus, leisiu jums jas rasti.
4 žingsnis: MPU kalibravimas
Antraštė, rasta per MPU 2 ir 3 valstybėse, buvo padalyta į keturis kvadrantus. Tai buvo būtina, nes mūsų kalibravimo metodu reikėjo iš magnetometro rasti mažiausius ir didžiausius dydžius išilgai jo x ir y ašių. Tai buvo padaryta atsitiktinai sukant prietaisą aplink tris ašis, be jokių reikšmingų elektromagnetinių laukų, išskyrus Žemę. Tada mes paėmėme mažiausią ir didžiausią reikšmes išilgai x ir y ašių ir prijungėme jas prie mastelio lygties, kad apribotume dydžius tarp neigiamo ir vieno. Aukščiau pateiktame paveikslėlyje „BigX“ir „BigY“yra didžiausios magnetometro duomenų vertės išilgai x ir y ašies, o „LittleX“ir „LittleY“-minimalios magnetometro duomenų vertės išilgai x ir y ašies, IMU.getMagX_uT () ir IMU.getMagY_uT () yra vertės, kurios bet kuriuo metu ištraukiamos iš magnetometro išilgai x ir y ašies, o Mx ir My yra naujos mastelio vertės, naudojamos apskaičiuojant kursą.
5 žingsnis: galutinis kodas
Paskutinis žingsnis yra sukurti galutinį kodą. Pridėjau galutinio projekto kodo kopiją. Buvo pateiktos pastabos, padedančios naršyti kodą. Didžiausias šio skyriaus iššūkis buvo priversti kvadrantus tinkamai veikti. Kvadrantų įgyvendinimas pasirodė varginantis ir logiškesnis, nei galėjome tikėtis. Iš pradžių įdiegėme pagrindinį arktaną (My/Mx), o po to konvertavome iš radianų į laipsnius, nes pagal numatytuosius nustatymus „Arduino“išleidžia radianus. Tačiau vienintelis kvadrantas, kuriame jis veikė, buvo nuo 90 laipsnių iki 180 laipsnių, o tai davė neigiamą rezultatą ir galiausiai buvo III kvadrantas. Išeitis buvo absoliuti vertė, nes ji vis tiek padidėjo teisingai. Tada ši vertė buvo atimta iš 360, kad 2 būsenoje užsidegtų teisingas „NeoPixel“šviesos diodas, ir panaši matematinė operacija buvo naudojama 3 būsenoje, atsižvelgiant į tai, ar antraštė buvo didesnė ar mažesnė už vartotojo įvesties antraštę, o abi jos matomos aukščiau pateiktas kodas. Aukščiau pateiktuose paveikslėliuose antraštė atitinka „NeoPixel“lemputę, kuri užsidegs, atsižvelgiant į skirtumą tarp prietaiso krypties ir nukrypimo nuo šiaurės 2 būsenos atveju ir nuo vartotojo antraštės. Šiuo atveju 90–180 laipsnių atitinka III kvadrantą. Abiem atvejais tft.print ekrane nuskaito įrenginio kryptį iš šiaurės.
Kituose trijuose kvadrantuose, įgyvendinus arktaną (My/Mx), prietaisas buvo pasuktas, kai padidėjo inversija, ty posūkio kampas būtų skaičiuojamas atgal, kai jis turėjo būti skaičiuojamas aukštyn, ir atvirkščiai. Šios problemos sprendimas buvo apversti arktangentą į arktano formą (Mx/My). Nors tai išsprendė didėjimo inversiją, ji nesuteikė teisingos prietaiso krypties, kur atsirado kvadrantai. Paprastas sprendimas buvo pridėti poslinkį pagal atitinkamą kvadrantą. Tai matyti iš šių skaičių, kurie vėlgi yra kiekvieno kvadranto 2 ir 3 būsenų kodai.
Pirmasis, jei teiginys atliekamas, jei antraštė, apskaičiuota pagal MPU lygtį, yra didesnė už vartotojo antraštę. Esant tokioms sąlygoms, vartotojo įvesties antraštė pridedama prie įrenginio antraštės, o atitinkama vertė atimama iš 360. Jei įvykdomas kitas teiginys, MPU antraštės lygtis atimama iš vartotojo įvesties antraštės. Šios sąlygos buvo įgyvendintos siekiant ne tik gauti tikslią „NeoPixel“vertę, bet ir išvengti vertės, kuri yra už priimtinos ribos, kuri yra nuo 0 iki 359 laipsnių.
Rekomenduojamas:
2 krypčių garso perėjimas: 4 žingsniai
2 krypčių garso kryžminimas: sukūriau paprastą 2 krypčių pasyvų garso kryžminimą, susidedantį iš 2 galios induktorių ir 2 kondensatorių. Tai sukuria antros eilės dizainą arba 12 dB/oktavą. Ši tvarka dažniausiai naudojama pasyviuose krosoveriuose, nes ji suteikia pagrįstą pusiausvyrą tarp
Paprasto keturių krypčių asociatyvaus talpyklos valdiklio VHDL dizainas: 4 žingsniai
Paprasto keturių krypčių rinkinio asociatyvaus talpyklos valdiklio dizainas VHDL: Ankstesniame nurodyme pamatėme, kaip sukurti paprastą tiesioginį žemėlapio talpyklos valdiklį. Šį kartą žengiame žingsnį į priekį. Mes sukursime paprastą keturių krypčių asociatyvaus talpyklos valdiklį. Privalumas? Mažesnis praleidimo procentas, bet už perfo kainą
Skaitmeninis kompasas naudojant „Arduino“ir HMC5883L magnetometrą: 6 žingsniai
Skaitmeninis kompasas naudojant „Arduino“ir „HMC5883L“magnetometrą: Sveiki, vaikinai, šis jutiklis gali nurodyti geografinę šiaurę, pietus, rytus ir vakarus, mes, žmonės, taip pat galime jį naudoti kartais, kai to reikia. Taigi. Šiame straipsnyje pabandykime suprasti, kaip veikia magnetometro jutiklis ir kaip jį sujungti su mikrokontrole
Skaitmeninis žirklių ieškiklis: 6 žingsniai (su nuotraukomis)
Skaitmeninis smeigtukų ieškiklis: smeigtukų ieškikliai yra paprasta sąvoka. Du talpiniai jutikliai: vienas siunčia impulsinę bangą, antrasis priima ir matuoja įtampos sumažėjimą visoje medžiagoje tarp dviejų plokščių. Bandant išplėsti šį dizainą, šis projektas buvo skirtas
Visų krypčių ventiliatorius: 6 žingsniai
Visų krypčių ventiliatorius: Ventiliatorius leidžia orui tekėti iš visų pusių, o ne vienai. Tai leidžia geriau cirkuliuoti patalpoje, kurioje yra