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

أنشئ متتبع حركة يمكن ارتداؤه (BLE من Arduino إلى تطبيق Android Studio مخصص): 4 خطوات
أنشئ متتبع حركة يمكن ارتداؤه (BLE من Arduino إلى تطبيق Android Studio مخصص): 4 خطوات

فيديو: أنشئ متتبع حركة يمكن ارتداؤه (BLE من Arduino إلى تطبيق Android Studio مخصص): 4 خطوات

فيديو: أنشئ متتبع حركة يمكن ارتداؤه (BLE من Arduino إلى تطبيق Android Studio مخصص): 4 خطوات
فيديو: Sérigraphie - Spide la Pub à Perpignan dans les Pyrénées Orientales, 66 2024, شهر نوفمبر
Anonim
قم ببناء متتبع حركة يمكن ارتداؤه (BLE من Arduino إلى تطبيق Android Studio مخصص)
قم ببناء متتبع حركة يمكن ارتداؤه (BLE من Arduino إلى تطبيق Android Studio مخصص)

Bluetooth Low Energy (BLE) هو شكل من أشكال اتصالات Bluetooth منخفضة الطاقة. يجب أن تحد الأجهزة القابلة للارتداء ، مثل الملابس الذكية التي أساعد في تصميمها في Predictive Wear ، من استهلاك الطاقة قدر الإمكان لإطالة عمر البطارية ، واستخدام BLE بشكل متكرر. تحدد مجموعة الاهتمامات الخاصة بالبلوتوث (SIG) العديد من المواصفات التي يجب على الجهاز تنفيذها للتفاعل مع جهاز Bluetooth ، والتي يطلقون عليها اسم "ملفات التعريف". تستخدم معظم ملفات تعريف التطبيقات ملف السمة العامة (GATT) لإرسال البيانات عبر ارتباط BLE. هناك ثلاثة مفاهيم أساسية في BLE: الملفات الشخصية والخدمات والسمات.

قامت Bluetooth SIG بتوحيد العديد من الملفات الشخصية والخدمات والسمات الشائعة. ومع ذلك ، عند إنشاء أجهزة مخصصة ، غالبًا ما تكون هناك حاجة لإنشاء خدمات وسمات مخصصة ولا تتوفر العديد من البرامج التعليمية. لجعل الأمور أكثر صعوبة ، لا تقدم Adafruit أي إرشادات حول تصميم تطبيقات الهاتف المحمول للاقتران مع وحدات BLE الخاصة بهم ومن الصعب عكس هندسة كود المصدر لتطبيقاتهم.

يهدف هذا البرنامج التعليمي إلى شرح:

  1. كيفية تصميم خدمات وخصائص الجات المخصصة
  2. كيفية برمجة Adafruit Bluefruit LE SPI Friend ليكون بمثابة خادم GATT لهذه الخدمات والخصائص المخصصة
  3. كيفية برمجة جهاز Android ليعمل كعميل GATT لقراءة البيانات من خادم GATT

لا يُقصد من هذا البرنامج التعليمي أن يكون قابلاً للترجمة إلى تطبيق جاهز للإنتاج - هذا مجرد مقدمة إلى BLE.

قراءة الخلفية:

  • Adafruit Bluefruit LE SPI Friend documents
  • إذا لم تكن معتادًا على GATT أو BLE

اللوازم

  • 1x - جهاز Arduino (أنا أستخدم UNO لهذا البرنامج التعليمي)
  • 1x - Adafruit Bluefruit LE SPI Friend
  • 8x - أسلاك توصيل من الذكور إلى الذكور
  • معدات اللحام الأساسية (إلى دبابيس رأس اللحام على SPI Friend)
  • جهاز كمبيوتر (لبرمجة جهاز Arduino وجهاز android)

الخطوة 1: تصميم الخدمات والخصائص المخصصة

المقدمة

تقوم هذه المقالة بعمل رائع لشرح كيفية تصميم الخدمات والخصائص المخصصة. أوصي بشدة بقراءة هذا المقال. أقدم نظرة عامة بسيطة للغاية أدناه تتجاهل التفاصيل الدقيقة لصالح البساطة.

خدمات الجات هي مجموعة من الخصائص.

تحتوي خصائص الجات على خاصية وقيمة وصفر أو أكثر من الواصفات.

  • الموقع: كيف يجب أن يتعامل العميل مع البيانات (تطبيق Android) ، على سبيل المثال القراءة والكتابة والكتابة دون رد والإخطار والإشارة.
  • القيمة: القيمة الفعلية للخاصية على سبيل المثال 1089
  • الواصفات: هذه معلومات حول القيمة ، على سبيل المثال الوحدة ، مللي ثانية

التصميم

حسنًا ، أنت تعرف الآن ما هي الخدمات والخصائص ، نحتاج إلى معرفة كيفية تصميم بعض الخدمات والخصائص للحصول على بياناتنا المخصصة وإرسالها من خادم GATT (Arduino) إلى العميل (تطبيق Android). لنفكر في جهاز Arduino يقوم بجمع البيانات من وحدة التسارع الجيروسكوب (AGM). نريد جمع قياسات الجيروسكوب والتسارع من ثلاثة محاور مكانية والوقت الذي تم فيه أخذ هذه القياسات ونقل هذه البيانات إلى تطبيق الهاتف المحمول الخاص بنا. نريد أيضًا معرفة متى نحتاج إلى شحن الجهاز ، لذلك نريد قراءة مستوى البطارية ونقل ذلك إلى تطبيق الهاتف المحمول الخاص بنا.

1. هل يمكننا استخدام أي من الخدمات والخصائص القياسية؟

قامت Bluetooth SIG بتوحيد العديد من الخدمات والخصائص المشتركة. أولاً ، تحقق من ذلك لمعرفة ما إذا كان بإمكانك اختيار أي من الخدمات والخصائص الموحدة. يمكن أن تستخدم الخدمات والخصائص القياسية حزم بيانات أصغر بكثير حيث أن المعرف الفريد عالميًا (UUID) هو 16 بت بينما يجب أن تستخدم الخدمات والخصائص المخصصة 128 بت لمعرفات UUID الخاصة بهم. المزيد عن UUIDs لاحقًا. من خلال بحثنا ، وجدنا "خدمة بطارية" قياسية تحتوي على خاصية واحدة "مستوى البطارية".

2. افصل بين جميع قيم البيانات التي تريد إرسالها عبر BLE إلى الخصائص والخدمات

يمكننا تقسيم نقاط البيانات المخصصة إلى سبع خصائص مخصصة ضمن خدمة مخصصة واحدة. سوف نطلق على هذه الخدمة اسم "خدمة الجمعية العمومية". سوف يحتوي على 7 خصائص: تسارع x ، تسارع y ، تسريع z ، جيروسكوب x ، جيروسكوب y ، جيروسكوب z ، ومرجع زمني.

3. تحديد الخصائص اللازمة لكل خاصية

هناك العديد من الخصائص التي قد تمتلكها هذه الخاصية.

  1. قراءة: يمكن للعميل (تطبيق Android) قراءة قيمة من خادم GATT (Arduino)
  2. الكتابة: يمكن للعميل تغيير قيمة من خادم الجات
  3. اذكر: سيتم إخطار العميل إذا تغيرت قيمة من خادم الجات ومن المتوقع أن يرسل العميل تأكيدًا إلى خادم الجات
  4. إخطار: سيتم إخطار العميل إذا تغيرت قيمة من خادم الجات وليس من المتوقع أن يرسل العميل تأكيدًا إلى خادم الجات

في هذا البرنامج التعليمي ، سنقوم بتعيين جميع خصائصنا للقراءة ، باستثناء مستوى البطارية الذي سيكون له خصائص الإخطار والقراءة.

4. إنشاء UUIDs للخدمات والخصائص المخصصة والعثور على UUIDs القياسي

كما ذكرت بإيجاز سابقًا ، تستخدم خدمات وخصائص Bluetooth SIG المعيارية 16 بت UUID بينما تستخدم الخدمات والخصائص المخصصة 128 بت UUID. على سبيل المثال ، راجع الرقم المخصص لخدمة البطارية على Bluetooth SIG. الرقم المعين 0x180F يمثل 128 بت UUID "0000180F-0000-1000-8000-00805F9B34FB". تعتبر الأرقام الأربعة (16 بت) بالخط العريض فريدة بالنسبة للخدمة أو الخاصية المعيارية المعينة بينما يتم الاحتفاظ بالأحرف الأخرى بين جميع الخدمات والخصائص القياسية. نظرًا لأن كلاً من العميل وخادم الجات يعرفان أن الخدمات والخصائص المعيارية تختلف فقط من خلال الأرقام الغامقة ، يمكن تقليل أحجام حزم البيانات بشكل كبير. ومع ذلك ، لا يمكن أن تعمل الخدمات والخصائص المخصصة وفقًا لهذا الافتراض نفسه.

بدلاً من ذلك ، يجب أن تستخدم الخدمات والخصائص المخصصة UUIDs 128 بت غير مختصر. هنا مولد UUID عبر الإنترنت. أي UUID بخلاف UUID القياسي مقبول لمعرف UUID مخصص. ومع ذلك ، فإن اصطلاح التسمية النموذجي هو الإشارة إلى خدمة مخصصة 00000001- … والخصائص داخل تلك الخدمة المخصصة 00000002- …

فيما يلي جدول بيانات موجز بالخدمات والخصائص التي سنقوم بتنفيذها جنبًا إلى جنب مع UUIDs الخاصة بهم

الخطوة 2: كود اردوينو

قم بتحديث صديق BLUEFRUIT LE SPI

أولاً ، قم بتوصيل Adafruit Bluefruit LE SPI Friend كما هو محدد في دليل التوصيل الخاص بهم وقم بتشغيل جهاز Arduino. تأكد من أنه يمكنك العثور على Adafruit Bluefruit LE SPI Friend على جهاز Android الخاص بك عند البحث عن أجهزة Bluetooth. قم بتنزيل تطبيق Bluefruit Connect ، واتصل بـ Adafruit Bluefruit LE SPI Friend واسمح له بتحديث البرنامج الثابت على الجهاز. هذه الخطوة مهمة. إذا لم تقم بتحديث البرنامج الثابت ، فمن المحتمل أن تفشل الأوامر التي تصدرها للجهاز عبر Arduino ولن يكون هناك خطأ واضح بالنسبة لك لاكتشاف المشكلة.

هنا الريبو الخاص بي لهذا المشروع. يمكنك رؤية كود Arduino الكامل هنا.

نظرة عامة

بعض الأشياء المهمة التي يجب ملاحظتها:

  1. في طريقة الإعداد () ، يجب أن تحتوي جميع UUIDs المخصصة "-" بين كل حرفين. على سبيل المثال ، ستعمل "AT + GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66". "AT + GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" لن يعمل.
  2. لاحظ أنه في طريقة الإعداد ، "battery.begin (صحيح) ؛" يستدعي "ble.reset () ؛" تلقائيا. إذا كنت لا تستخدم خدمة البطارية كما فعلت ، فأنت بحاجة إلى إعادة تعيين وحدة ble (استخدم "ble.reset () ؛") حيث لدي الأمر "battery.begin (true)؛".
  3. في طريقة الإعداد () ، قم بتغيير "if (! ble.begin (false))" إلى "if (! ble.begin (true))" إذا كنت تريد التصحيح.

هذا الرمز واضح بذاته. قمت بتضمين أوصاف لكل طريقة مخصصة. طريقة الإعداد تجعل وحدة BLE جاهزة للعمل كخادم GATT. تمر طريقة الحلقة بعملية مسح زائفة لوحدة جيروسكوب مقياس التسارع (AGM) وتولد رقمًا عشوائيًا من 1 إلى 100 لهذه القيم. يتم استنزاف البطارية بنسبة 1٪ لمحاكاة استخدام البطارية. يمكنك استبدال هذا الرمز بقيم المستشعر الفعلية بسهولة. يفترض هذا الرمز أنك سترسل مجموعة من بيانات AGM ، 6 قياسات طويلة ، بدلاً من قياس واحد لأن تحليل نافذة بيانات AGM من المحتمل أن يكون أكثر فائدة من نقطة واحدة من البيانات. إذا قمت بتغيير حجم المصفوفة ، فلاحظ أنه ستكون هناك تغييرات مطلوبة في كود android studio. لالتقاط مجموعة من البيانات ، يجب عليك تمرير عداد مع البيانات التي تنوي إرسالها. يتيح لك هذا العداد العثور على مكانك في النافذة من تطبيق android studio حتى تتمكن من الانتظار للاستماع إلى نقاط البيانات المفقودة في النافذة. بدون العداد أو بمصفوفة مختلفة الحجم ، فإن مشروع استوديو android إما سيفقد نقاط البيانات أو سيتعثر في حلقة في انتظار نقاط البيانات المتبقية التي يتوقعها.

الخطوة 3: كود Android Studio

هنا الريبو الخاص بي لهذا المشروع. يمكنك رؤية كود Android Studio الكامل هنا.

نظرة عامة

سأستمر في تحديث هذا بنظرة عامة أكثر شمولاً حول كيفية عمل كود arduino و android بالتفصيل … التطبيق يعمل بكامل طاقته لذا لا تتردد في إلقاء نظرة على الكود بنفسك في هذه الأثناء.

الخطوة 4: التقديم النهائي

التطبيق النهائي
التطبيق النهائي
التطبيق النهائي
التطبيق النهائي
التطبيق النهائي
التطبيق النهائي

تهانينا! يتم تنزيل تطبيقك على هاتفك ويتم شحن جهازك القابل للارتداء وينقل البيانات.

إطلاق التطبيق

للبدء ، انقر فوق رمز المشغل للتطبيق.

أذونات المنحة

ستحتاج إلى الموافقة على استخدام بعض الأذونات حتى يعمل التطبيق بشكل صحيح.

مسح للأجهزة

بعد ذلك ، انقر فوق الزر "Scan" في الزاوية العلوية اليسرى من التطبيق.

اختر جهازك القابل للارتداء

بعد ذلك ، حدد جهازك القابل للارتداء من قائمة أجهزة BLE المتاحة. اسمها هو "BLE Arduino Hardware". احصل على DATAWait بينما يحصل التطبيق على بيانات AGM ويحدد المكان الذي لا يزال المستخدم فيه أو يتحرك. انظر النتائج الخاصة بك تحقق من النتائج على الشاشة! انقر فوق زر المزامنة للحصول على قراءة أخرى للبيانات.

موصى به: