Программное обеспечение, Сделай сам (DIY)

Особенности разработки электроники с применением BLE (Bluetooth Low Energy)

BLE Bluetooth low energy, контрактная разработка электроники

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

Зачем нужен BLE?

Раньше при разработке различных устройств мы использовали обычный Bluetooth. По-сути, обычный Bluetooth это беспроводной UART. То есть у нас есть поток принимаемых данных и поток отправляемых данных. Какие плюсы? Плюс в простоте разработки, команды или информация принимаются по UART, дальше происходит простой парсинг. Какие минусы? Минус в том, что по умолчанию передача идет все время. Самый популярный Bluetooth пердатчик типа HC-05, HC-06 потребляет в таком режиме десятки миллиампер постоянно, если самостоятельно не принимать меры по отключению модуля, включению, установке соединения. А что если, например, второе устройство хочет отправить сообщение о каком-то наступившим событии, а второй модуль спит? Тогда второй модуль получит это сообщение только когда проснется. Но что если мы хотим с одной стороны иметь очень низкое энергопотребление, а с другой стороны быть в рабочем режиме только когда идет какая-то передача данных? А что если нужно соединить не два, а три и больше устройств? Тут на помощь как раз и приходит BLE.

Отличия BLE от стандартного BlueTooth

В BLE модуль потребляет лишь в моменты передачи данных, в остальное время он находится в глубоком сне. Благодаря этому можно существенно снизить энергопотребление. Однако, чем чаще планируется передача данных, тем больше будет энергопотребление. И при очень частой передачи данных энергоффективность BLE будет несильно отличаться от обычного Bluetooth.

Также BLE позволяет подключаться сразу к нескольким устройствам. Если классический Bluetooth поддерживает топологию типа «Точка-Точка», то BLE поддерживает «Вещание» и «Ячеистую сеть».

Вещание — периферийное устройство передает данные нескольким центральным.

Ячеистая сеть — устройства подключены друг к другу. То есть в сети несколько устройств и у каждого по несколько подключений.

BLE (Bluetooth Low Energy) — основные понятия

В BLE весьма запутанные названия.

CENTRAL, он же CLIENT, он же GATT CLIENT, он же MASTER — это устройство, которое подключается к периферийным.

PERIPHERAL, он же SERVER, он же GATT SERVER, он же SLAVE

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

У каждого устройства BLE есть профиль. Он может иметь 1 и более сервисов, у сервиса должна быть минимум одна характеристика. Характеристика всегда долдна иметь минимум два атрибута: объявление характеристики и значение характеристики.

Я предпочитаю использовать названия CENTRAL (Центральное) и PERIPHERAL (Периферийное), далее будем использовать их.

Принцип работы BLE (Bluetooth Low Energy)

Центральное устройство сканирует Advertising пакеты, а периферийное их отсылает. После того, как центральное устройство находит искомое периферийное устройство, они переходят на канал передачи данных.

В BLE для передачи используется 3 канала для Advertising пакетов и 37 каналов для передачи данных.

BLE Notify и Indicate различия

У многих может возникнуть вопрос, в чем разница между свойством Notify и Indicate. По сути — оба выполняют одну функцию оповещения. Отличие оповещения от чтения в том, что вам не нужно каждый раз делать запрос на чтение значения у устройства. Вы получаете значение асинхронно, по факту, и не тратите энергию на ненужные запросы. Как правило такой режим используется, когда нужно узнать, что у устройства обновились данные (например произошло чтение с датчика температуры). Также если, обновления данных апериодичны, то периодический опрос будет пустой тратой энергии. Кроме того, такой опрос требует двусторонней связи, так сначала мы отправляем запрос на чтение, а потом нам приходит ответ. Notification это односторонний вид связи, поэтому происходит экономия на времени передачи данных, а также и на энергопотреблении. Однако, Notify это передача без подтверждений, это ненадежный канал передачи данных. А что если хочется иметь с одной стороны асинхронную передачу данных без лишних опросов устройства, а также иметь надежную передачу данных с подтверждением? Здесь на помощь приходит Indicate. Здесь необходимо, чтобы клиент отправил подтвердение о получении. Однако, такая надежность требует большего времени не передачу.

BLE задержки в передачи данных

Измерение проводилось для передачи типа INDICATE. Как говорилось выше — это асинхронная передача данных с подтверждением. Отсчет времени начинался с момента вызова функции indicate на Peripheral устройстве и заканичвался в момент вызова коллбэка об изменении характеристики на периферийном устройстве и чтении ее на Central устройстве. Диапазон задержек составил от 5 до 50 мс. Это нужно учитывать в устройствах, которые привязаны к реальному масштабу времени. Среднее значение задержки BLE составляло примерно 10 мс.  Среднеквадратическое отклонение не считали.

BLE энергопотребление

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

BLE дальность работы

Тестирование проводилось в условиях прямой видимости на двух модулях NRF52832. Сигнал был потерян на расстоянии 9 метров.  На расстоянии 5 метров передача была стабильной, ни одного пакета NOTIFY в течение 24 часов потеряно не было.

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

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