Përmbajtje:
- Hapi 1: Hartimi i Funksionalitetit të Projektit
- Hapi 2: Diagrami i konfigurimit dhe telave
- Hapi 3: Testimi i Komponentëve dhe Kodit Bazë
- Hapi 4: Kalibrimi i MPU
- Hapi 5: Kodi Përfundimtar
Video: Kompas dixhital dhe Gjetës drejtues: 6 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Autorët:
Cullan Whelan
Andrew Luft
Blake Johnson
Mirënjohje:
Akademia Detare e Kalifornisë
Evan Chang-Siu
Prezantimi:
Baza e këtij projekti është një busull dixhitale me përcjelljen e titullit. Kjo i mundëson përdoruesit të ndjekë një titull në distanca të gjata duke përdorur një aparat dixhital. Kolektivisht një titull është një kënd i matur në drejtim të akrepave të orës nga veriu, i cili konsiderohet si zero gradë, siç tregohet nga busulla. Pajisja ka dy funksione kryesore: e para është shfaqja e titullit aktual të pajisjes në një referencë të ekranit dixhital, dhe e dyta është aftësia për të futur një titull të kërkuar nga përdoruesi, i cili do të shfaqet në një unazë LED në krye të strehimi i busullës. Përdoruesi pastaj do të rregullonte orientimin e pajisjes në lidhje me LED -in e ndriçuar. Ndërsa drejtimi i pajisjes ndryshon, LED do të udhëtojë në LED qendër, duke treguar kështu se titulli i saktë është vendosur.
Furnizimet:
- DIYmall 6M GPS Modul
- HiLetgo MPU9250/6500 9-Axis 9 DOF 16 Bit
- Unaza Adafruit NeoPixel 16
- Bateri Lithium MakerFocus 4pcs 3.7V e Rimbushshme
- Bordi ELEGOO MEGA 2560 R3
- Adafruit Mini Lipo w/Mini -B USB Jack - Ngarkues USB LiIon/LiPoly - v1
- 2.8 TFT LCD me bordin e ekranit me prekje me prizë MicroSD
Hapi 1: Hartimi i Funksionalitetit të Projektit
Hapi i parë është të kuptuarit e logjikës dhe funksionalitetit përfundimtar operacional. Ky diagram logjik përshkruan tre gjendjet e pajisjes dhe dy gjendjet e sensorit.
Gjendja 1: Gjendja e ngarkimit
Gjendja e ngarkimit përdoret për të lejuar që Arduino Mega të marrë të dhëna nga dy sensorët me fillimin. Pajisja do të shfaqë ngarkimin në ekran, do të pastrojë të gjitha vlerat e numrave në ekran dhe LED -të në unazën NeoPixel do të ndizen në një rreth.
Gjendja 2: Mënyra e busullës
Në këtë gjendje pajisja do të veprojë si një busull dixhitale. Unaza NeoPixel do të ndizet për të treguar drejtimin e Veriut në lidhje me orientimin e pajisjes. Titulli i pajisjes së vërtetë do të shfaqet gjithashtu në ekranin LCD së bashku me gjerësinë dhe gjatësinë gjeografike të pajisjes. Gjithashtu do të jetë brenda këtij shteti që përdoruesi do të jetë në gjendje të hyjë në titullin e përdoruesit për t'u shfaqur në Gjendjen 3.
Gjendja 3: Mënyra e Ndjekjes së Titullit
Në këtë gjendje, pajisja tani do të ndihmojë përdoruesin të vendoset në titullin e dëshiruar. Pajisja tani do të shfaqë drejtimin e pajisjeve dhe drejtimin e përdoruesve në ekranin LCD së bashku me të dhënat e gjerësisë dhe gjatësisë. Unaza NeoPixel tani do të ndizet për të treguar përdoruesit që shkojnë në lidhje me orientimin e pajisjeve.
Brenda gjendjes 2 dhe gjendjes 3 ka dy gjendje sensori, këto gjendje sensori lejojnë pajisjen të tërheqë të dhëna nga sensori që siguron të dhënat më të sakta në varësi të gjendjes operacionale të pajisjes.
Gjendja e sensorit 1: MPU
Nëse pajisja nuk lëviz, të dhënat e titullit do të tërhiqen nga MPU pasi janë të dhënat më të sakta kur pajisja nuk lëviz.
Gjendja e sensorit 2: GPS
Nëse pajisja po lëviz, të dhënat e titullit do të tërhiqen nga çipi GPS pasi janë të dhënat më të sakta në këtë gjendje.
Pajisja mund të kalojë midis këtyre në gjendjet e sensorit në çdo kohë për të marrë parasysh kushtet e përdorimit të njësisë që ndryshon. Kjo është e rëndësishme për funksionimin e pajisjes pasi të dy sensorët e përdorur në pajisje kanë kushte që ndikojnë në saktësinë e të dhënave që ato ofrojnë. Në rastin e MPU çipi mund të ndikohet lehtësisht nga fushat magnetike lokale të shkaktuara nga makinat dhe materialet e ndërtimit metalik në ndërtesa. Kështu përdoret një çip GPS që mund të sigurojë një titull shumë më të saktë që nuk ndikohet nga ndikimet e njëjta. Sidoqoftë, GPS mund të sigurojë të dhëna për titullin kur lëviz, pasi llogarit titullin duke përdorur ndryshimin në të dhënat e gjerësisë dhe gjatësisë. Prandaj patate të skuqura plotësojnë njëra -tjetrën dhe duke përdorur dy gjendjet e sensorit sigurojnë funksionalitetin më të saktë dhe të besueshëm të pajisjes.
Hapi 2: Diagrami i konfigurimit dhe telave
Projekti përdor dhe bordin e klonuar Arduino Mega të ngjashëm me tabelën e mësipërme. Të gjithë përbërësit në projekt do të lidhen me këtë tabelë. Më sipër janë diagramet e hollësishme se si të lidhni përbërësit për këtë projekt. Butonat nuk kanë një qark të detajuar pasi këto mund të vendosen në shumë mënyra. Në këtë projekt ata përdorin një rezistencë tërheqëse 100K dhe një buton të thjeshtë për të dërguar një sinjal 3 volt në kunjin e caktuar.
Hapi 3: Testimi i Komponentëve dhe Kodit Bazë
Projekti do të tërheqë të dhëna nga MPU dhe çipi GPS siç u përshkrua më herët. Bashkangjitur janë tre kode që mundësojnë testimin e të dhënave nga MPU, GPS dhe MPU me ekran për të verifikuar funksionalitetin e pjesëve. Isshtë e rëndësishme që komponentët të funksionojnë në këtë fazë pasi kodi është i veçantë për secilin çip dhe çdo çështje mund të adresohet pa frikën e shkaktimit të gabimeve të paparashikuara në kodin përfundimtar.
Bibliotekat e kërkuara:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Të gjitha këto mund të gjenden duke kërkuar titujt e mësipërm. Unë nuk do të postoj lidhje pasi ka shumë kopje të këtyre bibliotekave nga burime të shumta dhe duke iu përmbajtur standardit të bashkësisë për të lidhur vetëm origjinalet, do t'ju lejoj t'i gjeni vetë.
Hapi 4: Kalibrimi i MPU
Titulli i gjetur përmes NJPZH -së në Shtetin 2 dhe Shtetin 3 u nda në katër kuadrate. Kjo ishte e nevojshme sepse metoda jonë e kalibrimit kërkonte gjetjen e madhësive minimale dhe maksimale nga magnetometri përgjatë boshteve të tij x dhe y. Kjo u bë duke e rrotulluar pajisjen rastësisht rreth tre boshteve të saj, pa asnjë fushë të rëndësishme elektromagnetike të ndryshme nga ajo e Tokës. Ne pastaj morëm vlerat minimale dhe maksimale përgjatë boshtit x dhe y dhe i lidhëm ato në një ekuacion të shkallëzimit në mënyrë që të kufizojmë madhësitë midis vlerave të një dhe një negative. Në figurën e mësipërme, BigX dhe BigY janë vlerat maksimale të të dhënave të magnetometrit përgjatë boshtit x dhe y respektivisht, LittleX dhe LittleY janë vlerat minimale të të dhënave të magnetometrit përgjatë boshtit x dhe y respektivisht, IMU.getMagX_uT () dhe IMU.getMagY_uT () janë vlerat që tërhiqen nga magnetometri në çdo kohë përkatësisht përgjatë boshtit x dhe y, dhe Mx dhe My janë vlerat e reja të shkallëzuara të përdorura për të llogaritur titullin.
Hapi 5: Kodi Përfundimtar
Hapi i fundit është krijimi i kodit përfundimtar. Unë kam bashkangjitur një kopje të kodit përfundimtar të projekteve. Brenda shënimeve janë bërë për të ndihmuar në lundrimin në kod. Sfida më e madhe e këtij seksioni ishte që kuadrantët të punonin si duhet. Zbatimi i kuadrateve doli të ishte më i lodhshëm dhe sfidues i logjikës sesa mund të kishim parashikuar. Ne fillimisht zbatuam një arktan bazë (My/Mx) dhe më pas u konvertuam nga radianët në gradë, pasi Arduino del në radianë si parazgjedhje. Sidoqoftë, kuadranti i vetëm në të cilin punoi ishte nga 90 gradë në 180 gradë, gjë që na dha një rezultat negativ dhe përfundoi duke qenë Kuadranti III. Zgjidhja për këtë ishte marrja e vlerës absolute, pasi ajo akoma u rrit në mënyrë korrekte. Kjo vlerë u zbrit nga 360 për të ndriçuar LED -in e saktë NeoPixel në gjendjen 2 dhe një operacion i ngjashëm matematikor u përdor në gjendjen 3 bazuar në faktin nëse titulli ishte më i madh ose më i vogël se titulli i hyrjes së përdoruesit, të dyja të cilat mund të shihen në kodin e mësipërm. Në figurat e mësipërme, Titulli korrespondon me dritën NeoPixel që do të ndizet bazuar në ndryshimin midis drejtimit të pajisjes dhe devijimit nga veriu në rastin e gjendjes 2, dhe nga ai i titullit të përdoruesit. Në këtë rast, 90 deri në 180 gradë korrespondon me Kuadrantin III. Në të dy rastet, tft.print bën që ekrani të lexojë pajisjen që shkon nga veriu.
Për tre kuadrantët e tjerë, zbatimi i arktanit (My/Mx) çoi në një përmbysje të rritjes ndërsa pajisja rrotullohej, domethënë këndi i drejtimit do të numëronte mbrapsht kur supozohej të numëronte lart dhe anasjelltas. Zgjidhja për këtë problem ishte kalimi i arktangentit në formën e arctan (Mx/My). Ndërsa kjo zgjidhi përmbysjen e rritjes, nuk dha titullin e duhur të pajisjes, i cili është vendi ku hynë në lojë kuadrantët. Zgjidhja e thjeshtë për këtë ishte shtimi i një ndryshimi bazuar në kuadrantin përkatës. Kjo mund të shihet në figurat e mëposhtme, të cilat janë edhe një herë pjesë e kodit nga Shtetet 2 dhe 3 të secilit kuadrant.
Deklarata e parë if kryhet nëse titulli i llogaritur nga ekuacioni i MPU është më i madh se titulli i përdoruesit. Nën këtë kusht titulli i hyrjes së përdoruesit i shtohet titullit të pajisjes dhe vlera përkatëse zbritet nga 360. Nëse deklarata else kryhet, ekuacioni i titullit MPU zbritet nga titulli i hyrjes së përdoruesit. Këto kushte u zbatuan për të marrë jo vetëm një vlerë të saktë për NeoPixel, por për të shmangur marrjen e një vlere jashtë intervalit të pranueshëm, e cila është nga 0 në 359 gradë.
Recommended:
Robot Autonome Zjarrfikës me Flakë Vetë Gjetës: 3 Hapa
Roboti Autonome i Zjarrfikësve me Flakë Vetë Gjetës: MUNDSIA E FUQISHME AUTONOME E ZJARRIT ROBOT GEN2.0HII..Ky është projekti ynë i parë. Kështu që le të fillojmë. Koncepti i këtij roboti është shumë i thjeshtë. kurseni jetën e njeriut automatike me kosto të ulët të shpejtë të papërshkueshëm nga zjarri
Arduino Nano-MMA8452Q 3-Bosht 12-bit/8-bit Përshpejtues dixhital dixhital: 4 hapa
Arduino Nano-MMA8452Q 3-Aksi 12-bit/8-bit Përshpejtues dixhital: MMA8452Q është një akselerometër i zgjuar, me fuqi të ulët, me tre boshte, kapacitiv, me mikromakinim me 12 bit rezolucion. Opsionet fleksibile të programueshme të përdoruesit sigurohen me ndihmën e funksioneve të ngulitura në akselerometër, të konfigurueshme në dy ndërprerës
Si të shkatërroni një caliper dixhital dhe si funksionon një caliper dixhital: 4 hapa
Si të rrëzoni një caliper dixhital dhe si funksionon një caliper dixhital: Shumë njerëz dinë të përdorin kalibra për matje. Ky tutorial do t'ju mësojë se si të prishni një caliper dixhital dhe një shpjegim se si funksionon caliper dixhital
Kompas dixhital duke përdorur magnetometrin Arduino dhe HMC5883L: 6 hapa
Kompas dixhital duke përdorur Arduino dhe HMC5883L Magnetometër: Përshëndetje djema, ky sensor mund të tregojë Veriun, Jugun, Lindjen dhe Perëndimin gjeografik, ne njerëzit gjithashtu mund ta përdorim atë kur kërkohet. Kështu që. Në këtë artikull le të përpiqemi të kuptojmë se si funksionon sensori Magnetometër dhe si ta ndërlidhim atë me një mikrokontroll
Gjetës tejzanor me rreze me dyer: 7 hapa (me fotografi)
Gjetës tejzanor me rreze me dyer: Gjetësi tejzanor i diapazonit zbulon nëse diçka është në rrugën e tij duke lëshuar një valë zanore me frekuencë të lartë. Fokusi i këtij udhëzuesi do të jetë sesi dyert dhe zbuluesit e rrezeve tejzanor mund të punojnë së bashku, veçanërisht se si mund të përdoren për të zbuluar kur