Índice:

Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c: 6 etapas
Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c: 6 etapas

Vídeo: Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c: 6 etapas

Vídeo: Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c: 6 etapas
Vídeo: Telemetria com IoT e Azure 2024, Dezembro
Anonim
Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c
Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c

Este tutorial mostra como ler valores do dispositivo BLE CSR1010 usando Dragonboard 410c com Linaro

Neste exemplo, CSR1010 está emulando um sensor de frequência cardíaca.

Etapa 1: Verificar o dispositivo BLE

Nesta etapa, verifique se o seu cliente BT está pronto para fazer a varredura de dispositivos BLE.

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

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

Etapa 2: Conectando o dispositivo

Usaremos gatttool para conectar nosso dispositivo

-b: endereço MAC do dispositivo

-t: tipo de endereço LE. Pode ser público ou aleatório, é necessário verificar as especificações do dispositivo. Neste caso, é público.

-I: modo interativo do gatttool. Irá abrir um prompt para enviar cmds para o dispositivo

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

Assim que o prompt estiver aberto, podemos enviar o cmd de conexão ao dispositivo.

[EE: 52: 5B: 04: 00: 02] [LE]> conectar-se a tentar conectar-se a EE: 52: 5B: 04: 00: 02

Conexão bem sucedida

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

Etapa 3: Recuperando as características do dispositivo

Recuperando Características do Dispositivo
Recuperando Características do Dispositivo

Assim que o dispositivo estiver conectado, podemos ler todos os serviços disponíveis, enviando o cmd "primário"

Com base no UUID de serviço, podemos descobrir o tipo de serviço na especificação GATT

www.bluetooth.com/specifications/gatt/services

Etapa 4: Leitura do nome do dispositivo

Lendo o nome do dispositivo
Lendo o nome do dispositivo

Vamos explorar as características lidas no Perfil de Acesso Genérico (uuid = 1800). Primeiro precisamos obter os valores do identificador de serviço, descritos na primeira imagem, neste caso, começa de 5 a 11. Agora podemos recuperar todos os identificadores neste intervalo usando o cmd char-desc

[EE: 52: 5B: 04: 00: 02] [LE]> char-desc 05 11 identificador: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb identificador: 0x0006, uuid: 00002803-0000-1000-8000- Identificador 00805f9b34fb: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb identificador: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb identificador: 0x0009, uuid: 00002a01-0000-1000-80003-0000-1000-8000-80005f9b34fb identificador uuid: 00002803-0000-1000-8000-00805f9b34fb identificador: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb identificador: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb identificador: 00002803-003 -1000-8000-00805f9b34fb identificador: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb identificador: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb identificador: 0x0010, uuid: 00002803f9b34fb 00805f9b34fb identificador: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

De acordo com a especificação do Perfil de Acesso Genérico, o UUID 2A00 se refere ao Nome do Dispositivo.

Considerando que 2a00 é o identificador 0x0007 em nosso dispositivo, vamos ler o valor

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

Convertendo hex para ASCII, o nome do dispositivo é: '' CSR HR Sensor"

Etapa 5: Lendo o BPM

[EE: 52: 5B: 04: 00: 02] [LE]> identificador de grupo primário: 0x0001, identificador de grp final: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb identificador de atrito: 0x0005, identificador de grupo final: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb attr identificador: 0x000c, finalizar identificador grp: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb attr identificador: 0x0014, finalizar identificador grp: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb attr identificador: 0x0018, finalizar identificador grp: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 attr identificador: 0x0022, finalizar identificador grp: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb

O UUID do serviço de frequência cardíaca é 0x180d, então o intervalo de tratamento é de 0x000c até 0x0013

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

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

Lendo todas as declarações de características (UUID 0x2803).

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

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

Notar que:

- o identificador 0x000d é o CCCD para o serviço 2a37 (medição da frequência cardíaca) com o bit 10 (suporte NOTIFY)

- o identificador 0x0010 é o CCCD para o serviço 2a38 (localização do sensor do corpo) com o bit 02 (suporte READ)

- o identificador 0x0012 é o CCCD para o serviço 2a39 (Ponto de Controle da Frequência Cardíaca) com o bit 08 (suporte WRITE)

Agora sabemos que a medição da frequência cardíaca funciona apenas com notificação. Isso significa que primeiro temos que registrar as alterações de valor em seu CCCD (UUID 0x2902), que neste caso é o identificador 0xf

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

Identificador de notificação = valor 0x000e: 16 65 f3 01 O valor característico foi escrito com sucesso Identificador de notificação = valor 0x000e: 16 6d fa 01 Identificador de notificação = valor 0x000e: 16 6d fa 01 Identificador de notificação = valor 0x000e: 16 6c f9 01 Identificador de notificação = valor 0x000e: 16 6a f7 01 Identificador de notificação = valor 0x000e: 16 69 f6 01

De acordo com a especificação do perfil, o segundo número hexadecimal é a informação BPM.

BPM:

6d = 109

6d = 109

6c = 108

6a = 106

69 = 105

Etapa 6: leitura da localização do sensor corporal

Lendo a localização do sensor corporal
Lendo a localização do sensor corporal

A localização do sensor corporal é o UUID 0x2A38. De acordo com seu descritor, essa característica oferece suporte à leitura básica, de modo que podemos ler seu valor diretamente.

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

De acordo com a especificação SIG, 03 significa "dedo"

Recomendado: