Mündəricat:

RC Plane Altimeter (Spektrum Telemetri ilə uyğundur): 7 addım
RC Plane Altimeter (Spektrum Telemetri ilə uyğundur): 7 addım

Video: RC Plane Altimeter (Spektrum Telemetri ilə uyğundur): 7 addım

Video: RC Plane Altimeter (Spektrum Telemetri ilə uyğundur): 7 addım
Video: Spektrum Vario meter/altimeter setup 2024, Iyul
Anonim
RC Plane Altimeter (Spektrum Telemetri ilə Uyğundur)
RC Plane Altimeter (Spektrum Telemetri ilə Uyğundur)

Pilotun ABŞ -dakı RC təyyarələrində 400 fut həddində olduqlarını bilməsi üçün bu altimetr hazırladım. Həmişə 400 futdan aşağı olduğunu dəqiq deyə bilmədiyi üçün dostum narahat idi və telemetri məlumatları olan bir sensorun təmin edəcəyi əlavə zəmanət istədi. Bəli, Spektrum -dan bir sensor ala bilərsiniz, ancaq bu layihəni qırılma lövhələri ilə (qiyməti artıq şişirdilmiş) 20 dollardan aşağı qiymətə qura bilərsiniz. Əgər artıq J-link proqramçınız varsa, bunu bir neçə dollara xüsusi lövhədə qura bilərsiniz. Xbus protokolunu başa düşdükdən sonra digər dəstəklənən sensorlardan hər hansı birini edə bilərsiniz! Ancaq bu layihədə yalnız bir altimetr əhatə edəcəyəm …

Parça siyahısı:

  • Kiçik olduğu üçün bu layihə üçün Seeeduino XIAO mikrokontroller lövhəsindən istifadə etdim, bu layihə üçün çox gücə malik olan M0 prosessorundan istifadə edir, həm I2C, həm də SPI qutudan çıxmağa hazırdır və 3.3v məntiqdən istifadə edir, buna görə heç bir səviyyə dəyişikliyi yoxdur. tələb olunur.

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • Hava təzyiqi algılaması üçün Adafruit -dən BMP388 qırılma lövhəsi aldım. Lövhədə həm I2C, həm də SPI var və 3.3v və ya 5v məntiqdə işləyə bilər.

    https://www.adafruit.com/product/3966

  • Dövrəni bağlamaq üçün protoboard
  • Lehim/lehimləmə dəmiri
  • Kişi/qadın pin başlıqları, beləliklə sensoru/mikro nəzarətçini asanlıqla ayıra bilərəm.
  • Kiçik düymə. Başlanğıc hündürlüyünü sıfırlamaq üçün bunu istifadə edirəm.
  • Düyməni aşağı çəkmək üçün 10k müqavimət.
  • JST-XH 4 pinli qadın konnektoru, Spektrum alıcısının telemetrik portuna qoşulur
  • SEGGER J-Link EDU proqramçısı, yükləyici olmadan M0-i yanıb söndürə bilər.

    https://www.adafruit.com/product/3571

  • Adafruit SWD 10 pinli kəsmə lövhəsi

    www.adafruit.com/product/2743

Təchizat

  • Mən də altimetrim üçün kiçik bir qutu 3D çap etdim, amma buna ehtiyac yoxdur.
  • Osiloskop- Əgər yoxdursa, bunu məsləhət görürəm:

    https://store.digilentinc.com/analog-discovery-2-1…

Addım 1: Spektrum Telemetrik Protokolunu öyrənin

Spektrum Telemetrik Protokolunu öyrənin
Spektrum Telemetrik Protokolunu öyrənin
Spektrum Telemetrik Protokolunu öyrənin
Spektrum Telemetrik Protokolunu öyrənin
Spektrum Telemetrik Protokolunu öyrənin
Spektrum Telemetrik Protokolunu öyrənin

Bu işi ən çox mənim üçün Raymond Domingo etdi. Onsuz da Spektrum ilə uyğun bir altimetr hazırlamışdılar, buna görə də mənbə kodunu izləmək həqiqətən kömək etdi. Qalan boşluqları Spektrum telemetri məlumat cədvəli doldurdu. Alıcıdan verilənlərin səviyyəsini ölçmək 3.3v məntiqə ehtiyacım olduğunu göstərdi.

Alıcı cihaz ünvanını göndərir və sonra 16 baytlıq bir cavab gözləyir. Məlumat cədvəli bütün müxtəlif sensorlar üçün quruluşları göstərir. Struktur 16 bayt uzun olmasa belə, alıcı hər dəfə 16 bayt geri gözləyir.

Spektrum məlumat cədvəli:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

Raymond Domingonun Layihəsi:

www.aerobtec.com/download/altisSpektrumInte…

Addım 2: Hardware seçin

Hardware seçin
Hardware seçin
Hardware seçin
Hardware seçin
Hardware seçin
Hardware seçin

Təzyiq algılaması üçün Adafruit -dən BMP388 qırılma lövhəsindən istifadə etdim. Breakout, I2C və SPI qırılmalarını təmin edir və 3.3v və ya 5v məntiqində işləyir. Adafruit həmişə qırılma lövhələri ilə inanılmaz bir iş görür, buna görə satın aldım. Adafruit lövhəm artıq istifadədə olduğu üçün quruluşumda bir DFRobot Gravity BMP388 lövhəsi istifadə etdim.

Ev sahibi I2C cihazının 3.3v məntiq istifadə etdiyini nəzərə alaraq, 3.3v mikrokontrolörə ehtiyacım var idi və onun kiçik olmasını istəyirdim. Adafruit Trinket M0 istifadə etmək niyyətindəyəm, amma nisbətən bahalıdırlar və çoxlu sancaqlar yoxdur. Sonra Seeeduino XIAO lövhəsini tapdım. Həm I2C, həm də SPI ilə birlikdə USB-C konnektoru olan bir M0 lövhəsidir. Bundan əlavə, həqiqətən kiçikdir! Ümumiyyətlə bu lövhəni çox bəyənirəm (yavaş başlanğıc kristalının məni anlamaq üçün sonsuza qədər aparmasına baxmayaraq).

Spektrum, daxil edəcəyimiz "Xbus" portu üçün alıcıda JST-XH ölçülü 4 pinli kişi bağlayıcıdan istifadə edir. Altimetrdə 4 pinli JST-XH dişi fiş istifadə etdim və mükəmməl işləyirdi.

Addım 3: Proqram Yazın

Bütün kodları yazmaq üçün Arduino IDE -dən istifadə etdim. Spektrum telemetri protokolunu məlumat cədvəlindən çıxarıb Arduino kitabxanama əlavə etdim. Adafruit -in qırılmaları üçün həmişə gözəl kitabxanaları olduğu üçün BMP388 sensoru üçün BMP3XX kitabxanasından istifadə etdim.

Dizaynımdan əsas götürülənlər:

  • I2C -ni müştəri cihazı kimi aparmaq və Spektrum altimetr ünvanına (0x12) cavab vermək üçün qurun.
  • SPI vasitəsilə BMP388 barometrini oxuyun.
  • Hündürlük məlumatlarını iki fərqli tamponda qeyd edin ki, alıcıdan gələn I2C sorğusu məlumatları pozmasın və məlumat alınarkən iki tampon arasında dəyişsin. Bu, alıcıya göndərilən məlumatların həmişə tam olmasını təmin edir.
  • Altimetr sıfırlamaq üçün bir düymə istifadə edir.

Daha ətraflı məlumat və kod təhlili üçün videoya baxın.

Addım 4: Dövrəni tel edin

Dövrəni tel edin
Dövrəni tel edin
Dövrəni tel edin
Dövrəni tel edin
Dövrəni tel edin
Dövrəni tel edin
Dövrəni tel edin
Dövrəni tel edin

Protoboard istifadə etdim, ancaq xüsusi bir freze taxtası hazırlamaq üçün vaxt ayırmaq istəyirsinizsə, dövrəni daha təmiz edə bilərsiniz.

JST-XH konnektorunu XIAO-nun I2C sancaqlarına bağladım. Alıcı telemetriya avtobusuna 5 volt çıxardığından, avtobusun pozitivliyi XIAO -nun VCC pininə getdi. Bu yolla, BMP388 sensorunu gücləndirmək üçün yerüstü 3.3v tənzimləyici istifadə olunur.

Addım 5: Bootloader olmadan tərtib edin

Bootloader olmadan tərtib edin
Bootloader olmadan tərtib edin
Bootloader olmadan tərtib edin
Bootloader olmadan tərtib edin
  1. Board.txt faylınızı tapın (istifadə etdiyiniz lövhə üçün).

    Mənim vəziyyətimdə burada yerləşirdi: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt

  2. Lövhənizi kopyalayın və önyükleyici olmayan bir versiya təyin etmək üçün ilk düyməni yenidən adlandırın. Yalnız orijinal ada _nbl əlavə etdim.

    • Köhnə: seeed_XIAO_m0
    • Yeni: seeed_XIAO_m0_nbl
  3. . Name dəyərini dəyişdirin:

    • Köhnə: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Yeni: seeed_XIAO_m0_nbl.name = Seeeduino XIAO Yükləyicisi yoxdur
  4. Oluşturucu ld skriptini dəyişdirərək bağlayıcıyı önyükleyici olmadan yanıb -sönmək üçün dəyişdirin:

    • Köhnə: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Yeni: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Arduino IDE -ni yenidən başladın.
  6. Lövhələr menyusundan yeni "Seeeduino XIAO No Bootloader" lövhəsini seçin.
  7. "Tərtib edilmiş İkili İxrac Et" seçin
  8. Tərtib edildikdən sonra.bin faylı Arduino layihə qovluğunuzda olacaq.

Addım 6: J-Link ilə Flash MCU

J-Link ilə Flash MCU
J-Link ilə Flash MCU
J-Link ilə Flash MCU
J-Link ilə Flash MCU
J-Link ilə Flash MCU
J-Link ilə Flash MCU

Adafruit, M0/M4 cihazında önyükleyicinin yenidən proqramlaşdırılması ilə bağlı fantastik bir bələdçiyə malikdir. Bizim vəziyyətimizdə, önyükleyicidən qurtulmaq istəyirik, amma eyni şəkildə işləyir.

learn.adafruit.com/how-to-program-samd-boo…

Bunu etdikdən sonra kodu USB vasitəsilə yükləyə bilməyəcəksiniz. Zavoddan edə bildiyiniz kimi yenidən USB vasitəsilə kod yükləmək üçün önyükleyicini yenidən cihazın üzərinə yandırmaq üçün yuxarıdakı təlimatı izləyə bilərsiniz.

Adafruit bələdçisi çox dərindir, lakin bunlar əsas addımlardır:

  1. XIAO lövhəsinin arxasındakı lehim tullanan telləri.

    • Adafruit bələdçisi, 2x5 qırılma lövhəsindəki RST pininin Adafruit lövhələrindəki sıfırlama pininə bağlanması lazım olduğunu söyləməmişdir. Ancaq XIAO üçün lövhənin arxasındakı dörd yastığın hamısına qoşulmalıydım.
    • VREF pininin XIAO 3.3v pininə qoşulması lazımdır. Bu, ayıklayıcıya cihaz məntiqinin 3.3v olduğunu bildirir. Onsuz səhv bir seçim etsəniz, mikro nəzarətçiyə zərər verə bilərsiniz.
  2. Atlama tellərini J-Linkə qoşun.
  3. USB kabel ilə XIAO lövhəsini açın.
  4. Atmel Studiyasını açın.
  5. Alətlər Cihaz Proqramlaşdırma seçin
  6. M0 lövhənizi seçin. Bu vəziyyətdə, ATSAMD21G18A
  7. SWD seçin.
  8. Hədəfdən konfiqurasiyanı oxuyun.
  9. EDU J-Link istifadə edirsinizsə, istifadə şərtlərini qəbul edin (istifadə şərtlərinə əməl edirsinizsə).
  10. Sağ üst köşedeki gərginliyin oxunduğunu doğrulayın. 3.3v deyilsə, lövhənizi sındıra bilərsiniz!
  11. Boot qoruyucu sigortasını silin (bootloader ölçüsünü 0 bayt olaraq təyin edin) və sonra proqramı seçin.
  12. Xatirələr bölməsində tərtib etdiyiniz.bin və ya.hex faylını seçin və proqramı seçin.

Giderme:

Cihaz konfiqurasiyasını oxuduğunuzda, bir gərginlik aralığında deyilsə, MCU-nun elektrikə qoşulduğundan və J-Link VREF pininin 3.3 volta qoşulduğundan əmin olun

Addım 7: Xarici Kristal olmadan yenidən tərtib edin

Xarici Kristal olmadan yenidən tərtib edin
Xarici Kristal olmadan yenidən tərtib edin

XIAO lövhəsinin işə salınması uzun zaman alan xarici bir kristal var. Spektrum qəbuledicisi, güc açıldıqdan sonra 350 millisaniyə ərzində telemetrik avtobusda bir cihaz kəşf edir, buna görə də tərtibçiyə bunun yerinə daxili osilatordan istifadə etməsini demək lazımdır ki, bu da işə salınmanı demək olar ki, ani edəcək.

  1. Daha əvvəl dəyişdirdiyiniz board.txt faylını tapın (bəli, bu addımı daha əvvəl xilas edə bilərdim, amma bu mənim üçün öyrənmə prosesi idi)
  2. Seeed_XIAO_m0_nbl.build.extra_flags sətrinə "-DCRYSTALLESS" əlavə edin. Bu, tərtibçiyə daxili osilatordan istifadə etməsini söyləyəcək.
  3. Kodu yenidən tərtib edin.
  4. MCU-nu yenidən yandırın.
  5. Osiloskopdan istifadə edərək başlanğıc vaxtının kifayət qədər sürətli olduğunu yoxlayın.

Şəkildən də gördüyünüz kimi, sarı kanal 1 enerji təchizatıdır. Mavi kanal 2 mikrokontrolörün hazır pinidir. Təxminən 10 milisaniyə sonra, ikinci kanal mikrokontrolör tərəfindən yüksək çəkilir ki, bu da onun quraşdırma döngəsində olduğunu göstərir. Quraşdırma aparıldıqdan sonra, MCU, pinin aşağıya çəkilməsi üçün kodlanır və bu, əsas döngənin başladığını göstərir. Kapsam, qurulmanın təxminən 3 milisaniyə çəkdiyini göstərir. Ümumiyyətlə, mikrokontrolör işə başladıqdan sonra işə salındıqdan sonra 13 millisaniyə çəkir.

Tövsiyə: