Sadržaj:
- Korak 1: Osmišljavanje funkcionalnosti projekta
- Korak 2: Postavljanje i dijagram žice
- Korak 3: Testiranje komponenti i osnovnog koda
- Korak 4: Kalibracija MPU -a
- Korak 5: Završni kod
Video: Digitalni kompas i tražilica smjera: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
Autori:
Cullan Whelan
Andrew Luft
Blake Johnson
Zahvalnice:
Kalifornijska pomorska akademija
Evan Chang-Siu
Uvod:
Temelj ovog projekta je digitalni kompas s praćenjem smjera. To omogućuje korisniku da prati smjer na velike udaljenosti pomoću digitalnog aparata. Kolokvijalno, kurs je kut mjeren u smjeru kazaljke na satu od sjevera, koji se smatra nula stupnjeva, kako pokazuje kompas. Uređaj ima dvije glavne funkcije: prva je prikaz trenutnog zaglavlja uređaja na referenci digitalnog zaslona, a druga je mogućnost unosa naslova koji je zatražio korisnik, a koji će biti prikazan na prstenu LED dioda na vrhu kućište kompasa. Korisnik bi zatim prilagodio orijentaciju uređaja u odnosu na osvijetljenu LED diodu. Kako se smjer uređaja mijenja, LED će putovati prema središnjoj LED, što znači da je uspostavljen ispravan smjer.
Pribor:
- DIYmall 6M GPS modul
- HiLetgo MPU9250/6500 9-osi 9 DOF 16 Bit
- Adapruit NeoPixel prsten 16
- MakerFocus 4 kom 3,7 V litijeva punjiva baterija
- ploča ELEGOO MEGA 2560 R3
- Adafruit Mini Lipo s mini -B USB priključkom - USB LiIon/LiPoly punjač - v1
- 2.8 TFT LCD s pločom osjetljivom na dodir s utičnicom za MicroSD
Korak 1: Osmišljavanje funkcionalnosti projekta
Prvi korak je razumijevanje logike i konačne operativne funkcionalnosti. Ovaj logički dijagram prikazuje tri stanja uređaja i dva stanja senzora.
Stanje 1: Stanje utovara
Stanje učitavanja koristi se kako bi omogućilo Arduinu Megi da vrati podatke s dva senzora nakon pokretanja. Uređaj će prikazati opterećenje na zaslonu, izbrisati sve vrijednosti broja na zaslonu, a LED diode na prstenu NeoPixel će svijetliti u krug.
Stanje 2: Način rada kompasa
U tom stanju uređaj će se ponašati kao digitalni kompas. Prsten NeoPixel će zasvijetliti kako bi označio smjer sjevera s obzirom na orijentaciju uređaja. Pravi naslov uređaja također će biti prikazan na LCD zaslonu zajedno s geografskom širinom i dužinom uređaja. Također će unutar tog stanja korisnik moći unijeti korisnički naslov koji će se prikazati u stanju 3.
Stanje 3: Način praćenja zaglavlja
U ovom stanju uređaj će sada pomoći korisniku da se prilagodi željenom naslovu. Uređaj će sada prikazati naslov uređaja i korisnike na LCD zaslonu zajedno s podacima o zemljopisnoj širini i dužini. NeoPixel prsten sada će zasvijetliti kako bi označio korisnike koji se kreću s obzirom na orijentaciju uređaja.
Unutar stanja 2 i stanja 3 postoje dva stanja senzora koja omogućuju uređaju da izvuče podatke sa senzora koji pružaju najtočnije podatke ovisno o radnom stanju uređaja.
Stanje senzora 1: MPU
Ako se uređaj ne pomiče, podaci o smjeru bit će izvučeni iz MPU -a jer su to najprecizniji podaci kada se uređaj ne pomiče.
Stanje senzora 2: GPS
Ako se uređaj kreće, podaci o smjeru bit će izvučeni iz GPS čipa jer su to najtočniji podaci u ovom stanju.
Uređaj se u bilo kojem trenutku može prebaciti iz stanja u stanje senzora kako bi se uzeli u obzir uvjeti korištenja jedinice. To je važno za rad uređaja jer oba senzora koji se koriste u uređaju imaju uvjete koji utječu na točnost podataka koje pružaju. U slučaju MPU -a, na čip može lako utjecati lokalno magnetsko polje uzrokovano automobilima i metalnim građevinskim materijalima u zgradama. Tako se koristi GPS čip koji može pružiti mnogo točniji kurs na koji ne utječu isti utjecaji. Međutim, GPS može pružiti podatke o smjeru samo tijekom kretanja jer izračunava smjer koristeći promjenu podataka o zemljopisnoj širini i dužini. Stoga se čipovi međusobno nadopunjuju i pomoću dva stanja senzora pružaju najprecizniju i najpouzdaniju funkcionalnost uređaja.
Korak 2: Postavljanje i dijagram žice
Projekt koristi i Arduino Mega klon ploču sličnu gornjoj ploči. Sve komponente u projektu bit će spojene na ovu ploču. Gore su detaljni dijagrami kako spojiti komponente za ovaj projekt. Gumbi nemaju detaljan sklop jer se mogu postaviti na mnogo načina. U ovom projektu koriste otpornik za spuštanje od 100K i jednostavan gumb za slanje signala od 3 V na dodijeljeni pin.
Korak 3: Testiranje komponenti i osnovnog koda
Projekt će izvlačiti podatke iz MPU -a i GPS -čipa kako je ranije opisano. U prilogu su tri koda koji omogućuju testiranje podataka iz MPU -a, GPS -a i MPU -a sa zaslonom za provjeru funkcionalnosti dijelova. U ovoj je fazi važno aktivirati komponente jer je kôd zaseban za svaki čip i sva se pitanja mogu riješiti bez straha da će izazvati nepredviđene pogreške u konačnom kodu.
Potrebne knjižnice:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Sve se to može pronaći pretraživanjem gore navedenih naslova. Neću objavljivati veze jer postoji mnogo kopija ovih knjižnica iz više izvora i pridržavajući se standarda zajednice koji se odnosi samo na izvornike, dopustit ću vam da ih sami pronađete.
Korak 4: Kalibracija MPU -a
Naslov pronađen putem MPU -a u državi 2 i državi 3 podijeljen je u četiri kvadranta. To je bilo potrebno jer je naša metoda kalibracije zahtijevala pronalaženje minimalne i maksimalne veličine iz magnetometra duž njegovih osi x i y. To je učinjeno slučajnim rotiranjem uređaja oko njegove tri osi, bez ikakvih značajnijih elektromagnetskih polja osim onog na Zemlji. Zatim smo uzeli minimalne i maksimalne vrijednosti duž osi x i y i uključili ih u jednadžbu skaliranja kako bismo ograničili veličine između vrijednosti negativnih jedan i jedan. Na gornjoj slici BigX i BigY su maksimalne vrijednosti podataka magnetometra duž osi x i y, LittleX i LittleY su minimalne vrijednosti podataka magnetometra duž osi x i y, IMU.getMagX_uT () i IMU.getMagY_uT () su vrijednosti izvučene s magnetometra u bilo kojem trenutku duž osi x i y, a Mx i My su nove skalirane vrijednosti koje se koriste za izračun naslova.
Korak 5: Završni kod
Posljednji korak je stvaranje konačnog koda. Priložio sam kopiju završnog koda projekata. Unutar bilješki napravljene su informacije za lakše snalaženje u kodu. Najveći izazov u ovom odjeljku bio je pravilni rad kvadranata. Provedba kvadranata pokazala se dosadnijom i logički prkosnijom nego što smo mogli pretpostaviti. U početku smo implementirali osnovni arktan (My/Mx), a zatim smo ga pretvorili iz radijana u stupnjeve, budući da Arduino prema zadanim postavkama daje radijane. Međutim, jedini kvadrant u kojem je ovo radilo bio je od 90 stupnjeva do 180 stupnjeva, što nam je dalo negativan izlaz i na kraju je bilo kvadrant III. Rješenje za to je uzimalo apsolutnu vrijednost, budući da se i dalje ispravno povećavalo. Ta je vrijednost zatim oduzeta od 360 kako bi se upalila ispravna LED dioda NeoPixel u stanju 2, a slična matematička operacija korištena je u stanju 3 na temelju toga je li naslov bio veći ili manji od korisničkog unosa, oboje se može vidjeti u iznad koda. Na gornjim slikama Naslov odgovara NeoPixel svjetlu koje će se upaliti na temelju razlike između zaglavlja uređaja i odstupanja od sjevera u slučaju stanja 2 i od onog zaglavlja korisnika. U ovom slučaju, 90 do 180 stupnjeva odgovara kvadrantu III. U oba slučaja, tft.print uzrokuje da zaslon čita uređaj sa sjevera.
Za ostala tri kvadranta, implementacija arktana (My/Mx) dovela je do inverzije inkrementacije dok se uređaj okretao, tj. Kut zaglavlja odbrojavao bi se kada je trebao odbrojavati i obrnuto. Rješenje ovog problema bilo je okretanje arktangense u oblik arktana (Mx/My). Iako je ovo riješilo inverziju inkrementacije, ono nije dalo pravilan zaglavlje uređaja, što je mjesto na koje su kvadranti došli u igru. Jednostavno rješenje ovoga bilo je dodavanje pomaka na temelju odgovarajućeg kvadranta. To se može vidjeti na sljedećim slikama, koje su opet komadi koda iz država 2 i 3 svakog kvadranta.
Prva naredba if izvodi se ako je naslov izračunat jednadžbom MPU -a veći od korisničkog naslova. Pod ovim uvjetom, korisnički ulazni zaglavlje dodaje se zaglavlju uređaja i odgovarajuća vrijednost se oduzima od 360. Ako se izvrši naredba else, jednadžba zaglavlja MPU -a oduzima se od korisnikovog ulaznog naslova. Ti su uvjeti provedeni kako bi se dobila ne samo točna vrijednost za NeoPixel, već i izbjeglo dobivanje vrijednosti izvan prihvatljivog raspona, koji je od 0 do 359 stupnjeva.
Preporučeni:
Arduino kontroler semafora pomoću RBG Led - 4 smjera: 3 koraka
Arduino kontroler semafora pomoću RBG Led | 4-smjerno: U ovom ćete postu naučiti o tome kako napraviti Arduino upravljač za semafor. Ovaj semaforski regulator će se koristiti za kontrolu protoka prometa. Oni se mogu primijeniti u područjima s velikim prometom kako bi se izbjegle blokade prometa ili nesreće
Arduino kontroler semafora - 4 smjera: 3 koraka
Arduino kontroler semafora | 4-smjerno: U ovom ćete postu naučiti o tome kako napraviti Arduino upravljač za semafor. Ovaj semaforski regulator će se koristiti za kontrolu protoka prometa. Oni se mogu primijeniti na područjima s velikim prometom kako bi se izbjegle blokade prometa ili nesreće
Arduino kontrola brzine i smjera istosmjernog motora pomoću potenciometra, OLED zaslona i tipki: 6 koraka
Arduino kontrola brzine i smjera istosmjernog motora pomoću potenciometra, OLED zaslona i gumba: U ovom ćemo vodiču naučiti kako koristiti upravljački program L298N DC MOTOR CONTROL i potenciometar za kontrolu brzine i smjera istosmjernog motora s dva gumba i prikazati vrijednost potenciometra na OLED zaslonu.Gledajte demonstracijski video
Digitalni kompas pomoću magnetometra Arduino i HMC5883L: 6 koraka
Digitalni kompas pomoću magnetometra Arduino i HMC5883L: Zdravo dečki, Ovaj senzor mogao bi označiti zemljopisni sjever, jug, istok i zapad, mi ljudi bismo ga također mogli koristiti kad je potrebno. Tako. U ovom članku pokušajmo razumjeti kako senzor magnetometra radi i kako ga spojiti s mikrokontrolerom
Kako koristiti GY511 modul s Arduinom [Napravite digitalni kompas]: 11 koraka
Kako koristiti GY511 modul s Arduinom [Napravite digitalni kompas]: PregledU nekim projektima elektronike, moramo znati geografski položaj u svakom trenutku i u skladu s tim izvršiti određenu operaciju. U ovom ćete vodiču naučiti kako koristiti modul kompasa LSM303DLHC GY-511 s Arduinom za izradu digitalnih kompasa