индикация записи что это

В большинстве случаев индикаторами уровня звука называют устройства, показывающие не собственно уровень звука, а уровень напряжения в звуковом тракте аппаратуры. Также их часто называют «волюметры» (VU-meter).

Индикаторы уровня звука бывают стрелочными, светодиодными и графическими (анализаторы спектра). Последние из перечисленных могут быть основаны на разных средствах представления изображения: с помощью жидкокристаллических и AMOLED-экранов, вакуумных люминесцентных индикаторов и светодиодных панелей.

Строго говоря, анализаторы спектра не вполне относятся к VU-метрам, но, поскольку часто используются вместо них, то в этой подборке они тоже будут представлены.

В подборке приведены цены на момент публикации с доставкой товара в Россию, в дальнейшем могут меняться в любую сторону.

Классический стрелочный индикатор уровня

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Этот индикатор — классического стрелочного типа, можно даже сказать «винтажный».

Дополнительную винтажность придаёт подсветка шкалы индикаторов настоящими лампами накаливания (да, их всё ещё делают).

Хотя на изображении головки индикаторов кажутся большими, на самом деле они — маленькие; их передняя панель имеет размер 35×35 мм. Благодаря этому индикатор можно разместить даже в малогабаритной аппаратуре. Но, с другой стороны, в крупногабаритной аппаратуре вряд ли этот индикатор будет выглядеть уместно (зависит от вкуса пользователя).

Цена всего комплекта из двух головок и платы управления (драйвера) — около 1200 российских рублей ($17).

Стрелочный индикатор в корпусе

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Этот стрелочный VU-meter основан на таких же измерительных головках, как и предыдущий, но оформлен в собственном корпусе как завершённое изделие.

Размер передней панели — 150×40 мм.

Питание осуществляется от комплектного адаптера (отдельно покупать не надо).

Цена — около 3300 рублей ($45.5).

Плата управления (драйвер) для стрелочных индикаторов

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Если комплектные измерительные головки оказались не подходящими по дизайну, то можно купить отдельно головки и отдельно — плату драйвера (на Алиэкспресс имеется достаточный выбор различных по дизайну измерительных головок).

Кроме того, пользователю могут вообще могут быть не нужны головки, поскольку остались, например, «живые» головки от древнесоветского магнитофона или другого устройства.

В этом случае достаточно купить только плату драйвера.

Представленная на изображении плата основана на специализированной микросхеме для стрелочных индикаторов — TA7318P.

Микросхема работает с компрессией сигнала, благодаря чему рабочий динамический диапазон увеличивается до 40 дБ.

Цена — около 700 рублей ($9.5).

Светодиодный 12-сегментный индикатор уровня звука

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Теперь переходим к светодиодным индикаторам уровня звука, понимая под ними обычные индикаторы «столбиком».

Данный VU-meter (обзор) построен на основе цифро-аналогового процессора, что позволило создать множество вариантов режимов и настроек для отображения уровня сигнала.

Индикатор не имеет собственного корпуса и предназначен для встраивания в аудио-аппаратуру.

Индикатор имеет небольшие габариты, длина блока светодиодов составляет 58 мм; а всей платы — 80 мм.

Светодиодный 30-сегментный индикатор уровня звука

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Этот VU-meter построен аналогично предыдущему, но гораздо более «навороченный».

Благодаря применению RGB-светодиодов значительно увеличивается как количество световых эффектов, так и настроек.

Для некоторого облегчения процесса установки желаемого режима работы в комплекте имеется инфракрасный пульт дистанционного управления индикатором.

Вместе с числом светодиодов значительно выросли и габариты, длина индикатора составляет 150 мм. По этой причине индикатор может оказаться затруднительным встроить в какую-либо аппаратуру; более простым будет его «автономное» применение (детали элементарного корпуса из прозрачного оргстекла входят в комплект).

Светодиодный 56-сегментный индикатор уровня звука в корпусе

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Этот 56-сегментный светодиодный VU-метр собран в таком же корпусе, как и один из описанных выше стрелочных индикаторов.

Размер лицевой панели — 150×40 мм.

Индикатор может работать как в горизонтальном, так и в вертикальном положении. Для горизонтального положения в комплекте есть ножки, а для вертикального — сборная подставка.

Индикатор имеет множество режимов и выпускается в двух исполнениях по типу применённых светодиодов: трехцветном и монохромном (зеленом). Цена — одинакова, дело лишь за вкусом будущего владельца.

Источника питания в комплекте нет, можно использовать любой телефонный адаптер с выходом USB 5 Вольт.

Светодиодный 40-сегментный индикатор уровня звука профессионального применения

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Этот светодиодный индикатор позиционируется производителем как устройство профессионального уровня.

Индикатор имеет крупные габариты и предназначен для встраивания в стандартную 19-дюймовую стойку.

Заявленный динамический диапазон — 57 дБ (шаг по уровню 1.5 дБ); причём рядом со светодиодами подписано значение уровня в дБ.

Светодиоды — трёх цветов: 20 зелёных, 10 жёлтых, 10 красных.

Покупатели в отзывах, в основном, индикатор одобряют; но есть замечания, что светодиоды могут иметь разную яркость, а также нет индикации включения устройства (при отсутствии сигнала не видно, включено устройство или нет).

Спектральный анализатор со светодиодной панелью

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

Этот индикатор выводит спектр на светодиодную панель, состоящую из напаянных на плату трёхцветных светодиодных блоков.

Устройство выпускается в двух вариантах: на 10 уровней и на 20 уровней. Количество частотных полос в обоих вариантах одинаковое — по 20.

В свободное от показа спектра время устройство может «работать» часами; хотя выглядит это не слишком гламурно.

Размер этого спектроанализатора — довольно большой, 200×26 мм или 228×52 мм в зависимости от модификации.

Цена — около 2700 рублей ($36.7) за вариант с 10-ю уровнями отображения спектра, и около 3200 рублей ($44.3) за вариант с 20-ю уровнями.

Спектральный анализатор с жидкокристаллическим экраном

индикация записи что это. индикация записи что это фото. картинка индикация записи что это. смотреть фото индикация записи что это. смотреть картинку индикация записи что это.

И, последний вариант анализаторов спектра — устройства на основе жидкокристаллических или AMOLED экранов.

Представленный здесь анализатор основан на миниатюрном жидкокристаллическом экране с размером 1.3 дюйма и разрешением 240×240. Предназначен для встраивания в аппаратуру.

Устройство работает в стерео-режиме (часто анализаторы спектра бывают одноканальными).

Для управления режимами пользователю необходимо дополнительно подключить 2 кнопки.

Цена — около 1050 рублей ($14.3).

Итак, в подборке были бегло рассмотрены основные типы индикаторов уровня звука (VU-метров). На самом деле на Алиэкспресс имеется множество индикаторов каждого типа, можно подобрать на любой вкус.

И, конечно, надо помнить, что цены на Али могут сильно колебаться; и с помощью настойчивого поиска можно найти устройства ощутимо дешевле тех, что первыми попались «под горячую руку».

Источник

Светодиодный индикатор уровня звука как украшение радиолюбительской конструкции. Обзор двухканального индикатора, «готового к употреблению»

Содержание

Вступление

Индикаторы уровня звука (точнее, уровня электрического сигнала в звуковом тракте) могут быть очень ответственными приборами, а могут служить и просто для украшения аппаратуры. Часто для краткости их называют VU-meter («волюметр»).

В профессиональной аппаратуре VU-meter — необходимейшее устройство, которое должно точно отображать требуемый параметр для предотвращения перегрузки или недогрузки звукового тракта.

А в бытовой аппаратуре это — не очень ответственный элемент, который может служить или для приблизительной оценки уровня сигнала, или вообще просто для красоты — чтобы огоньки бегали или стрелка двигалась в такт музыке.

В этом обзоре будет проанализирован предназначенный для встраивания в радиолюбительскую аппаратуру готовый светодиодный индикатор стереосигнала.

Цена на Алиэкспресс на дату обзора с доставкой в РФ — около 700 российских рублей ($8.90), проверить актуальную цену.

(изображение со страницы продавца на Алиэкспресс)

Тактико-технические характеристики, внешний вид, комплектация и конструкция светодиодного индикатора уровня звука

Небольшой набор тактико-технических характеристик от производителя представлен в следующей таблице:

Количество светодиодов на канал12 шт. (7 зелёных + 2 оранжевых + 3 красных)
Количество режимов шкалы сигнала2 (Логарифмический + АРУ)
Количество режимов отображения сигнала6
Напряжение питания7. 12 В
Ток потребления100 мА
Размер платы индикатора80*14 мм
Размер блока индикаторов58*14 мм

Реальное потребление сильно зависит от яркости и количества работающих светодиодов.

При всех включенных светодиодах на максимальной яркости потребление составило 54 мА, при включенных только двух светодиодах потребление составило 17 мА.

Комплектация индикатора предельно проста, она состоит из платы индикатора и кабеля для внешних соединений:

(фотографии в обзоре кликабельны)

Инструкцию по настройке индикатора можно найти на страницах некоторых продавцов; она, в принципе, верная, но бестолковая:

Пришлось составить свою инструкцию, она будет представлена далее в обзоре.

Так выглядит VU-meter в боковом ракурсе, в котором хорошо видно соотношение в размерах между его разными частями:

Так выглядит индикатор со стороны линеек светодиодов:

Назначение контактов разъёма подписано на плате вполне понятным образом, дополнительных разъяснений не требуется.

Теперь смотрим на плату со стороны элементов:

Электронная «начинка» индикатора кажется несложной. Но это — только кажимость; на самом деле здесь имеется даже настоящий процессор со своей микропрограммой (прошивкой)!

Но с этим ещё разберёмся, а пока обратим внимание на небольшую круглую кнопку внизу чуть правее середины платы.

С помощью этой единственной кнопки делаются все настройки. Желаемый режим работы лучше установить до встраивания индикатора в аппаратуру, так как после установки кнопка может оказаться труднодоступной.

Вид на часть платы вблизи разъёма:

Здесь расположен крайне популярный сдвоенный операционник LM358 и маленькая трёхногая микросхема линейного стабилизатора на 5 В.

Операционник принимает аналоговый сигнал с входных линий и далее отправляет его на другую часть платы, где его поджидает процессор:

Здесь есть пара транзисторов, ещё один стабилизатор на 5 В, кнопка управления режимами и «сердце» индикатора — аналого-цифровой процессор STM8S003F3P6.

Этот процессор поддерживает до 5-ти каналов 10-битного аналого-цифрового преобразования.

Его вычислительная часть работает на частоте 16 МГц, имеет 8K байт памяти прошивки и 1K байт ОЗУ. Это всё — небольшие величины, но достаточные для выполнения поставленной задачи.

Теперь переходим к аналитической части обзора.

Технические испытания светодиодного индикатора уровня звука

Сначала немного разберёмся с теорией анализа сигнала и его отображения (применительно к тестируемому индикатору).

Индикаторы могут реагировать на разные величины: на пиковое значение сигнала, его среднее значение или среднеквадратичное (действующее).

Шкала индикации может быть линейной, логарифмической («децибельной») или с автоматической регулировкой усиления (АРУ, AGC). Бывают и более экзотические методы, их не рассматриваем.

Первые два типа шкалы предъявляют пользователю реальное значение сигнала, а последний (с АРУ) служит только для красивой динамической индикации.

Способы визуального представления замеренной величины сигнала на светодиодных индикаторах тоже могут быть разными.

Уровень сигнала может быть представлен в виде «классического» столбика (иногда — в виде двухстороннего столбика, растущего от середины индикатора), или же в виде одного или нескольких сегментов, двигающихся вверх или вниз в зависимости от уровня сигнала. Эти методы могут быть иметь дополнительные опции, например, в виде фиксации на какое-то время одиночным сегментом максимального уровня сигнала.

Герой обзора имеет два режима шкалы сигнала: логарифмический и с автоматической регулировкой усиления (AGC).

Режим автоматической регулировки усиления (Automatic Gain Control) назван так, естественно, условно. Никаких схем регулировки усиления в индикаторе нет; автоматическая подстройка отображения сигнала производится чисто вычислительным путём.

Для выяснения вопроса, на что именно реагирует тестируемый VU-meter (пик или среднее значение), на индикатор был подан прямоугольный сигнал с переменным заполнением от 10% до 30% (частота 1 кГц).

В случае реакции индикатора на пик сигнала при изменении заполнения прямоугольника «столбик» на индикаторе в децибельном режиме не должен меняться; а при реакции на среднее значение должен увеличиваться по мере увеличения заполнения.

Испытания показали, что столбик увеличивается, т.е. для индикации используется средний уровень. Возможности использования в индикаторе среднеквадратичного уровня и прочей «экзотики» отметаем, как создающие чрезмерную вычислительную нагрузку.

Теперь — таблица с результатами замера входного напряжения, необходимого для устойчивого включения сегментов индикатора в децибельном режиме на частоте 1 кГц (синус); отображение классическим столбиком. Сигнал подавался от генератора сигналов FY6800; под напряжением в таблице понимается размах сигнала, т.е. двойная амплитуда (т.к. именно её показывает индикатор генератора FY6800).

В скобках указан прирост к предыдущему значению в дБ.

СегментНапряжение
1светится всегда
265 мВ
3195 мВ (+9.5 дБ)
4350 мВ (+5.1 дБ)
5530 мВ (+3.6 дБ)
6750 мВ (+3.0 дБ)
71.04 В (+2.84 дБ)
81.47 В (+3.0 дБ)
92.07 В (+2.9 дБ)
103.00 В (+3.2 дБ)
114.2 В (+2.9 дБ)
126.1 В (+3.2 дБ)

Таким образом, с учетом погрешности метода измерения, можно утверждать, что за основу производитель взял логарифмическую шкалу с ценой деления 3 дБ на основной части; но с загрублением цены деления при малых сигналах.

С одной стороны, это позволяет несколько расширить динамический диапазон работы индикатора (он составил 39.5 дБ); но, с другой стороны, это сделает менее точными и динамичными показания при малом сигнале.

Иными словами, в децибельном режиме при малом сигнале нижние сегменты будут двигаться медленно и лениво (что и подтвердилось при испытании реальным музыкальным сигналом).

Но в режиме АРУ (AGC) всё работает совсем по-другому. В этом режиме процессор автоматически придвигает средний уровень сигнала к середине шкалы, и картинка получается весьма динамичной при любом сигнале (за исключением выхода сигнала за пределы динамического диапазона).

Несколько слов о частотной полосе индикатора уровня звука.

В области нижних частот есть заметный завал, полоса пропускания по уровню минус 3 дБ начинается от 170 Гц.

В области средних и высоких частот характеристика довольно плоская, с пологим повышением на 20% к частоте 20 кГц.

В целом же характеристика — далеко не идеальная, и реальный уровень сигнала индикатор отобразит не очень точно.

Теперь посмотрим, как индикатор работает с реальным музыкальным сигналом.

Примеры отображения сигнала в режиме АРУ и в трёх разных режимах визуализации (из 6-ти возможных) представлены на следующих видео.

1. Классическое отображение уровня столбиком:

2. Отображение столбиком с фиксацией уровня максимума и последующим его падением вниз:

3. Отображение уровня звука движением двух сегментов:

Краткая инструкция (User Manual) по настройке индикатора уровня звука с описанием режимов

Теперь — обещанная инструкция по настройке, составленная на основе личного опыта.

Для настройки используется единственная кнопка.

Одиночное короткое нажатие ничего не меняет (как мне показалось). Другие, перечисленные далее, варианты меняют настройки циклически, т.е. их нумерация условна (первой можно считать любую из них).

Двойное короткое нажатие меняет яркость. Возможные варианты: слабая, средняя, высокая.

Удержание кнопки нажатой в течение 1-ой секунды меняет режимы отображения. При этом самому считать длительность нажатия не надо: при удержании кнопки нажатой на индикаторе справа вверху добавляется по одному зажженному сегменту каждую секунду. Сегменты нарастают сверху вниз.

1. Классическое отображение столбиком (чем выше сигнал, тем больше зажигается сегментов, как на первом видео).

2. Отображение столбиком с фиксацией уровня максимума и последующим его подъёмом вверх.

3. Отображение двумя сцепленными зажженными сегментами, которые поднимаются вверх или падают вниз в зависимости от уровня сигнала (как на последнем из 3-х видео).

4. То же, что и в предыдущем пункте, но уровень отображается движением только одного сегмента.

5. Отображение столбиком, при этом фиксируется максимум, который затем «стреляет» вверх и «рикошетит» обратно вниз.

6. Отображение столбиком, при этом фиксируется максимум, который затем падает вниз (как на втором видео).

Удержание кнопки нажатой в течение 3-х секунд переключает режим шкалы: логарифмическая (децибельная) или АРУ (AGC).

В режиме АРУ картинка получается более динамичной, размах движения сегментов — высокий, практически во всю шкалу (за исключением случаев выхода сигнала за границы динамического диапазона).

В децибельном режиме движения сегментов — более медленные, а при малом сигнале — откровенно вялые.

В режиме АРУ есть особенность: если индикатор «спугнуть» сильным сигналом, то потом он медленно возвращается к норме, примерно за 20-30 секунд.

Удержание кнопки нажатой в течение 5-ти секунд переключает VU-meter в режим настройки скорости движения сегментов. При этом слева будет столбик высотой от 1 до 7 сегментов, показывающих скорость движения сегментов в рабочем режиме. При этом максимуму скорости соответствует высота в 1 сегмент, а минимуму — в 7 сегментов. Настройка производится короткими нажатиями.

Слева вверху индикатор показывает числом светящихся сегментов номер настраиваемого параметра из списка ниже.

Правый столбик будет «тестовым», т.е. он будет показывать, как работает установленное значение скорости.

Переход (циклический) между настраиваемыми параметрами осуществляется удержанием кнопки нажатой в течение 1 секунды.

Для возврата обратно в рабочий режим нужно снова удерживать кнопку нажатой в течение 5 секунд.

Список настраиваемых параметров скорости движения сегментов:

1. Скорость роста светового столбика.

2. Скорость падения светового столбика.

3. Время удержания пика (одиночного сегмента).

4. Скорость падения пика.

5. Не понял, что это за параметр.

И, наконец, нажатие кнопки в течение 10 секунд — возврат к заводским настройкам.

Итоги, выводы, рекомендации

Главная рекомендация: при мощном источнике сигнала (например, выход усилителя мощности) необходимо VU-meter подключать к источнику сигнала строго через делитель напряжения. Коэффициент деления подбирается «по вкусу» пользователя.

Если пользователь любит тихую и среднюю громкость музыки, то уменьшать напряжение с помощью делителя надо не сильно; а если любит высокую громкость — то уменьшать напряжение надо существенно. В последнем случае не забываем о гуманном отношении к соседям! 🙂

Теперь — общий итог и область применения

Для каких-то серьёзных целей этот индикатор уровня звука не подходит. Препятствием к этому будут две причины.

Первая — неравномерность АЧХ с сильным спадом на низких частотах.

Вторая — грубый шаг шкалы в децибельном режиме, особенно в области слабых сигналов.

В «плюсы» индикатора запишем широкие возможности настройки внешнего вида и динамики индикации.

Использование светодиодов трёх цветов тоже добавляет позитива этому устройству.

Индикатор вполне подходит для «оживления» внешнего вида радиолюбительских конструкций, что позволит преобразовать их дизайн из «чёрных ящиков» в яркую привлекательную технику.

Тонкости покупки

Во-первых, надо обращать внимание, продаётся индикатор полностью собранным или как комплект для сборки (потребуется напаять только светодиодные линейки и разъём). Выбирать надо то, что Вам больше по душе.

Вторая «тонкость» состоит в том, что существует ещё один индикатор с точно такой же конструкцией, но собранный на плате чёрного цвета. У него — другая прошивка и другая реализация режимов. Может, он и не хуже, но данный обзор на него точно не распространяется.

Ситуация осложняется тем, что у некоторых продавцов на разных фото одного и того же индикатора плата может быть и зелёной, и чёрной. Надо внимательно смотреть не только фото, но и описание.

Источник

Bluetooth Low Energy: подробный гайд для начинающих. Соединения и сервисы

Это третья часть перевода книги Мохаммада Афане “Intro to Bluetooth Low Energy”. Сегодня мы подробнее рассмотрим процесс подключения устройств и поговорим о сервисах.

Благодаря сервисам происходит обмен как стандартными данными (уровень заряда батареи через Battery Service, текущее время устройства через Current Time Service и т.д.), так и кастомными, при помощи сервисов, созданных разработчиком устройства для удовлетворения специфических нужд. Например, для Atmotube Pro мы сделали два сервиса, в которые сгруппировали несколько характеристик для синхронизации истории, передачи данных о концентрации пыли и летучих органических соединений.

Эта часть получилась очень большой, извините. Я старался сократить ее, или разбить на несколько, однако это нарушило бы целостность восприятия, пожалуй, самой важной темы книги. В следующей части мы поговорим о нововведениях Bluetooth 5 и рассмотрим методы обеспечения безопасности соединения и пользовательских данных в BLE.

4. Соединения

Для того, чтобы два BLE устройства установили соединение, необходимо выполнить следующие шаги:

Периферийное устройство должно начать процесс адвертайзинга и не останавливать его до момента установки соединения.

Центральное устройство должно сканировать радиоэфир в поисках пакетов адвертайзинга.

Если центральное устройство прослушивает канал адвертайзинга в момент, когда периферийное устройство посылает по нему данные, то оно обнаруживает периферийное устройство.

Затем центральное устройство посылает пакет CONNECT_IND (также известный как запрос на соединение).

Периферийное устройство всегда прослушивает текущий канал адвертайзинга после отправки пакета. Это позволяет ему получить запрос на соединение от центрального устройства, что запускает процесс установки соединения между двумя устройствами.

После того как будут выполнены эти шаги, соединение будет считаться созданным, но еще не установленным. Соединение будет считаться установленным, после того как устройство получит пакет данных от своего партнера по соединению. После установления соединения центральное устройство возьмет на себя роль ведущего, а периферийное, в свою очередь, ведомого. Ведущее устройство будет отвечать за управление соединением, контроль параметров соединения и контроль временных интервалов между различными событиями.

4.1 События подключения

Во время событий подключения ведущий и ведомый отправляют друг другу данные до тех пор, пока не останется данных, требующих передачи. Есть несколько фактов о соединениях, которые очень важно знать:

События подключения происходят периодически до тех пор, пока соединение не будет закрыто или потеряно.

Событие подключения состоит как минимум из одного пакета посланного ведущим устройством.

Ведомое устройство всегда отвечает отправкой пакета, если оно получает пакет от ведущего.

Подключение может быть закрыто как ведущим, так и ведомым.

События подключения разнесены во времени на период интервала соединения.

Рис. 13: Интервал соединения и события соединения

4.2 Параметры соединения

Параметры, определяющие соединение:

Интервал соединения

Интервал соединения может принимать любое из значений между 7.5 мс и 4.0 секундами с шагом в 1.25 мс. Он задается центральным устройством в пакете запроса соединения. Центральное устройство может принять во внимание Предпочитаемые Параметры Соединения Периферийного Устройства (PPCP ). Центральное устройство вправе принять их, модифицировать или отклонить.

Задержка ведомого (Slave Latency)

Параметр задержки ведомого позволяет периферийному устройству оставлять без ответа определенное количество событий соединения и не слушать центральное устройство во время этих событий без инвалидации соединения. Это позволяет периферийному устройству переходить в режим энергосбережения на более длительный срок. Задержка ведомого отображает количество событий соединения, которое периферийное устройство может пропустить.

Например, если установлена задержка три, то периферийное устройство может пропустить три последовательных события соединения, но затем оно должно будет выйти из режима энергосбережения, прослушать центральное устройство и ответить на следующее событие соединения.

Таймаут наблюдения (Supervision Timeout)

Таймаут наблюдения используется для определения потери соединения. Он определяется как максимальное время между двумя полученными пакетами данных, прежде чем соединение считается потерянным. Его значение может задаваться в диапазоне между 100 мс и 32 секундами с шагом 10 мс. Другое условие выглядит следующим образом:

Таймаут наблюдения > (1 + задержка ведомого) * интервал соединения * 2

Расширение длины данных (DLE )

Это опция, которая позволяет пакетам данных содержать большее количество полезной нагрузки (до 251 байта, в случае, когда эта настройка выключена, полезная нагрузка составляет 27 байт). Эта возможность введена в версии 4.2 спецификации Bluetooth.

Максимальная единица передачи (MTU )

Понятие максимальной единицы передачи используется в компьютерных сетях и определяет максимальный размер данных, которые можно передать по определенному протоколу. Максимальная единица передачи атрибута (в спецификации определена как ATT_MTU) это наибольший размер полезной нагрузки атрибута, который можно передать между клиентом и сервером.

Эффективный размер ATT_MTU определяется наименьшим значением максимальных ATT_MTU поддерживаемых ведущим и ведомым. Например, если ведущее устройство поддерживает ATT_MTU 100 байт и ведомое устройство сообщает, что оно поддерживает ATT_MTU 150 байт, то ведущий решает, что для этого соединения будет использоваться ATT_MTU 100 байт.

Примечание: Для достижения максимальной пропускной способности убедитесь, что включено расширение длины передаваемых данных (в случае, если вы используете Bluetooth 4.2 или новее). Это поможет снизить количество избыточно передаваемых служебных данных, таких как заголовки пакетов, за счет уменьшения числа пакетов.

4.3 Переключение между каналами

Как мы упоминали ранее в начале этой главы, существуют 37 радиоканалов, используемых для передачи пакетов данных в течении соединения. В то же время, не все 37 каналов необходимы для соединения. Используемые каналы определяются картой каналов, которая включена в пакет запроса соединения, отправляемый центральным устройством периферийному для установки соединения. Для каждого события соединения пакеты данных будут переданы по другому каналу в карте каналов.

Последовательность каналов, используемая для каждого события соединения определяется картой каналов и шагом прыжка (hop increment). Шаг прыжка, также как и карта каналов, включен в пакет запроса соединения. Комбинация карты каналов и шага прыжка определяет, какой канал будет использован для каждого интервала соединения.

Рис. 14: Карта каналов и шаг прыжка

Существует два алгоритма выбора каналов в BLE. Рассмотрение подробностей их работы лежит вне поля зрения этой книги. Для того, чтобы узнать больше об этих алгоритмах и принципах их работы, обратитесь к спецификации Bluetooth (version 5.0 | Vol 6, Part B, Section 4.5.8.2).

4.4 Белый список и фильтрация устройств

BLE поддерживает фильтрацию устройств для процедур, связанных с состояниями адвертайзинга, сканирования и стадией инициации (при установлении соединения).

Белый список – это список адресов и типов адресов определенных устройств. Он используется для определения того, в каких устройствах заинтересовано конкретное устройство. Запись для анонимного типа адреса устройства позволяет сопоставить все широковещательные пакеты, отправленные без адреса.

Фильтрация устройств происходит на канальном уровне контроллера (нижний уровень протокола Bluetooth), что позволяет сохранить время и не производить лишнюю работу на уровне хоста (на верхних уровнях протокола). Однако именно хост отвечает на конфигурацию белого списка.

Ниже приведен список различных правил фильтрации для каждого из состояний:

Правило фильтрации для состоянии адвертайзинга (периферийное устройство)

Эта политика фильтрации определяет, как периферийное устройство будет обрабатывать запросы сканирования и запросы на подключение. Она может быть сконфигурирована следующим образом:

Обрабатываются запросы сканирования и запросы на подключение только от устройств из белого списка.

Обрабатываются запросы от всех устройств (фильтрация не используется).

Обрабатываются запросы сканирования только от устройств из белого списка, обрабатываются запросы на подключение от всех устройств.

Обрабатываются запросы на подключение только от устройств из белого списка, обрабатываются запросы сканирования от всех устройств.

Правило фильтрации для состояния сканирования (центральное устройство)

Это правило фильтрации определяет, как сканирующее устройство будет обрабатывать пакеты адвертайзинга. Может быть сконфигурировано следующим образом:

Обрабатываются пакеты адвертайзинга от всех устройств (белый список не используется).

Обрабатываются пакеты адвертайзинга только от устройств, включенных в белый список.

Правило фильтрации для состояния инициации (центральное устройство)

Это правило определяет, как устройство, инициирующее соединение, будет обрабатывать пакеты адвертайзинга. Может быть сконфигурировано следующим образом:

Обрабатывать пакеты адвертайзинга и инициировать соединение только с устройствами, включенными в белый список.

Обрабатывать пакеты адвертайзинга и инициировать соединение только с устройствами, определенными хостом.

Обратите внимание, что это не опция для обработки пакетов и подключения к подключаемому периферийному устройству, которого нет в белом списке.

5. Сервисы и характеристики

Прежде чем начать рассказ о сервисах и характеристиках, мы должны рассмотреть два очень важных понятия: Общий профиль атрибутов (GATT ) и Протокол атрибутов (ATT ).

5.1 Протокол атрибутов (ATT)

АТТ определяет, в каком виде сервер представит свои данные клиенту и как эти данные будут структурированы. Существует две роли, связанные с АТТ:

Сервер:

Это устройство, которое предоставляет данные, которые оно содержит, или которыми управляет и, в некоторых случаях, другие аспекты поведения сервера, которые могут контролировать другие устройства. Это устройство, которое получает входящие команды от связанного устройства и отправляет ответы, уведомления и индикации.

Например, беспроводной термометр будет вести себя как сервер, когда он будет предоставлять температуру окружающей среды, единицу измерений, свой уровень заряда и, возможно, временные интервалы, с которыми термометр производит измерения и сохраняет их результаты. Он также может уведомлять клиент (объясним позже) об изменениях температуры для того, чтобы клиент не опрашивал его непрерывно в ожидании готовых к отправке данных.

Клиент:

Это устройство, которое взаимодействует с сервером с целью считать предоставляемые сервером данные и/или для того, чтобы контролировать его поведение. Это устройство, которое посылает команды и запросы и получает входящие уведомления и индикации. В предыдущем примере, мобильный телефон, который подключался к беспроводному термометру и считывал его показания температуры, действовал в роли клиента.

Данные, предоставляемые сервером, сгруппированы в атрибуты. Атрибут это общий термин для любых типов данных, предоставляемых сервером, он определяет структуру этих данных. Например, сервисы и характеристики (будут описаны позднее) являются атрибутами. Ниже состав атрибута:

Тип атрибута (универсальный уникальный идентификатор, UUID)

Это 16-битное (в случае стандартных атрибутов Bluetooth SIG) или 128-битное число (в случае атрибутов, определенных разработчиком устройства, vendor-specific UUID).

Например, UUID для одобренного консорциумом атрибута значения температуры 0x2A1C. Одобренные консорциумом типы атрибутов имеют один общий (за исключением 16 бит) специальный 128-битный UUID:

0000XXXX-0000-1000-8000-00805F9B34FB

16-битный UUID будет подставлен вместо символов ХХХХ в базовом UUID.

Собственный UUID может быть любым 128-битным числом, не совпадающим ни с одним из одобренных Bluetooth-SIG базовых UUID. Например, разработчик может создать свой собственный UUID для показаний температуры, такой как:

Одно из преимуществ использования стандартных UUID состоит в уменьшении размера пакета, так как UUID может быть передан в виде 16-битного числа, вместо передачи полного 128-битного числа.

Дескриптор атрибута

Это 16-битное число, которое сервер присваивает каждому из своих атрибутов. Это число используется клиентом как ссылка на конкретный атрибут, и сервер гарантирует, что эта ссылка будет уникальной для атрибута, которому она присвоена, в течении всего времени существования соединения между устройствами. Дескриптор может иметь любое значение в диапазоне 0x0001-0xFFFF, значение 0х0000 зарезервировано.

Права атрибута

Права определяют, может ли атрибут быть прочитан или записан, может ли он посылать уведомления или индикации, и какие уровни доступа требуются для каждой из этих операций. Эти права не определяются протоколом атрибутов (АТТ) и не могут быть прочитаны через него, они определяются на верхнем уровне (GATT или уровне приложения).

Рис. 15: Состав атрибута (источник: спецификация Bluetooth 5)

5.2 Общий профиль атрибутов (GATT)

Теперь, когда мы рассмотрели концепцию атрибутов, познакомимся с другими тремя важными понятиями в BLE, с которыми вам придется постоянно сталкиваться.

Сервисы

Характеристики

Профили

GATT определяет формат сервисов и их характеристик, а также процедуры, используемые для взаимодействия с этими атрибутами, такие как обнаружение сервисов, чтение и запись характеристик, уведомления и индикации.

GATT выполняет ту же роль, что и протокол атрибутов (АТТ). Роли устанавливаются не для устройств, они определяются во время транзакций (такие как запрос ⟷ ответ, индикация ⟷ подтверждение, уведомление). Таким образом, устройство может действовать как сервер, предоставляющий данные клиентам, и в то же время быть в роли клиента, получая данные, подготовленные другими серверами одновременно.

5.3 Сервисы и характеристики

5.3.1 Сервисы

Сервисы это группа из одного или большего числа атрибутов, некоторые из которых являются характеристиками. Он предназначен для группировки связанных атрибутов, удовлетворяющих специфической функциональности сервера. Например, одобренный SIG сервис батареи содержит одну характеристику под названием “уровень заряда”.

Сервисы также содержат другие атрибуты, которые помогают структурировать данные сервиса, такие как объявления сервера, объявления характеристик и другие.

Вот что из себя представляют сервисы:

Рис. 16: Профили, сервисы и характеристики (источник: спецификация Bluetooth)

На рисунке мы видим различные атрибуты, составляющие сервис:

Один или несколько включенных сервисов

Одна или несколько характеристик

Включение сервисов позволяет сервису ссылаться на другие сервисы как на включенные в него. Существует два типа сервисов:

Первичный сервис: предоставляет основную функцию устройства или одну из них.

Вторичный сервис: предоставляет дополнительную функциональность устройства и включен в как минимум один первичный сервис на устройстве (вторичные сервисы очень редко применяются, и еще реже возникает необходимость в них – они не будут более подробно рассматриваться в этой книге).

5.3.2 Характеристики

Характеристика всегда является частью сервиса и предоставляет часть тех данных, которые сервер хочет предоставить клиенту. Например, характеристика уровня заряда батареи показывает оставшийся уровень заряда батареи в устройстве, который может быть прочитан клиентом. Характеристика содержит набор атрибутов, которые облегчают работу с содержащимися в характеристике данными:

Свойства: представлены набором бит, определяющих то, каким образом значение характеристики может использоваться. Пример свойств: чтение, запись, запись без ответа, уведомление, индикация.

Дескрипторы: используются для хранения информации, связанной со значением характеристики. Примеры использования: расширенные свойства, пользовательское описание, поля, используемые для подписки на уведомления и индикации, поля, описывающие представление характеристики, такие как формат или единица измерения.

Понимание этих концепций важно, однако вы, как разработчик приложения, будете в основном взаимодействовать с API, предоставленным операционной системой или SDK чипсета, которые абстрагируют вас от многих этих понятий.

Например, вы можете иметь API для включения уведомлений для некоторых характеристик, который вы просто вызываете и вам нет необходимости знать, что результатом этого вызова будет запись значения 0x0001 в дескриптор конфигурации характеристик клиента (CCCD ) на сервере.

Важно помнить, что, хотя нет никаких запретов или ограничений на количество характеристик, содержащихся в сервисе, сервисы предназначены для группировки связанных характеристик, которые определяют конкретные функции в устройстве.

Например, технически возможно создать сервис под названием сервис влажности, который будет включать в себя характеристику влажности и характеристику температуры. Но гораздо более логичным решением будет создать два отдельных сервиса для каждой несвязанной функции (отображение текущей температуры и отображение текущей влажности).

Стоит отметить, что Bluetooth SIG приняла довольно-таки большое количество сервисов и характеристик, которые удовлетворяют большей части распространенных сценариев использования. Для этих одобренных сервисов существуют спецификации, помогающие разработчикам реализовать их вместе с обеспечением соответствия и взаимодействия с каждым сервисом.

Если устройство заявляет о совместимости с сервисом, оно должно полностью соответствовать спецификации сервиса, опубликованной Bluetooth SIG. Это важно, если вы хотите разработать устройство, которое будет гарантированно подключаться к устройствам, изготовленными другим производителем. Сервисы Bluetooth, принятые SIG, делают соединение «предварительно согласованным» между устройствами различных производителей.

Вы можете найти список одобренных сервисов здесь, и их спецификации здесь. Одобренные характеристики находятся по этому адресу.

5.4 Профили

Профили по своему определению гораздо шире сервисов. Они занимаются определением поведения как клиента, так и сервиса, когда дело касается сервисов, характеристик и даже соединений и требований безопасности. Сервисы и их спецификации, с другой стороны, касаются реализации этих сервисов и характеристик только на стороне сервера.

Также как и в случае с сервисами, существуют одобренные SIG профили с опубликованными спецификациями к ним. В спецификации профиля вы можете найти следующее:

Определение ролей и взаимоотношений между GATT сервера и клиента.

Как используются требуемые сервисы и характеристики.

Детали требований к процессу установления соединения, включая параметры адвертайзинга и соединения.

Ниже в качестве примера приведена диаграмма, взятая из спецификации на профиль кровяного давления. Она показывает отношения между ролями (сервер и клиент), сервисами и характеристиками внутри профиля.

Рис. 17: Профиль кровяного давления (Источник: Спецификация профиля кровяного давления)

Роли представлены в виде желтых прямоугольников, сервисы – в виде оранжевых прямоугольников. Вы можете найти список профилей, одобренных SIG, здесь.

5.5 Пример GATT

Давайте посмотрим на пример использования GATT. В этом примере мы будем использовать файл GATT.xml, используемый в Silicon Labs Bluetooth Low Energy development framework (BGLib).

Рис. 18: Файл GATT.xml из примера приложения от фирмы Silicon Labs

В этом XML-файле вы можете заметить следующее:

Определены два сервиса:

Сервис общего профиля доступа (GAP) с UUID: 0x1800 (одобрен SIG).

Сервис общего профиля доступа обязателен по спецификации и включает следующие обязательные характеристики:

Имя с UUID 0x2A00 и значением: Bluegiga CR Demo.

Окружение с UUID 0x2A01 и значением 0x4142.

Описание значений окружения приведены здесь.

Примечание: обычно создание и включение этого сервиса является задачей вендора чипсета и, обычно, разработчику предоставляется API для простой установки значений имени и окружения.

Сервис замены кабеля имеет одну характеристику под названием данные.

Характеристика данных имеет UUID: e7add780-b042-4876-aae1-112855353cc1

Включены свойства, разрешающие запись в характеристику и индикацию.

5.6 Операции с атрибутами

Существует шесть различных типов операций, которые могут производиться над атрибутами:

Команды: посылаются клиентом серверу и не требуют ответов.

Запросы: посылаются клиентом серверу и требуют ответов. Существуют два типа запросов:

Запросы на поиск информации

Ответы: посылаются сервером клиенту в ответ на запрос.

Уведомления: Посылаются сервером клиенту с целью оповестить об изменении значения характеристики. Для получения уведомлений клиент должен включить их для интересующих характеристик. Помните, что уведомления не требуют подтверждения о получении от клиента.

Индикации: посылаются сервером клиенту. Во многом похожи на уведомления, но требуют подтверждения успешного приема клиентом.

Примечание: настройки уведомлений и индикаций представлены в атрибуте дескриптора конфигурации характеристик клиента (CCCD). Запись “1” в этот атрибут включит уведомления, запись “2” включит индикации. Запись “0” отключит как уведомления, так и индикации.

Подтверждения: посылаются клиентом серверу. Это пакеты, посылаемые с целью уведомить сервер об успешном приеме индикации клиентом.

5.6.1 Управление потоком и последовательность операций с атрибутами

Запросы последовательны по своей природе и требуют ответа от сервера перед отправкой нового запроса. Индикации имеют такое же требование: новая индикация не может быть отправлена до тех пор, пока не получено подтверждение о приеме предыдущей индикации.

Запросы и индикации являются взаимоисключающими с точки зрения требований к последовательности. То есть индикация может быть отправлена сервером до того как он ответит на запрос, который получил ранее.

5.6.2 Чтение атрибутов

Чтение – это запрос по своей природе, так как оно требует ответа. Существует несколько типов запросов на чтение, но наиболее важны следующие два:

Запрос на чтение: простой запрос, ссылающийся на атрибут, который будет прочитан его дескриптором.

Запрос на чтение части данных: похож на запрос на чтение, но содержит смещение, указывающее, с какого участка чтение должно начаться, возвращая часть значения. Этот тип чтения используется для чтения только части значения характеристики.

5.6.3 Запись атрибутов

Запись может быть командой или запросом. Ниже представлены наиболее популярные типы записи:

Запрос на запись: как следует из названия, требует ответа от сервера, подтверждающего успешное получение данных.

Команда на запись: не требует ответа от сервера.

Упорядоченная запись (атомарное поведение операции): классифицируется как запрос и требует подтверждения от сервера. Они используются в случаях, когда требуется записать большое количество данных, не умещающееся в одно сообщение. Вместо того, чтобы записывать части сообщения и давать возможность кому-то прочитать некорректное неполное значение, применяются два типа запросов на запись, для того, чтобы иметь уверенность в безопасном выполнении операции:

Один или несколько запросов на подготовку к записи: каждый включает в себя смещение, с которым посылаемое значение должно быть записано в значение атрибута. Посылаемые значения также часто называют подготовленными значениями, и они хранятся в буфере на стороне сервера, еще не записанные в атрибут. Эта операция требует ответа со стороны сервера.

Один запрос на запись: используется для запроса сервера о выполнении или отмены записи принятых значений в атрибут. Требует ответа от сервера для того, чтобы клиент был уверен в том, что атрибут содержит целое и верное значение, посланное серверу.

5.6.4 Запрос на обмен MTU

Сервер и клиент согласуют общее значение MTU, использующееся для передачи данных в обоих направлениях. Запрос инициируется клиентом и может быть послан только один раз во время жизни соединения (согласно спецификации Bluetooth, version 5.0, Vol 3, Part F, Section 3.4.2.1).

Сервер отвечает особым пакетом, содержащим поддерживаемый им размер ATT_MTU. Итоговое значение будет выбрано равным меньшему из переданных между сервером и клиентом ATT_MTU.

Важно помнить, что различные версии BLE имеют разные поддерживаемые максимальные значения ATT_MTU.

5.7 Создание своего GATT

5.7.1 Общие рекомендации

Несмотря на то, что GATT это удивительно гибкий фреймворк, существуют несколько общих рекомендаций, которым нужно следовать при создании сервисов и характеристик для них:

Убедитесь, что внедрены обязательные сервисы и их характеристики:

Сервис общего профиля доступа (GAP)

Заданы характеристики имени и окружения.

Используйте одобренные Bluetooth SIG профили, сервисы и характеристики там, где это возможно. Это дает следующие преимущества:

Вы уменьшаете размер передаваемых пакетов, содержащих UUID сервисов и характеристик (включая пакеты адвертайзинга) ускоряете процедуру обнаружения и другие процедуры за счет использования 16-битных UUID вместо 128-битных.

Большее число сторонних устройств и приложений сможет взаимодействовать с вашим, тем самым расширяя число возможных пользовательских сценариев.

Группируйте характеристики, отвечающие за смежный функционал, в один сервис.

Избегайте создания сервисов, имеющий слишком большое количество характеристик. Хорошее разделение сервисов ускоряет процесс обнаружения характеристик и ведет к дружественному к пользователю модульному дизайну GATT.

В следующей главе мы рассмотрим практический пример, показывающий как разработать GATT для системы домашней автоматизации.

6. Урок создания GATT

Разработка GATT для вашего BLE устройства может быть очень сложной задачей. Для того, чтобы упростить ее, давайте пройдем полный урок создания GATT для простой системы домашней автоматизации.

Система домашней автоматизации это абстрактное нечто, но она поможет вам лучше понять шаги создания GATT для реального приложения, а не для какой-то обобщенной системы. Ниже показана схема с элементами системы “умного дома” и связями между ними.

Рис. 19: Пример проекта системы “умного дома” с BLE

Система состоит из множества устройств. Некоторые из них куплены в магазине, и мы не можем как-то изменить их прошивку, остальные подлежат модификации в соответствии с нашими нуждами.

6.1 Общее описание системы

Давайте опишем основные пользовательские сценарии для системы:

Владелец дома может использовать пульт дистанционного управления для включения и выключения светильника.

Владелец дома может наблюдать за изменениями показаний температуры и влажности на сенсоре окружающей среды.

Владелец дома получает уведомления об уровне заряда батареи всех элементов системы.

6.2 Элементы системы

Теперь давайте рассмотрим составляющие нашей системы.

Шлюз будет выполнять роль центрального BLE устройства во время обмена данными со всеми устройствами кроме смартфона, где он будет выполнять роль периферийного устройства. Мы можем контролировать это устройство и спроектируем GATT для него.

Команды для управления светильником будут поступать с пульта управления на шлюз, и с него на сам светильник.

Пульт управления
Пульт управления это устройство, которое выполняет только периферийную роль, для него мы также спроектируем GATT.

Сенсор окружающей среды
Это стандартное устройство, GATT которого мы не можем изменить, так что область нашего интереса будет ограничена чтением показаний с него (данные о текущей температуре и влажности).

Это еще одно стандартное устройство, которое мы не можем каким-либо образом изменить.

Очередное стандартное устройство, мы будем использовать его для контроля системы.

6.3 Разработка GATT

Теперь мы пройдем пошагово весь процесс создания GATT, удовлетворяющего нашим требованиям.

6.3.1 Шаг 1: Документирование различных пользовательских сценариев

Несмотря на то, что GATT обычно больше сфокусирован на периферийной роли (так как обычно в роли сервера, предоставляющего данные, выступает периферийное устройство), центральное устройство также может выполнять роль сервера в особых случаях. Также, так как мы разрабатываем устройство, выполняющее обе роли (центральную и периферийную), это поможет нам понять, что должно произойти с каждой стороны, так как это повлияет на некоторые аспекты разработки системы и GATT.

Рассмотрим пользовательские сценарии с точки зрения шлюза, для центральной и периферийной роли.

Периферийная роль

Пульт управления уведомляет шлюз, когда кнопки на нем нажимаются, для включения и выключения светильника.

Данные должны передаваться на облачный сервер через шлюз. Они представлены центральному устройству (например смартфону, имеющему доступ в интернет) в виде GATT-сервера в периферийной роли. Ниже перечень этих данных:

Показания температуры датчика окружающей среды

Показания влажности датчика окружающей среды

Статус светильника (включен или выключен)

Уровни заряда батареи пульта, светильника и датчика окружающей среды.

Центральная роль

Шлюз должен считывать некоторые данные, представленные устройствами, составляющими систему, и получать уведомления о других данных с этих устройств.

6.3.1.2 Пульт управления

Пульт управления выполняет одну функцию: управляет светильником. Он выполняет исключительно периферийную роль и должен предоставлять следующую информацию:

При нажатии кнопки “ВКЛ”: уведомить шлюз о том, что была нажата эта кнопка.

При нажатии кнопки “ВЫКЛ”: также уведомить шлюз о нажатии этой кнопки.

Уровень заряда батареи: шлюз должен иметь возможность читать данные о заряде батареи пульта и получать уведомления о его изменении.

6.3.2 Шаг 2: Настройка сервисов, характеристик и прав доступа

На этом шаге мы сгруппируем характеристики в группы (сервисы), объединяющие характеристики со схожим функционалом и зададим разрешения для каждой из них.

У нас есть один GATT-сервер для шлюза в периферийной роли. Посмотрев еще раз на данные, которые нам нужно передавать, мы можем назначить им характеристики и сгруппировать их в следующие сервисы:

Сервис датчика окружающей среды:

Характеристика показаний температуры датчика окружающей среды: “Температура”

Права: Чтение, уведомление.

Характеристика показаний влажности датчика окружающей среды: “Влажность”

Права: Чтение, уведомление.

Характеристика остаточного заряда аккумулятора: “Уровень заряда”

Права: Чтение, уведомление.

Сервис светильника:

Текущее состояние светильника “Статус”

Права: Чтение, уведомление.

Характеристика остаточного заряда аккумулятора: “Уровень заряда”

Права: Чтение, уведомление.

Сервис пульта дистанционного управления:

Характеристика остаточного заряда аккумулятора: “Уровень заряда”

Права: Чтение, уведомление.

Помимо этих сервисов необходимо реализовать обязательный (согласно спецификации Bluetooth) сервис:

Характеристика “имя”: имя устройства.

Права: чтение.

Характеристика местоположения: описание места, где размещено устройство.

Права: чтение.

6.3.2.2 Пульт управления

У нас есть один GATT-сервер для пульта управления. Мы можем назначить ему следующие сервисы и характеристики:

GAP сервис (обязательный):

Характеристика “имя”: имя устройства.

Права: чтение.

Характеристика местоположения: описание места, где размещено устройство.

Права: чтение.

Характеристика остаточного заряда аккумулятора: “Уровень заряда”

Права: Чтение, уведомление.

Характеристика кнопки “ВКЛ”

Права: уведомление.

Характеристика кнопки “ВЫКЛ”

Права: уведомление.

6.3.3. Шаг 3: Использование стандартных сервисов и характеристик

Сервисы датчика окружающей среды, светильника и пульта являются нашими собственными, так как не существует ни одного стандартного сервиса, который мы бы могли использовать для них. Однако у нас есть три устройства с аккумуляторами, заряд которых нам необходимо отображать и мы можем использовать стандартную характеристику уровня заряда. Мы будем использовать ее для каждого устройства в его сервисе в GATT шлюза. Также мы будем использовать обязательный GAP сервис.

6.3.3.2. Пульт управления

Для пульта управления мы можем использовать стандартный сервис уровня заряда батареи и обязательный GAP сервис.

6.3.4. Шаг 4: Присвоение UUID нашим сервисам и характеристикам

Для каждого нестандартного сервиса и характеристики мы можем использовать онлайн-инструмент для генерации UUID, например этот.

Распространенной практикой является выбор базового UUID для сервиса и увеличение значения третьего и четвертого старшего байта UUID для каждой последующей характеристики.

Для примера, возьмем следующий UUID для какого-либо сервиса:

00000001-1000-2000-3000-111122223333

И затем заменим выделенные байты на

Единственное условие, которое накладывает ограничение на выбор UUID для наших сервисов и характеристик это условие несовпадения нашего UUID с базовым UUID Bluetooth SIG: XXXXXXXX-0000-1000-8000-00805F9B34FB.

Следование вышепредставленной методике выбора UUID немного упрощает понимание связей между сервисами и их характеристиками.

На таблицах ниже представлены наши сервисы, характеристики и их UUID для шлюза и пульта управления.

Таблица 3: GATT шлюза Таблица 4: GATT пульта управления

6.3.5. Шаг 5: Реализация сервисов и характеристик с использованием API SDK производителя платформы

Каждая платформа, встраиваемая или мобильная, имеет собственный интерфейс прикладного программирования (API, application programming interface) для реализации сервисов и характеристик. Задача читателя – самостоятельно реализовать их для выбранного им устройства или приложения.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *