فهرست مطالب:

خواندن مقادیر از دستگاه BLE با استفاده از CSR1010 و Dragonboard 410c: 6 مرحله
خواندن مقادیر از دستگاه BLE با استفاده از CSR1010 و Dragonboard 410c: 6 مرحله

تصویری: خواندن مقادیر از دستگاه BLE با استفاده از CSR1010 و Dragonboard 410c: 6 مرحله

تصویری: خواندن مقادیر از دستگاه BLE با استفاده از CSR1010 و Dragonboard 410c: 6 مرحله
تصویری: GACHA LIFE DEEMS THE WIFE 2024, نوامبر
Anonim
خواندن مقادیر از دستگاه BLE با استفاده از CSR1010 و Dragonboard 410c
خواندن مقادیر از دستگاه BLE با استفاده از CSR1010 و Dragonboard 410c

این آموزش نحوه خواندن مقادیر از دستگاه BLE CSR1010 با استفاده از Dragonboard 410c با Linaro را نشان می دهد

در این مثال ، CSR1010 از یک سنسور ضربان قلب تقلید می کند.

مرحله 1: اسکن دستگاه BLE

در این مرحله ، بررسی کنید که آیا سرویس گیرنده BT شما برای اسکن دستگاه های BLE آماده است یا خیر.

root@linaro-alip:/home/linaro# sudo hcitool lescan

LE Scan… 18: EE: 69: 00: CE: 00 (ناشناخته) 18: EE: 69: 00: CE: 00 (ناشناخته) EE: 52: 5B: 04: 00: 02 سنسور CSR HR

مرحله 2: اتصال دستگاه

برای اتصال دستگاه خود از gatttool استفاده می کنیم

-b: آدرس MAC دستگاه

-t: نوع آدرس LE. می تواند عمومی یا تصادفی باشد ، باید مشخصات دستگاه را بررسی کنید. در این مورد عمومی است.

-I: حالت تعاملی gatttool. یک پیام برای ارسال cmds به دستگاه باز می شود

root@linaro -alip:/home/linaro# sudo gatttool -b EE: 52: 5B: 04: 00: 02 -t عمومی -I

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

[EE: 52: 5B: 04: 00: 02] [LE]> اتصال تلاش برای اتصال به EE: 52: 5B: 04: 00: 02

اتصال با موفقیت انجام شد

[EE: 52: 5B: 04: 00: 02] [LE]>

مرحله 3: بازیابی ویژگی های دستگاه

بازیابی ویژگی های دستگاه
بازیابی ویژگی های دستگاه

پس از اتصال دستگاه ، می توانیم با ارسال cmd "اولیه" همه خدمات موجود را بخوانیم

بر اساس سرویس UUID ، می توانیم نوع سرویس را در مشخصات GATT کشف کنیم

www.bluetooth.com/specifications/gatt/services

مرحله 4: خواندن نام دستگاه

خواندن نام دستگاه
خواندن نام دستگاه

بیایید ویژگی های خوانده شده در نمایه دسترسی عمومی (uuid = 1800) را بررسی کنیم. ابتدا باید مقادیر دسته سرویس را که در تصویر اول توضیح داده شده است بدست آوریم ، در این حالت از 5 تا 11 شروع می شود. اکنون می توانیم با استفاده از cmd char-desc همه دسته ها را در این فاصله بازیابی کنیم.

[EE: 52: 5B: 04: 00: 02] [LE]> char-desc 05 11 دستگیره: 0x0005 ، uuid: 00002800-0000-1000-8000-00805f9b34fb دسته: 0x0006 ، uuid: 00002803-0000-1000-8000- دسته 00805f9b34fb: 0x0007 ، uuid: 00002a00-0000-1000-8000-00805f9b34fb دسته: 0x0008 ، uuid: 00002803-0000-1000-8000-00805f9b34fb دسته: 0x0009 ، uuid: 00002a0010000000000 ، 00002000-00000000 ، 0000000000 ، 0000000000 ، 00000 uuid: 00002803-0000-1000-8000-00805f9b34fb دسته: 0x000b ، uuid: 00002a04-0000-1000-8000-00805f9b34fb دسته: 0x000c ، uuid: 00002800-0000-1000-8000-00805f9b34fb: -1000-8000-00805f9b34fb دسته: 0x000e ، uuid: 00002a37-0000-1000-8000-00805f9b34fb دسته: 0x000f ، uuid: 00002902-0000-1000-8000-00805f9b34fb دسته: 0x0010-000000000-0000000-0000000 00805f9b34fb دسته: 0x0011 ، uuid: 00002a38-0000-1000-8000-00805f9b34fb

با توجه به مشخصات دسترسی عمومی ، UUID 2A00 به نام دستگاه اشاره دارد.

با توجه به اینکه 2a00 دسته 0x0007 در دستگاه ما است ، بیایید مقدار را بخوانیم

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 7 ارزش مشخصه/توصیف کننده: 43 53 52 20 20 52 52 53 53 6e 73 6f 72

با تبدیل hex به ASCII ، نام دستگاه این است: '' CSR HR Sensor ''

مرحله 5: خواندن BPM

[EE: 52: 5B: 04: 00: 02] [LE]> دسته اصلیattr: 0x0001 ، دسته grp نهایی: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb دسته attr: 0x0005 ، دسته نهایی grp: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb دسته attr: 0x000c ، دسته grp انتهایی: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb دسته attr: 0x0014 ، دسته grp نهایی: 0x0017 uuid: 0000180f-0000 00805f9b34fb دسته attr: 0x0018 ، دسته grp نهایی: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 دسته attr: 0x0022 ، دسته grp انتهایی: 0xffff uuid: 0000180a-0000-1000-8000-008059b

UUID سرویس ضربان قلب 0x180d است ، بنابراین فاصله دسته از 0x000c تا 0x0013 است

[EE: 52: 5B: 04: 00: 02] [LE]> char-desc 0x00c 0x0013

دسته: 0x000c ، uuid: 00002800-0000-1000-8000-00805f9b34fb دسته: 0x000d ، uuid: 00002803-0000-1000-8000-00805f9b34fb دسته: 0x000e ، uuid: 00002a37-0000-1000-8000-0000050095000 ، 000005000 ، 000005000 ، 00000: 00002902-0000-1000-8000-00805f9b34fb دسته: 0x0010 ، uuid: 00002803-0000-1000-8000-00805f9b34fb دسته: 0x0011 ، uuid: 00002a38-0000-1000-8000-00805f9b34fb دسته: 0x00-0000 دسته 1000-8000-00805f9b34fb: 0x0013 ، uuid: 00002a39-0000-1000-8000-00805f9b34fb

خواندن همه اعلامیه های مشخصه (UUID 0x2803).

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x000d

ارزش/توصیف کننده: 10 0e 00 37 2a [EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x0010 ارزش مشخصه/توصیف کننده: 02 11 00 38 2a [EE: 52: 5B: 04:00:02] [LE]> char-read-hnd 0x0012 ارزش مشخصه/توصیف کننده: 08 13 00 39 2a

توجه کنید که:

- دسته 0x000d CCCD برای سرویس 2a37 است (اندازه گیری ضربان قلب) با بیت 10 (پشتیبانی از اعلان)

- دسته 0x0010 CCCD برای سرویس 2a38 است (محل سنسور بدن) با بیت 02 (پشتیبانی از خواندن)

- دسته 0x0012 CCCD برای سرویس 2a39 (نقطه کنترل ضربان قلب) با بیت 08 (پشتیبانی از WRITE) است.

اکنون می دانیم که اندازه گیری ضربان قلب فقط با اعلان کار می کند. این بدان معناست که ابتدا باید برای تغییرات مقدار در CCCD آن (UUID 0x2902) ، که در این مورد دسته 0xf است ، ثبت نام کنیم.

[EE: 52: 5B: 04: 00: 02] [LE]> char-write-req 0x00f 0100

دسته اعلان = 0x000e مقدار: 16 65 f3 01 مقدار مشخصه با موفقیت نوشته شد دسته اعلان = مقدار 0x000e: 16 6d fa 01 دسته اطلاع رسانی = ارزش 0x000e: 16 6d fa 01 دسته اعلان = 0x000e مقدار: 16 6c f9 01 دسته اعلان = 0x000e مقدار: 16 6a f7 01 دسته اطلاع رسانی = 0x000e مقدار: 16 69 f6 01

با توجه به مشخصات مشخصات ، شماره شش ضلعی اطلاعات BPM است.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

مرحله 6: خواندن مکان سنسور بدن

خواندن مکان سنسور بدن
خواندن مکان سنسور بدن

مکان سنسور بدن UUID 0x2A38 است. با توجه به توصیف کننده آن ، این ویژگی از خواندن اولیه پشتیبانی می کند ، بنابراین می توانیم مقدار آن را مستقیماً بخوانیم.

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x11 ارزش مشخصه/توصیف کننده: 03

طبق مشخصات SIG ، 03 به معنی "انگشت" است

توصیه شده: