Inhaltsverzeichnis:

Lesen von Werten von einem BLE-Gerät mit CSR1010 und Dragonboard 410c - Gunook
Lesen von Werten von einem BLE-Gerät mit CSR1010 und Dragonboard 410c - Gunook

Video: Lesen von Werten von einem BLE-Gerät mit CSR1010 und Dragonboard 410c - Gunook

Video: Lesen von Werten von einem BLE-Gerät mit CSR1010 und Dragonboard 410c - Gunook
Video: Strange Bedfellows | Critical Role: VOX MACHINA | Episode 3 2024, November
Anonim
Lesen von Werten von einem BLE-Gerät mit CSR1010 und Dragonboard 410c
Lesen von Werten von einem BLE-Gerät mit CSR1010 und Dragonboard 410c

Dieses Tutorial zeigt, wie man Werte vom BLE-Gerät CSR1010 mit Dragonboard 410c mit Linaro liest

In diesem Beispiel emuliert CSR1010 einen Herzfrequenzsensor.

Schritt 1: BLE-Gerät scannen

Überprüfen Sie in diesem Schritt, ob Ihr BT-Client zum Scannen von BLE-Geräten bereit ist.

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

LE Scan …18:EE:69:00:CE:00 (unbekannt) 18:EE:69:00:CE:00 (unbekannt) EE:52:5B:04:00:02 CSR HR-Sensor

Schritt 2: Gerät anschließen

Wir werden gatttool verwenden, um unser Gerät zu verbinden

-b: Geräte-MAC-Adresse

-t: LE-Adresstyp. Kann öffentlich oder zufällig sein, Gerätespezifikation muss überprüft werden. In diesem Fall ist öffentlich.

-I: interaktiver gatttool-Modus. Es wird eine Aufforderung zum Senden von cmds an das Gerät geöffnet

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

Sobald die Eingabeaufforderung geöffnet ist, können wir connect cmd an das Gerät senden.

[EE:52:5B:04:00:02][LE]> connectVersuch, eine Verbindung zu EE:52:5B:04:00:02 herzustellen

Verbindung erfolgreich

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

Schritt 3: Abrufen von Geräteeigenschaften

Abrufen von Geräteeigenschaften
Abrufen von Geräteeigenschaften

Sobald das Gerät verbunden ist, können wir alle verfügbaren Dienste lesen, indem wir das cmd "primary" senden

Anhand der Dienst-UUID können wir den Diensttyp in der GATT-Spezifikation ermitteln

www.bluetooth.com/specifications/gatt/services

Schritt 4: Lesen des Gerätenamens

Lesen des Gerätenamens
Lesen des Gerätenamens

Lassen Sie uns die Merkmale des generischen Zugriffsprofils (uuid=1800) untersuchen. Zuerst müssen wir die Service-Handle-Werte abrufen, die im ersten Bild beschrieben sind, in diesem Fall von 5 bis 11. Jetzt können wir alle Handles in diesem Intervall mit dem cmd char-desc abrufen

[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 handle: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb handle: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b000f uuid: 00002803-0000-1000-8000-00805f9b34fb Handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb Handle: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb Handle: 0x000d, uuid.: 00002803-0000 -1000-8000-00805f9b34fb Handle: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb Handle: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb Handle: 0x0010, uuid: 00002803-0000-1000-8000- 00805f9b34fb handle: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

Gemäß der Generic Access Profile-Spezifikation bezieht sich die UUID 2A00 auf den Gerätenamen.

Wenn man bedenkt, dass 2a00 das Handle 0x0007 in unserem Gerät ist, lesen wir den Wert

[EE:52:5B:04:00:02][LE]> char-read-hnd 7Charakteristischer Wert/Deskriptor: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Beim Konvertieren von Hex in ASCII lautet der Gerätename: "CSR HR Sensor"

Schritt 5: Lesen der 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 handle: 0x000c, end grp handle: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb attr handle: 0x0014, end grp handle: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb attr handle: 0x0018, end grp handle: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 attr handle: 0x0022, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

Die UUID des Herzfrequenzdienstes ist 0x180d, das Handle-Intervall reicht also von 0x000c bis 0x0013

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

Handle: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb Handle: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb Handle: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb Handle: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb Handle: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb Handle: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb Handle: 0x0012, uuid: 00002803-0000- 1000-8000-00805f9b34fb handle: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb

Lesen aller Merkmalsdeklarationen (UUID 0x2803).

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

Charakteristischer Wert/Deskriptor: 10 0e 00 37 2a [EE:52:5B:04:00:02][LE]> char-read-hnd 0x0010 Charakteristischer Wert/Deskriptor: 02 11 00 38 2a [EE:52:5B: 04:00:02][LE]> char-read-hnd 0x0012 Charakteristischer Wert/Deskriptor: 08 13 00 39 2a

Beachte das:

- Handle 0x000d ist das CCCD für Service 2a37 (Heart Rate Measurement) mit Bit 10 (unterstützt NOTIFY)

- Handle 0x0010 ist das CCCD für Service 2a38 (Body Sensor Location) mit Bit 02 (Unterstützung von READ)

- Handle 0x0012 ist das CCCD für Service 2a39 (Heart Rate Control Point) mit Bit 08 (Unterstützung WRITE)

Jetzt wissen wir, dass die Herzfrequenzmessung nur mit Benachrichtigung funktioniert. Das bedeutet, dass wir uns zuerst für Wertänderungen in seiner CCCD (UUID 0x2902) registrieren müssen, die in diesem Fall das Handle 0xf. ist

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

Benachrichtigungshandle = 0x000e-Wert: 16 65 f3 01 Merkmalswert wurde erfolgreich geschrieben Benachrichtigungshandle = 0x000e-Wert: 16 6d fa 01 Benachrichtigungshandle = 0x000e-Wert: 16 6d fa 01 Benachrichtigungshandle = 0x000e-Wert: 16 6c f9 01 Benachrichtigungshandle = 0x000e-Wert: 16 6a f7 01 Benachrichtigungshandle = 0x000e Wert: 16 69 f6 01

Gemäß der Profilspezifikation ist die zweite Hex-Zahl die BPM-Information.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Schritt 6: Lesen der Körpersensorposition

Auslesen der Körpersensorposition
Auslesen der Körpersensorposition

Die Position des Körpersensors ist die UUID 0x2A38. Laut seinem Deskriptor unterstützt dieses Merkmal das grundlegende Lesen, sodass wir seinen Wert direkt ablesen können.

[EE:52:5B:04:00:02][LE]> char-read-hnd 0x11Eigenschaftswert/Deskriptor: 03

03 bedeutet laut SIG-Spezifikation "Finger"

Empfohlen: