Mundarija:

Raqamli kompas va sarlavha topuvchi: 6 qadam
Raqamli kompas va sarlavha topuvchi: 6 qadam

Video: Raqamli kompas va sarlavha topuvchi: 6 qadam

Video: Raqamli kompas va sarlavha topuvchi: 6 qadam
Video: Raffle ticket numbering | How to Sequential Number with Publisher and Number Pro raffle tickets 2024, Noyabr
Anonim
Raqamli kompas va sarlavha topuvchi
Raqamli kompas va sarlavha topuvchi

Mualliflar:

Kullan Vilen

Endryu Luft

Bleyk Jonson

Rahmatlar:

Kaliforniya dengiz akademiyasi

Evan Chang-Siu

Kirish:

Loyihaning asosi - bu yo'nalishni kuzatuvchi raqamli kompas. Bu foydalanuvchiga raqamli apparat yordamida uzoq masofalarga yo'nalishni kuzatib borish imkonini beradi. Sarlavha - bu shimoldan soat yo'nalishi bo'yicha o'lchanadigan burchak, bu kompas ko'rsatganidek nol daraja deb hisoblanadi. Qurilmaning ikkita asosiy vazifasi bor: birinchisi - raqamli displey ma'lumotnomasida qurilmaning joriy sarlavhasini ko'rsatish, ikkinchisi - foydalanuvchining so'ralgan sarlavhasini kiritish qobiliyati, u yuqori qismidagi LEDlar halqasida ko'rsatiladi. kompas uyi. Shundan so'ng, foydalanuvchi yoritilgan LED bilan bog'liq qurilmaning yo'nalishini o'zgartiradi. Qurilmaning yo'nalishi o'zgarganda, LED markaziy LEDga o'tadi, bu to'g'ri sarlavha o'rnatilganligini ko'rsatadi.

Ta'minot:

- DIYmall 6M GPS moduli

- HiLetgo MPU9250/6500 9 o'qli 9 DOF 16 bitli

- Adafruit NeoPixel uzuk 16

- MakerFocus 4 dona 3.7V lityum zaryadlanuvchi batareya

- ELEGOO MEGA 2560 R3 kartasi

- Adafruit Mini Lipo w/Mini -B USB ulagichi - USB LiIon/LiPoly zaryadlovchi - v1

- Sensorli ekranli, MicroSD rozetkali 2,8 dyuymli TFT LCD

1 -qadam: Loyihaning funktsional imkoniyatlarini loyihalash

Loyihaning funktsional imkoniyatlarini loyihalash
Loyihaning funktsional imkoniyatlarini loyihalash

Birinchi qadam mantiqni va yakuniy operatsion funktsiyani tushunishdir. Ushbu mantiqiy diagrammada uchta qurilma holati va ikkita sensor holati tasvirlangan.

1 -holat: yuklanayotgan davlat

Yuklash holati Arduino Mega ishga tushganda ikkita sensordan ma'lumotlarni qaytarib olishiga imkon berish uchun ishlatiladi. Qurilma ekranda yuklanishni ko'rsatadi, ekrandagi barcha raqamli qiymatlarni o'chiradi va NeoPixel halqasidagi LEDlar aylana yonadi.

2 -holat: Kompas rejimi

Bunday holatda, qurilma raqamli kompas kabi ishlaydi. NeoPixel halqasi yonib, qurilmaning yo'nalishi bo'yicha Shimoliy yo'nalishini ko'rsatadi. Haqiqiy qurilma sarlavhasi, shuningdek, LCD displeyda qurilmaning kengligi va uzunligi bilan birga ko'rsatiladi. Shuningdek, foydalanuvchi 3 -holatda ko'rsatiladigan foydalanuvchi sarlavhasini kiritishi mumkin.

3 -holat: Sarlavhani kuzatish rejimi

Bunday holatda, qurilma endi foydalanuvchiga kerakli sarlavhani belgilashga yordam beradi. Endi qurilmada LCD displeyda kenglik va uzunlik ma'lumotlari bilan birga qurilmalar va foydalanuvchilarning ko'rsatadigan qurilmalari ko'rsatiladi. Endi NeoPixel halqasi yonib, foydalanuvchilarning qurilmalarga yo'nalishini ko'rsatadi.

2 -chi va 3 -chi holatlarda ikkita sensorli holat mavjud, bu sensorlar holati qurilmaning ish holatiga qarab eng aniq ma'lumotlarni ta'minlaydigan sensordan ma'lumotlarni olish imkonini beradi.

Sensor holati 1: MPU

Agar qurilma harakat qilmasa, sarlavha ma'lumotlari MPU -dan olinadi, chunki bu qurilma harakatlanmagan paytdagi eng aniq ma'lumotlar.

Sensor holati 2: GPS

Agar qurilma harakatlanayotgan bo'lsa, GPS chipidan sarlavha ma'lumotlari olinadi, chunki bu holatdagi eng aniq ma'lumotlar.

Qurilmaning o'zgarishi sharoitlarini hisobga olish uchun qurilma istalgan vaqtda sensor holatiga o'tishi mumkin. Bu qurilmaning ishlashi uchun juda muhim, chunki qurilmada ishlatiladigan ikkita datchikning ikkalasida ham ular bergan ma'lumotlarning to'g'riligiga ta'sir ko'rsatadigan shartlar mavjud. MPU bo'lsa, chipga mashinalar va metall konstruktsiya materiallari ta'sirida mahalliy magnit maydonlar ta'sir qilishi mumkin. Shunday qilib, xuddi shu ta'sirlar ta'sir qilmaydigan aniqroq sarlavhani ta'minlaydigan GPS -chip ishlatiladi. Biroq, GPS harakatlanayotganda faqat yo'nalish ma'lumotlarini berishi mumkin, chunki u kenglik va uzunlik ma'lumotlarining o'zgarishi yordamida yo'nalishni hisoblab chiqadi. Shunday qilib, chiplar bir -birini to'ldiradi va ikkita sensorli holat yordamida qurilmaning eng aniq va ishonchli ishlashini ta'minlaydi.

2 -qadam: O'rnatish va simlar diagrammasi

O'rnatish va simlar diagrammasi
O'rnatish va simlar diagrammasi
O'rnatish va simlar diagrammasi
O'rnatish va simlar diagrammasi
O'rnatish va simlar diagrammasi
O'rnatish va simlar diagrammasi

Loyiha yuqoridagi taxtaga o'xshash Arduino Mega klon taxtasidan foydalanadi. Loyihadagi barcha komponentlar shu taxtaga ulanadi. Yuqorida ushbu loyihaning tarkibiy qismlarini qanday ulash haqida batafsil diagrammalar berilgan. Tugmalar batafsil sxemaga ega emas, chunki ularni ko'p yo'llar bilan sozlash mumkin. Ushbu loyihada ular 100K pastga tushirish qarshiligi va 3 voltli signalni o'z piniga yuborish uchun oddiy tugmani ishlatadilar.

3 -qadam: komponentlar va asosiy kodni sinovdan o'tkazish

Loyiha yuqorida aytib o'tilganidek, MPU va GPS chipidan ma'lumotlarni oladi. Qismlarning funksionalligini tekshirish uchun ekranli MPU, GPS va MPU ma'lumotlarini sinab ko'rishga imkon beruvchi uchta kod biriktirilgan. Ushbu bosqichda komponentlarni ishga tushirish juda muhim, chunki kod har bir chip uchun alohida va har qanday muammolarni yakuniy kodda kutilmagan xatolarga yo'l qo'yishdan qo'rqmasdan hal qilish mumkin.

Majburiy kutubxonalar:

Adafruit_ILI9341_Albert.h

SPI.h

Adafruit_GFX.h

Adafruit_ILI9341.h

TinyGPS ++. H

Adafruit_NeoPixel.h

MPU9250.h

Bularning barchasini yuqoridagi sarlavhalarni qidirish orqali topish mumkin. Men havolalarni joylashtirmayman, chunki bu kutubxonalarning bir nechta manbalardan nusxalari ko'p va jamoatchilik standartlariga rioya qilgan holda, faqat asl nusxalarga havola qilish, men buni o'zingiz topishingizga ruxsat beraman.

4 -qadam: MPU kalibrlash

MPU kalibrlash
MPU kalibrlash

MPU orqali topilgan sarlavha 2 va 3 -shtatda to'rtta kvadrantga bo'lingan. Bu zarur edi, chunki bizning kalibrlash usuli magnitometrdan uning x va y o'qlari bo'ylab minimal va maksimal kattaliklarni topishni talab qilgan. Bu qurilmani Yerdan boshqa hech qanday muhim elektromagnit maydonlardan xoli uch o'qi atrofida tasodifiy aylantirish orqali amalga oshirildi. Keyin biz x va y o'qlari bo'yicha minimal va maksimal qiymatlarni oldik va manfiy va bitta qiymatlar orasidagi kattaliklarni cheklash uchun ularni o'lchov tenglamasiga qo'shdik. Yuqoridagi rasmda BigX va BigY mos ravishda x va y o'qlari bo'ylab magnitometr ma'lumotlarining maksimal qiymatlari, LittleX va LittleY-mos ravishda x va y o'qi bo'yicha magnitometr ma'lumotlarining minimal qiymatlari, IMU.getMagX_uT () va IMU.getMagY_uT ()-har qanday vaqtda magnitometrdan mos ravishda x va y o'qi bo'ylab olinadigan qiymatlar, va Mx va My-sarlavhani hisoblash uchun ishlatiladigan yangi o'lchovli qiymatlar.

5 -qadam: Yakuniy kod

Yakuniy kod
Yakuniy kod
Yakuniy kod
Yakuniy kod
Yakuniy kod
Yakuniy kod
Yakuniy kod
Yakuniy kod

Oxirgi qadam oxirgi kodni yaratishdir. Men loyihalarning yakuniy kodining nusxasini biriktirdim. Kodni boshqarishda yordam beradigan eslatmalar tuzilgan. Ushbu bo'limning eng katta muammosi kvadrantlarning to'g'ri ishlashiga erishish edi. Kvadrantlarni amalga oshirish biz o'ylagandan ko'ra zerikarli va mantiqiy emas edi. Biz dastlab asosiy arktanni (My/Mx) joriy qildik, so'ngra radianlardan graduslarga o'tkazdik, chunki Arduino sukut bo'yicha radianlarda chiqadi. Biroq, bu ishlaydigan yagona kvadrant 90 gradusdan 180 gradusgacha bo'lgan, bu bizga salbiy natija berdi va III chorakka aylandi. Buning echimi mutlaq qiymatni olish edi, chunki u hali ham to'g'ri o'sdi. Bu qiymat 360 -dan 2 -holatdagi to'g'ri NeoPixel LED -ni yoqish uchun olib tashlandi va shunga o'xshash matematik operatsiya 3 -holatda ishlatilgan, agar sarlavha foydalanuvchining kirish sarlavhasidan kattaroq yoki kichikroq bo'lsa, ikkalasini ham ko'rish mumkin. yuqoridagi kod. Yuqoridagi rasmlarda, sarlavha NeoPixel nuriga mos keladi, u 2 -holat holatida qurilma sarlavhasi va shimolga burilish o'rtasidagi farqga qarab yonadi va foydalanuvchi sarlavhasi. Bu holda 90 dan 180 daraja III kvadrantga to'g'ri keladi. Ikkala holatda ham tft.print ekranni qurilmani shimol tomon yo'nalishini o'qishiga olib keladi.

Boshqa uchta kvadrantlar uchun, arktan (My/Mx) ning qo'llanilishi, qurilma aylanayotganda, aksincha, aylanishni teskari yo'nalishiga olib keldi, ya'ni hisoblash kerak bo'lganda yo'nalish burchagi teskari tomonga siljiydi. Bu muammoning echimi arktangensni arktan (Mx/My) shakliga o'tkazish edi. Bu ortib boruvchi inversiyani hal qilgan bo'lsa -da, u qurilmaning to'g'ri sarlavhasini bermadi, bu erda kvadrantlar o'ynadi. Bunga oddiy tuzatish mos keladigan kvadrantga asoslangan siljishni qo'shish edi. Buni har bir kvadrantning 2 va 3 -shtatlarining kod qismlari bo'lgan quyidagi rasmlarda ko'rish mumkin.

Birinchi if ifoda, agar MPU tenglamasi bilan hisoblangan sarlavha foydalanuvchi sarlavhasidan katta bo'lsa bajariladi. Bunday holda, foydalanuvchining kirish sarlavhasi qurilma sarlavhasiga qo'shiladi va 360 dan mos keladigan qiymat chiqariladi. Agar else iborasi bajarilsa, MPU sarlavhasi tenglamasi foydalanuvchining kirish sarlavhasidan chiqariladi. Bu shartlar faqat NeoPixel uchun aniq qiymatni olish uchun emas, balki 0 dan 359 gradusgacha bo'lgan chegaradan tashqaridagi qiymatni olishdan saqlanish maqsadida amalga oshirildi.

Tavsiya: