Мазмуну:
- 1 -кадам: Долбоордун функционалдуулугун долбоорлоо
- 2 -кадам: Орнотуу жана зымдын диаграммасы
- 3 -кадам: компоненттерди жана негизги кодду тестирлөө
- 4 -кадам: MPU калибрлөө
- 5 -кадам: Акыркы код
Video: Санарип компас жана баш издегич: 6 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
Авторлор:
Куллан Уилан
Эндрю Люфт
Блейк Джонсон
Ыраазычылыктар:
Калифорния деңиз академиясы
Эван Чанг-Сиу
Киришүү:
Бул долбоордун негизи - багытты көзөмөлдөөчү санариптик компас. Бул колдонуучуга санарип аппаратты колдонуу менен алыскы аралыкты көздөөгө мүмкүнчүлүк берет. Коллоктивдүү аталыш - түндүктөн сааттын жебеси боюнча өлчөнүүчү бурч, ал компас көрсөткөндөй нөл градус деп эсептелет. Түзмөктүн эки негизги функциясы бар: биринчиси - санариптик дисплей шилтемесинде түзмөктүн учурдагы аталышын көрсөтүү, экинчиси - колдонуучунун суранган аталышын киргизүү мүмкүнчүлүгү, ал 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 калибрлөө
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 градуска чейинки алгылыктуу диапазондон тышкары баалуулукту алуудан качуу үчүн ишке ашырылган.
Сунушталууда:
DHT21 Санарип температурасы жана нымдуулук сенсору Arduino менен: 6 кадам
DHT21 Санарип температурасы жана нымдуулук сенсору Arduino менен: Бул окуу куралында биз DHT21 нымдуулук жана температура сенсорун Arduino менен кантип колдонууну жана OLED дисплейде баалуулуктарды көрсөтүүнү үйрөнөбүз
Жарыкка багытталган робот баш. Кайра иштетилген жана кайра колдонулган материалдардан: 11 кадам
Жарыкка багытталган робот баш. Кайра иштетилген жана кайра колдонулган материалдардан: Эгерде кимдир бирөө робототехника бош чөнтөк менен келе алабы деп ойлонсо, балким, бул үйрөтүүчү жооп бере алат. Эски принтердин кайра иштетилген тепкич моторлору, колдонулган теннис топтору, шамдар, колдонулган бальза, эски илгичтин зымы, эмальданган зым
Санарип компас Arduino жана HMC5883L магнитометрин колдонуу: 6 кадам
Санариптик компас Arduino жана HMC5883L магнитометрин колдонот: Салам балдар, бул сенсор Түндүк, Түштүк, Чыгыш жана Батыштын географиялык көрсөткүчтөрүн көрсөтүшү мүмкүн, биз адамдар да аны керек учурда колдоно алмакпыз. Ошентип. Бул макалада келгиле, магнитометрдин сенсорунун кантип иштээрин жана аны микроконтро менен кантип байланыштыруу керектигин түшүнүүгө аракет кылалы
LED Компас жана Альтиметр: 7 кадам (Сүрөттөр менен)
LED Compass жана Altimeter: Светодиоддуу объекттер мени дайыма кызыктырат. Ошондуктан бул долбоор популярдуу санарип компастын HMC5883L сенсорун 48 LED менен айкалыштырат. Светодиоддорду тегерекке коюу менен, жарык болуп турган багыт сиз бара жаткан багыт. Ар бир 7,5 градус суук болот
Баш сөөгү, Ардуино, жаркыраган LED жана жылдыруучу көздөр менен Хэллоуин долбоору - Maker, MakerED, MakerSpaces: 4 кадам
Баш сөөгү, Ардуино, жаркыраган LED жана жылдыруучу көздөр менен Хэллоуин долбоору | Maker, MakerED, MakerSpaces: Skull, Arduino, Blinking LEDs and Scrolling EyesSoon менен Хэллоуин долбоору - Хэллоуин, андыктан кодировкалоодо жана DIYде коркунучтуу долбоор түзөлү (кичине чымырап…). Окутуу 3D-принтери жок адамдар үчүн жасалган, биз 21 см плазманы колдонобуз