Оглавление:
- Шаг 1. Сканируйте устройство BLE
- Шаг 2: Подключение устройства
- Шаг 3: Получение характеристик устройства
- Шаг 4: чтение имени устройства
- Шаг 5: чтение BPM
- Шаг 6: Считывание местоположения датчика тела
Видео: Чтение значений с устройства BLE с использованием CSR1010 и Dragonboard 410c: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
В этом руководстве показано, как считывать значения с устройства BLE CSR1010 с помощью Dragonboard 410c с Linaro.
В этом примере CSR1010 эмулирует датчик сердечного ритма.
Шаг 1. Сканируйте устройство BLE
На этом этапе проверьте, готов ли ваш клиент BT для сканирования устройств BLE.
корень @ 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
Шаг 2: Подключение устройства
Мы будем использовать gatttool для подключения нашего устройства
-b: MAC-адрес устройства
-t: тип адреса LE. Может быть общедоступным или случайным, необходимо проверить спецификацию устройства. В этом случае публично.
-I: интерактивный режим gatttool. Откроется запрос на отправку команд на устройство.
корень @ linaro-alip: / home / linaro # sudo gatttool -b EE: 52: 5B: 04: 00: 02 -t public -I
Как только приглашение откроется, мы можем отправить на устройство команду подключения.
[EE: 52: 5B: 04: 00: 02] [LE]> connectПопытка подключения к EE: 52: 5B: 04: 00: 02
Соединение успешно
[EE: 52: 5B: 04: 00: 02] [LE]>
Шаг 3: Получение характеристик устройства
Как только устройство подключено, мы можем прочитать все доступные службы, отправив cmd "primary"
На основе 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 11handle: 0x0005, uuid: 00002800-0000-1000-8000-00805f9b34fb handle: 0x0006, uuid: 00002803-0000-1000-8000- 00805f9b34fb ручка: 0x0007, uuid: 00002a00-0000-1000-8000-00805f9b34fb ручка: 0x0008, uuid: 00002803-0000-1000-8000-00805f9b34fb ручка: 0x0009, uuid: 00002a01-0000-1000-8000-00805f9b uuid: 00002803-0000-1000-8000-00805f9b34fb handle: 0x000b, uuid: 00002a04-0000-1000-8000-00805f9b34fb handle: 0x000c, uuid: 00002800-0000-1000-8000-00805f9b34fb handle: 0x000d, uuid00: 0000280 -1000-8000-00805f9b34fb handle: 0x000e, uuid: 00002a37-0000-1000-8000-00805f9b34fb handle: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb handle: 0x0010, uuid: 00002803-0000-1000-8000- 00805f9b34fb дескриптор: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb
Согласно спецификации Generic Access Profile, 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]> дескриптор primaryattr: 0x0001, конечный дескриптор grp: 0x0004 uuid: 00001801-0000-1000-8000-00805f9b34fb attr handle: 0x0005, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb Attr handle: 0x000c, end grp handle: 0x0013 uuid: 0000180d-0000-1000-8000-00805f9b34fb attr handle: 0x0014, end grp handle: 0x0017 uuid: 0000180f-0000-1000-8000- 00805f9b34fb дескриптор атрибута: 0x0018, конечный дескриптор grp: 0x0021 uuid: 00001016-d102-11e1-9b23-00025b00a5a5 дескриптор атрибута: 0x0022, конечный дескриптор grp: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb
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-00805f9b34fb ручка: 0x000f, uuid: 00002902-0000-1000-8000-00805f9b34fb ручка: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb ручка: 0x0011, uuid: 00002a38-0000-1000-8000-00805f9b34fb ручка: 0x0012, uuid: 00002803-0000 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
6c = 108
6а = 106
69 = 105
Шаг 6: Считывание местоположения датчика тела
Расположение датчика тела - UUID 0x2A38. Согласно дескриптору, эта характеристика поддерживает базовое чтение, поэтому мы можем прочитать ее значение напрямую.
[EE: 52: 5B: 04: 00: 02] [LE]> char-read-hnd 0x11Характеристическое значение / дескриптор: 03
Согласно спецификации SIG, 03 означает «палец».
Рекомендуемые:
Как считывать несколько аналоговых значений с помощью одного аналогового вывода: 6 шагов (с изображениями)
Как считывать несколько аналоговых значений с помощью одного аналогового вывода: в этом уроке я покажу вам, как считывать несколько аналоговых значений, используя только один аналоговый входной вывод
Создание устройства для измерения энергии с использованием электронов частиц: 5 шагов (с изображениями)
Создание устройства для контроля энергии с использованием электронов с частицами: в большинстве предприятий мы считаем, что энергия является коммерческими расходами. Счет появляется в нашей почте или по электронной почте, и мы оплачиваем его до даты отмены. С появлением Интернета вещей и интеллектуальных устройств Energy начинает занимать новое место в бизнесе
Чтение и запись через последовательный порт с Raspberry Pi с использованием Wemos: 5 шагов
Чтение и запись через последовательный порт с помощью Raspberry Pi с использованием Wemos: обмен данными с Raspberry Pi с помощью Wemos D1 mini R2
Использование различных пороговых значений интенсивности серой шкалы для визуализации и выявления аномалий на изображениях маммограммы: 9 шагов
Использование различных пороговых значений интенсивности серой шкалы для визуализации и идентификации аномалий на изображениях маммограммы. Целью этого проекта было выявление и использование параметра для обработки изображений маммограммы в оттенках серого для различных фоновых классификаций тканей: жировая, жировая железистая и & Плотная ткань. Эта классификация используется, когда радиологи анализируют мам
Разработка приложений с использованием контактов GPIO на DragonBoard 410c в операционных системах Android и Linux: 6 шагов
Разработка приложений с использованием контактов GPIO на DragonBoard 410c с операционными системами Android и Linux: Цель этого руководства - показать информацию, необходимую для разработки приложений с использованием контакта GPIO на плате DragonBoard 410c с низкой скоростью. В этом руководстве представлена информация для разработки приложений с использованием контактов GPIO с SYS на Andr