جدول المحتويات:

مقياس الارتفاع المستوي RC (متوافق مع القياس عن بعد Spektrum): 7 خطوات
مقياس الارتفاع المستوي RC (متوافق مع القياس عن بعد Spektrum): 7 خطوات

فيديو: مقياس الارتفاع المستوي RC (متوافق مع القياس عن بعد Spektrum): 7 خطوات

فيديو: مقياس الارتفاع المستوي RC (متوافق مع القياس عن بعد Spektrum): 7 خطوات
فيديو: Spektrum AS3000 AS3X Flight Stabilization Module 2024, شهر نوفمبر
Anonim
مقياس الارتفاع المستوي RC (متوافق مع القياس عن بعد Spektrum)
مقياس الارتفاع المستوي RC (متوافق مع القياس عن بعد Spektrum)

لقد صنعت مقياس الارتفاع هذا حتى يتمكن الطيار من معرفة أنها أقل من 400 قدم على طائرات RC في الولايات المتحدة. كان صديقي قلقًا لأنه لا يستطيع أن يقول على وجه اليقين أنه كان دائمًا أقل من 400 قدم ، وأراد التأكيد الإضافي الذي يوفره المستشعر المزود ببيانات القياس عن بُعد. نعم ، يمكنك شراء جهاز استشعار من Spektrum ، ولكن يمكنك إنشاء هذا المشروع بأقل من 20 دولارًا باستخدام لوحات الاختراق (التي تم تضخيم سعرها بالفعل). إذا كان لديك بالفعل مبرمج J-link ، فيمكنك بناء هذا على لوحة مخصصة مقابل بضعة دولارات. ناهيك عن أنه بمجرد فهمك لبروتوكول Xbus ، يمكنك عمل أي من أجهزة الاستشعار الأخرى المدعومة! لكنني سأغطي فقط مقياس الارتفاع في هذا المشروع …

قائمة الاجزاء:

  • لقد استخدمت لوحة متحكم Seeeduino XIAO لهذا المشروع نظرًا لأنه صغير ، ويستخدم معالج M0 الذي لديه الكثير من الطاقة لهذا المشروع ، ولديه كل من I2C و SPI جاهزين للخروج من الصندوق ، ويستخدم منطق 3.3 فولت لذلك لا يوجد تغيير في المستوى مطلوب.

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

  • لاستشعار ضغط الهواء ، اشتريت لوح اختراق BMP388 من Adafruit. تحتوي اللوحة على كل من I2C و SPI مكسرين ، ويمكنهما العمل بمنطق 3.3v أو 5v.

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

  • Protoboard لتوصيل الأسلاك حتى الدائرة
  • جندى / لحام الحديد
  • رؤوس دبوس ذكر / أنثى حتى أتمكن بسهولة من فصل المستشعر / وحدة التحكم الدقيقة.
  • زر صغير. أستخدم هذا لإعادة ضبط ارتفاع البداية.
  • 10 كيلو المقاوم لسحب على الزر.
  • موصل JST-XH 4 سنون أنثى للتوصيل بمنفذ القياس عن بعد لجهاز استقبال Spektrum
  • مبرمج SEGGER J-Link EDU ليومض M0 بدون محمل إقلاع.

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

  • لوحة اندلاع Adafruit SWD ذات 10 سنون

    www.adafruit.com/product/2743

اللوازم

  • لقد قمت أيضًا بطباعة حاوية صغيرة ثلاثية الأبعاد لمقياس الارتفاع الخاص بي ، ولكن هذا ليس ضروريًا.
  • راسم الذبذبات - إذا لم يكن لديك واحد ، فإنني أوصي بشدة بهذا:

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

الخطوة 1: تعلم بروتوكول القياس عن بعد Spektrum

تعلم بروتوكول القياس عن بعد Spektrum
تعلم بروتوكول القياس عن بعد Spektrum
تعلم بروتوكول القياس عن بعد Spektrum
تعلم بروتوكول القياس عن بعد Spektrum
تعلم بروتوكول القياس عن بعد Spektrum
تعلم بروتوكول القياس عن بعد Spektrum

تم تنفيذ هذا في الغالب من أجلي من قبل ريموند دومينغو. لقد صنعوا بالفعل مقياس ارتفاع متوافق مع Spektrum ، لذا فإن اتباع كود المصدر هذا مفيد حقًا. تملأ ورقة بيانات قياس Spektrum عن بُعد بقية الفجوات. أظهر قياس مستويات البيانات خارج جهاز الاستقبال أنني سأحتاج إلى منطق 3.3v.

يرسل جهاز الاستقبال عنوان الجهاز ، ثم يتوقع ردًا من 16 بايت. تُظهر ورقة البيانات الهياكل لجميع أجهزة الاستشعار المختلفة. حتى لو لم يكن طول الهيكل 16 بايت ، يتوقع جهاز الاستقبال عودة 16 بايت في كل مرة.

ورقة بيانات Spektrum:

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

مشروع ريموند دومينغو:

www.aerobtec.com/download/altisSpektrumInte…

الخطوة 2: حدد الأجهزة

حدد الأجهزة
حدد الأجهزة
حدد الأجهزة
حدد الأجهزة
حدد الأجهزة
حدد الأجهزة

لقد استخدمت لوحة اختراق BMP388 من Adafruit لاستشعار الضغط. يوفر الاختراق اختراقات I2C و SPI ، ويعمل بمنطق 3.3v أو 5v. تقوم 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 من ورقة البيانات الخاصة بهم وأضفته إلى مكتبة Arduino الخاصة بي. نظرًا لأن Adafruit يحتوي دائمًا على مكتبات جيدة لاختراقاتها ، فقد استخدمت مكتبة BMP3XX الخاصة بهم لمستشعر BMP388.

النقاط الرئيسية من تصميمي هي:

  • قم بإعداد I2C للعمل كجهاز عميل والاستجابة لعنوان مقياس الارتفاع Spektrum (0x12).
  • اقرأ البارومتر BMP388 من خلال SPI.
  • احفظ بيانات الارتفاع في مخازن مؤقتة مختلفة بحيث لا يفسد طلب I2C من جهاز الاستقبال البيانات ، وقم بالتبديل بين المخزنين المؤقتين عند جلب البيانات. هذا يضمن أن البيانات المرسلة إلى المستلم مكتملة دائمًا.
  • يستخدم زرًا لصفر مقياس الارتفاع.

لمزيد من التفاصيل وتحليل الكود ، شاهد الفيديو.

الخطوة 4: قم بتوصيل الدائرة الكهربائية

قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية
قم بتوصيل الدائرة الكهربائية

لقد استخدمت لوح بروتوبورد ، ولكن إذا كنت تريد أن تأخذ الوقت الكافي لتصميم لوح طحن مخصص ، فيمكنك جعل الدائرة أكثر نظافة.

لقد قمت بتوصيل موصل JST-XH بدبابيس I2C الخاصة بـ XIAO. نظرًا لأن جهاز الاستقبال يخرج 5 فولت إلى ناقل القياس عن بُعد ، فقد انتقل الموجب من الناقل إلى دبوس VCC الخاص بـ XIAO. بهذه الطريقة يتم استخدام منظم 3.3 فولت المدمج لتشغيل مستشعر BMP388.

الخطوة 5: التحويل البرمجي بدون أداة تحميل التشغيل

ترجمة بدون محمل الإقلاع
ترجمة بدون محمل الإقلاع
ترجمة بدون محمل الإقلاع
ترجمة بدون محمل الإقلاع
  1. ابحث عن ملف board.txt الخاص بك (لأي لوحة تستخدمها).

    في حالتي ، كان موجودًا هنا: C: / Users / AppData / Local / Arduino15 \packs / Seeeduino / Hardware / samd / 1.7.7 \boards.txt

  2. انسخ اللوحة الخاصة بك ، وأعد تسمية المفتاح الأول لتحديد إصدار no bootloader. لقد أضفت للتو _nbl إلى الاسم الأصلي.

    • قديم: seeed_XIAO_m0
    • الجديد: seeed_XIAO_m0_nbl
  3. غيّر قيمة.name:

    • قديم: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • الجديد: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. قم بتعديل الرابط ليومض بدون أداة تحميل التشغيل عن طريق تغيير البرنامج النصي للبناء:

    • قديم: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with_bootloader.ld
    • جديد: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts / gcc / flash_with out _bootloader.ld
  5. أعد تشغيل Arduino IDE.
  6. حدد لوحة "Seeeduino XIAO No Bootloader" الجديدة من قائمة اللوحات.
  7. حدد "تصدير ثنائي برمجي"
  8. بمجرد تجميع ملف.bin ، سيكون في مجلد مشروع Arduino.

الخطوة السادسة: Flash MCU With 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. افتح استوديو اتميل.
  5. حدد أدوات برمجة الجهاز
  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. ابحث عن ملف board.txt الذي قمت بتعديله سابقًا (نعم ، كان بإمكاني حفظ هذه الخطوة في وقت سابق ، لكن هذه كانت عملية تعليمية بالنسبة لي)
  2. أضف "-DCRYSTALLESS" إلى سلسلة seeed_XIAO_m0_nbl.build.extra_flags. سيخبر هذا المترجم باستخدام المذبذب الداخلي.
  3. أعد ترجمة الكود.
  4. أعد وميض MCU.
  5. تحقق من أن وقت بدء التشغيل سريع بما يكفي باستخدام راسم الذبذبات.

كما ترى من الصورة ، فإن القناة الصفراء 1 هي مصدر الطاقة. القناة السماوية 2 هي الدبوس الجاهز في وحدة التحكم الدقيقة. بعد حوالي 10 مللي ثانية من بدء التشغيل ، يتم سحب القناة الثانية عالياً بواسطة وحدة التحكم الدقيقة مما يشير إلى أنها في حلقة الإعداد. بمجرد الانتهاء من الإعداد ، يتم ترميز MCU لسحب الدبوس منخفضًا ، مما يشير إلى بدء الحلقة الرئيسية. يوضح النطاق أن الإعداد يستغرق حوالي 3 مللي ثانية. بشكل عام ، يستغرق المتحكم الدقيق 13 مللي ثانية بعد التشغيل ليكون جاهزًا للعمل.

موصى به: