Mundarija:

RC Plane Altimeter (Spektrum telemetriyasi bilan mos): 7 qadam
RC Plane Altimeter (Spektrum telemetriyasi bilan mos): 7 qadam

Video: RC Plane Altimeter (Spektrum telemetriyasi bilan mos): 7 qadam

Video: RC Plane Altimeter (Spektrum telemetriyasi bilan mos): 7 qadam
Video: Spektrum Vario meter/altimeter setup 2024, Noyabr
Anonim
RC Plane Altimeter (Spektrum telemetriyasi bilan mos)
RC Plane Altimeter (Spektrum telemetriyasi bilan mos)

Men bu balandlik o'lchagichni uchuvchi AQShda RC samolyotlarining 400 futlik chegarasi ostida ekanligini bilishi uchun qildim. Do'stim xavotirda edi, chunki u har doim 400 futdan past bo'lganini aniq ayta olmadi va telemetriya ma'lumotlari bo'lgan sensor ta'minlaydigan qo'shimcha ishonchni xohladi. Ha, siz Spektrum -dan datchik sotib olishingiz mumkin, lekin siz bu loyihani 20 dollardan arzonroq narxda sindiruvchi taxtalar bilan qurishingiz mumkin (ular allaqachon narxlari oshirilgan). Agar sizda allaqachon J-link dasturchisi bo'lsa, uni maxsus taxtada bir necha dollarga qurishingiz mumkin. Xbus protokolini tushunganingizdan so'ng, siz boshqa qo'llab -quvvatlanadigan sensorlarni yasashingiz mumkin! Ammo men bu loyihada faqat altimetrni yopaman …

Qismlar ro'yxati:

  • Men bu loyiha uchun Seeeduino XIAO mikrokontroller kartasidan foydalandim, chunki u juda kichik, bu loyiha uchun juda ko'p quvvatga ega M0 protsessoridan foydalanadi, I2C va SPI ham qutidan chiqib ketishga tayyor va 3.3v mantiqdan foydalanadi, shuning uchun hech qanday darajadagi o'zgarish yo'q. talab qilinadi.

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

  • Havo bosimini sezish uchun men Adafruitdan BMP388 sindiruvchi taxtasini sotib oldim. Kengashda I2C ham, SPI ham bor va ular 3.3v yoki 5v mantiqda ishlashi mumkin.

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

  • Elektr simlarini ulash uchun protoboard
  • Lehim/lehim temir
  • Erkak/ayol pinli sarlavhalar, shuning uchun men sensorni/mikrokontrolrni osongina ajratib olaman.
  • Kichik tugma. Men buni boshlang'ich balandlikni tiklash uchun ishlataman.
  • Tugmani pastga tushirish uchun 10 k qarshilik.
  • Spektrum qabul qilgichining telemetriya portiga ulash uchun JST-XH 4 pinli ayol konnektori
  • SEGGER J-Link EDU dasturchisi yuklash vositasiz M0-ni yondiradi.

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

  • Adafruit SWD 10-pinli taxta

    www.adafruit.com/product/2743

Ta'minotlar

  • Men ham 3D balandlik o'lchagichim uchun kichik korpusni chop etdim, lekin bu kerak emas.
  • Osiloskop- Agar sizda yo'q bo'lsa, men buni tavsiya qilaman:

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

1 -qadam: Spektrum telemetriya protokolini o'rganing

Spektrum telemetriya protokolini bilib oling
Spektrum telemetriya protokolini bilib oling
Spektrum telemetriya protokolini bilib oling
Spektrum telemetriya protokolini bilib oling
Spektrum telemetriya protokolini bilib oling
Spektrum telemetriya protokolini bilib oling

Bu men uchun asosan Raymond Domingo tomonidan qilingan. Ular allaqachon Spektrum bilan mos keladigan altimetrni yasashgan, shuning uchun manba kodiga amal qilish haqiqatan ham yordam berdi. Qolgan bo'shliqlarni Spektrum telemetriya ma'lumotlar jadvali to'ldirdi. Qabul qilgichdan ma'lumotlar darajasini o'lchash menga 3.3v mantiq kerakligini ko'rsatdi.

Qabul qilgich qurilma manzilini yuboradi va keyin 16 baytli javobni kutadi. Ma'lumotlar varag'i har xil sensorlarning tuzilishini ko'rsatadi. Strukturaning uzunligi 16 bayt bo'lmasa ham, qabul qiluvchi har safar 16 bayt qaytarilishini kutadi.

Spektrum ma'lumotlar jadvali:

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

Raymond Domingoning loyihasi:

www.aerobtec.com/download/altisSpektrumInte…

2 -qadam: Uskuna tanlash

Uskunani tanlang
Uskunani tanlang
Uskunani tanlang
Uskunani tanlang
Uskunani tanlang
Uskunani tanlang

Men bosimni sezish uchun Adafruit BMP388 panelini ishlatardim. Buzilish I2C va SPI uzilishlarini ta'minlaydi va 3.3v yoki 5v mantig'ida ishlaydi. Adafruit har doim o'z taxtasi bilan ajoyib ish qiladi, shuning uchun men uni sotib oldim. Men qurilishda DFRobot Gravity BMP388 taxtasini ishlatardim, chunki mening Adafruit taxtam allaqachon ishlatilgan.

Xost I2C qurilmasi 3.3v mantig'idan foydalanganligini hisobga olib, menga 3.3v mikrokontroller kerak edi va men uning kichik bo'lishini xohlardim. Men Adafruit Trinket M0 -dan foydalanmoqchi edim, lekin ular nisbatan qimmat va juda ko'p pinlar singan emas. Keyin Seeeduino XIAO taxtasini topdim. Bu USB-C ulagichi bo'lgan I2C va SPI-ga tayyor M0 karta. Bundan tashqari, bu juda kichkina! Umuman olganda, men bu taxtani juda yaxshi ko'raman (garchi sekin boshlang'ich kristal meni tushunishim uchun abadiy olib ketgan bo'lsa ham).

Spektrum biz qabul qiladigan "Xbus" porti uchun qabul qilgichda JST-XH o'lchamli 4-pinli erkak konnektoridan foydalanadi. Men altimetrda 4-pinli JST-XH dişi vilkasidan foydalanardim va u juda yaxshi ishladi.

3 -qadam: dasturiy ta'minot yozish

Men kodni yozish uchun Arduino IDE -dan foydalandim. Men Spektrum telemetriya protokolini ularning ma'lumotlar varag'idan ko'chirib, Arduino kutubxonasiga qo'shdim. Adafruit har doim yaxshi kutubxonalarga ega bo'lgani uchun, men BMP3XX kutubxonasini BMP388 sensori uchun ishlatardim.

Mening dizaynimdan asosiy g'oyalar:

  • I2C -ni mijoz qurilmasi sifatida ishlash va Spektrum altimetr manziliga (0x12) javob berish uchun sozlang.
  • SPI orqali BMP388 barometrini o'qing.
  • Qabul qiluvchidan I2C so'rovi ma'lumotni buzmasligi uchun va balandlik ma'lumotlarini ikki xil buferda saqlang va ma'lumotlarni olishda ikkita bufer o'rtasida almashing. Bu qabul qiluvchiga yuborilgan ma'lumotlar har doim to'liq bo'lishiga ishonch hosil qiladi.
  • Altimetrni nol qilish tugmachasidan foydalanadi.

Qo'shimcha ma'lumot va kodni tahlil qilish uchun videoni ko'ring.

4 -qadam: O'chirish simini ulang

O'chirish simini
O'chirish simini
O'chirish simini
O'chirish simini
O'chirish simini
O'chirish simini
O'chirish simini
O'chirish simini

Men protobarddan foydalanardim, lekin agar siz maxsus frezalashtirilgan taxtani loyihalash uchun vaqt ajratmoqchi bo'lsangiz, siz sxemani ancha toza qilib qo'yishingiz mumkin.

Men JST-XH ulagichini XIAO ning I2C pinlariga uladim. Qabul qilgich telemetriya avtobusiga 5 voltlik kuch sarflagani uchun, avtobusdan ijobiy XIAO ning VCC piniga o'tdi. Shunday qilib, bortdagi 3.3V regulyator BMP388 sensorini quvvatlantirish uchun ishlatiladi.

5 -qadam: yuklovchisiz kompilyatsiya qiling

Bootloader holda kompilyatsiya qilish
Bootloader holda kompilyatsiya qilish
Bootloader holda kompilyatsiya qilish
Bootloader holda kompilyatsiya qilish
  1. Sizning taxtalar.txt faylini toping (qaysi taxtadan foydalanayotgan bo'lsangiz).

    Menimcha, u bu erda joylashgan edi: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / board.txt

  2. Kengashni nusxalash va yuklash vositasi bo'lmagan versiyani ko'rsatish uchun birinchi kalitning nomini o'zgartiring. Men asl nomiga _nbl qo'shdim.

    • Eski: seeed_XIAO_m0
    • Yangi: seeed_XIAO_m0_nbl
  3. . Name qiymatini o'zgartiring:

    • Eski: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Yangi: seeed_XIAO_m0_nbl.name = Seeeduino XIAO yuklovchisiz
  4. O'rnatuvchi ld skriptini o'zgartirib, bog'lovchini yuklovchisiz yonib turishini o'zgartiring:

    • Eski: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Yangi: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Arduino IDE -ni qayta ishga tushiring.
  6. Kengashlar menyusidan "Seeeduino XIAO No Bootloader" yangi taxtasini tanlang.
  7. "Tuzilgan ikkilik faylni eksport qilish" -ni tanlang.
  8. Kompilyatsiya qilinganidan so'ng.bin fayli Arduino loyiha papkasida bo'ladi.

6-qadam: J-Link bilan Flash MCU

J-Link bilan Flash MCU
J-Link bilan Flash MCU
J-Link bilan Flash MCU
J-Link bilan Flash MCU
J-Link bilan Flash MCU
J-Link bilan Flash MCU

Adafruit -da M0/M4 qurilmasida bootloaderni qayta dasturlash bo'yicha ajoyib qo'llanma mavjud. Bizning holatlarimizda biz yuklagichdan qutulishni xohlaymiz, lekin u xuddi shunday ishlaydi.

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

Buni qilganingizdan so'ng, siz USB orqali kodni yuklay olmaysiz. Siz yuklagichni qurilmaga qaytarish uchun yuqoridagi ko'rsatmaga amal qilib, USB orqali kodni zavoddan yuklaganingizdek qayta yuklashingiz mumkin.

Adafruit qo'llanmasi juda batafsil, ammo bu asosiy qadamlar:

  1. XIAO taxtasining orqa tarafidagi lehimli o'tish simlari.

    • Adafruit qo'llanmasi, 2x5 kesish taxtasidagi RST pinini Adafruit taxtalaridagi tiklash piniga ulash zarurligini aytmagan. Lekin XIAO uchun men taxtaning orqa qismidagi to'rtta prokladkaga ulanishim kerak edi.
    • VREF pinini XIAO 3.3v piniga ulash lozim. Bu tuzatuvchiga qurilma mantig'i 3.3v ekanligini bildiradi. Agar siz noto'g'ri variantni tanlasangiz, mikrokontrollerga zarar etkazishingiz mumkin.
  2. Jumper simlarini J-Link-ga ulang.
  3. USB kabeli bilan XIAO kartasini yoqing.
  4. Atmel studiyasini oching.
  5. Asboblar Qurilmani dasturlash -ni tanlang
  6. M0 kartasini tanlang. Bunday holda, ATSAMD21G18A
  7. SWD -ni tanlang.
  8. Konfiguratsiyani maqsaddan o'qing.
  9. Agar siz EDU J-Link-dan foydalanayotgan bo'lsangiz, foydalanish shartlariga rozilik bildiring (agar siz foydalanish shartlariga rioya qilsangiz).
  10. O'ng yuqori burchakda kuchlanish to'g'ri o'qilganligini tekshiring. Agar u 3.3v bo'lmasa, siz taxtangizni sindirib tashlashingiz mumkin!
  11. Yuklash himoyasi sug'urtasini tozalang (yuklash yuklagichi hajmini 0 bayt qilib belgilang) va keyin dasturni tanlang.
  12. Xotiralar bo'limida.bin yoki.hex faylini tanlang va dasturni tanlang.

Muammolarni bartaraf qilish; nosozliklarni TUZATISH:

Agar siz qurilmaning konfiguratsiyasini o'qiyotganingizda, agar siz kuchlanish chegarasidan tashqarida xato qilsangiz, MCU quvvat manbaiga ulanganligiga va J-Link VREF pinining 3,3 voltga ulanganligiga ishonch hosil qiling

7 -qadam: Tashqi kristalsiz qayta kompilyatsiya qiling

Tashqi kristalsiz qayta kompilyatsiya qiling
Tashqi kristalsiz qayta kompilyatsiya qiling

XIAO taxtasida tashqi kristal mavjud bo'lib, uni ishga tushirish uchun ko'p vaqt ketadi. Spektrum qabul qilgichi telemetriya avtobusida qurilmani topgandan keyin 350 millisekundda topadi, shuning uchun biz kompilyatorga uning o'rniga ichki osilatorni ishlatishini aytishimiz kerak, bu ishga tushirishni deyarli bir zumda amalga oshiradi.

  1. Siz ilgari o'zgartirgan taxtalar.txt faylini toping (ha, men sizni bu qadamni oldinroq saqlagan bo'lardim, lekin bu men uchun o'quv jarayoni edi)
  2. Seeed_XIAO_m0_nbl.build.extra_flags qatoriga "-DCRYSTALLESS" qo'shing. Bu kompilyatorga ichki osilatorni ishlatishini aytadi.
  3. Kodni qayta kompilyatsiya qiling.
  4. MCU-ni qayta yoqing.
  5. Osiloskop yordamida ishga tushirish vaqti etarlicha tez ekanligini tekshiring.

Rasmda ko'rib turganingizdek, sariq kanal 1 - quvvat manbai. Ko'k rangli kanal 2 - bu mikrokontroldagi tayyor pin. Taxminan 10 millisekunddan so'ng, ikkinchi kanal mikrokontroller tomonidan yuqoriga ko'tariladi, bu uning o'rnatish tsiklida ekanligini ko'rsatadi. O'rnatish tugagandan so'ng, MCU pinni pastga tushirish uchun kodlanadi, bu asosiy pastadir boshlanganligini ko'rsatadi. Ko'rinib turibdiki, sozlash taxminan 3 millisekund davom etadi. Umuman olganda, mikrokontroller ishga tushgandan so'ng 13 millisekundni oladi.

Tavsiya: