Агуулгын хүснэгт:

Дижитал луужин ба гарчиг хайгч: 6 алхам
Дижитал луужин ба гарчиг хайгч: 6 алхам

Видео: Дижитал луужин ба гарчиг хайгч: 6 алхам

Видео: Дижитал луужин ба гарчиг хайгч: 6 алхам
Видео: POTS Research Update 2024, Арваннэгдүгээр
Anonim
Дижитал луужин ба гарчиг хайгч
Дижитал луужин ба гарчиг хайгч

Зохиогчид:

Куллан Уилан

Эндрю Люфт

Блэйк Жонсон

Талархал:

Калифорнийн далайн академи

Эван Чан Сиу

Танилцуулга:

Энэхүү төслийн үндэс нь чиглэлийг хянах дижитал луужин юм. Энэ нь хэрэглэгчийг дижитал аппарат ашиглан холын зайн чиглэлийг дагах боломжийг олгодог. Гол хэллэг бол хойд зүгээс цагийн зүүний дагуу хэмждэг өнцөг бөгөөд үүнийг луужингаар заасан тэг градус гэж үздэг. Төхөөрөмж нь хоёр үндсэн функцтэй: эхнийх нь төхөөрөмжийн одоогийн гарчгийг дижитал дэлгэцийн лавлагаан дээр харуулах, хоёрдугаарт хэрэглэгчийн хүссэн гарчгийг оруулах чадвар бөгөөд энэ нь LED -ийн дээд хэсэгт байрлах цагираг дээр харагдах болно. луужингийн орон сууц. Дараа нь хэрэглэгч гэрэлтүүлсэн LED -тэй холбоотой төхөөрөмжийн чиглэлийг тохируулах болно. Төхөөрөмжийн чиглэл өөрчлөгдөхөд LED нь төвийн LED рүү шилжих бөгөөд энэ нь зөв гарчиг тогтсон болохыг харуулж байна.

Хангамж:

- 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 Jack - USB LiIon/LiPoly цэнэглэгч - v1

- 2.8 TFT LCD дэлгэц нь мэдрэгчтэй дэлгэцтэй, MicroSD залгууртай

Алхам 1: Төслийн функциональ байдлыг төлөвлөх

Төслийн функциональ байдлыг төлөвлөх
Төслийн функциональ байдлыг төлөвлөх

Эхний алхам бол логик болон эцсийн үйл ажиллагааны функцийг ойлгох явдал юм. Энэхүү логик диаграм нь төхөөрөмжийн гурван төлөв, хоёр мэдрэгчийн төлөвийг дүрсэлсэн болно.

Төлөв 1: Ачаалж буй муж

Ачаалах төлөв нь Arduino Mega -ийг асаахад хоёр мэдрэгчийн өгөгдлийг буцааж авах боломжийг олгодог. Төхөөрөмж нь ачааллыг дэлгэц дээр харуулах бөгөөд дэлгэц дээрх бүх тоон утгыг арилгаж, NeoPixel цагираг дээрх LED нь тойрог хэлбэрээр асах болно.

Төлөв 2: Луужингийн горим

Энэ тохиолдолд төхөөрөмж дижитал луужин шиг ажиллах болно. NeoPixel цагираг асаж, төхөөрөмжийн чиглэлийн талаар Хойд чиглэлийг зааж өгнө. Төхөөрөмжийн жинхэнэ гарчиг нь LCD дэлгэц дээр төхөөрөмжийн өргөрөг ба уртрагийн хамт гарч ирнэ. Хэрэглэгч 3 -р мужид харуулах хэрэглэгчийн гарчгийг оруулах боломжтой болно.

Төлөв 3: Толгойг хянах горим

Энэ тохиолдолд төхөөрөмж нь хэрэглэгчийг хүссэн гарчиг дээр нь байрлуулахад туслах болно. Төхөөрөмж нь одоо LCD төхөөрөмж дээр гарч буй төхөөрөмжүүд болон хэрэглэгчдийг өргөрөг, уртрагийн өгөгдлүүдийн хамт харуулах болно. 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 нь x ба y тэнхлэгийн дагуух соронзон хэмжигдэхүүний өгөгдлийн хамгийн их утга, LittleX ба LittleY нь тус тусад нь x ба y тэнхлэгийн дагуух соронзон хэмжигчийн хамгийн бага утга юм 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 нь дэлгэцийг төхөөрөмжийг хойд зүгээс уншихад хүргэдэг.

Бусад гурван квадратуудын хувьд arctan (My/Mx) -ыг хэрэгжүүлснээр төхөөрөмжийг эргүүлэх үед өсөлтийн урвуу өөрчлөлтийг авчирсан, өөрөөр хэлбэл тоолох ёстой үед чиглэлийн өнцөг буурах болно. Энэ асуудлын шийдэл бол арктенгентыг арктаны хэлбэрт шилжүүлэх явдал байв (Mx/My). Энэ нь өсөлтийн урвуу байдлыг шийдсэн боловч энэ нь квадрантын үүрэг гүйцэтгэсэн төхөөрөмжийн зөв чиглэлийг өгөөгүй байна. Үүнийг засах энгийн арга бол харгалзах квадратад суурилсан шилжилтийг нэмэх явдал байв. Үүнийг дараах зургуудаас харж болно, эдгээр нь квадрант бүрийн 2, 3 -р мужуудын кодын хэсэг юм.

MPU тэгшитгэлээр тооцоолсон гарчиг нь хэрэглэгчийн гарчигаас их байвал if гэсэн эхний мэдэгдэл хийгддэг. Энэ нөхцөлд хэрэглэгчийн оролтын гарчгийг төхөөрөмжийн гарчигт нэмж, харгалзах утгыг 360 -аас хасна. Хэрэв else мэдэгдэл хийгдсэн бол хэрэглэгчийн оролтын гарчигнаас MPU гарчгийн тэгшитгэлийг хасна. Эдгээр нөхцлүүд нь зөвхөн NeoPixel -ийн нарийвчлалтай утгыг олж авахаас гадна 0-359 градусын хоорондох зөвшөөрөгдөх хязгаараас гадуур утгыг олж авахаас зайлсхийхийн тулд хэрэгжүүлсэн болно.

Зөвлөмж болгож буй: