Мазмұны:
- 1 -қадам: Жобаның функционалдығын жобалау
- 2 -қадам: орнату және сымдар диаграммасы
- 3 -қадам: компоненттер мен негізгі кодты тексеру
- 4 -қадам: MPU калибрлеу
- 5 -қадам: Қорытынды код
Бейне: Цифрлық компас және тақырып іздегіш: 6 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:22
Авторлар:
Куллан Уилан
Эндрю Люфт
Блейк Джонсон
Алғыс:
Калифорния теңіз академиясы
Эван Чан Сиу
Кіріспе:
Бұл жобаның негізі - бағытты қадағалайтын цифрлық компас. Бұл пайдаланушыға цифрлық аппаратты қолдана отырып, ұзақ қашықтыққа жүруге мүмкіндік береді. Ауызша тақырып - бұл сол жақтан сағат тілінің бағытымен өлшенетін бұрыш, ол циркуль көрсеткендей нөлдік градус деп есептеледі. Құрылғының екі негізгі функциясы бар: біріншісі - цифрлық дисплей сілтемесінде құрылғының ағымдағы тақырыбын көрсету, екіншісі - пайдаланушы сұраған тақырыпты енгізу мүмкіндігі, ол светодиодтардың жоғарғы жағында сақинада көрсетіледі компас корпусы. Содан кейін пайдаланушы жарық диодты жарықдиодқа байланысты құрылғының бағытын реттейді. Құрылғының бағыты өзгерген кезде, жарық диоды орталық жарық диодына өтеді, бұл дұрыс бағыттың орнатылғанын көрсетеді.
Жабдықтар:
- 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 арқылы табылған тақырып 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 градусқа дейінгі рұқсат етілген ауқымнан тыс мәнді алудан аулақ болу үшін жүзеге асырылды.
Ұсынылған:
Нұсқаулыққа тақырып пен кілт сөзді таңдаңыз: 6 қадам (суреттермен)
Нұсқауға арналған тақырып пен кілт сөздерді таңдаңыз: Дұрыс атау мен кілт сөздерді таңдау Google іздеу нәтижелерінің бірінші бетіне нұсқаулықпен кірудің немесе интернеттердің қорқынышты көрінбейтін жеріне түсіп кетудің айырмашылығы болуы мүмкін. Кілт сөздер мен тақырып жалғыз емес болса да
СКД -ны пьезо динамигімен қолдану (Рождестволық тақырып): 5 қадам
СКД -ны пьезо динамигімен пайдалану (Рождестволық тақырып): Бұл схема СКД мен пьезо динамигінен және Arduino -дан тұрады. СКД -де «Көңілді Рождество! және Жаңа жыл құтты болсын
FALLOUT шабытты аркадалық шкаф немесе сізге қажет кез келген тақырып: 9 қадам
FALLOUT шабытты аркада шкафы немесе кез келген тақырып: аркада шкафының болуы кез келген ойыншының қондырғысына керемет қосымша болып табылады және көптеген адамдар үшін шелектер тізімінің элементі болып табылады, бірақ олардың бағасы әдетте 1000 доллардан асады. Сонымен, мен шығармашылық жолдарды қолдана отырып, ең аз құрал -жабдықтармен жабдықтауды шештім
Arduino IDE үшін қараңғы тақырып: 5 қадам
Arduino IDE үшін қараңғы тақырып: Бұл оқулықта мен сіздің компьютеріңіздің қараңғы тақырыптары экранның жарығына шамадан тыс әсер ету себебінен Arduino IDE үшін қараңғы тақырыпты қалай орнату керектігін көрсетемін, көздің зақымдану қаупін азайтады. қараңғы?
Ардуино мен HMC5883L магнитометрін қолданатын цифрлық компас: 6 қадам
Сандық компас Arduino мен HMC5883L магнитометрін қолданады: Сәлеметсіздер ме балалар, бұл сенсор географиялық Солтүстік, Оңтүстік, Шығыс және Батысты көрсете алады, біз адамдар оны қажет болған кезде де қолдана аламыз. Сонымен Бұл мақалада магнитометр сенсоры қалай жұмыс істейтінін және оны микроконтромен қалай байланыстыруға болатынын түсінуге тырысайық