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

נוצה לוקליזציה של UWB: 6 שלבים
נוצה לוקליזציה של UWB: 6 שלבים

וִידֵאוֹ: נוצה לוקליזציה של UWB: 6 שלבים

וִידֵאוֹ: נוצה לוקליזציה של UWB: 6 שלבים
וִידֵאוֹ: בריחה מהאשליה: ברנרדו קסטרופ חושף את המציאות 2024, נוֹבֶמבֶּר
Anonim
נוצה לוקליזציה של UWB
נוצה לוקליזציה של UWB

ה- Ultra-WideBand Feather משלב את מודול Decawave DWM1000 ו- ATSAMD21 ARM Cortex M0 לתוך גורם הטופס של נוצת Adafruit. מודול DWM1000 הוא מודול אלחוטי תואם UEEB IEEE802.15.4-2011 מסוגל UWB המסוגל למקם דיוק פנימי ושיעורי נתונים גבוהים, מה שהופך את הלוח הזה למושלם לפרויקטים של רובוטיקה שבהם נדרשת לוקליזציה.

תכונות:-Decawave DWM1000 למעקב מדויק-ARM Cortex M0 ליישומים מהירים וחזקים-Adafruit Feather תואם לשילוב עם מערכת אקולוגית רחבה קיימת-ממשק SWD לתכנות וניקוי באגים-מחבר USB-C-מטען סוללות LiPo משולב.

לעריכת הפרויקט ועדכוניו המלאים צפה בפרויקט זה באתר שלי פינת אב טיפוס בכתובת prototypingcorner.io/projects/uwb-feather

חומרת ותוכנת מקור לפרויקט זה זמינים ממאגר GitHub.

שלב 1: עיצוב חומרה

עיצוב חומרה
עיצוב חומרה
עיצוב חומרה
עיצוב חומרה
עיצוב חומרה
עיצוב חומרה

כפי שהוזכר בהקדמה, נוצת UWB מורכבת מ- ATSAMD21 ARM Cortext M0+ עבור המוח וממודול Decawave DWM1000 עבור הרשת האלחוטית הרחבה במיוחד, בצורת גורם הנוצה. העיצוב פשוט יחסית המורכב מ -20 פריטי BoM על לוח PCB דו-שכבתי. Pinout תואם את Adafruit M0 Feather

טעינת LiPo מטופלת על ידי בקר ניהול תא הטעינה MCP73831 חד-תאי מלא. ניתן לעקוב אחר מתח הסוללה ב- D9, אולם נדרשת גישה לכל IO, ניתן לחתוך JP1 כדי לפנות את הסיכה הזו. ויסות 3.3 וולט מבוצע על ידי הרגולטור הליניארי הנמוך של AP2112K-3.3, המספק עד 600mA.

Pinout תואם במלואו לקו הנוצות של Adafruit M0 לנוחות קוד קלה. קווי DWM1000 IO מחוברים לאוטובוס SPI ולפינים הדיגיטליים 2, 3 & 4 עבור RST, IRQ & SPI_CS בכבוד (שאינם נחשפים באמצעות הכותרת). D13 מחובר גם ללוד המשולב, כסטנדרט בקרב לוחות רבים התואמים Arduino.

ניתן לערוך תכנות מראש על פני כותרת ה- SWD או באמצעות USB אם הוא נטען עם מטען אתחול מתאים, כגון uf2-samdx1 ממיקרוסופט. עיין בקושחה למידע נוסף.

הערה ב- V1.0

יש בעיה במחבר USB-C בגרסה 1 של לוח זה. טביעת הרגל בה השתמשתי לא כללה את החיתוך הנדרש לשיטת ההרכבה של הרכיב של רכיב זה.

גרסה 1.1 תכלול תיקון לכך וכן הוספת מחבר micro-b למי שרוצה בכך. ראה שיקולי גרסה 1.1 להלן.

לשיקולי עיצוב חומרי הגלם וחומרה גרסה 1.1 ראו את כתב הפרויקט.

שלב 2: הרכבה

הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה
הַרכָּבָה

מכיוון שרק 20 פריטי BoM ורוב הרכיבים אינם קטנים מ- 0603 (קבלים הגביש 2x היו 0402), הרכבה ידנית של לוח זה הייתה קלה. יצרתי את הסטנסיל PCB והלחמה שיצרה JLCPCB בצבע שחור מאט עם גימור משטח ENIG.

העלות הכוללת עבור 5 לוחות (אם כי ל -10 לא היה הבדל במחירים) והסטנסיל היה 68 דולר אוסטרלי, אולם 42 דולר זה משלוח. הפעם הראשונה שההזמנה מ- JLCPCB ולוחות היו באיכות גבוהה מאוד עם גימור יפה.

שלב 3: קושחה: תכנות מטעין האתחול

קושחה: תכנות מטעין האתחול
קושחה: תכנות מטעין האתחול
קושחה: תכנות מטעין האתחול
קושחה: תכנות מטעין האתחול
קושחה: תכנות מטעין האתחול
קושחה: תכנות מטעין האתחול

ניתן לטעון קושחה מעל מחבר ה- SWD באמצעות מתכנת כגון J-Link מ- Segger. המוצג למעלה הוא J-Link EDU Mini. כדי להתחיל לתכנת את הלוח, עלינו לטעון את מטעין האתחול ולאחר מכן להגדיר את שרשרת הכלים שלנו.

אני אשתמש ב Atmel Studio להבהב את מטעין האתחול. לשם כך, חבר את ה- J-Link ופתח את Atmel Studio. לאחר מכן בחר כלים> תכנות מכשירים. תחת כלי בחר את J-Link והגדר את ההתקן ל- ATSAMD21G18A ולאחר מכן לחץ על החל.

חבר את ה- J-Link לכותרת ה- SWD הנוצה והפעל חשמל באמצעות USB או באמצעות הסוללה. לאחר החיבור, תחת חתימת ההתקן לחץ על קרא. תיבות הטקסט חתימת המכשיר ומתח היעד צריכות להתפשט בהתאם. אם הם לא בודקים את החיבורים ונסו שוב.

כדי להבהב את מטען האתחול עלינו קודם כל להשבית את נתיך BOOTPROT. לשם כך בחר נתיכים> USER_WORD_0. NVMCTRL_BOOTPROT ושנה ל- 0 בתים. לחץ על תוכנית כדי להעלות את השינויים.

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

עכשיו תצטרך להגדיר את הנתיך BOOTPROT לגודל מטען האתחול של 8kB. לשם כך בחר נתיכים> USER_WORD_0. NVMCTRL_BOOTPROT ושנה ל- 8192 בתים. לחץ על תוכנית להעלאת השינויים.

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

שלב 4: קושחה: קוד מהבהב עם PlatformIO

קושחה: קוד מהבהב עם PlatformIO
קושחה: קוד מהבהב עם PlatformIO
קושחה: קוד מהבהב עם PlatformIO
קושחה: קוד מהבהב עם PlatformIO

ניתן להעלות קושחה באמצעות פרוטוקול UF2 או ישירות באמצעות ממשק SWD. כאן נשתמש ב- PlatformIO לנוחותו ופשטותו. כדי להתחיל ליצור פרויקט PIO חדש ובחר Adafruit Feather M0 כ לוח המטרה. בעת העלאה באמצעות SWD עם J-Link הגדר את פרוטוקול ההעלאה ב- platformio.ini כפי שמוצג להלן.

[env: adafruit_feather_m0] פלטפורמה = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink

עכשיו אתה יכול לתכנת את הלוח בפשטות המסגרת של Arduino.

שלב 5: קושחה: מהבהב את העוגן

קושחה: מהבהב את העוגן
קושחה: מהבהב את העוגן
קושחה: מהבהב את העוגן
קושחה: מהבהב את העוגן

ניתן להגדיר את המודולים של DWM1000 לעוגנים או לתגים. בדרך כלל עוגנים נשמרים במיקומים סטטיים ידועים ותגים משתמשים בעוגנים כדי להשיג להם מיקום יחסי. כדי לבדוק את מודול DWM1000 תוכל להעלות את דוגמת DW1000-Anchor ממאגר GitHub.

כדי להבהב תוכנית זו באמצעות PlatformIO, מ- PIO Home, בחר פתח פרויקט ואז מצא את מיקומה של תיקיית DW1000-Anchor במאגר GitHub. לאחר מכן לחץ על כפתור ההעלאה של PIO והוא ימצא באופן אוטומטי את בדיקת איתור הבאגים המצורפת (ודא שהוא מחובר והלוח מופעל).

יש להעלות את קושחת התגים ללוח אחר. לאחר מכן ניתן לצפות בתוצאה במסוף סדרתי.

שלב 6: התקדמות נוספת

הולכים הלאה
הולכים הלאה

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

תודה שקראתם. השאר כל מחשבה או ביקורת בתגובות למטה והקפד לבדוק את הפרויקט על פינת אב טיפוס

מוּמלָץ: