תוכן עניינים:

מד גובה מטוס RC (תואם לטלמטריה של Spektrum): 7 שלבים
מד גובה מטוס RC (תואם לטלמטריה של Spektrum): 7 שלבים

וִידֵאוֹ: מד גובה מטוס RC (תואם לטלמטריה של Spektrum): 7 שלבים

וִידֵאוֹ: מד גובה מטוס RC (תואם לטלמטריה של Spektrum): 7 שלבים
וִידֵאוֹ: Why Do Airplanes Go: 50, 40, 30, 20, 10 | Radio Altimeter Explained 2024, נוֹבֶמבֶּר
Anonim
מד גובה מטוס RC (תואם לטלמטריה של Spektrum)
מד גובה מטוס RC (תואם לטלמטריה של Spektrum)

הכנתי את מד הגובה הזה כדי שהטייס יוכל לדעת שהם מתחת לגבול של 400 רגל על מטוסי RC בארה ב. חבר שלי היה מודאג מכיוון שהוא לא יכול לומר בוודאות שהוא תמיד מתחת לגובה של 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.3v או 5v.

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

  • פרוטובארד לחיווט המעגל
  • הלחמה/מגהץ
  • כותרות סיכה לזכר/נקבה כדי שאוכל לנתק בקלות את החיישן/הבקר.
  • כפתור קטן. אני משתמש בזה לאיפוס הגובה ההתחלתי.
  • נגד 10k עבור משיכה בכפתור.
  • מחבר נקבה 4 פינים JST-XH לחיבור ליציאת הטלמטריה של מקלט 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.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" שאליה נקיש. השתמשתי בתקע JST-XH נקבה בעל 4 פינים על מד הגובה וזה עבד בצורה מושלמת.

שלב 3: תוכנת כתיבה

השתמשתי ב- Arduino IDE כדי לכתוב את כל הקוד. העתקתי את פרוטוקול הטלמטריה של Spektrum מתוך גליון הנתונים שלהם והוספתי אותו לספריית ה- Arduino שלי. מכיוון של Adafruit תמיד יש ספריות נחמדות להתפרצויות שלהן, השתמשתי בספריית BMP3XX שלהם לחיישן BMP388.

המסלולים העיקריים מהעיצוב שלי הם:

  • התקן את I2C כך שיתנהג כמכשיר לקוח ותגיב לכתובת מד הגובה של Spektrum (0x12).
  • קרא את הברומטר BMP388 באמצעות SPI.
  • שמור את נתוני הגובה בשני מאגרים שונים כך שבקשת I2C מהמקלט לא תשחית את הנתונים ותחלופי בין שני המאגרים בעת אחזור הנתונים. זה מוודא שהנתונים שנשלחים למקלט תמיד מלאים.
  • משתמש בלחצן כדי לאפס את מד הגובה.

לפרטים נוספים וניתוח קוד, צפו בסרטון.

שלב 4: חוט את המעגל

חוט את המעגל
חוט את המעגל
חוט את המעגל
חוט את המעגל
חוט את המעגל
חוט את המעגל
חוט את המעגל
חוט את המעגל

השתמשתי בפרוטובארד, אבל אם אתה רוצה לקחת את הזמן לעצב לוח טחינה בהתאמה אישית, תוכל להפוך את המעגל להרבה יותר נקי.

חיברתי את מחבר JST-XH לסיכות I2C של XIAO. מכיוון שהמקלט פלט 5 וולט לאוטובוס הטלמטריה, החיובי מהאוטובוס הגיע לסיכת ה- VCC של ה- XIAO. כך משמש הרגולטור המשולב 3.3v להנעת חיישן BMP388.

שלב 5: הידור ללא מטען אתחול

הידור ללא מטען אתחול
הידור ללא מטען אתחול
הידור ללא מטען אתחול
הידור ללא מטען אתחול
  1. מצא את קובץ boards.txt שלך (לכל לוח שבו אתה משתמש).

    במקרה שלי, הוא נמצא כאן: C: / Users / AppData / Local / Arduino15 / חבילות / 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. שנה את המקשר להבהב ללא מטען האתחול על ידי שינוי התסריט 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 out _bootloader.ld
  5. הפעל מחדש את ה- IDE של Arduino.
  6. בחר בלוח החדש "Seeeduino XIAO No Bootloader" מתפריט הלוחות.
  7. בחר "ייצא בינארי מקובץ"
  8. לאחר הידור, קובץ.bin יהיה בתיקיית הפרויקט של Arduino.

שלב 6: Flash MCU עם J-Link

Flash MCU עם J-Link
Flash MCU עם J-Link
Flash MCU עם J-Link
Flash MCU עם J-Link
Flash MCU עם J-Link
Flash 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 לסיכה 3.3V של XIAO. זה אומר לאתר הבאגים שההיגיון של המכשיר הוא 3.3v. בלי זה, אם תבחר באפשרות הלא נכונה, אתה עלול לפגוע בבקר המיקרו.
  2. חבר את חוטי המגשר ל- J-Link.
  3. הפעל את לוח ה- XIAO באמצעות כבל USB.
  4. פתח את סטודיו אטמל.
  5. בחר כלים תכנות מכשירים
  6. בחר את לוח M0 שלך. במקרה זה, ATSAMD21G18A
  7. בחר SWD.
  8. קרא את התצורה מהמטרה.
  9. אם אתה משתמש ב- EDU J-Link, הסכים לתנאי השימוש (אם אתה מקיים את תנאי השימוש).
  10. ודא שקריאת המתח נכונה בפינה הימנית העליונה. אם זה לא 3.3v, אתה יכול לשבור את הלוח שלך!
  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 אלפיות השנייה לאחר ההפעלה, ערוץ 2 נמשך גבוה על ידי הבקר המעיד על הלולאה של ההתקנה. לאחר סיום ההתקנה, ה- MCU מקודד כדי למשוך את הסיכה נמוכה, דבר המציין שהלולאה הראשית מתחילה. ההיקף מראה כי ההתקנה אורכת כ -3 אלפיות השנייה. באופן כללי, המיקרו-בקר לוקח 13 אלפיות השנייה לאחר ההפעלה כדי להיות מוכן לפעולה.

מוּמלָץ: