جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
يشتمل Ultra-WideBand Feather على وحدة Decawave DWM1000 و ATSAMD21 ARM Cortex M0 في عامل شكل ريشة Adafruit. وحدة DWM1000 هي وحدة لاسلكية متوافقة مع IEEE802.15.4-2011 UWB قادرة على تحديد المواقع بدقة في الأماكن المغلقة ومعدلات بيانات عالية ، مما يجعل هذه اللوحة مثالية لمشاريع الروبوتات التي تتطلب الترجمة.
الميزات: - Decawave DWM1000 للتتبع الدقيق - ARM Cortex M0 للتطبيقات السريعة والقوية - Adafruit Feather متوافق للتكامل مع النظام البيئي الحالي الواسع - واجهة SWD لتطبيقات البرمجة وتصحيح الأخطاء - موصل USB-C - شاحن بطارية LiPo مدمج
لكتابة المشروع بالكامل والتحديثات ، اعرض هذا المشروع على موقعي ركن النماذج الأولية في prototypingcorner.io/projects/uwb-feather
تتوفر الأجهزة والبرامج المصدر لهذا المشروع من مستودع GitHub.
الخطوة 1: تصميم الأجهزة
كما هو مذكور في المقدمة ، يتكون UWB Feather من ATSAMD21 ARM Cortext M0 + للعقول ووحدة Decawave DWM1000 للشبكة اللاسلكية فائقة الاتساع ، في عامل شكل الريشة. التصميم بسيط نسبيًا يتكون من 20 عنصرًا من BoM على ثنائي الفينيل متعدد الكلور من طبقتين. Pinout متوافق مع Adafruit M0 Feather
تتم معالجة شحن LiPo بواسطة وحدة تحكم إدارة الشحن المتكاملة MCP73831 أحادية الخلية والمتكاملة بالكامل. يمكن مراقبة جهد البطارية على D9 ، ولكن يلزم الوصول إلى كل مدخلات الإدخال (IO) ، ويمكن قطع JP1 لتحرير هذا الدبوس. يتم تشكيل تنظيم 3.3 فولت بواسطة منظم خطي منخفض التسرب AP2112K-3.3 ، مما يوفر ما يصل إلى 600 مللي أمبير.
Pinout متوافق تمامًا مع خط Adafruit M0 لسهولة نقل الكود. يتم توصيل خطوط DWM1000 IO بحافلة SPI والدبابيس الرقمية 2 و 3 و 4 لـ RST و IRQ و SPI_CS باحترام (والتي لا يتم عرضها عبر الرأس). يتم توصيل D13 أيضًا بمصباح LED المدمج ، كما هو قياسي بين العديد من اللوحات المتوافقة مع Arduino.
يمكن إجراء البرمجة على رأس SWD أو عبر USB إذا تم تحميلها مع محمل إقلاع مماثل مثل uf2-samdx1 من Microsoft. انظر البرامج الثابتة للمزيد.
ملاحظة على 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: البرنامج الثابت: برمجة Bootloader
يمكن تحميل البرنامج الثابت عبر موصل SWD باستخدام مبرمج مثل J-Link من Segger. الموضح أعلاه هو J-Link EDU Mini. لبدء برمجة اللوحة ، نحتاج إلى تحميل برنامج bootloader الخاص بنا ثم إعداد سلسلة الأدوات الخاصة بنا.
سأستخدم Atmel Studio لوميض أداة تحميل التشغيل. للقيام بذلك ، قم بتوصيل J-Link وافتح Atmel Studio. ثم حدد أدوات> برمجة الجهاز. ضمن الأداة ، حدد J-Link واضبط الجهاز على ATSAMD21G18A ثم انقر فوق تطبيق.
قم بتوصيل J-Link برأس SWD الريش وقم بتطبيق الطاقة إما عبر USB أو عبر البطارية. بمجرد الاتصال ، ضمن توقيع الجهاز ، انقر فوق قراءة. يجب أن يتم نشر مربعات نص توقيع الجهاز والجهد المستهدف وفقًا لذلك. إذا لم يتحققوا من التوصيلات وحاولوا مرة أخرى.
لفلاش أداة تحميل التشغيل ، نحتاج أولاً إلى تعطيل فتيل BOOTPROT. للقيام بذلك ، حدد Fuses> USER_WORD_0. NVMCTRL_BOOTPROT وقم بالتغيير إلى 0 بايت. انقر فوق البرنامج لتحميل التغييرات.
الآن يمكننا وميض أداة تحميل التشغيل عن طريق تحديد Memories> Flash وتعيين موقع أداة تحميل التشغيل. تأكد من Erase Flash قبل تحديد البرمجة وانقر فوق Program. إذا سارت الأمور على ما يرام ، يجب أن تبدأ D13 على السبورة في النبض.
الآن ستحتاج إلى ضبط فتيل BOOTPROT على حجم محمل الإقلاع 8 كيلوبايت. للقيام بذلك ، حدد Fuses> USER_WORD_0. NVMCTRL_BOOTPROT وقم بالتغيير إلى 8192 بايت. انقر فوق البرنامج لتحميل التغييرات.
الآن بعد أن تم وميض محمل الإقلاع ، يجب أن يكون D13 نابضًا وإذا تم توصيله عبر USB ، يجب أن يظهر جهاز تخزين كبير السعة. هذا هو المكان الذي يمكن فيه تحميل ملفات UF2 لبرمجة اللوحة.
الخطوة 4: البرنامج الثابت: رمز وامض مع PlatformIO
يمكن تحميل البرامج الثابتة عبر بروتوكول UF2 أو مباشرة عبر واجهة SWD. سنستخدم هنا PlatformIO لسهولة استخدامها وبساطتها. للبدء ، قم بإنشاء مشروع PIO جديد وحدد Adafruit Feather M0 كاللوحة المستهدفة. عند التحميل عبر SWD باستخدام J-Link ، قم بتعيين upload_protocol في platformio.ini كما هو موضح أدناه.
[env: adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink
يمكنك الآن برمجة اللوحة مع بساطة إطار عمل Arduino.
الخطوة 5: البرامج الثابتة: وميض المرساة
يمكن تكوين وحدات DWM1000 لتكون نقاط ارتساء أو علامات. بشكل عام ، يتم الاحتفاظ بالمراسي في مواقع ثابتة معروفة وتستخدم العلامات أدوات التثبيت للحصول على موضع نسبي لها. لاختبار وحدة DWM1000 ، يمكنك تحميل مثال DW1000-Anchor من مستودع GitHub.
لفلاش هذا البرنامج باستخدام PlatformIO ، من PIO Home ، حدد Open Project ثم ابحث عن موقع مجلد DW1000-Anchor في مستودع GitHub. ثم انقر فوق زر تحميل PIO وسيجد تلقائيًا مسبار التصحيح المرفق (تأكد من توصيله وتشغيل اللوحة).
يجب تحميل البرنامج الثابت للعلامات على لوحة أخرى. ثم يمكن عرض النتيجة في محطة تسلسلية.
الخطوة 6: المضي قدمًا
ستشمل التحسينات الإضافية لهذا المشروع تطوير مكتبة DW1000 جديدة ، وتغير لوحة V1.1 المشاريع الأخرى التي تستخدم تقنية النطاق هذه. إذا كان هناك اهتمام كافٍ فسأفكر في تصنيع وبيع هذه اللوحات.
شكرا للقراءة. اترك أي أفكار أو انتقادات في التعليقات أدناه وتأكد من إطلاعك على المشروع في ركن النماذج الأولية