فهرست مطالب:

ارتفاع سنج هواپیما RC (سازگار با Telemetry Spektrum): 7 مرحله
ارتفاع سنج هواپیما RC (سازگار با Telemetry Spektrum): 7 مرحله

تصویری: ارتفاع سنج هواپیما RC (سازگار با Telemetry Spektrum): 7 مرحله

تصویری: ارتفاع سنج هواپیما RC (سازگار با Telemetry Spektrum): 7 مرحله
تصویری: ایو رسی: پرواز با جتمن Jetman 2024, نوامبر
Anonim
ارتفاع سنج هواپیما RC (سازگار با Telemetry Spektrum)
ارتفاع سنج هواپیما RC (سازگار با Telemetry Spektrum)

من این ارتفاع سنج را ساختم تا خلبان بداند که در هواپیماهای RC در ایالات متحده زیر 400 پا هستند. دوست من نگران بود زیرا نمی توانست به طور قطعی بگوید که او همیشه زیر 400 فوت است و می خواست اطمینان بیشتری از سنسور با داده های دورسنجی ارائه دهد. بله ، شما می توانید یک سنسور از Spektrum خریداری کنید ، اما می توانید این پروژه را با هزینه کمتر از 20 دلار با تخته های شکست (که قیمت آنها قبلاً افزایش یافته است) بسازید. اگر برنامه نویس J-link را در اختیار دارید ، می توانید با چند دلار آن را روی یک برد سفارشی بسازید. پس از درک پروتکل Xbus ، می توانید هر یک از دیگر سنسورهای پشتیبانی شده را بسازید! اما من در این پروژه فقط ارتفاع سنج را پوشش می دهم…

فهرست قطعات:

  • من برای این پروژه از یک برد میکروکنترلر Seeeduino XIAO استفاده کردم زیرا کوچک است ، از پردازنده M0 استفاده می کند که قدرت زیادی برای این پروژه دارد ، هم I2C و هم SPI آماده خارج شدن از جعبه است و از منطق 3.3v استفاده می کند بنابراین هیچ گونه تغییر سطح انجام نمی شود ضروری.

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

  • برای تشخیص فشار هوا ، یک تخته شکست BMP388 را از Adafruit خریدم. این برد دارای I2C و SPI است و می تواند با منطق 3.3 ولت یا 5 ولت کار کند.

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

  • Protoboard برای سیم کشی مدار
  • لحیم/آهن لحیم کاری
  • هدرهای پین مردانه/زنانه تا بتوانم به راحتی سنسور/میکروکنترلر را جدا کنم.
  • دکمه کوچک. من از این برای تنظیم مجدد ارتفاع شروع استفاده می کنم.
  • مقاومت 10k برای کشیدن روی دکمه.
  • JST-XH کانکتور زن 4 پین برای اتصال به پورت دورسنجی گیرنده Spektrum
  • برنامه نویس SEGGER J-Link EDU تا M0 را بدون بوت لودر فلش کند.

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

  • برد براکت 10 پین Adafruit SWD

    www.adafruit.com/product/2743

تدارکات

  • من همچنین یک محفظه کوچک برای ارتفاع سنج خود چاپ کردم ، اما به این مورد نیاز نیست.
  • اسیلوسکوپ- اگر یکی ندارید ، من این یکی را به شدت توصیه می کنم:

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

مرحله 1: پروتکل تله متری Spektrum را بیاموزید

پروتکل تله متری Spektrum را بیاموزید
پروتکل تله متری Spektrum را بیاموزید
پروتکل تله متری Spektrum را بیاموزید
پروتکل تله متری Spektrum را بیاموزید
پروتکل تله متری Spektrum را بیاموزید
پروتکل تله متری Spektrum را بیاموزید

این کار بیشتر توسط ریموند دومینگو برای من انجام شد. آنها قبلاً یک ارتفاع سنج با Spektrum سازگار کرده بودند ، بنابراین پیروی از آن کد منبع واقعاً کمک کرد. برگه اطلاعات تله متری Spektrum بقیه شکاف ها را پر کرد. اندازه گیری سطوح داده خارج از گیرنده نشان داد که من به منطق 3.3 ولت نیاز دارم.

گیرنده آدرس دستگاه را ارسال می کند و سپس انتظار پاسخ 16 بایتی را دارد. برگه داده ساختار همه سنسورهای مختلف را نشان می دهد. حتی اگر ساختار 16 بایت طول نداشته باشد ، گیرنده انتظار دارد هر بار 16 بایت برگردد.

برگه اطلاعات Spektrum:

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

پروژه ریموند دومینگو:

www.aerobtec.com/download/altisSpektrumInte…

مرحله 2: سخت افزار را انتخاب کنید

Hardware را انتخاب کنید
Hardware را انتخاب کنید
سخت افزار را انتخاب کنید
سخت افزار را انتخاب کنید
سخت افزار را انتخاب کنید
سخت افزار را انتخاب کنید

من برای تشخیص فشار از یک تخته شکست BMP388 از Adafruit استفاده کردم. برک آوت گسست های I2C و SPI را ارائه می دهد و با منطق 3.3 ولت یا 5 ولت کار می کند. Adafruit همیشه با صفحات شکست خود کار شگفت انگیزی انجام می دهد ، بنابراین من آن را خریداری کردم. من به جای آن از تخته DFRobot Gravity BMP388 در ساخت خود استفاده کردم زیرا تخته Adafruit من قبلاً در حال استفاده بود.

با توجه به اینکه دستگاه میزبان I2C از منطق 3.3 ولت استفاده می کند ، من به میکروکنترلر 3.3 ولت نیاز داشتم و می خواستم کوچک باشد. من قصد داشتم از Adafruit Trinket M0 استفاده کنم ، اما آنها نسبتاً گران هستند و تعداد زیادی پین شکسته نشده است. سپس تخته Seeeduino XIAO را پیدا کردم. این یک برد M0 است که هر دو I2C و SPI آماده استفاده هستند و دارای اتصال USB-C است. همچنین ، واقعاً کوچک است! به طور کلی من این تخته را بسیار دوست دارم (حتی اگر کریستال راه اندازی آهسته برای همیشه طول کشید تا بفهمم).

Spektrum از کانکتور مردانه 4 پین JST-XH روی گیرنده برای پورت "Xbus" استفاده می کند که ما به آن ضربه می زنیم. من از یک پلاگین زن 4 پین JST-XH در ارتفاع سنج استفاده کردم و کاملاً کار کرد.

مرحله 3: نوشتن نرم افزار

برای نوشتن همه کد ها از Arduino IDE استفاده کردم. من پروتکل تله متری Spektrum را از برگه اطلاعات آنها کپی کردم و به کتابخانه آردوینو اضافه کردم. از آنجا که Adafruit همیشه کتابخانه های خوبی برای شکستن خود دارد ، من از کتابخانه BMP3XX آنها برای سنسور BMP388 استفاده کردم.

نکات مهم در طراحی من عبارتند از:

  • I2C را طوری تنظیم کنید که به عنوان یک سرویس گیرنده رفتار کند و به آدرس ارتفاع سنج Spektrum (0x12) پاسخ دهد.
  • فشارسنج BMP388 را از طریق SPI بخوانید.
  • داده های ارتفاع را در دو بافر مختلف ذخیره کنید تا درخواست I2C از گیرنده داده ها را خراب نکند و هنگام واکشی داده ها بین دو بافر متناوب شود. این اطمینان می دهد که داده های ارسال شده به گیرنده همیشه کامل است.
  • با استفاده از دکمه ارتفاع سنج را صفر می کند.

برای اطلاعات بیشتر و تجزیه و تحلیل کد ، ویدیو را تماشا کنید.

مرحله 4: سیم را به مدار وصل کنید

سیم را وصل کنید
سیم را وصل کنید
سیم را وصل کنید
سیم را وصل کنید
سیم را وصل کنید
سیم را وصل کنید
سیم را وصل کنید
سیم را وصل کنید

من از protoboard استفاده کردم ، اما اگر می خواهید برای طراحی یک تخته سفارشی اختصاص داده شده وقت بگذارید ، می توانید مدار را بسیار تمیزتر کنید.

کانکتور JST-XH را به پین های I2C XIAO وصل کردم. از آنجا که گیرنده 5 ولت به باس تله متری خروجی می دهد ، مثبت از گذرگاه به پین VCC XIAO رفت. به این ترتیب از تنظیم کننده داخلی 3.3v برای تغذیه سنسور BMP388 استفاده می شود.

مرحله 5: کامپایل بدون بوت لودر

کامپایل بدون بوت لودر
کامپایل بدون بوت لودر
کامپایل بدون بوت لودر
کامپایل بدون بوت لودر
  1. فایل boards.txt خود را پیدا کنید (برای هر تخته ای که استفاده می کنید).

    در مورد من ، اینجا قرار داشت: C: / Users / AppData / Local / Arduino15 / packages / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. برد خود را کپی کرده و نام اولین کلید را برای تعیین نسخه بدون بوت لودر تغییر دهید. من فقط _nbl را به نام اصلی اضافه کردم.

    • قدیمی: seeed_XIAO_m0
    • جدید: seeed_XIAO_m0_nbl
  3. مقدار.name را تغییر دهید:

    • قدیمی: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • جدید: seeed_XIAO_m0_nbl.name = Seeeduino XIAO بدون بوت لودر
  4. پیوند را به فلش بدون بوت لودر با تغییر اسکریپت builder ld تغییر دهید:

    • قدیمی: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • جدید: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Arduino IDE را راه اندازی مجدد کنید.
  6. برد جدید "Seeeduino XIAO No Bootloader" را از منوی بردها انتخاب کنید.
  7. "Export Compiled Binary" را انتخاب کنید
  8. پس از کامپایل ، فایل.bin در پوشه پروژه Arduino شما قرار می گیرد.

مرحله 6: فلش MCU با J-Link

فلش MCU با J-Link
فلش MCU با J-Link
فلش MCU با J-Link
فلش MCU با J-Link
فلش MCU با J-Link
فلش MCU با J-Link

Adafruit دارای راهنمای فوق العاده ای برای برنامه ریزی مجدد بوت لودر در دستگاه M0/M4 است. در مورد ما ، ما می خواهیم از بوت لودر خلاص شویم ، اما به همان شیوه عمل می کند.

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

پس از انجام این کار ، نمی توانید کد را از طریق USB بارگذاری کنید. برای بارگذاری مجدد بوت لودر روی دستگاه ، می توانید از دستورالعمل بالا برای بارگذاری مجدد کد از طریق USB مانند کارخانه استفاده کنید.

راهنمای Adafruit بسیار کامل است ، اما این مراحل اساسی هستند:

  1. سیم های بلوز را به پشت برد XIAO متصل می کنید.

    • راهنمای Adafruit نگفته است که پین RST روی برد شکست 2x5 باید به پین تنظیم مجدد بردهای Adafruit متصل شود. اما برای XIAO ، من نیاز به اتصال به هر چهار پد در پشت برد داشتم.
    • پین VREF باید به پین XIAO 3.3v متصل شود. این به اشکال زدایی می گوید که منطق دستگاه 3.3 ولت است. بدون آن ، اگر گزینه اشتباه را انتخاب کنید ، می توانید به میکروکنترلر آسیب برسانید.
  2. سیم های بلوز را به J-Link وصل کنید.
  3. برد XIAO را با کابل USB روشن کنید.
  4. استودیو Atmel را باز کنید.
  5. Tools Device Programming را انتخاب کنید
  6. برد M0 خود را انتخاب کنید. در این مورد ، ATSAMD21G18A
  7. SWD را انتخاب کنید.
  8. پیکربندی را از هدف بخوانید.
  9. اگر از EDU J-Link استفاده می کنید ، با شرایط استفاده موافقت کنید (در صورت رعایت شرایط استفاده).
  10. بررسی کنید که قرائت ولتاژ در گوشه بالا سمت راست درست است. اگر 3.3 ولت نباشد ، می توانید تخته خود را بشکنید!
  11. پاک کردن فیوز حفاظت از بوت (اندازه بوت لودر را روی 0 بایت تنظیم کنید) ، و سپس برنامه را انتخاب کنید.
  12. در قسمت حافظه ، فایل.bin یا.hex کامپایل شده خود را انتخاب کرده و برنامه را انتخاب کنید.

عیب یابی:

هنگامی که پیکربندی دستگاه را می خوانید ، در صورت دریافت ولتاژ خارج از محدوده ، مطمئن شوید که MCU به برق متصل است و پین J-Link VREF به 3.3 ولت متصل است

مرحله 7: بدون کریستال خارجی کامپایل مجدد کنید

بدون کریستال خارجی کامپایل کنید
بدون کریستال خارجی کامپایل کنید

برد XIAO دارای یک کریستال خارجی است که راه اندازی آن زمان زیادی طول می کشد. گیرنده Spektrum 350 میلی ثانیه پس از روشن شدن دستگاه ، یک دستگاه را در گذرگاه تله متری کشف می کند ، بنابراین باید به کامپایلر بگوییم که به جای آن از نوسان ساز داخلی استفاده کند که باعث راه اندازی تقریباً آنی می شود.

  1. فایل boards.txt را که قبلاً تغییر داده اید پیدا کنید (بله ، من می توانستم این مرحله را قبلاً ذخیره کنم ، اما این برای من یک فرآیند یادگیری بود)
  2. "-DCRYSTALLESS" را به رشته seeed_XIAO_m0_nbl.build.extra_flags اضافه کنید. این امر به کامپایلر می گوید که از نوسان ساز داخلی استفاده کند.
  3. کد را دوباره کامپایل کنید
  4. MCU را دوباره فلش کنید.
  5. مطمئن شوید زمان راه اندازی با استفاده از یک اسیلوسکوپ به اندازه کافی سریع است.

همانطور که در تصویر مشاهده می کنید ، کانال زرد 1 منبع تغذیه است. کانال فیروزه ای 2 پین آماده روی میکروکنترلر است. حدود 10 میلی ثانیه پس از روشن شدن ، کانال دو توسط میکروکنترلر به بالا کشیده می شود که نشان می دهد در حلقه راه اندازی است. پس از انجام تنظیمات ، MCU کد می شود که پین را پایین بکشد ، نشان می دهد که حلقه اصلی در حال شروع است. محدوده نشان می دهد که راه اندازی حدود 3 میلی ثانیه طول می کشد. به طور کلی میکروکنترلر 13 میلی ثانیه پس از روشن شدن نیاز دارد تا آماده به کار باشد.

توصیه شده: