Table des matières:

Lecture de valeurs à partir d'un périphérique BLE à l'aide de CSR1010 et Dragonboard 410c : 6 étapes
Lecture de valeurs à partir d'un périphérique BLE à l'aide de CSR1010 et Dragonboard 410c : 6 étapes

Vidéo: Lecture de valeurs à partir d'un périphérique BLE à l'aide de CSR1010 et Dragonboard 410c : 6 étapes

Vidéo: Lecture de valeurs à partir d'un périphérique BLE à l'aide de CSR1010 et Dragonboard 410c : 6 étapes
Vidéo: Communiquer en BLE avec vos objets connectés, les pièges à éviter (Alexis Duque, Fabien Grenier) 2024, Novembre
Anonim
Lecture de valeurs à partir d'un périphérique BLE à l'aide de CSR1010 et Dragonboard 410c
Lecture de valeurs à partir d'un périphérique BLE à l'aide de CSR1010 et Dragonboard 410c

Ce tutoriel montre comment lire les valeurs de l'appareil BLE CSR1010 à l'aide de Dragonboard 410c avec Linaro

Dans cet exemple, le CSR1010 émule un capteur de fréquence cardiaque.

Étape 1: Scannez le périphérique BLE

Dans cette étape, vérifiez si votre client BT est prêt à analyser les appareils BLE.

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

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

Étape 2: connexion de l'appareil

Nous utiliserons gatttool pour connecter notre appareil

-b: adresse MAC de l'appareil

-t: type d'adresse LE. Peut être public ou aléatoire, besoin de vérifier les spécifications de l'appareil. Dans ce cas est public.

-I: mode interactif gatttool. Il ouvrira une invite pour envoyer des cmds à l'appareil

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

Une fois l'invite ouverte, nous pouvons envoyer connect cmd à l'appareil.

[EE:52:5B:04:00:02][LE]> connectTentative de connexion à EE:52:5B:04:00:02

Connexion réussie

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

Étape 3: Récupération des caractéristiques de l'appareil

Récupération des caractéristiques de l'appareil
Récupération des caractéristiques de l'appareil

Une fois l'appareil connecté, on peut lire tous les services disponibles en envoyant la cmd "primary"

Sur la base de l'UUID du service, nous pouvons découvrir le type de service dans la spécification GATT

www.bluetooth.com/specifications/gatt/services

Étape 4: Lecture du nom de l'appareil

Lecture du nom de l'appareil
Lecture du nom de l'appareil

Explorons les caractéristiques lues sur le profil d'accès générique (uuid=1800). Nous devons d'abord obtenir les valeurs de descripteur de service, décrites sur la première image, dans ce cas, commence de 5 à 11. Maintenant, nous pouvons récupérer tous les descripteurs dans cet intervalle en utilisant le 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 poignée: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb poignée: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb poignée: 0x0009, uuid: 00002a01-0000-10009-8000-00805, poignée uuid: 00002803-0000-1000-8000-00805f9b34fb poignée: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb poignée: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb poignée: 0x0000d, uuid: -1000-8000-00805f9b34fb poignée: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb poignée: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb poignée: 0x0010, uuid: 00002803-0000-1000-1000- 00805f9b34fb poignée: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

Selon la spécification du profil d'accès générique, l'UUID 2A00 fait référence au nom du périphérique.

Considérant que le 2a00 est le handle 0x0007 dans notre appareil, lisons la valeur

[EE:52:5B:04:00:02][LE]> char-read-hnd 7Valeur caractéristique/descripteur: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Conversion hexadécimale en ASCII, le nom de l'appareil est: ''CSR HR Sensor"

Étape 5: Lecture du 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 poignée d'attr: 0x000c, poignée d'extrémité grp: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb poignée d'attr: 0x0014, poignée d'extrémité grp: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb poignée attr: 0x0018, poignée fin grp: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 poignée attr: 0x0022, poignée fin grp: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

L'UUID du service de fréquence cardiaque est 0x180d, donc l'intervalle de traitement est de 0x000c à 0x0013

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

poignée: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb poignée: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb poignée: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb, poignée uui000: 00002902-0000-1000-8000-00805f9b34fb poignée: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb poignée: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb poignée: 0x0012, uuid- 00002803 1000-8000-00805f9b34fb poignée: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb

Lecture de toutes les déclarations de caractéristiques (UUID 0x2803).

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

Valeur caractéristique/descripteur: 10 0e 00 37 2a [EE:52:5B:04:00:02][LE]> char-read-hnd 0x0010 Valeur caractéristique/descripteur: 02 11 00 38 2a [EE:52:5B: 04:00:02][LE]> char-read-hnd 0x0012 Valeur caractéristique/descripteur: 08 13 00 39 2a

Remarquerez que:

- la poignée 0x000d est le CCCD pour le service 2a37 (mesure de la fréquence cardiaque) avec le bit 10 (support NOTIFY)

- le handle 0x0010 est le CCCD pour le service 2a38 (Body Sensor Location) avec le bit 02 (support READ)

- le handle 0x0012 est le CCCD pour le service 2a39 (Heart Rate Control Point) avec le bit 08 (support WRITE)

Nous savons maintenant que la mesure de la fréquence cardiaque ne fonctionne qu'avec notification. Cela signifie que nous devons d'abord enregistrer les changements de valeur dans son CCCD (UUID 0x2902), qui dans ce cas est le handle 0xf

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

Descripteur de notification = valeur 0x000e: 16 65 f3 01 La valeur caractéristique a été écrite avec succès Descripteur de notification = valeur 0x000e: 16 6d fa 01 Descripteur de notification = valeur 0x000e: 16 6d fa 01 Descripteur de notification = valeur 0x000e: 16 6c f9 01 Descripteur de notification = valeur 0x000e: 16 6a f7 01 Descripteur de notification = 0x000e valeur: 16 69 f6 01

Selon la spécification du profil, le deuxième nombre hexadécimal est l'information BPM.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Étape 6: Lecture de l'emplacement du capteur corporel

Lecture de l'emplacement du capteur corporel
Lecture de l'emplacement du capteur corporel

L'emplacement du capteur corporel est l'UUID 0x2A38. Selon son descripteur, cette caractéristique prend en charge la lecture de base, nous pouvons donc lire sa valeur directement.

[EE:52:5B:04:00:02][LE]> char-read-hnd 0x11Valeur caractéristique/descripteur: 03

Selon la spécification SIG, 03 signifie "Doigt"

Conseillé: