Obsah:
- Krok 1: Navrhnutie funkčnosti projektu
- Krok 2: Nastavenie a schéma zapojenia
- Krok 3: Testovanie komponentov a základný kód
- Krok 4: Kalibrácia MPU
- Krok 5: Konečný kód
Video: Digitálny kompas a hľadač smeru: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
Autori:
Cullan Whelan
Andrew Luft
Blake Johnson
Poďakovanie:
Kalifornská námorná akadémia
Evan Chang-Siu
Úvod:
Základom tohto projektu je digitálny kompas so sledovaním kurzu. To umožňuje užívateľovi sledovať kurz na dlhé vzdialenosti pomocou digitálneho zariadenia. Hovorovo je nadpisom uhol meraný od severu v smere hodinových ručičiek, ktorý je podľa kompasu považovaný za nula stupňov. Zariadenie má dve hlavné funkcie: prvou je zobrazenie aktuálneho smeru zariadenia na referencii digitálneho displeja a druhou je možnosť zadať nadpis požadovaný používateľom, ktorý sa zobrazí na krúžku diód LED v hornej časti kompasové bývanie. Užívateľ by potom upravil orientáciu zariadenia súvisiacu s rozsvietenou diódou LED. Keď sa zmení smer zariadenia, LED dióda prejde na stredovú LED, čo znamená, že bol stanovený správny smer.
Zásoby:
- DIYmall 6M GPS modul
- HiLetgo MPU9250/6500 9-osý 9 DOF 16 bitov
- Adafruit NeoPixel Ring 16
- Lítiová nabíjateľná batéria MakerFocus 4 ks 3,7 V
- Doska ELEGOO MEGA 2560 R3
- Adafruit Mini Lipo s konektorom USB Mini -B - nabíjačka USB LiIon/LiPoly - v1
- 2,8 palcový TFT LCD displej s dotykovou obrazovkou na doske s konektorom MicroSD
Krok 1: Navrhnutie funkčnosti projektu
Prvým krokom je pochopenie logiky a konečnej funkčnosti. Tento logický diagram zobrazuje tri stavy zariadenia a dva stavy senzorov.
Stav 1: Stav načítania
Stav načítania sa používa na to, aby Arduino Mega mohol pri štarte získať údaje späť z dvoch senzorov. Zariadenie na obrazovke zobrazí načítanie, vymaže všetky hodnoty čísel na obrazovke a diódy LED na krúžku NeoPixel sa rozsvietia v kruhu.
Stav 2: Režim kompasu
V tomto stave bude zariadenie fungovať ako digitálny kompas. Krúžok NeoPixel sa rozsvieti, aby naznačil smer severu vzhľadom na orientáciu zariadenia. Skutočný nadpis zariadenia sa tiež zobrazí na LCD obrazovke spolu so zemepisnou šírkou a dĺžkou zariadenia. V tomto stave bude aj to, že používateľ bude môcť zadať nadpis používateľa, ktorý sa má zobraziť v stave 3.
Stav 3: Režim sledovania nadpisu
V tomto stave zariadenie teraz pomôže používateľovi usadiť sa na požadovanom nadpise. Zariadenie teraz zobrazí nadpisy zariadení a používateľov na obrazovke LCD spolu s údajmi o zemepisnej šírke a dĺžke. Krúžok NeoPixel sa teraz rozsvieti, aby indikoval používateľov, ktorí smerujú k orientácii zariadení.
V rámci stavu 2 a stavu 3 existujú dva stavy senzorov, tieto stavy senzorov umožňujú zariadeniu získať údaje zo senzora, ktorý poskytuje najpresnejšie údaje v závislosti od prevádzkového stavu zariadenia.
Stav snímača 1: MPU
Ak sa zariadenie nepohybuje, údaje záhlavia sa budú získavať z MPU, pretože sú to najpresnejšie údaje, keď sa zariadenie nepohybuje.
Stav snímača 2: GPS
Ak sa zariadenie pohybuje, údaje smeru sa získajú z čipu GPS, pretože v tomto stave ide o najpresnejšie údaje.
Zariadenie môže kedykoľvek prepínať medzi týmito stavmi a stavmi senzorov, aby zohľadnilo podmienky používania jednotky. To je dôležité pre prevádzku zariadenia, pretože oba dva snímače používané v zariadení majú podmienky, ktoré ovplyvňujú presnosť údajov, ktoré poskytujú. V prípade MPU môže byť čip ľahko ovplyvnený miestnymi magnetickými poľami spôsobenými automobilmi a kovovými stavebnými materiálmi v budovách. Preto sa používa čip GPS, ktorý môže poskytnúť oveľa presnejšie smerovanie, ktoré nie je ovplyvnené rovnakými vplyvmi. GPS však môže poskytovať údaje o smere iba pri pohybe, pretože vypočítava smer podľa zmeny údajov o zemepisnej šírke a dĺžke. Čipy sa preto navzájom dopĺňajú a pomocou dvoch stavov senzorov poskytujú najpresnejšiu a najspoľahlivejšiu funkciu zariadenia.
Krok 2: Nastavenie a schéma zapojenia
Projekt využíva klonovú dosku Arduino Mega podobnú doske uvedenej vyššie. K tejto doske budú pripojené všetky komponenty v projekte. Vyššie sú uvedené podrobné schémy zapojenia komponentov pre tento projekt. Tlačidlá nemajú podrobný obvod, pretože ich je možné nastaviť mnohými spôsobmi. V tomto projekte používajú 100K sťahovací odpor a jednoduché tlačidlo na odoslanie 3 -voltového signálu na jeho priradený pin.
Krok 3: Testovanie komponentov a základný kód
Projekt bude ťahať údaje z čipu MPU aj GPS, ako bolo popísané vyššie. Priložené sú tri kódy, ktoré umožňujú testovanie údajov z MPU, GPS a MPU s obrazovkou na overenie funkčnosti dielov. V tejto fáze je dôležité uviesť komponenty do prevádzky, pretože kód je pre každý čip oddelený a akékoľvek problémy je možné vyriešiť bez strachu, že v konečnom kóde dôjde k nepredvídaným chybám.
Požadované knižnice:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Všetky tieto informácie nájdete v nadpisoch uvedených vyššie. Nebudem zverejňovať odkazy, pretože existuje veľa kópií týchto knižníc z viacerých zdrojov a pri dodržaní komunitného štandardu iba odkazovania na originály vám ich nechám nájsť.
Krok 4: Kalibrácia MPU
Nadpis nájdený prostredníctvom MPU v štáte 2 a štáte 3 bol rozdelený do štyroch kvadrantov. To bolo nevyhnutné, pretože naša metóda kalibrácie vyžadovala nájdenie minimálnych a maximálnych veličín z magnetometra pozdĺž jeho osí x a y. To sa uskutočnilo náhodným otáčaním zariadenia okolo jeho troch osí bez akýchkoľvek významných elektromagnetických polí iných ako na Zemi. Potom sme vzali minimálne a maximálne hodnoty pozdĺž osi x a y a zapojili ich do škálovacej rovnice, aby sme obmedzili veličiny medzi hodnotami zápornej jedna a jedna. Na obrázku vyššie sú BigX a BigY maximálne hodnoty údajov magnetometra pozdĺž osi x a y, LittleX a LittleY sú minimálne hodnoty údajov magnetometra pozdĺž osi x a y, IMU.getMagX_uT () a IMU..getMagY_uT () sú hodnoty čerpané z magnetometra kedykoľvek pozdĺž osi x a y a Mx a My sú nové škálované hodnoty používané na výpočet nadpisu.
Krok 5: Konečný kód
Posledným krokom je vytvorenie konečného kódu. Pripojil som kópiu konečného kódu projektov. V rámci poznámok boli urobené pomoc pri navigácii v kóde. Najväčšou výzvou tejto sekcie bolo prinútiť kvadranty správne fungovať. Implementácia kvadrantov sa ukázala byť únavnejšia a logickejšia, ako by sme mohli kedy očakávať. Pôvodne sme implementovali základný arktán (My/Mx) a potom sme konvertovali z radiánov na stupne, pretože Arduino štandardne vydáva v radiánoch. Jediný kvadrant, v ktorom to fungovalo, bol od 90 stupňov do 180 stupňov, čo nám poskytlo negatívny výstup a skončilo to ako kvadrant III. Riešením bolo získanie absolútnej hodnoty, pretože sa stále zvyšovalo správne. Táto hodnota sa potom odpočítala od 360, aby sa rozsvietila správna LED dióda NeoPixel v stave 2, a v stave 3 sa použila podobná matematická operácia podľa toho, či bol nadpis väčší alebo menší ako vstupný nadpis používateľa, pričom obidva je možné vidieť na vyššie uvedený kód. Na vyššie uvedených obrázkoch nadpis zodpovedá svetlu NeoPixel, ktoré sa rozsvieti na základe rozdielu medzi záhlavím zariadenia a odchýlkou od severu v prípade stavu 2 a od smeru používateľa. V tomto prípade 90 až 180 stupňov zodpovedá kvadrantu III. V oboch prípadoch tft.print spôsobuje, že obrazovka číta zariadenie smerujúce zo severu.
U ostatných troch kvadrantov viedla implementácia arctanu (My/Mx) k inverzii prírastku pri otáčaní zariadenia, t.j. uhol smeru by sa odpočítaval, keď sa mal počítať a naopak. Riešením tohto problému bolo preklopenie arktangensu do formy arktánu (Mx/My). Aj keď to vyriešilo inverziu prírastku, nedalo to správny smer zariadenia, kde kvadranty vstupovali do hry. Jednoduchým riešením bolo pridať posun na základe zodpovedajúceho kvadrantu. Je to vidieť na nasledujúcich obrázkoch, ktoré sú opäť časťami kódov zo štátov 2 a 3 každého kvadrantu.
Prvý príkaz if sa vykoná, ak je nadpis vypočítaný podľa rovnice MPU väčší ako nadpis používateľa. Za tejto podmienky sa vstupný nadpis užívateľa pridá k nadpisu zariadenia a zodpovedajúca hodnota sa odpočíta od 360. Ak sa vykoná príkaz else, rovnica nadpisu MPU sa odpočíta od vstupného nadpisu používateľa. Tieto podmienky boli implementované tak, aby nielen získali presnú hodnotu pre NeoPixel, ale aby sa vyhli získaniu hodnoty mimo prijateľného rozsahu, ktorý je od 0 do 359 stupňov.
Odporúča:
Senzor smeru toku: 16 krokov
Senzor smeru toku: Senzor obsahuje niekoľko typov stromov, ktoré obsahujú mnoho dimenzií, a spájajú rôzne druhy prepojení. Všetky senzory sa zobrazia po kliknutí na obrázok. Bez ohľadu na to, či sa vaše pole otvorí, alebo ako strom
Rýchlosť a smer otáčania a smeru motora DC Arduino pomocou potenciometra a tlačidiel: 6 krokov
Rýchlosť a smer otáčania a smeru jednosmerného motora Arduino pomocou potenciometra a tlačidiel: V tomto návode sa naučíme, ako pomocou ovládača L298N DC MOTOR CONTROL a potenciometra ovládať rýchlosť a smer jednosmerného motora dvoma tlačidlami. Pozrite si ukážkové video
Hľadač planét Raspberry Pi: 14 krokov (s obrázkami)
Hľadač planét Raspberry Pi: Mimo vedeckého centra v mojom meste je veľká kovová konštrukcia, ktorá sa môže otáčať a ukazovať na miesto, kde boli planéty na oblohe. Nikdy som to nevidel fungovať, ale vždy som si myslel, že by bolo kúzelné vedieť, kde pôsobia tieto nedosiahnuteľné iné svety
Digitálny kompas pomocou magnetometra Arduino a HMC5883L: 6 krokov
Digitálny kompas pomocou magnetometra Arduino a HMC5883L: Ahoj, tento senzor by mohol označovať geografický sever, juh, východ a západ, v prípade potreby by sme ho mohli použiť aj my ľudia. Takže. V tomto článku sa pokúsime porozumieť tomu, ako senzor magnetometra funguje a ako ho prepojiť s mikrokontrolérom
Hľadač vzdialenosti Attiny85: 4 kroky (s obrázkami)
Hľadač vzdialenosti Attiny85: Predtým, ako som urobil tento návod, práve som dostal nové Attiny (Attinies?) A chcel som s nimi niečo urobiť. Vtedy som si všimol, že môj ultrazvukový diaľkomer je úplne nepoužitý. Tento ultrazvukový Attinyho diaľkomer udáva vzdialenosť