INHOUDSOPGAWE:
- Stap 1: Ontwerp die funksionaliteit van die projek
- Stap 2: Opstel en draaddiagram
- Stap 3: Toets komponente en basiese kode
- Stap 4: MPU -kalibrasie
- Stap 5: Finale kode
Video: Digitale kompas en opskrifzoeker: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Skrywers:
Cullan Whelan
Andrew Luft
Blake Johnson
Erkennings:
Kalifornië Maritieme Akademie
Evan Chang-Siu
Inleiding:
Die basis van hierdie projek is 'n digitale kompas met koersopsporing. Dit stel die gebruiker in staat om 'n opskrif oor lang afstande te volg met behulp van 'n digitale apparaat. In die volksmond is 'n opskrif 'n hoek wat met die kloksgewys vanuit die noorde gemeet word, wat as nul grade beskou word, soos aangedui deur die kompas. Die toestel het twee hooffunksies: die eerste is die huidige opskrif van die toestel op 'n digitale skermverwysing, en die tweede is die vermoë om 'n opskrif van die gebruiker in te voer, wat op 'n ring LED's bo -aan die kompas behuising. Die gebruiker pas dan die oriëntasie van die toestel aan met die verligte LED. Namate die rigting van die toestel verander word, beweeg die LED na die middelste LED, wat aandui dat die regte koers vasgestel is.
Benodighede:
- DIYmall 6M GPS -module
- HiLetgo MPU9250/6500 9-as 9 DOF 16 bit
- Adafruit NeoPixel Ring 16
- MakerFocus 4 stuks 3.7V litium herlaaibare battery
- ELEGOO MEGA 2560 R3 Bord
- Adafruit Mini Lipo met Mini -B USB -aansluiting - USB LiIon/LiPoly -laaier - v1
- 2.8 TFT LCD met aanraakskerm -uitbreekbord met MicroSD -aansluiting
Stap 1: Ontwerp die funksionaliteit van die projek
Die eerste stap is om die logika en finale operasionele funksionaliteit te verstaan. Hierdie logika diagram beeld die drie toesteltoestande en die twee sensortoestande uit.
Staat 1: Laai staat
Die laaitoestand word gebruik om die Arduino Mega toe te laat om data van die twee sensors terug te kry by die aanvang. Die toestel sal laai op die skerm vertoon, al die getalwaardes op die skerm skoonmaak, en die LED's op die NeoPixel -ring sal in 'n sirkel brand.
Staat 2: Kompasmodus
In hierdie toestand sal die toestel soos 'n digitale kompas optree. Die NeoPixel -ring sal brand om die rigting van die noorde aan te dui ten opsigte van die oriëntasie van die toestel. Die ware toestelopskrif sal ook saam met die breedtegraad en lengtegraad op die LCD -skerm vertoon word. Dit is ook in hierdie toestand dat die gebruiker die gebruikersopskrif kan invoer wat in staat 3 vertoon moet word.
Staat 3: Opsporingsmodus vir opskrifte
In hierdie toestand sal die toestel die gebruiker nou help om gevestig te raak op die gewenste koers. Die toestel sal nou die opskrif van die toestelle en die gebruikers op die LCD -skerm saam met die breedtegraad- en lengtegraaddata wys. Die NeoPixel -ring sal nou brand om die gebruikers op te dui met betrekking tot die oriëntasie van die toestelle.
Binne Staat 2 en Staat 3 is daar twee sensortoestande, met hierdie sensortoestande kan die toestel data uit die sensor trek wat die mees akkurate data bevat, afhangende van die werkingstoestand van die toestel.
Sensortoestand 1: MPU
As die toestel nie beweeg nie, word die opskrifdata uit die MPU gehaal, aangesien dit die akkuraatste data is as die toestel nie beweeg nie.
Sensortoestand 2: GPS
As die toestel beweeg, word die opskrifdata van die GPS -chip verwyder, aangesien dit die akkuraatste data in hierdie toestand is.
Die toestel kan te eniger tyd tussen hierdie toestelle oorskakel na sensortoestande om die gebruikstoestande van die eenheid te verander. Dit is belangrik vir die werking van die toestel, aangesien albei die twee sensors wat in die toestel gebruik word, toestande het wat die akkuraatheid van die gegewens beïnvloed. In die geval van die MPU kan die chip maklik beïnvloed word deur plaaslike magnetiese velde wat veroorsaak word deur motors en metaalkonstruksiemateriaal in geboue. So word 'n GPS -chip gebruik wat 'n baie meer akkurate koers kan gee wat nie deur dieselfde invloede beïnvloed word nie. Die GPS kan egter slegs koersdata verskaf wanneer dit beweeg, aangesien dit koers bereken deur die verandering in breedtegraad en lengtegraaddata. Daarom vul die skyfies mekaar aan en bied die akkuraatste en betroubaarste funksie van die toestel deur die twee sensortoestande te gebruik.
Stap 2: Opstel en draaddiagram
Die projek gebruik en Arduino Mega kloonbord soortgelyk aan die bord hierbo. Alle komponente in die projek sal aan hierdie bord gekoppel word. Hierbo is gedetailleerde diagramme van hoe om die komponente vir hierdie projek op te dra. Die knoppies het nie 'n gedetailleerde stroombaan nie, aangesien dit op baie maniere opgestel kan word. In hierdie projek gebruik hulle 'n 100K aftrekweerstand en 'n eenvoudige knoppie om 'n 3 volt sein na die toegewezen pen te stuur.
Stap 3: Toets komponente en basiese kode
Die projek haal data uit die MPU- en GPS -skyfie soos vroeër beskryf. Hierby is drie kodes wat die toets van data van die MPU, GPS en MPU met skerm toelaat om die funksionaliteit van die onderdele te verifieer. Dit is belangrik om die komponente in hierdie stadium in werking te stel, aangesien die kode vir elke chip apart is en enige probleme opgelos kan word sonder om te vrees dat hulle onvoorsiene foute in die finale kode kan veroorsaak.
Vereiste biblioteke:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Al hierdie kan gevind word deur die titels hierbo te soek. Ek sal nie skakels plaas nie, aangesien daar baie kopieë van hierdie biblioteke uit verskeie bronne is, en ek voldoen aan die gemeenskapsstandaard om slegs na die oorspronklike te skakel, laat ek u dit self vind.
Stap 4: MPU -kalibrasie
Die opskrif wat via die MPU in staat 2 en staat 3 gevind is, is in vier kwadrante verdeel. Dit was nodig omdat ons kalibreringsmetode die minimum en maksimum groottes van die magnetometer langs sy x- en y -as moes bepaal. Dit is gedoen deur die toestel willekeurig om sy drie asse te draai, vry van enige beduidende elektromagnetiese velde anders as dié van die aarde. Ons neem dan die minimum en maksimum waardes langs die x- en y -as en plaas dit in 'n skaalvergelyking om die grootte tussen die waardes van negatiewe een en een te beperk. In die figuur hierbo is BigX en BigY die maksimum waardes van magnetometerdata langs die x- en y-as, onderskeidelik, LittleX en LittleY is die minimum waardes van magnetometerdata langs die x- en y-as, onderskeidelik IMU.getMagX_uT () en IMU.getMagY_uT () is die waardes wat te eniger tyd langs die x- en y-as uit die magnetometer getrek word, en Mx en My is die nuwe afgeskaalde waardes wat gebruik word om die opskrif te bereken.
Stap 5: Finale kode
Die laaste stap is om die finale kode te skep. Ek het 'n afskrif van die finale kode van die projek aangeheg. Binne aantekeninge is gemaak om die kode te help navigeer. Die grootste uitdaging van hierdie afdeling was om die kwadrante reg te laat werk. Die implementering van kwadrante was meer vervelig en logies-uitdagend as wat ons ooit kon verwag het. Ons het aanvanklik 'n basiese arctan (My/Mx) geïmplementeer en daarna van radiale na grade omgeskakel, aangesien Arduino standaard in radiale uitsette lewer. Die enigste kwadrant waarin dit gewerk het, was egter van 90 grade tot 180 grade, wat ons 'n negatiewe uitset gegee het en uiteindelik kwadrant III was. Die oplossing hiervoor was om die absolute waarde te neem, aangesien dit steeds korrek toegeneem het. Hierdie waarde is dan van 360 afgetrek om die korrekte NeoPixel LED in toestand 2 te verlig, en 'n soortgelyke wiskundige bewerking is in toestand 3 gebruik, gebaseer op of die opskrif groter of kleiner was as die invoeropskrif van die gebruiker, wat beide in die bogenoemde kode. In die bostaande syfers stem Heading ooreen met die NeoPixel -lig wat aangesteek sal word op grond van die verskil tussen die toestelopskrif en die afwyking van die noorde in die geval van toestand 2 en van die van die gebruikersopskrif. In hierdie geval stem 90 tot 180 grade ooreen met Kwadrant III. In beide gevalle veroorsaak die tft.print dat die skerm die toestel van noord af lees.
Vir die ander drie kwadrante het die implementering van arctan (My/Mx) gelei tot 'n inversie van inkrementasie namate die toestel gedraai word, dit wil sê dat die koershoek aftel wanneer dit moes tel en omgekeerd. Die oplossing vir hierdie probleem was om die arktangens in die vorm van arctan (Mx/My) te verander. Alhoewel dit die inkrementeringsinversie opgelos het, het dit nie die korrekte opskrif van die toestel gegee nie, dit is waar die kwadrante ter sprake gekom het. Die eenvoudige oplossing hiervoor was om 'n verskuiwing op grond van die ooreenstemmende kwadrant by te voeg. Dit kan gesien word in die volgende figure, wat weer stukke kode uit state 2 en 3 van elke kwadrant is.
Die eerste if -stelling word uitgevoer as die opskrif bereken deur die MPU -vergelyking groter is as die gebruikersopskrif. Onder hierdie toestand word die invoeropskrif van die gebruiker by die opskrif van die toestel gevoeg en die ooreenstemmende waarde word afgetrek van 360. As die anders -stelling uitgevoer word, word die MPU -opskrifvergelyking afgetrek van die invoeropskrif van die gebruiker. Hierdie voorwaardes is geïmplementeer om nie net 'n akkurate waarde vir die NeoPixel te kry nie, maar om te verhoed dat 'n waarde buite die aanvaarbare omvang, van 0 tot 359 grade, verkry word.
Aanbeveel:
N Klein kompas met ATtiny85: 12 stappe (met foto's)
N Klein kompas met ATtiny85: Dit is ons eerste projek met ATtiny85; 'n eenvoudige sakkompas (in samewerking met J. Arturo Espejel Báez). ATtiny85 is 'n hoëprestasie- en lae -krag mikrobeheerder. Dit het 8 Kbyte programmeerbare flitsgeheue. As gevolg hiervan is die chal
DIY Kompas Bot: 14 stappe
DIY Kompas Bot: Hallo! Vandag gaan ek 'n Kompas bot maak. Ek het hierdie idee gekry deur te dink hoe moeilik dit is om die perfekte sirkel te teken sonder 'n wiskundige boks. Ek het jou oplossing? Soos u weet dat 'n sirkel presies 360 grade is, kan hierdie bot 'n sha teken
Tutoriaal vir koppelvlak HMC5883L kompas sensor met Arduino: 10 stappe (met foto's)
Tutoriaal vir koppelvlak-HMC5883L-kompassensor met Arduino: beskrywing HMC5883L is 'n 3-as digitale kompas wat vir twee algemene doeleindes gebruik word: om die magnetisering van 'n magnetiese materiaal soos 'n ferromagnet te meet, of om die sterkte en, in sommige gevalle, die rigting van die magnetiese veld op 'n punt in s
Hoe om 'n digitale kaliber af te breek en hoe werk 'n digitale remklauw: 4 stappe
Hoe om 'n digitale remkloof af te breek en hoe werk 'n digitale remklauw: baie mense weet hoe om kalibers te gebruik om te meet. Hierdie tutoriaal sal u leer hoe om 'n digitale remklauw af te breek en 'n verduideliking van hoe die digitale remklauw werk
Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]: 11 stappe
Hoe om die GY511 -module te gebruik met Arduino [Maak 'n digitale kompas]: oorsig In sommige elektroniese projekte moet ons op enige oomblik die geografiese ligging ken en 'n spesifieke operasie dienooreenkomstig uitvoer. In hierdie handleiding leer u hoe u die LSM303DLHC GY-511 kompasmodule met Arduino kan gebruik om 'n digitale kompas te maak