การอ่านค่าจากอุปกรณ์ BLE โดยใช้ CSR1010 และ Dragonboard 410c: 6 ขั้นตอน
การอ่านค่าจากอุปกรณ์ BLE โดยใช้ CSR1010 และ Dragonboard 410c: 6 ขั้นตอน
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 Sensor

ขั้นตอนที่ 2: การเชื่อมต่ออุปกรณ์

เราจะใช้ gatttool เพื่อเชื่อมต่ออุปกรณ์ของเรา

-b: ที่อยู่ MAC ของอุปกรณ์

-t: ประเภทที่อยู่ LE สามารถเป็นแบบสาธารณะหรือสุ่มต้องตรวจสอบสเป็คอุปกรณ์ ในกรณีนี้เป็นแบบสาธารณะ

-I: โหมดโต้ตอบ gatttool จะเปิดพร้อมท์ให้ส่ง cmds ไปยังอุปกรณ์

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

เมื่อพรอมต์เปิดขึ้น เราสามารถส่ง cmd การเชื่อมต่อไปยังอุปกรณ์ได้

[EE:52:5B:04:00:02][LE]> connect กำลังพยายามเชื่อมต่อกับ EE:52:5B:04:00:02

เชื่อมต่อสำเร็จ

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

ขั้นตอนที่ 3: ดึงข้อมูลลักษณะอุปกรณ์

เรียกลักษณะอุปกรณ์
เรียกลักษณะอุปกรณ์

เมื่อเชื่อมต่ออุปกรณ์แล้ว เราสามารถอ่านบริการที่มีทั้งหมดได้โดยส่ง cmd "primary"

จาก 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 11handle: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb handle: 0x0006, uuid: 00002803-0000-1000-8000- หมายเลขอ้างอิง 00805f9b34fb: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x0009, uuid: 00002a01-0000-1000-8000-8000-00805f หมายเลขอ้างอิง: uuid: 00002803-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b000034fb หมายเลขอ้างอิง: 0x000d, uuid: uuid: uuid: -1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x0010, uuid: 00002803-0000-1000-8000- หมายเลขอ้างอิง 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 48 52 20 53 65 6e 73 6f 72

การแปลงเลขฐานสิบหกเป็น ASCII ชื่ออุปกรณ์คือ: ''CSR HR Sensor"

ขั้นตอนที่ 5: อ่าน BPM

[EE:52:5B:04:00:02][LE]> Primaryattr handle: 0x0001, end grp handle: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb attr handle: 0x0005, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb ตัวจัดการ attr: 0x000c ตัวจัดการ end grp: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb ตัวจัดการ attr: 0x0014 ตัวจัดการท้าย grp: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb ตัวจัดการ attr: 0x0018 ตัวจัดการ end grp: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 ตัวจัดการ attr: 0x0022 ตัวจัดการ end grp: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

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-00805f9b34fb หมายเลขอ้างอิง: 0x000f: 00002902-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb หมายเลขอ้างอิง: 0x0012, uu0000-: 00002803- 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 (รองรับการแจ้งเตือน)

- handle 0x0010 เป็น CCCD สำหรับ service 2a38 (Body Sensor Location) พร้อม bit 02 (รองรับ READ)

- handle 0x0012 เป็น CCCD สำหรับ service 2a39 (Heart Rate Control Point) พร้อม bit 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

รอบต่อนาที:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

ขั้นตอนที่ 6: การอ่านตำแหน่งเซ็นเซอร์ร่างกาย

การอ่านตำแหน่งเซ็นเซอร์ร่างกาย
การอ่านตำแหน่งเซ็นเซอร์ร่างกาย

ตำแหน่งเซนเซอร์ร่างกายคือ UUID 0x2A38 ตามคำอธิบาย คุณลักษณะนี้สนับสนุนการอ่านขั้นพื้นฐาน ดังนั้นเราจึงสามารถอ่านค่าได้โดยตรง

[EE:52:5B:04:00:02][LE]> char-read-hnd 0x11Characteristic value/descriptor: 03

ตามข้อกำหนดของ SIG 03 หมายถึง "นิ้ว"

แนะนำ: