Tabla de contenido:

Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c: 6 pasos
Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c: 6 pasos

Video: Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c: 6 pasos

Video: Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c: 6 pasos
Video: Chasing Nightmares | Critical Role | Campaign 3, Episode 11 2024, Noviembre
Anonim
Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c
Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c

Este tutorial muestra cómo leer valores del dispositivo BLE CSR1010 usando Dragonboard 410c con Linaro

En este ejemplo, CSR1010 está emulando un sensor de frecuencia cardíaca.

Paso 1: escanear el dispositivo BLE

En este paso, verifique si su cliente BT está listo para escanear dispositivos BLE.

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

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

Paso 2: Conexión del dispositivo

Usaremos gatttool para conectar nuestro dispositivo

-b: dirección MAC del dispositivo

-t: tipo de dirección LE. Puede ser público o aleatorio, necesita verificar las especificaciones del dispositivo. En este caso es público.

-I: modo interactivo gatttool. Se abrirá un mensaje para enviar cmds al dispositivo.

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

Una vez que se abre el indicador, podemos enviar connect cmd al dispositivo.

[EE: 52: 5B: 04: 00: 02] [LE]> conectar Intentando conectarse a EE: 52: 5B: 04: 00: 02

Conexión exitosa

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

Paso 3: recuperar las características del dispositivo

Recuperación de las características del dispositivo
Recuperación de las características del dispositivo

Una vez que el dispositivo está conectado, podemos leer todos los servicios disponibles enviando el cmd "primario"

Según el UUID del servicio, podemos descubrir el tipo de servicio en la especificación GATT

www.bluetooth.com/specifications/gatt/services

Paso 4: Lectura del nombre del dispositivo

Leer el nombre del dispositivo
Leer el nombre del dispositivo

Exploremos las características leídas en el perfil de acceso genérico (uuid = 1800). Primero necesitamos obtener los valores del identificador del servicio, descritos en la primera imagen, en este caso, comienza desde el 5 hasta el 11. Ahora podemos recuperar todos los identificadores en este intervalo usando el 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 identificador: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb identificador: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb identificador: 0x0009, uuid: 00002a01-000f805-8000 uuid: 00002803-0000-1000-8000-00805f9b34fb identificador: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb identificador: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb, identificador: 0x0000: 0x0000 -1000-8000-00805f9b34fb identificador: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb identificador: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb identificador: 0x0010, uuid-0000-002808000 00805f9b34fb identificador: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

Según la especificación del perfil de acceso genérico, el UUID 2A00 se refiere al nombre del dispositivo.

Teniendo en cuenta que el 2a00 es el identificador 0x0007 en nuestro dispositivo, leamos el valor

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 7 Valor característico / descriptor: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Convirtiendo hexadecimal a ASCII, el nombre del dispositivo es: "CSR HR Sensor"

Paso 5: lectura de BPM

[EE: 52: 5B: 04: 00: 02] [LE]> mango de atributo primario: 0x0001, mango de grp final: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb mango de attr: 0x0005, mango de grp final: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb manija attr: 0x000c, manija del grp final: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb manija attr: 0x0014, manija del grp final: 0x0017 uuid: 0000180f-00-1000-8 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-00f805f9b34

El UUID del servicio de frecuencia cardíaca es 0x180d, por lo que el intervalo de manejo es de 0x000c hasta 0x0013

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

mango: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb mango: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb mango: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb: 00002902-0000-1000-8000-00805f9b34fb identificador: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb identificador: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb identificador: 0x00300-0012 1000-8000-00805f9b34fb identificador: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb

Leyendo todas las Declaraciones de Características (UUID 0x2803).

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

Valor característico / descriptor: 10 0e 00 37 2a [EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x0010 Valor característico / descriptor: 02 11 00 38 2a [EE: 52: 5B: 04:00:02] [LE]> char-read-hnd 0x0012 Valor característico / descriptor: 08 13 00 39 2a

Darse cuenta de:

- handle 0x000d es el CCCD para el servicio 2a37 (medición de frecuencia cardíaca) con bit 10 (soporte NOTIFY)

- el mango 0x0010 es el CCCD para el servicio 2a38 (ubicación del sensor del cuerpo) con bit 02 (soporte READ)

- el identificador 0x0012 es el CCCD para el servicio 2a39 (punto de control de frecuencia cardíaca) con bit 08 (soporte WRITE)

Ahora sabemos que la medición de la frecuencia cardíaca solo funciona con notificación. Significa que primero tenemos que registrarnos para cambios de valor en su CCCD (UUID 0x2902), que en este caso es handle 0xf

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

Identificador de notificación = valor 0x000e: 16 65 f3 01 El valor de la característica se escribió correctamente Identificador de notificación = 0x000e valor: 16 6d fa 01 Identificador de notificación = valor 0x000e: 16 6d fa 01 Identificador de notificación = valor 0x000e: 16 6c f9 01 Identificador de notificación = valor 0x000e: 16 6a f7 01 Identificador de notificación = valor 0x000e: 16 69 f6 01

Según la especificación del perfil, el segundo número hexadecimal es la información de BPM.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Paso 6: lectura de la ubicación del sensor corporal

Leer la ubicación del sensor corporal
Leer la ubicación del sensor corporal

La ubicación del sensor corporal es el UUID 0x2A38. Según su descriptor, esta característica admite la lectura básica, por lo que podemos leer su valor directamente.

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x11 Valor característico / descriptor: 03

Según la especificación SIG, 03 significa "Dedo"

Recomendado: