فهرست مطالب:

ایجاد یک ردیاب حرکت پوشیدنی (BLE از آردوینو تا یک برنامه استودیوی اندرویدی سفارشی): 4 مرحله
ایجاد یک ردیاب حرکت پوشیدنی (BLE از آردوینو تا یک برنامه استودیوی اندرویدی سفارشی): 4 مرحله

تصویری: ایجاد یک ردیاب حرکت پوشیدنی (BLE از آردوینو تا یک برنامه استودیوی اندرویدی سفارشی): 4 مرحله

تصویری: ایجاد یک ردیاب حرکت پوشیدنی (BLE از آردوینو تا یک برنامه استودیوی اندرویدی سفارشی): 4 مرحله
تصویری: گوز زدن پریانکا چوپرا هنرپیشه بالیوود در یکی از برنامه های لایف تلویزیونی |C&C 2024, نوامبر
Anonim
ایجاد یک ردیاب حرکت پوشیدنی (BLE از آردوینو تا یک برنامه استودیوی اندرویدی سفارشی)
ایجاد یک ردیاب حرکت پوشیدنی (BLE از آردوینو تا یک برنامه استودیوی اندرویدی سفارشی)

Bluetooth Low Energy (BLE) نوعی ارتباط بلوتوث کم مصرف است. دستگاه های پوشیدنی ، مانند لباس های هوشمندی که در طراحی پیش بینی استفاده می کنم ، باید مصرف برق را تا آنجا که ممکن است برای افزایش عمر باتری محدود کرده و اغلب از BLE استفاده کنند. گروه علاقمندی های ویژه بلوتوث (SIG) چندین ویژگی را تعریف می کند که یک دستگاه باید برای تعامل با دستگاه بلوتوث اجرا کند ، که آنها را "پروفایل" می نامند. اکثر پروفایل های برنامه از مشخصات عمومی ویژگی (GATT) برای ارسال داده از طریق پیوند BLE استفاده می کنند. سه مفهوم اساسی در BLE وجود دارد: پروفایل ها ، خدمات و ویژگی ها.

Bluetooth SIG بسیاری از پروفایل ها ، خدمات و ویژگی های رایج را استاندارد کرده است. با این حال ، هنگام ایجاد سخت افزار سفارشی اغلب نیاز به ایجاد خدمات و ویژگی های سفارشی وجود دارد و آموزش های زیادی در دسترس نیست. برای دشوارتر شدن شرایط ، Adafruit هیچ راهنمایی در مورد طراحی برنامه های تلفن همراه برای جفت شدن با ماژول های BLE آنها ارائه نمی دهد و مهندسی کد منبع برنامه های آنها دشوار است.

این آموزش قصد دارد توضیح دهد:

  1. نحوه طراحی خدمات و ویژگی های سفارشی GATT
  2. نحوه برنامه ریزی Adafruit Bluefruit LE SPI Friend به عنوان سرور GATT برای این خدمات و ویژگی های سفارشی
  3. نحوه برنامه ریزی یک دستگاه Android برای عمل به عنوان سرویس گیرنده GATT برای خواندن داده ها از سرور GATT

این آموزش قرار نیست به یک برنامه آماده تولید ترجمه شود - این فقط مقدمه ای بر BLE است.

زمینه خواندن:

  • مستندات Adafruit Bluefruit LE SPI Friend
  • اگر با GATT یا BLE آشنا نیستید

تدارکات

  • 1x - یک دستگاه آردوینو (من از UNO برای این آموزش استفاده می کنم)
  • 1x - Adafruit Bluefruit LE SPI Friend
  • 8x - سیم های بلوز نر به نر
  • تجهیزات لحیم کاری اصلی (برای لحیم کاری پین هدر در SPI Friend)
  • رایانه (برای برنامه نویسی دستگاه آردوینو و دستگاه اندروید)

مرحله 1: طراحی خدمات و ویژگی های سفارشی

معرفی

این مقاله نحوه توضیح خدمات و ویژگی های سفارشی را به خوبی توضیح می دهد. خواندن این مقاله را به شدت توصیه می کنم. من یک مرور کلی بسیار ساده در زیر ارائه می دهم که از ظرافت ها به نفع سادگی غفلت می کند.

خدمات GATT مجموعه ای از ویژگی ها است.

ویژگی های GATT شامل یک ویژگی ، یک مقدار و صفر یا بیشتر توصیف کننده است.

  • ویژگی: نحوه مدیریت داده ها توسط مشتری (برنامه Android) به عنوان مثال بخوانید ، بنویسید ، بدون پاسخ بنویسید ، اطلاع دهید و نشان دهید.
  • مقدار: مقدار واقعی مشخصه به عنوان مثال 1089
  • توصیف کننده ها: این اطلاعاتی در مورد مقدار است. واحد ، میلی ثانیه

طرح

خوب ، اکنون می دانید خدمات و ویژگی ها چیست ، ما باید نحوه طراحی برخی از خدمات و ویژگی ها را برای بدست آوردن داده های سفارشی خود و ارسال آن از سرور GATT (Arduino) به سرویس گیرنده (برنامه Android) مشخص کنیم. بیایید یک دستگاه آردوینو را در نظر بگیریم که داده ها را از ماژول شتاب سنج-ژیروسکوپ (AGM) جمع آوری می کند. ما می خواهیم ژیروسکوپ و اندازه گیری های شتاب را از سه محور فضایی و زمان انجام این اندازه گیری ها جمع آوری کرده و این داده ها را به برنامه تلفن همراه خود منتقل کنیم. ما همچنین می خواهیم بدانیم چه زمانی باید دستگاه را شارژ کنیم ، بنابراین می خواهیم سطح باتری را بخوانیم و آن را به برنامه تلفن همراه خود منتقل کنیم.

1. آیا می توانیم از خدمات و ویژگی های استاندارد استفاده کنیم؟

Bluetooth SIG بسیاری از خدمات و ویژگی های متداول را استاندارد کرده است. ابتدا این موارد را بررسی کنید تا ببینید آیا می توانید هر یک از خدمات و ویژگی های استاندارد را انتخاب کنید. سرویس ها و ویژگی های استاندارد می توانند از بسته های داده بسیار کوچکتر استفاده کنند ، زیرا شناسه منحصر به فرد جهانی (UUID) 16 بیت است ، در حالی که خدمات و ویژگی های سفارشی باید از 128 بیت برای UUID های خود استفاده کنند. اطلاعات بیشتر در مورد UUID ها بعداً. در جستجوی ما ، یک "سرویس باتری" استاندارد پیدا کردیم که حاوی یک "سطح باتری" مشخصه است.

2. همه مقادیر داده ای را که می خواهید از طریق BLE ارسال کنید به ویژگی ها و خدمات جدا کنید

ما می توانیم نقاط داده سفارشی خود را در یک سرویس سفارشی به هفت ویژگی سفارشی تقسیم کنیم. ما این سرویس را "سرویس AGM" می نامیم. این شامل 7 ویژگی است: شتاب x ، شتاب y ، شتاب z ، ژیروسکوپ x ، ژیروسکوپ y ، ژیروسکوپ z و مرجع زمان.

3. مشخصه های مورد نیاز برای هر مشخصه را تعیین کنید

چندین ویژگی وجود دارد که یک ویژگی ممکن است داشته باشد.

  1. بخوانید: مشتری (برنامه Android) می تواند مقدار را از سرور GATT (Arduino) بخواند
  2. بنویسید: مشتری می تواند مقدار را از سرور GATT تغییر دهد
  3. نشان دهید: در صورت تغییر مقدار از سرور GATT به مشتری اطلاع داده می شود و انتظار می رود مشتری تأییدیه را به سرور GATT ارسال کند
  4. اطلاع: در صورت تغییر مقدار از سرور GATT به مشتری اطلاع داده می شود و انتظار نمی رود که مشتری تأییدی به سرور GATT ارسال کند

برای این آموزش ، ما تمام ویژگی های خود را برای خواندن تنظیم می کنیم ، به استثنای سطح باتری که دارای ویژگی های اعلان و خواندن است.

4. UUID برای خدمات و ویژگی های سفارشی ایجاد کنید و UUID های استاندارد را پیدا کنید

همانطور که قبلاً به طور مختصر اشاره کردم ، خدمات و ویژگی های استاندارد SIG از SIGU 16 بیتی استفاده می کنند در حالی که خدمات و ویژگی های سفارشی از UUID های 128 بیتی استفاده می کنند. به عنوان مثال ، شماره اختصاص داده شده برای سرویس باتری را در SIG Bluetooth مشاهده کنید. شماره اختصاص داده شده 0x180F نشان دهنده UUID 128 بیتی "0000180F-0000-1000-8000-00805F9B34FB" است. چهار رقم (16 بیت) با حروف برجسته مختص سرویس یا ویژگی استاندارد شده خاصی است در حالی که سایر کاراکترها بین همه خدمات و ویژگی های استاندارد حفظ می شوند. از آنجا که هم سرویس گیرنده و هم سرور GATT می دانند که خدمات و ویژگی های استاندارد تنها با ارقام برجسته متفاوت است ، اندازه بسته داده ها را می توان به میزان قابل توجهی کاهش داد. با این حال ، خدمات و ویژگی های سفارشی نمی توانند تحت همین فرض عمل کنند.

در عوض ، خدمات و ویژگی های سفارشی باید از UUID های 128 بیتی بدون اختصار استفاده کنند. در اینجا یک مولد UUID آنلاین وجود دارد. هر UUID غیر از UUID استاندارد برای یک UUID سفارشی قابل قبول است. با این حال ، یک قرارداد معمولی برای نامگذاری این است که یک سرویس سفارشی 00000001-… و ویژگیهای آن سرویس سفارشی 00000002-…

در اینجا یک صفحه گسترده از خدمات و ویژگی هایی است که همراه با UUID های آنها پیاده سازی می کنیم

مرحله 2: کد آردوینو

به روز رسانی BLUEFRUIT LE SPI FRIEND

ابتدا Adafruit Bluefruit LE SPI Friend را همانطور که در راهنمای اتصال خود مشخص کرده اند وصل کنید و دستگاه آردوینو را فعال کنید. هنگام اسکن دستگاه های بلوتوث ، مطمئن شوید که می توانید Adafruit Bluefruit LE SPI Friend را در دستگاه اندرویدی خود پیدا کنید. برنامه Bluefruit Connect را بارگیری کنید ، به Adafruit Bluefruit LE SPI Friend متصل شوید و اجازه دهید سیستم عامل دستگاه را به روز کند. این مرحله مهم است. اگر سیستم عامل را به روز نکنید ، دستوراتی که دستگاه را از طریق آردوینو صادر می کنید به احتمال زیاد با شکست مواجه می شوند و خطای آشکاری برای تشخیص مشکل وجود نخواهد داشت.

در اینجا کارنامه من برای این پروژه است. می توانید کد کامل آردوینو را در اینجا مشاهده کنید.

بررسی اجمالی

چند نکته مهم که باید به آنها توجه شود:

  1. در روش setup () ، همه UUID های سفارشی باید حاوی "-" بین هر دو کاراکتر باشند. به عنوان مثال ، "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. توجه داشته باشید که در روش setup () ، "battery.begin (true)؛" "ble.reset ()؛" بطور خودکار. اگر از سرویس باتری مانند من استفاده نمی کنید ، باید ماژول ble را ریست کنید (از "ble.reset ()؛") استفاده کنید ، جایی که من دستور "battery.begin (true)؛" را دارم.
  3. در روش setup () ، اگر می خواهید اشکال زدایی کنید "if (! ble.begin (false))" را به "if (! ble.begin (true))" تغییر دهید.

این کد کاملاً قابل توضیح است. من توضیحات مربوط به هر روش سفارشی را اضافه کردم. روش راه اندازی ماژول BLE را آماده می کند تا به عنوان سرور GATT عمل کند. روش حلقه یک جاروب جعلی ماژول ژیروسکوپ شتاب سنج (AGM) را طی می کند و برای این مقادیر یک عدد تصادفی از 1 تا 100 ایجاد می کند. باتری برای شبیه سازی استفاده از باتری 1 درصد تخلیه می شود. به راحتی می توانید این کد را با مقادیر واقعی سنسور جایگزین کنید. این کد فرض می کند که شما یک آرایه از داده های AGM ، با 6 اندازه گیری طولانی ، را به جای یک اندازه گیری واحد منتقل می کنید ، زیرا تجزیه و تحلیل پنجره ای از داده های AGM به احتمال زیاد مفیدتر از یک نقطه داده است. اگر اندازه آرایه را تغییر دادید ، توجه داشته باشید که در کد استودیوی android تغییراتی لازم است. برای گرفتن مجموعه ای از داده ها ، باید یک شمارنده را به همراه داده هایی که قصد ارسال آنها را دارید ، ارسال کنید. این شمارنده به شما این امکان را می دهد تا از برنامه android studio جایی که در آن قرار دارید پیدا کنید تا بتوانید منتظر بمانید تا به نقاط داده از دست رفته در پنجره گوش دهید. بدون شمارنده یا با آرایه ای با اندازه متفاوت ، پروژه استودیوی اندروید یا نقاط داده را از دست می دهد یا در حلقه ای منتظر نقاط داده باقی مانده که انتظار می رود ، گیر می کند.

مرحله 3: Android Studio Code

در اینجا کارنامه من برای این پروژه است. می توانید کد کامل Android Studio را در اینجا مشاهده کنید.

بررسی اجمالی

من این مطلب را با مروری کاملتر بر نحوه عملکرد آردوینو و کدهای اندروید در جزئیات به روز خواهم کرد … این برنامه کاملاً کاربردی است ، بنابراین در این بین خودتان را بیاموزید.

مرحله 4: برنامه نهایی

برنامه نهایی
برنامه نهایی
برنامه نهایی
برنامه نهایی
برنامه نهایی
برنامه نهایی

تبریک می گویم! برنامه شما در تلفن شما بارگیری می شود و دستگاه پوشیدنی شما شارژ شده و داده ها را ارسال می کند.

برنامه را راه اندازی کنید

برای شروع ، روی نماد راه انداز برنامه کلیک کنید.

مجوزهای اعطا

برای استفاده صحیح از برنامه ، باید برخی مجوزها را تأیید کنید.

اسکن دستگاه ها

در مرحله بعد ، روی دکمه "اسکن" در گوشه سمت چپ بالای برنامه کلیک کنید.

دستگاه پوشیدنی خود را انتخاب کنید

در مرحله بعد ، دستگاه پوشیدنی خود را از لیست دستگاه های BLE موجود انتخاب کنید. نام آن "سخت افزار BLE Arduino" است. GET DATA منتظر بمانید تا برنامه داده های AGM را دریافت کند و تعیین کند که کاربر در کجا است یا در حال حرکت است. نتایج خود را ببینید نتایج را روی صفحه بررسی کنید! روی دکمه همگام سازی کلیک کنید تا اطلاعات دیگری را بخوانید.

توصیه شده: