Índice:
- Etapa 1: Verificar o dispositivo BLE
- Etapa 2: Conectando o dispositivo
- Etapa 3: Recuperando as características do dispositivo
- Etapa 4: Leitura do nome do dispositivo
- Etapa 5: Lendo o BPM
- Etapa 6: leitura da localização do sensor corporal
Vídeo: Lendo valores de um dispositivo BLE usando CSR1010 e Dragonboard 410c: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
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
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
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:
Como ler vários valores analógicos usando um pino analógico: 6 etapas (com imagens)
Como ler vários valores analógicos usando um pino analógico: neste tutorial, vou mostrar como ler vários valores analógicos usando apenas um pino de entrada analógica
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 etapas
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: DESCRI Ç Ã OO intuito do projeto é dar autonomia para deficientes visuais se locomoverem em ambientes internos como casas ou shopping centers e aeroportos.A locomo ç ã o em ambientes j á mapeados pode ou n ã o s
Lendo dados do sensor ultrassônico (HC-SR04) em um LCD de 128 × 128 e visualizando-os usando Matplotlib: 8 etapas
Lendo dados do sensor ultrassônico (HC-SR04) em um LCD de 128 × 128 e visualizando-os usando Matplotlib: neste instrutível, usaremos o LaunchPad MSP432 + BoosterPack para exibir os dados de um sensor ultrassônico (HC-SR04) em um 128 × 128 LCD e enviar os dados para o PC em série e visualizá-los usando Matplotlib
Lendo e gravando dados em EEPROM externa usando Arduino: 5 etapas
Lendo e gravando dados em EEPROM externa usando Arduino: EEPROM significa Electrically Erasable Programmable Read-Only Memory. EEPROM é muito importante e útil porque é uma forma de memória não volátil. Isso significa que mesmo quando a placa é desligada, o chip EEPROM ainda retém o programa que
Detecção de objeto com Dragonboard 410c ou 820c usando OpenCV e Tensorflow: 4 etapas
Detecção de objetos W / Dragonboard 410c ou 820c usando OpenCV e Tensorflow .: Este manual de instruções descreve como instalar OpenCV, Tensorflow e estruturas de aprendizado de máquina para Python 3.5 para executar o aplicativo de detecção de objetos