Мазмұны:

Цифрлық компас және тақырып іздегіш: 6 қадам
Цифрлық компас және тақырып іздегіш: 6 қадам

Бейне: Цифрлық компас және тақырып іздегіш: 6 қадам

Бейне: Цифрлық компас және тақырып іздегіш: 6 қадам
Бейне: Балаларға шабуыл жасаған үйдегі жын. #тылсымдүние #қорқыныштыоқиғалар #қорқыныштывидеолар 2024, Қараша
Anonim
Цифрлық компас және тақырып табушы
Цифрлық компас және тақырып табушы

Авторлар:

Куллан Уилан

Эндрю Люфт

Блейк Джонсон

Алғыс:

Калифорния теңіз академиясы

Эван Чан Сиу

Кіріспе:

Бұл жобаның негізі - бағытты қадағалайтын цифрлық компас. Бұл пайдаланушыға цифрлық аппаратты қолдана отырып, ұзақ қашықтыққа жүруге мүмкіндік береді. Ауызша тақырып - бұл сол жақтан сағат тілінің бағытымен өлшенетін бұрыш, ол циркуль көрсеткендей нөлдік градус деп есептеледі. Құрылғының екі негізгі функциясы бар: біріншісі - цифрлық дисплей сілтемесінде құрылғының ағымдағы тақырыбын көрсету, екіншісі - пайдаланушы сұраған тақырыпты енгізу мүмкіндігі, ол светодиодтардың жоғарғы жағында сақинада көрсетіледі компас корпусы. Содан кейін пайдаланушы жарық диодты жарықдиодқа байланысты құрылғының бағытын реттейді. Құрылғының бағыты өзгерген кезде, жарық диоды орталық жарық диодына өтеді, бұл дұрыс бағыттың орнатылғанын көрсетеді.

Жабдықтар:

- DIYmall 6M GPS модулі

- HiLetgo MPU9250/6500 9-ось 9 DOF 16 биттік

- Adafruit NeoPixel сақинасы 16

- MakerFocus 4 дана 3.7V литийлі қайта зарядталатын батарея

- ELEGOO MEGA 2560 R3 тақтасы

- Adafruit Mini Lipo w/Mini -B USB ұясы - USB LiIon/LiPoly зарядтаушысы - v1

- 2,8 дюймдік TFT СКД, сенсорлық экранды ажырату тақтасы, MicroSD ұясы

1 -қадам: Жобаның функционалдығын жобалау

Жобаның функционалдығын жобалау
Жобаның функционалдығын жобалау

Бірінші қадам - логиканы және соңғы операциялық функцияны түсіну. Бұл логикалық диаграмма құрылғының үш күйін және сенсордың екі күйін бейнелейді.

1 -күй: жүктелетін күй

Жүктеу күйі Arduino Mega іске қосылған кезде екі сенсордан деректерді алуға мүмкіндік береді. Құрылғы экранда жүктемені көрсетеді, экрандағы барлық сандық мәндерді өшіреді, ал NeoPixel сақинасындағы жарық диодтары шеңберде жанады.

2 күй: Компас режимі

Бұл жағдайда құрылғы цифрлық компас сияқты әрекет етеді. NeoPixel сақинасы жанады, ол құрылғының бағытына қатысты Солтүстік бағытты көрсетеді. Нақты құрылғы атауы СКД экранында құрылғының ендік және бойлықпен бірге көрсетіледі. Сондай -ақ, бұл күй 3 -күйде көрсетілетін пайдаланушы тақырыбын енгізе алады.

3 -күй: тақырыпты бақылау режимі

Бұл жағдайда құрылғы енді пайдаланушыға қажетті тақырыпта болуға көмектеседі. Енді құрылғы СКД экранында ендік пен бойлық деректері бар құрылғылардың бағытын және пайдаланушыларды көрсетеді. Енді NeoPixel сақинасы жанатын болады, бұл пайдаланушылардың құрылғылардың бағытына қатысты екенін көрсетеді.

2 -ші және 3 -ші күйлерде сенсордың екі күйі бар, бұл сенсорлық күйлер құрылғыға құрылғының жұмыс жағдайына байланысты ең дәл деректерді беретін сенсордан деректерді алуға мүмкіндік береді.

Сенсорлық күй 1: MPU

Егер құрылғы қозғалмаса, тақырыптық деректер MPU -дан алынады, себебі бұл құрылғы қозғалмаған кездегі ең дәл деректер.

Сенсор 2 күйі: GPS

Егер құрылғы жылжып жатса, онда бұл бағыттағы деректер GPS чипінен алынады, себебі бұл бұл жағдайда ең дәл деректер.

Құрылғы кез келген уақытта сенсорлық күйге ауыса алады, бұл қондырғының өзгеру жағдайын ескереді. Бұл құрылғының жұмысында маңызды, себебі құрылғыда қолданылатын екі сенсордың екеуінде де олар ұсынатын деректердің дәлдігіне әсер ететін жағдайлар бар. MPU жағдайында чипке автомобильдер мен ғимараттардағы металл конструкциялық материалдар әсерінен жергілікті магнит өрісі оңай әсер етуі мүмкін. GPS чипі қолданылады, ол дәл сол әсер етпейтін тақырыпты дәлірек береді. Дегенмен, GPS қозғалыс кезінде тек бағыт деректерін бере алады, себебі ол ендік пен бойлық деректерінің өзгеруін пайдаланып бағытты есептейді. Сондықтан чиптер бір -бірін толықтырады және сенсордың екі күйін қолдана отырып, құрылғының дәл және сенімді жұмысын қамтамасыз етеді.

2 -қадам: орнату және сымдар диаграммасы

Орнату және сым диаграммасы
Орнату және сым диаграммасы
Орнату және сым диаграммасы
Орнату және сым диаграммасы
Орнату және сым диаграммасы
Орнату және сым диаграммасы

Жоба жоғарыдағы тақтаға ұқсас Arduino Mega клон тақтасын пайдаланады. Жобаның барлық компоненттері осы тақтаға қосылады. Жоғарыда осы жобаның компоненттерін қалай қосуға болатыны туралы егжей -тегжейлі диаграммалар берілген. Түймелерде егжей -тегжейлі схема жоқ, өйткені оларды көптеген жолдармен орнатуға болады. Бұл жобада олар 100 К төмен түсетін резисторды және 3 вольтты сигналды оның түйреуішіне жіберу үшін қарапайым түймені пайдаланады.

3 -қадам: компоненттер мен негізгі кодты тексеру

Жоба деректерді MPU мен GPS чипінен бұрын сипатталғандай алады. Бөлшектердің функционалдығын тексеру үшін экраны бар MPU, GPS және MPU деректерін тексеруге мүмкіндік беретін үш код қоса берілген. Бұл кезеңде компоненттерді іске қосу маңызды, себебі код әр чип үшін бөлек және кез келген мәселелерді соңғы кодта күтпеген қателіктер жіберуден қорықпай шешуге болады.

Қажетті кітапханалар:

Adafruit_ILI9341_Альберт.h

SPI.h

Adafruit_GFX.h

Adafruit_ILI9341.h

TinyGPS ++. Сағ

Adafruit_NeoPixel.h

MPU9250.h

Мұның бәрін жоғарыдағы тақырыптарды іздеу арқылы табуға болады. Мен сілтемелерді жарияламаймын, себебі бұл кітапханалардың көптеген көздерден алынған көшірмелері көп және қауымдастық стандартына сәйкес тек түпнұсқаларға сілтеме жасаймын, мен оларды өздеріңе табуға рұқсат етемін.

4 -қадам: MPU калибрлеу

MPU калибрлеу
MPU калибрлеу

MPU арқылы табылған тақырып 2 -ші және 3 -ші штатта төрт квадрантқа бөлінді. Бұл қажет болды, өйткені біздің калибрлеу әдісі магнитометрден оның х және у осьтері бойынша ең төменгі және ең үлкен шамаларды табуды талап етті. Бұл құрылғыны Жерден басқа кез келген елеулі электромагниттік өрістерден бос үш осінің айналасында кездейсоқ айналдыру арқылы жасалды. Содан кейін біз минималды және максималды мәндерді x және y осінің бойымен алып, теріс мән мен бір шаманың арасындағы шамаларды шектеу үшін оларды масштабтау теңдеуіне қостық. Жоғарыдағы суретте BigX және BigY-сәйкесінше х және у осі бойынша магнитометр деректерінің максималды мәндері, LittleX және LittleY-сәйкесінше IMU.getMagX_uT () және IMU бойынша магнитометр деректерінің минималды мәндері..getMagY_uT ()-кез келген уақытта х және у осі бойымен магнитометрден алынатын мәндер, ал Mx және My-тақырыпты есептеу үшін қолданылатын жаңа масштабталған мәндер.

5 -қадам: Қорытынды код

Қорытынды код
Қорытынды код
Қорытынды код
Қорытынды код
Қорытынды код
Қорытынды код
Қорытынды код
Қорытынды код

Соңғы қадам - соңғы кодты құру. Мен жобалардың соңғы кодының көшірмесін тіркедім. Кодта шарлауға көмектесу үшін жазбалар жасалды. Бұл бөлімнің ең үлкен қиындығы квадранттардың дұрыс жұмыс істеуін қамтамасыз ету болды. Квадранттарды енгізу біз күткеннен де қиын әрі логикалық болып шықты. Біз бастапқыда негізгі арктанды (My/Mx) енгіздік, содан кейін радиандардан градусқа ауыстырдық, себебі Arduino әдепкі бойынша радиандармен шығарады. Алайда, бұл жұмыс істейтін жалғыз квадрант 90 градустан 180 градусқа дейін болды, бұл бізге теріс нәтиже берді және III квадрант болды. Бұл мәселенің шешімі абсолютті мәнді қабылдады, себебі ол әлі де дұрыс өскен. Осы мән 2 -күйдегі дұрыс NeoPixel жарықдиодты жарықтандыру үшін 360 мәнінен алынады және 3 -ші жағдайда ұқсас тақырып математикалық операция қолданылды, егер тақырып пайдаланушының кіріс тақырыбынан үлкен немесе кіші болса, екеуін де көруге болады. кодтың үстінде. Жоғарыда келтірілген суреттерде айдар NeoPixel шамына сәйкес келеді, ол 2 -ші жағдайда құрылғы бағыты мен солтүстіктен ауытқу арасындағы айырмашылық негізінде және қолданушы тақырыбының айырмашылығына негізделген. Бұл жағдайда 90 -дан 180 градусқа дейін III квадрантқа сәйкес келеді. Екі жағдайда да tft.print экранда құрылғыны солтүстіктен оқуға мәжбүр етеді.

Қалған үш квадрант үшін арктанды (My/Mx) енгізу құрылғыны айналдыру кезінде өсудің инверсиясына әкелді, яғни бағыт бұрышы санау керек болғанда кері қарай есептеледі және керісінше. Бұл мәселенің шешімі арктангентті арктанға айналдыру болды (Mx/My). Бұл өсу инверсиясын шешкенімен, ол құрылғының дұрыс атауын бермеді, онда квадранттар ойнады. Бұған қарапайым түзету сәйкес квадрантқа негізделген ауысымды қосу болды. Мұны келесі квадранттың 2 және 3 штаттарының тағы да бір бөлігі болып табылатын келесі суреттерден көруге болады.

Бірінші if операторы егер MPU теңдеуімен есептелетін тақырып пайдаланушы тақырыбынан үлкен болса орындалады. Бұл жағдайда пайдаланушының кіріс айдары құрылғы тақырыбына қосылады және сәйкес мән 360 мәнінен алынады. Егер else операторы орындалса, MPU тақырып теңдеуі пайдаланушының кіріс тақырыбынан алынады. Бұл шарттар NeoPixel -тің нақты мәнін алу үшін ғана емес, сонымен қатар 0 -ден 359 градусқа дейінгі рұқсат етілген ауқымнан тыс мәнді алудан аулақ болу үшін жүзеге асырылды.

Ұсынылған: