Мазмуну:

Санарип компас жана баш издегич: 6 кадам
Санарип компас жана баш издегич: 6 кадам

Video: Санарип компас жана баш издегич: 6 кадам

Video: Санарип компас жана баш издегич: 6 кадам
Video: RESIDENT EVIL 2 REVELATIONS Как снять полнометражный фильм 2024, Ноябрь
Anonim
Санариптик компас жана баш издегич
Санариптик компас жана баш издегич

Авторлор:

Куллан Уилан

Эндрю Люфт

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

Ыраазычылыктар:

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

Эван Чанг-Сиу

Киришүү:

Бул долбоордун негизи - багытты көзөмөлдөөчү санариптик компас. Бул колдонуучуга санарип аппаратты колдонуу менен алыскы аралыкты көздөөгө мүмкүнчүлүк берет. Коллоктивдүү аталыш - түндүктөн сааттын жебеси боюнча өлчөнүүчү бурч, ал компас көрсөткөндөй нөл градус деп эсептелет. Түзмөктүн эки негизги функциясы бар: биринчиси - санариптик дисплей шилтемесинде түзмөктүн учурдагы аталышын көрсөтүү, экинчиси - колдонуучунун суранган аталышын киргизүү мүмкүнчүлүгү, ал LEDлердин жогору жагында чагылдырылат. компастын корпусу. Колдонуучу анда жарыктандырылган LEDга байланыштуу түзмөктүн багытын тууралайт. Түзмөктүн багыты өзгөргөндө, LED борбордук LEDге өтөт, бул туура аталыштын түзүлгөнүн көрсөтөт.

Берилиштер:

- DIYmall 6M GPS модулу

- HiLetgo MPU9250/6500 9-Axis 9 DOF 16 Bit

- Adafruit NeoPixel Ring 16

- MakerFocus 4pcs 3.7V литий батареясы

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

- Adafruit Mini Lipo w/Mini -B USB Jack - USB LiIon/LiPoly заряддагыч түзүлүшү - v1

- 2,8 дюймдук TFT ЖК, сенсордук экрандын үзүлүү тактасы/MicroSD розеткасы

1 -кадам: Долбоордун функционалдуулугун долбоорлоо

Долбоордун Функционалдуулугун Долбоорлоо
Долбоордун Функционалдуулугун Долбоорлоо

Биринчи кадам логиканы жана акыркы иштөө функциясын түшүнүү. Бул логикалык диаграмма түзмөктүн үч абалын жана сенсордун эки абалын сүрөттөйт.

1 -абал: Жүктөлүп жаткан мамлекет

Жүктөө абалы Arduino Mega ишке киргенде эки сенсордон маалыматтарды кайра алууга мүмкүнчүлүк берүү үчүн колдонулат. Түзмөк жүктөөнү экранда көрсөтөт, экрандын бардык сандарынын маанилерин тазалайт жана NeoPixel шакегиндеги LEDлер тегерекче күйөт.

2 -абал: Компас режими

Бул абалда түзмөк санариптик компас сыяктуу иштейт. NeoPixel шакеги жарык болуп, аппараттын багытына карата Түндүктүн багытын көрсөтөт. Чыныгы түзмөктүн аталышы да ЖК экранында түзмөктүн кеңдиги жана узундугу менен бирге көрсөтүлөт. Колдонуучу 3 -абалда көрсөтүлө турган колдонуучунун аталышын киргизе алгыдай абалда болот.

3 -абал: Көз салуу режими

Бул абалда түзмөк эми колдонуучуга керектүү аталышта болууга жардам берет. Түзмөк эми ЖК экранында бараткан түзмөктөрдү жана колдонуучуларды кеңдик жана узундук маалыматтары менен бирге көрсөтөт. Эми NeoPixel шакеги күйүп, колдонуучулардын түзмөктөрдүн багыты боюнча баратканын көрсөтөт.

2 -абалда жана 3 -мамлекеттин ичинде эки сенсордук абал бар, бул сенсордук абалдар түзмөктүн иштөө абалына жараша эң так маалыматтарды берген сенсордон маалыматтарды алууга мүмкүндүк берет.

Сенсор абалы 1: MPU

Эгерде түзмөк жылбай жатса, анда башкы маалымат MPUдан алынат, анткени бул түзмөк жылбай турганда эң так маалымат.

Сенсор абалы 2: GPS

Эгерде түзмөк жылып бара жатса, анда бул жагдайдагы эң так маалыматтар GPS маалыматынан алынат.

Түзмөк буларды каалаган убакта сенсордук абалдарга алмаштырып, бирдиктин өзгөрүү шарттарын эсепке алат. Бул түзмөктүн иштеши үчүн маанилүү, анткени түзмөктө колдонулган эки сенсордун тең маалыматтарынын тактыгына таасир этүүчү шарттары бар. MPU болгон учурда, чипке машиналар жана имараттардагы металл курулуш материалдары себеп болгон жергиликтүү магнит талаалары оңой эле таасир этиши мүмкүн. Ошентип, GPS чипи колдонулат, ал ошол эле таасирлер менен иштебеген бир топ так аталышты камсыздай алат. Бирок, GPS кеңдик жана узундук маалыматтарынын өзгөрүүсүн колдонуп, багытты эсептөөдө, кыймылдап жатканда гана багыт маалыматын бере алат. Ошентип, чиптер бири -бирин толуктап турат жана эки сенсордук абалды колдонуу менен түзмөктүн эң так жана ишенимдүү иштешин камсыздайт.

2 -кадам: Орнотуу жана зымдын диаграммасы

Орнотуу жана зымдардын диаграммасы
Орнотуу жана зымдардын диаграммасы
Орнотуу жана зымдардын диаграммасы
Орнотуу жана зымдардын диаграммасы
Орнотуу жана зымдардын диаграммасы
Орнотуу жана зымдардын диаграммасы

Долбоор жогорудагы тактага окшош Arduino Mega клон тактасын колдонот. Долбоордун бардык компоненттери бул тактага туташтырылат. Жогоруда бул долбоордун компоненттерин кантип туташтыруунун деталдуу схемалары келтирилген. Баскычтарда деталдуу схема жок, анткени бул көптөгөн жолдор менен орнотулушу мүмкүн. Бул долбоордо алар 100K тартылган резисторду жана 3 вольттогу сигналды жөнөтүү үчүн жөнөкөй баскычты колдонушат.

3 -кадам: компоненттерди жана негизги кодду тестирлөө

Долбоор буга чейин айтылгандай, MPUдан да, GPS чипинен да маалыматтарды тартат. Бөлүктөрдүн иштешин текшерүү үчүн экраны бар MPU, GPS жана MPUдан маалыматтарды текшерүүгө мүмкүнчүлүк берген үч код тиркелет. Бул этапта компоненттерди иштетүү маанилүү, анткени код ар бир чип үчүн өзүнчө жана ар кандай маселелерди акыркы коддо күтүлбөгөн каталарды кетирүүдөн коркпостон чечүүгө болот.

Керектүү китепканалар:

Adafruit_ILI9341_Albert.h

SPI.h

Adafruit_GFX.h

Adafruit_ILI9341.h

TinyGPS ++. H

Adafruit_NeoPixel.h

MPU9250.h

Мунун баарын жогорудагы аталыштарды издөө аркылуу табууга болот. Мен шилтемелерди жайгаштырбайм, анткени бул китепканалардын көптөгөн булактары бар жана түпнускага шилтеме берүү жамаатынын стандартын карманып, буларды өзүңүзгө табууга уруксат берем.

4 -кадам: MPU калибрлөө

MPU Калибрлөө
MPU Калибрлөө

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

5 -кадам: Акыркы код

Акыркы код
Акыркы код
Акыркы код
Акыркы код
Акыркы код
Акыркы код
Акыркы код
Акыркы код

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

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

Биринчи if оператору эгер MPU теңдемеси менен эсептелген аталыш колдонуучунун аталышынан чоң болсо, аткарылат. Бул шартта колдонуучунун киргизүү аталышы түзмөктүн аталышына кошулат жана 360тан тийиштүү маанини алып салышат. Эгерде else оператору аткарылса, MPU аталышынын теңдемеси колдонуучунун киргизүү башынан чыгарылат. Бул шарттар NeoPixel үчүн так баалуулукту алуу үчүн гана эмес, 0дөн 359 градуска чейинки алгылыктуу диапазондон тышкары баалуулукту алуудан качуу үчүн ишке ашырылган.

Сунушталууда: