Tabla de contenido:
- Paso 1: escanear el dispositivo BLE
- Paso 2: Conexión del dispositivo
- Paso 3: recuperar las características del dispositivo
- Paso 4: Lectura del nombre del dispositivo
- Paso 5: lectura de BPM
- Paso 6: lectura de la ubicación del sensor corporal
Video: Lectura de valores desde un dispositivo BLE usando CSR1010 y Dragonboard 410c: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
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
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
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:
Cómo leer varios valores analógicos usando un pin analógico: 6 pasos (con imágenes)
Cómo leer múltiples valores analógicos usando un pin analógico: En este tutorial, le mostraré cómo leer múltiples valores analógicos usando solo un pin de entrada analógica
Activador de dispositivo desde el modo de suspensión: 5 pasos
Activador de dispositivo desde el modo de suspensión: dado que la tecnología ha avanzado a un ritmo extremadamente alto, la mayoría de la población no puede vivir sin la conveniencia de tal desarrollo. Como persona que requiere dispositivos a diario, este proyecto de Arduino presentará un activador de dispositivos. Esta
Lectura de temperatura usando el sensor de temperatura LM35 con Arduino Uno: 4 pasos
Lectura de temperatura usando el sensor de temperatura LM35 con Arduino Uno: Hola chicos, en este instructables aprenderemos cómo usar LM35 con Arduino. Lm35 es un sensor de temperatura que puede leer valores de temperatura de -55 ° C a 150 ° C. Es un dispositivo de 3 terminales que proporciona voltaje analógico proporcional a la temperatura. Hig
Lectura y escritura de datos en EEPROM externa usando Arduino: 5 pasos
Lectura y escritura de datos en EEPROM externa usando Arduino: EEPROM significa Memoria de solo lectura programable y borrable eléctricamente. EEPROM es muy importante y útil porque es una forma de memoria no volátil. Esto significa que incluso cuando la placa está apagada, el chip EEPROM aún conserva el programa que
Configurar desde cero una Raspberry Pi para registrar datos desde Arduino: 5 pasos
Configure desde cero una Raspberry Pi para registrar datos desde Arduino: este tutorial es para aquellos que no tienen experiencia en la instalación de un nuevo hardware o software, y mucho menos Python o Linux. Digamos que ha pedido una Raspberry Pi (RPi) con SD tarjeta (al menos 8GB, usé 16GB, tipo I) y fuente de alimentación (5V, al menos 2