Lazy Bluetooth: создайте с помощью BLE, не изобретайте его заново

Lazy Bluetooth: создайте с помощью BLE, не изобретайте его заново
Lazy Bluetooth: создайте с помощью BLE, не изобретайте его заново

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

Если вам когда-либо приходилось прекращать слушать музыку, чтобы перезарядить наушники Bluetooth, вы знаете, что Bluetooth не будет долго работать от батарей. В 2006 году Nokia представила Wibree, который позже стал называться Bluetooth Low Energy (или BLE). В наши дни он используется во всем, и стоит потратить время, чтобы получить базовое представление об этой технологии.

Современные устройства Bluetooth могут реализовывать «классический» Bluetooth, BLE или и то, и другое. Как и следовало ожидать, BLE очень энергоэффективен и должен работать месяцами или годами на простой кнопочной батарейке. Он также должен быть маленьким и недорогим. Если у вас есть фитнес-браслет (например, FitBit слева) или смарт-часы, вероятно, он использует BLE. Дальность обычно где-то меньше 30 метров.

Клиенты, серверы и энергосбережение

Для экономии энергии устройства BLE не передают очень много. Устройства Bluetooth используют профили, описывающие, какие данные и услуги они предлагают. Все устройства BLE используют профили, полученные из общего профиля атрибутов (GATT). GATT использует UUID (эти длинные шестнадцатеричные числа) для идентификации услуг и характеристик. Официальные сервисы имеют 16-битный идентификатор, а пользовательские - 128-битный. Серверы - это устройства, которые имеют данные, такие как фитнес-браслеты, встроенные термостаты или маяки (устройства BLE, которые отправляют идентификатор и, возможно, небольшое количество других данных). Большинство устройств предлагают несколько услуг (см. рисунок справа).

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

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

Стандартные услуги

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

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

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

  • Профиль содержит одну или несколько служб.
  • Сервер имеет одну или несколько характеристик.
  • Хотя характеристики обычно являются одиночными значениями, бывают случаи, когда значение может быть массивом связанных данных (например, координаты X, Y и Z от датчика положения)
  • Дескрипторы описывают характеристики

Есть даже служба близости, которая может оценить расстояние между клиентом и сервером. Это работает путем измерения уровня принимаемого сигнала на сервере. Клиент оценивает себя по ожидаемому уровню сигнала на определенном расстоянии, а сервер сообщает о фактическом уровне сигнала. Отношение этих двух величин связано с расстоянием.

Абстракция

Много подробностей о внутреннем устройстве BLE можно найти в спецификации Bluetooth. Однако на практике вы, вероятно, не будете писать свой собственный стек BLE. Вместо этого вы будете использовать набор микросхем или плату для разработки, которая предоставляет API (например, Tiny BLE, показанный справа).

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

Тем временем вы можете узнать больше о BLE (также известном как Bluetooth Smart) в видео с [Jimmy Ray Purser] ниже. У [Джимми Рэя] неповторимый стиль изложения.

Фото:

FitBit - By Wuefab CC BY-SA 4.0