Съдържание:

Четене на стойности от BLE устройство, използващо CSR1010 и Dragonboard 410c: 6 стъпки
Четене на стойности от BLE устройство, използващо CSR1010 и Dragonboard 410c: 6 стъпки

Видео: Четене на стойности от BLE устройство, използващо CSR1010 и Dragonboard 410c: 6 стъпки

Видео: Четене на стойности от BLE устройство, използващо CSR1010 и Dragonboard 410c: 6 стъпки
Видео: 连说三遍千万不要丢失手机否则人在家中坐债从天上来,拜登儿子变败灯封杀言论推特收传票如何鉴定胡说八道 Don't lose your phone, or you will go bankrupt. 2024, Ноември
Anonim
Четене на стойности от BLE устройство с помощта на CSR1010 и Dragonboard 410c
Четене на стойности от BLE устройство с помощта на CSR1010 и Dragonboard 410c

Този урок показва как да се четат стойности от BLE устройство CSR1010 с помощта на Dragonboard 410c с Linaro

В този пример CSR1010 емулира сензор за сърдечен ритъм.

Стъпка 1: Сканирайте BLE устройство

В тази стъпка проверете дали вашият BT клиент е готов за сканиране на BLE устройства.

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

LE сканиране … 18: EE: 69: 00: CE: 00 (неизвестно) 18: EE: 69: 00: CE: 00 (неизвестно) EE: 52: 5B: 04: 00: 02 CSR HR сензор

Стъпка 2: Свързване на устройство

Ще използваме gatttool за свързване на нашето устройство

-b: MAC адрес на устройството

-t: LE адрес тип. Може да бъде публично или произволно, трябва да проверите спецификациите на устройството. В този случай е публично достояние.

-I: интерактивен режим на gatttool. Ще се отвори подкана за изпращане на cmds на устройството

root@linaro -alip:/home/linaro# sudo gatttool -b EE: 52: 5B: 04: 00: 02 -t публично -I

След като подканата е отворена, можем да изпратим cmd за свързване към устройството.

[EE: 52: 5B: 04: 00: 02] [LE]> свързване Опит за свързване с EE: 52: 5B: 04: 00: 02

Връзката е успешна

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

Стъпка 3: Извличане на характеристиките на устройството

Извличане на характеристиките на устройството
Извличане на характеристиките на устройството

След като устройството е свързано, можем да прочетем всички налични услуги, като изпратим cmd „първичен“

Въз основа на UUID на услугата можем да открием типа услуга в спецификацията на GATT

www.bluetooth.com/specifications/gatt/services

Стъпка 4: Четене на името на устройството

Четене на името на устройството
Четене на името на устройството

Нека разгледаме характеристиките, прочетени в Generic Access Profile (uuid = 1800). Първо трябва да получим стойностите на обслужващата дръжка, описани на първата снимка, в този случай започва от 5 до 11. Сега можем да извлечем всички манипулатори в този интервал, като използваме cmd char-desc

[EE: 52: 5B: 04: 00: 02] [LE]> char-desc 05 11 дръжка: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb дръжка: 0x0006, uuid: 00002803-0000-1000-8000- 00805f9b34fb дръжка: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb дръжка: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb дръжка: 0x0009, uuid: 00002a01-0000b, 0000b uuid: 00002803-0000-1000-8000-00805f9b34fb дръжка: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb дръжка: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34f00: -1000-8000-00805f9b34fb дръжка: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb дръжка: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb дръжка: 0x0010, uuid- 00002 00805f9b34fb дръжка: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb

Съгласно спецификацията на общия профил за достъп, UUID 2A00 се отнася до Име на устройството.

Като се има предвид, че 2a00 е дръжката 0x0007 в нашето устройство, нека прочетем стойността

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 7Характеристична стойност/дескриптор: 43 53 52 20 48 52 20 53 65 6e 73 6f 72

Преобразувайки шестнадесетичен в ASCII, името на устройството е: '' CSR HR Sensor ''

Стъпка 5: Четене на BPM

[EE: 52: 5B: 04: 00: 02] [LE]> дръжка за първичен attr: 0x0001, дръжка за краен grp: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb дръжка attr: 0x0005, крайна дръжка grp: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb дръжка attr: 0x000c, крайна дръжка grp: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb дръжка attr: 0x0014, крайна дръжка: 0x0017 uuid: 00001000-8000 00805f9b34fb дръжка attr: 0x0018, дръжка за край grp: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 дръжка attr: 0x0022, дръжка за край grp: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b

UUID на услугата за сърдечен ритъм е 0x180d, така че интервалът на обработка е от 0x000c до 0x0013

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

дръжка: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb дръжка: 0x000d, uuid: 00002803-0000-1000-8000-00805f9b34fb дръжка: 0x000e, uuid: 00002a37-0000-1000-8000-0080bf: 00002902-0000-1000-8000-00805f9b34fb дръжка: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb дръжка: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb дръжка: 0x00-00-0000000000000000 1000-8000-00805f9b34fb дръжка: 0x0013, uuid: 00002a39-0000-1000-8000-00805f9b34fb

Четене на всички характерни декларации (UUID 0x2803).

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

Характеристична стойност/дескриптор: 10 0e 00 37 2a [EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x0010 Характерна стойност/дескриптор: 02 11 00 38 2a [EE: 52: 5B: 04:00:02] [LE]> char-read-hnd 0x0012 Характерна стойност/дескриптор: 08 13 00 39 2a

Забележи това:

- дръжката 0x000d е CCCD за услуга 2a37 (измерване на сърдечната честота) с бит 10 (поддържа NOTIFY)

- дръжката 0x0010 е CCCD за услуга 2a38 (Местоположение на сензора за тяло) с бит 02 (поддръжка READ)

- дръжка 0x0012 е CCCD за услуга 2a39 (точка за контрол на сърдечната честота) с бит 08 (поддържа WRITE)

Сега знаем, че измерването на сърдечната честота работи само с известие. Това означава, че първо трябва да се регистрираме за промяна на стойността в неговия CCCD (UUID 0x2902), който в този случай е манипулатор 0xf

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

Дръжка за известие = 0x000e стойност: 16 65 f3 01 Характеристична стойност е записана успешно Известие дръжка = 0x000e стойност: 16 6d fa 01 Дръжка за известие = 0x000e стойност: 16 6d fa 01 Дръжка за известие = 0x000e стойност: 16 6c f9 01 Дръжка за известие = 0x000e стойност: 16 6a f7 01 Дръжка за известие = 0x000e стойност: 16 69 f6 01

Според спецификацията на профила, вторият шестнадесетичен номер е BPM информацията.

BPM:

6d = 109

6d = 109

6в = 108

6а = 106

69 = 105

Стъпка 6: Четене на местоположението на сензора за тяло

Четене на местоположението на сензора за тяло
Четене на местоположението на сензора за тяло

Местоположението на сензора за тяло е UUID 0x2A38. Според дескриптора тази характеристика поддържа основно четене, така че можем да прочетем стойността му директно.

[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x11Характеристична стойност/дескриптор: 03

Според спецификацията на SIG, 03 означава "пръст"

Препоръчано: