Mündəricat:
- Addım 1: Layihənin İşlevselliğinin Tasarlanması
- Addım 2: Quraşdırma və Tel Şeması
- Addım 3: Komponentləri və Əsas Kodu Test edin
- Addım 4: MPU Kalibrasiyası
- Addım 5: Son Kod
Video: Rəqəmsal Pusula və Başlıq Tapan: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Müəlliflər:
Cullan Whelan
Andrew Luft
Blake Johnson
Təşəkkürlər:
Kaliforniya Dənizçilik Akademiyası
Evan Chang-Siu
Giriş:
Bu layihənin əsası, başlığı izləyən rəqəmsal bir kompasdır. Bu, istifadəçiyə rəqəmsal bir cihazdan istifadə edərək uzun məsafələrdə bir başlıq izləməyə imkan verir. Danışıq başlığı, pusulanın göstərdiyi kimi sıfır dərəcə hesab edilən şimaldan saat yönünde ölçülmüş bir açıdır. Cihazın iki əsas funksiyası var: birincisi, cihazın cari başlığını rəqəmsal ekran istinadında göstərmək, ikincisi isə istifadəçinin istədiyi başlığı daxil etmək imkanıdır ki, bu da yuxarıdakı LED halqasında göstəriləcək. kompas yuvası. İstifadəçi daha sonra işıqlandırılmış LED ilə əlaqəli cihazın istiqamətini tənzimləyərdi. Cihazın istiqaməti dəyişdirildikdə, LED mərkəzi LED -ə gedəcək və bununla da düzgün başlığın qurulduğunu göstərir.
Təchizat:
- DIYmall 6M GPS Modulu
- HiLetgo MPU9250/6500 9-Axis 9 DOF 16 Bit
- Adafruit NeoPixel Üzük 16
- MakerFocus 4 ədəd 3.7V Lityum Şarj Edilə bilən Batareya
- ELEGOO MEGA 2560 R3 lövhəsi
- Adafruit Mini Lipo w/Mini -B USB Jack - USB LiIon/LiPoly şarj cihazı - v1
- 2,8 TFT LCD, MicroSD yuvası olan toxunma lövhəsi ilə
Addım 1: Layihənin İşlevselliğinin Tasarlanması
İlk addım məntiqi və son əməliyyat funksiyasını başa düşməkdir. Bu məntiq diaqramı üç cihaz vəziyyətini və iki sensor vəziyyətini təsvir edir.
Vəziyyət 1: Yüklənən Vəziyyət
Yükləmə vəziyyəti, Arduino Mega'nın işə salındıqda iki sensordan məlumat almasına icazə vermək üçün istifadə olunur. Cihaz ekranda yüklənməni göstərəcək, ekrandakı bütün ədəd dəyərlərini siləcək və NeoPixel halqasındakı LEDlər bir dairədə yanacaq.
Vəziyyət 2: Pusula rejimi
Bu vəziyyətdə cihaz rəqəmsal bir pusula kimi hərəkət edəcək. NeoPixel üzüyü cihazın istiqamətinə görə Şimal istiqamətini göstərmək üçün yanacaq. Əsl cihaz başlığı, cihazın Enlem və Boylam ilə birlikdə LCD ekranda da göstəriləcək. İstifadəçinin 3 -cü vəziyyətdə göstəriləcək istifadəçi başlığına girə biləcəyi də bu vəziyyətdə olacaq.
Dövlət 3: Başlıq İzləmə rejimi
Bu vəziyyətdə cihaz artıq istifadəçinin istədiyi başlıq üzərində qurulmasına kömək edəcək. Cihaz artıq cihazların başlıqlarını və istifadəçilərini LCD ekranda enlem və uzunluq məlumatları ilə birlikdə göstərəcək. NeoPixel üzüyü indi istifadəçilərin cihazların istiqamətinə görə getdiyini göstərmək üçün yanacaq.
Həm Dövlət 2, həm də Dövlət 3 daxilində bu sensor vəziyyətləri cihazın iş vəziyyətindən asılı olaraq ən dəqiq məlumatları verən sensordan məlumatları çəkməyə imkan verən iki sensor vəziyyəti var.
Sensor vəziyyəti 1: MPU
Cihaz hərəkət etmirsə, başlıq məlumatları cihaz hərəkət etmədikdə ən doğru məlumat olduğu üçün MPU -dan çıxarılacaq.
Sensor Vəziyyəti 2: GPS
Cihaz hərəkət edirsə, bu vəziyyətdə ən dəqiq məlumat olduğu üçün başlıq məlumatları GPS çipindən çıxarılacaq.
Cihaz, dəyişdirilən cihazın istifadə şərtlərini nəzərə almaq üçün istənilən vaxt bu vəziyyətlərə keçə bilər. Bu cihazın işləməsi üçün vacibdir, çünki cihazda istifadə olunan iki sensorun hər ikisinin də verdikləri məlumatların düzgünlüyünə təsir edən şərtləri var. MPU vəziyyətində çip, avtomobillərin və binalardakı metal tikinti materiallarının səbəb olduğu yerli maqnit sahələrindən asanlıqla təsirlənə bilər. Beləliklə, eyni təsirlərdən təsirlənməyən daha dəqiq bir başlıq təmin edə bilən bir GPS çipi istifadə olunur. Bununla birlikdə, GPS yalnız hərəkət edərkən başlıq məlumatları verə bilər, çünki enlik və uzunluq məlumatlarının dəyişməsini istifadə edərək başlığı hesablayır. Buna görə çiplər bir -birini tamamlayır və iki sensor vəziyyətindən istifadə edərək cihazın ən dəqiq və etibarlı funksiyasını təmin edir.
Addım 2: Quraşdırma və Tel Şeması
Layihə yuxarıdakı lövhəyə bənzər Arduino Mega klon lövhəsindən istifadə edir. Layihədəki bütün komponentlər bu lövhəyə bağlanacaq. Yuxarıda, bu layihə üçün komponentlərin necə bağlanacağına dair ətraflı diaqramlar verilmişdir. Düymələrdə ətraflı bir sxem yoxdur, çünki bunlar bir çox yolla qurula bilər. Bu proyektdə, təyin edilmiş pininə 3 voltluq bir siqnal göndərmək üçün 100K aşağı düşmə rezistoru və sadə düymədən istifadə edirlər.
Addım 3: Komponentləri və Əsas Kodu Test edin
Layihə həm MPU, həm də GPS çipindən daha əvvəl təsvir edildiyi kimi məlumatları götürəcək. Parçaların funksionallığını yoxlamaq üçün ekranlı MPU, GPS və MPU -dan məlumatların sınanmasını təmin edən üç kod əlavə edilmişdir. Kodun hər bir çip üçün ayrı olduğu və son kodda gözlənilməz səhvlərə yol açmaqdan qorxmadan hər hansı bir problemin həll edilə biləcəyi üçün bu mərhələdə komponentlərin işə salınması vacibdir.
Lazımi kitabxanalar:
Adafruit_ILI9341_Albert.h
SPI.h
Adafruit_GFX.h
Adafruit_ILI9341.h
TinyGPS ++. H
Adafruit_NeoPixel.h
MPU9250.h
Bütün bunları yuxarıdakı başlıqları axtararaq tapmaq olar. Bu kitabxanaların çoxsaylı mənbələrdən çoxlu nüsxələri olduğundan və yalnız orijinallara keçid etmək üçün icma standartına uyğun olaraq bağlantılar yerləşdirməyəcəyəm, bunları özünüz üçün tapmağınıza icazə verəcəyəm.
Addım 4: MPU Kalibrasiyası
Dövlət 2 və Ştat 3 -də MPU vasitəsilə tapılan başlıq dörd kvadranta bölündü. Kalibrləmə üsulumuz x və y oxları boyunca maqnitometrdən minimum və maksimum böyüklükləri tapmağı tələb etdiyi üçün bu lazım idi. Bu, cihazı Yerdən başqa heç bir əhəmiyyətli elektromaqnit sahəsindən azad olaraq üç oxu ətrafında təsadüfi olaraq fırlatmaqla edildi. Minimum və maksimum dəyərləri x və y oxları boyunca götürdük və mənfi bir ilə bir arasındakı dəyərləri məhdudlaşdırmaq üçün onları ölçmə tənliyinə qoyduq. Yuxarıdakı şəkildə, BigX və BigY, müvafiq olaraq x və y oxları boyunca maqnitometr məlumatlarının maksimum dəyərləridir, LittleX və LittleY, müvafiq olaraq, x və y oxları boyunca olan maqnitometr məlumatlarının minimum dəyərləridir, IMU.getMagX_uT () və IMU.getMagY_uT (), x və y oxları boyunca istənilən vaxt maqnitometrdən çəkilən dəyərlərdir və Mx və My başlığı hesablamaq üçün istifadə olunan yeni ölçülü dəyərlərdir.
Addım 5: Son Kod
Son addım son kodu yaratmaqdır. Layihələrin son kodunun bir nüsxəsini əlavə etdim. Kod daxilində kömək etmək üçün qeydlər edilmişdir. Bu bölmənin ən böyük çətinliyi, kvadrantların düzgün işləməsi idi. Quadrantların həyata keçirilməsi, əvvəllər gözlədiyimizdən daha yorucu və məntiqə zidd olduğunu sübut etdi. Başlanğıcda bir əsas arktan (My/Mx) tətbiq etdik və sonra radyanlardan dərəcələrə çevrildik, çünki Arduino standart olaraq radianda çıxış edir. Ancaq bunun işlədiyi yeganə kvadrant 90 dərəcədən 180 dərəcəyə qədər idi ki, bu da bizə mənfi bir nəticə verdi və nəticədə Quadrant III oldu. Bunun həlli mütləq dəyəri götürmək idi, çünki hələ də düzgün şəkildə artırdı. Bu dəyər daha sonra 360 -dan çıxarılaraq 2 -ci vəziyyətdə düzgün NeoPixel LEDini yandırdı və oxşar riyazi əməliyyat 3 -cü vəziyyətdə istifadə edildi, bu başlığın istifadəçinin giriş başlığından daha böyük və ya kiçik olduğuna əsaslanaraq hər ikisini də görmək olar. yuxarıdakı kod. Yuxarıdakı rəqəmlərdə Başlıq, cihazın başlığı ilə vəziyyət 2 -də şimaldan və istifadəçi başlığından fərqi nəzərə alınmaqla yandırılacaq NeoPixel işığına uyğundur. Bu vəziyyətdə, 90 ilə 180 dərəcə III Kadrana uyğundur. Hər iki halda da tft.print ekranın cihazın şimaldan getdiyini oxumasına səbəb olur.
Digər üç kvadrant üçün, arktan (My/Mx) tətbiqi cihaz döndükcə artımın tərsinə gətirib çıxardı, yəni hesablanmalı olduğu zaman başlıq bucağı geri sayılacaqdı və əksinə. Bu problemin həlli arktangenti arktan formasına çevirmək idi (Mx/My). Bu artım inversiyasını həll etsə də, dördbucaqların işə düşdüyü doğru cihaz başlığını vermədi. Bunun sadə düzəlişi, uyğun kvadranta əsaslanan bir dəyişiklik əlavə etmək idi. Bunu bir daha hər bir dördbucağın 2 və 3 -cü dövlətlərinin kod parçaları olan aşağıdakı rəqəmlərdə görmək olar.
MPU tənliyi ilə hesablanan başlıq istifadəçi başlığından böyükdürsə, ilk if ifadəsi aparılır. Bu şərtlə istifadəçinin giriş başlığı cihaz başlığına əlavə olunur və müvafiq dəyər 360 -dan çıxılır. Else ifadəsi yerinə yetirilərsə, MPU başlıq tənliyi istifadəçinin giriş başlığından çıxılır. Bu şərtlər yalnız NeoPixel üçün dəqiq bir dəyər əldə etmək üçün deyil, həm də 0 ilə 359 dərəcə arasında olan məqbul aralığın xaricində bir dəyər əldə etməmək üçün həyata keçirildi.
Tövsiyə:
Ev3 Lego Tutucu/Tapan Robot: 7 addım
Ev3 Lego Gripper/Finder Robotu: Salam! GrabBot, ətrafa yuvarlanmağı sevən çox məqsədli bir robotdur … Kiçik bir cismə rast gəldikdə onu götürüb yenidən başlanğıc vəziyyətinə gətirir
Rəqəmsal kaliper necə sökülür və rəqəmsal kaliper necə işləyir: 4 addım
Rəqəmsal kaliper necə söküləcək və rəqəmsal kaliper necə işləyir: Bir çox insan ölçü üçün kaliperdən necə istifadə edəcəyini bilir. Bu dərslik sizə rəqəmsal kaliperin necə yıxılacağını və rəqəmsal kaliperin necə işlədiyini izah edəcək
(EX) Arduino Düşməni Tapan Radar: 3 addım
(EX) Arduino Düşməni Kəşf edən Radar: Bu layihədə, ev bazanızı qorumaq üçün düşmən aşkar edən bir radar hazırlamağı sizə göstərəcəyəm. Proses çox sadədir, sadəcə mənim addımımı izləyin və bu cihazı quraşdırdıqdan sonra qonşunuz bir daha meyvələrinizi oğurlamayacaq
Attiny85 Məsafə Tapan: 4 Addım (Şəkillərlə birlikdə)
Attiny85 Distance Finder: Bu təlimatı verməzdən əvvəl yeni Attinys (Attinies?) Əldə etmişdim və onlarla bir şey etmək istəyirdim. Ultrasonik diapazonumun yalnız istifadə edilmədiyini gördüm. Bu ultrasonik Attiny məsafə tapıcısı məsafəni verir
Arduino Məsafə Tapan: 3 addım
Arduino Distance Finder: Ultrasonik Sensor istifadə edərək məsafəni tapmaq üçün Atmel Atmega 2560 (Arduino Mega) istifadə edən çörək taxtasına əsaslanan bir layihədir. Çıxış " cm " həm 16x2 LCD Ekranda, həm də Arduino IDE -nin Serial Monitorunda. 16x2 də istifadə edə bilərik