Содержание
- Краткая история беспроводной технологии Bluetooth
- Текущее состояние Smart
- Что на самом деле такое Bluetooth Smart/Bluetooth Low Energy?
- Bluetooth Smart и Bluetooth Smart Ready
- Технологические различия
- Рынки для Bluetooth Smart
- Какой из вариантов технологии Bluetooth выбрать?
- Для чего нужна функция Bluetooth?
- Как узнать, есть ли функция в разных устройствах и как инициализировать службу?
- Что такое Блютуз-адаптер и как его подключить?
- Как найти обычные и беспроводные наушники?
- Можно ли установить Блютуз-колонку?
- Что такое Bluetooth Smart?
- Для чего нужен Bluetooth Smart?
- Как подключить Bluetooth Smart?
Краткая история беспроводной технологии Bluetooth
Технология Bluetooth LE появилась под названием «Bluetooth lite” в исследовательских лабораториях Nokia в середине 2000-х годов и изначально предназначалась для дополнения обычной технологии Bluetooth в приложениях, где использование обычного Bluetooth было слишком сложно или предполагало большие энергозатраты. В Nokia рассмотрели потенциал новой технологии. Позже, в 2006 году компания при содействии ряда других производителей полупроводниковых и беспроводных решений создала отраслевой альянс, который получил название Wibree (Wi — от wireless («беспроводной») и bree — со староанглийского «перекресток»).
Спустя примерно год стало ясно, что дальнейшее развитие технологии представляется более логичным внутри Bluetooth SIG (Special Interest Group), и разработка была передана этой организации. В 2010 году Wibree была включена в следующую спецификацию (Bluetooth v4.0) в качестве Bluetooth-технологии ультранизкого энергопотребления (Ultra-low Power Bluetooth), теперь известную как Bluetooth с низким энергопотреблением (Bluetooth Low Energy). Для потребителей интерфейс Bluetooth v4.0 более знаком как Bluetooth Smart или Bluetooth Smart Ready, в зависимости от того, в какой форме он представлен.
Текущее состояние Smart
С начала работы над этой статьей (октябрь 2012 года) интерфейс Bluetooth Low Energy уже использовался во многих устройствах, например в измерителе пульса Polar H7, спортивных часах Garmin Fenix и других решениях. Многие из них можно найти в списке продуктов на основе Bluetooth Smart на странице Bluetooth SIG Bluetooth Smart: http://www.Bluetooth.com/Pages/Bluetooth-Smart-Devices.aspx /ссылка утеряна/. Что не менее важно, стандарт Bluetooth Low Energy поддерживается в новых мобильных телефонах, планшетах и ПК от Apple, Motorola и Samsung.
Что на самом деле такое Bluetooth Smart/Bluetooth Low Energy?
Есть некоторая неопределенность относительно того, что именно предлагает стандарт Bluetooth 4.0. Некоторые люди, не знакомые с принципами работы технологии Bluetooth, считают, что Bluetooth Smart снижает потребление энергии во всех случаях применения Bluetooth, но это неверно. Преимущества Bluetooth Smart очевидны только в устройствах, действительно использующих возможности Bluetooth Smart/Bluetooth Low Energy относительно экономии энергии, и лишь в определенных режимах. Об этом мы поговорим позже, а сейчас рассмотрим, как можно определить Bluetooth Smart с точки зрения потребителя.
Bluetooth Smart и Bluetooth Smart Ready
Для удобства потребителя Bluetooth-устройства, поддерживающие технологию Bluetooth Low Energy, имеют стикеры Bluetooth Smart и Bluetooth Smart Ready. Эти стикеры необязательно напрямую соответствуют техническим категориям, которые будут описаны ниже, но они олицетворяют определение этих технологий, удобное для восприятия потребителя.
Устройства Bluetooth Smart Ready — это некие «узловые» устройства, например компьютеры, планшеты, мобильные телефоны и подобные продукты, которые поддерживают стандарт Bluetooth Smart (Bluetooth Low Energy) и позволяют в дальнейшем добавлять дополнительные профили за счет загрузки приложений или драйверов, или другими методами.
Рис. 1. Взаимосвязь между устройствами Bluetooth Smart и Bluetooth Smart Ready (источник: Bluetooth SIG)
Устройства Bluetooth Smart — это устройства на основе технологии Bluetooth Low Energy, способные соединяться с устройствами Bluetooth Smart Ready (рис. 1). Следует отметить одну важную вещь: устройства на основе Bluetooth Smart по определению не могут соединяться с «классическими» Bluetooth-устройствами, а только с устройствами Bluetooth Smart Ready. Такой подход направлен на то, чтобы потребитель при покупке устройства Bluetooth Smart знал, что оно будет работать с другим устройством с логотипом Bluetooth Smart Ready, но не с устройствами с обычным логотипом Bluetooth.
Технологические различия
С технологической точки зрения существуют три в корне разных типа устройств: «классический», двухрежимный и однорежимный Bluetooth. Первый тип представлен устройствами с поддержкой «классического» типа интерфейса Bluetooth, притом в эту категорию попадает большинство известных Bluetooth-устройств. Несмотря на то, что аппаратное обеспечение с поддержкой стандарта Bluetooth Low Energy на данный момент уже более чем год поставляется на международный рынок, множество конечных продуктов не имеют программной поддержки технологии Bluetooth Low Energy. Тем не менее есть веские причины ожидать, что большинство устройств в дальнейшем будут поддерживать Bluetooth Low Energy (так как интегральные схемы Bluetooth уже поддерживают его). Однако останутся некоторые категории Bluetooth-продуктов (например, Bluetooth-стереонаушники), где использование Bluetooth Low Energy не дает никаких ощутимых преимуществ, поэтому в обозримом будущем эти устройства продолжат использовать «классический» Bluetooth.
Вторая категория — так называемые двухрежимные устройства. Они поддерживают не только «классический» Bluetooth, но и Bluetooth Low Energy, и могут соединяться как с «классическими» Bluetooth-устройствами, так и с устройствами Bluetooth Smart. В конструкции устройств Bluetooth Smart Ready используются двухрежимные ИС. Эти устройства не могут воспользоваться преимуществами пониженного энергопотребления, которые предлагает технология Bluetooth Low Energy, так как им необходимо соответствовать техническим требованиям устаревших Bluetooth-устройств, но, тем не менее, они являются неотъемлемой частью всей экосистемы.
Третья и, вероятно, самая любопытная категория — это однорежимные устройства, которые используют Bluetooth Low Energy как единственно возможную технологию коммуникации. Эти устройства не могут напрямую соединяться с «классическими» Bluetooth-устройствами, но, с другой стороны, они оптимизированы для применения с Bluetooth Low Energy и способны использовать все ее преимущества.
Отметим, что технология Bluetooth Low Energy была разработана для тех сфер, где длительность работы устройства сравнительно мала. Например, браслет для измерения пульса может быть подключен все время в течение долгой тренировки, но ему нужно передавать всего несколько байт в секунду, то есть при условии использования оптимизированного протокола передатчик будет включаться не более чем на миллисекунду. Сравните это с работой беспроводного аудиодинамика или наушников, где объемы передаваемых данных исчисляются сотнями килобайт в секунду и передатчик, таким образом, находится во включенном состоянии значительное время (десятки процентов от общего времени работы устройства).
Изначальная спецификация Bluetooth предполагала беспроводную передачу данных в средах общего назначения, и она была успешно адаптирована под использование в других областях, например в устройствах ввода и беспроводных аудиопродуктах. Технология Bluetooth Low Energy была специально создана для решений, где применение классической формы Bluetooth не было бы оправданно, таким образом, был расширен потенциальный рынок для технологии Bluetooth.
Рынки для Bluetooth Smart
В настоящее время технология Bluetooth Smart нашла широкое распространение в сфере спорта и фитнеса. Многообещающие перспективы для этой технологии открываются в медицине и здравоохранении, а также в таких сферах, как бесконтактные бирки, так называемые «приложения-аксессуары» и интерфейсы удаленного доступа.
Бесконтактные, небольшого размера бирки работают от батарей. Благодаря им при помощи узловых устройств можно узнать, находится ли тот или иной объект на расстоянии действия Bluetooth. Это может быть очень удобно для отслеживания местоположения мелких предметов, например ключей, или для того, чтобы удостовериться, что телефон не остался дома, или чтобы найти, куда дети спрятали пульт ДУ.
«Приложения-аксессуары» — это устройства, которые подключаются по беспроводной связи к телефону или планшету и расширяют таким образом функциональность приложения, что не всегда возможно при помощи сенсоров, встроенных в мобильное устройство. Примером может служить измеритель пульса, применяемый в спортивных приложениях. (Сейчас вряд ли существует технология, позволяющая мобильному телефону напрямую измерять пульс человека.)
Рис. 2. Типичный встроенный пользовательский интерфейс
Удаленный пользовательский интерфейс основан на концепции, согласно которой различными устройствами можно управлять при помощи интерфейса на мобильном устройстве или компьютере: при таком подходе нет необходимости в использовании физического интерфейса с кнопками и дисплеями (рис. 2). Такая концепция уже применяется в более сложных устройствах, которые подключены к Интернету (например, домашний роутер автора статьи конфигурируется через веб-браузер). Но Bluetooth Smart расширяет эту функциональность на ряд других устройств, которые работают от батареи или не всегда подключены к Интернету.
Любимый пример автора: обогреватель в комнате его детей имеет термостат, который можно программировать с учетом различных температур днем и ночью каждый день недели. Пользовательский интерфейс этого прибора оснащен двумя семисекционными индикаторами, тремя LED-индикаторами и пятью кнопками. Абсолютно непонятно, как можно научиться им пользоваться, даже при помощи мануала. Однако если бы аппаратную начинку устройства можно было бы заменить микросхемой с Bluetooth Low Energy, работу обогревателя можно было бы программировать при помощи смартфона, что сделало бы использование устройства максимально удобным и могло бы сэкономить средства производителя (за счет компонентов, а также сокращения возвратов и обращений в службу поддержки).
Можно рассмотреть возможности Bluetooth Smart как катализатора так называемой концепции «Интернета вещей». Устройствам с поддержкой Bluetooth Smart не нужно напрямую подключаться к Интернету, это можно сделать посредством распространенных устройств вроде смартфонов, планшетов или ПК. Основным преимуществом такой реализации является возможность сделать беспроводные устройства проще, дешевле и экономичнее с точки зрения энергопотребления, чем устройства с прямым подключением к сети через интерфейсы GSM/3G/LTE или по Wi-Fi. Им не нужна инфраструктура: у пользователей уже есть все оборудование, необходимое для подключения таких устройств к Интернету.
Итак, чем же конкретно отличается Bluetooth Low Energy от «классического» Bluetooth? Различия начинаются на нижних уровнях: трансивер (PHY) Bluetooth Low Energy — это более тонкая и оптимизированная версия трансивера номинальной скорости Bluetooth (рис. 3). (PHY — трансивер для физической передачи радиосигнала; BR и EDR — термины, обозначающие номинальную скорость передачи и повышенную скорость передачи данных. Этими терминами ранее обозначались режимы передачи данных на уровне 1 и 2–3 Мбит/с в «классическом» Bluetooth.)
Рис. 3. Сравнение архитектуры:
а) Bluetooth Low Energy;
б) «классический» Bluetooth
В то время как трансивер номинальной скорости перестраивает частоту по 79 каналам (количество каналов можно снизить до 20 путем адаптивной перестройки частоты) и обнаруживает радиосигнал на 32 каналах, трансивер номинальной скорости Bluetooth Low Energy имеет только 37 каналов и обнаруживает радиосигнал на трех каналах. Так как сигналу Bluetooth Low Energy нужно пройти намного меньшее количество каналов во время обнаружения, этот процесс происходит намного быстрее, и связь можно установить в течение нескольких миллисекунд, а не в течение пары секунд, необходимых «классическому» Bluetooth. Шаг сетки частот у Bluetooth Low Energy составляет 2 МГц, а этот же параметр для интерфейсов номинальной скорости составляет 1 МГц, что снижает требования к фильтрации радиочастот.
На уровне выше соединения Bluetooth Low Energy в основном похож на так называемый режим sniff sub-rating, свойственный трансмиттеру номинальной скорости. Благодаря этому свойству Bluetooth Low Energy может поддерживать соединения энергоэффективным методом, при этом нет необходимости включать радиопередатчик. Также из спецификаций Bluetooth следует не вполне очевидный факт: более гибкие требования технологии дают производителям ИС возможность проводить множество действий по оптимизации, которые невозможны в «классическом» Bluetooth, например снижать активные и неактивные токи и сокращать время переключения. Эти приемы позволяют сделать однорежимные микросхемы маломощными, простыми и недорогими по сравнению с двухрежимными и классическими микросхемами.
Также существуют различия на уровне профиля. Уровень профилей Bluetooth Low Energy находится поверх GATT и для обмена данными связывается по протоколу GATT/ATT. В «классическом» Bluetooth профили самостоятельно определяют свой протокол. То есть эта технология обладает большей гибкостью, но усложняет внедрение, так как требует для исполнения больше строк кода.
Какой из вариантов технологии Bluetooth выбрать?
Более новые ИС, как правило, являются двухрежимными, а не классическими, поэтому с точки зрения аппаратного обеспечения в большинстве случаев выбор сделают за вас. Некоторые устройства, привязанные к определенным приложениям, вероятно, останутся только BR или BR/EDR, если их сфера применения не предполагает использования Bluetooth Low Energy. Относительно ПО многие распространенные стеки Bluetooth уже поддерживают Low Energy, но и среди них могут быть продукты, которые его не поддерживают.
Если приходится делать выбор между двухрежимными и однорежимными ИС или микросхемами типа «система на кристалле», следует учитывать, в какой сфере будет применяться устройство. Если вам нужно, чтобы устройство могло соединяться с «классическими» Bluetooth-устройствами, выбор прост: вам необходимо двухрежимное устройство. Если вы можете варьировать типы подключения на обоих концах соединения, то важным критерием отбора является предполагаемый объем данных, который нужно будет передавать по беспроводному соединению. Если объем данных велик или вы хотите организовывать потоковую передачу, вам следует остановить выбор на BR/EDR-решении. Примером такой ИС может служить CC2564 от TI. Эта ИС имеет стек Bluetooth v4.0 до уровня HCI, в то время как остальная часть стека исполняется на хост-контроллере (MCU).
Если вам нужно передавать малые объемы информации, то наилучшим выбором станет Bluetooth Low Energy. Bluetooth Low Energy обеспечивает более длительное время автономной работы, особенно если его использовать в сферах применения, для которых он был изначально разработан. Например, сенсор, соединяющийся с мобильным телефоном каждую секунду, может проработать без перерыва более года, питаясь от батареи-таблетки типа CR2032. Энергопотребление (а следовательно, и время автономной работы) зависит от длительности соединения. Минимальная длительность соединения, поддерживаемая в BLE, составляет 7,5 мс, а максимальная — 16 с. Время 16 с — это максимальное время ожидания. Если необходимо более длительное соединение, можно прервать соединение и переподключаться каждый раз, когда это необходимо. Как уже было сказано, так как только три канала используются для переподключения, само переподключение происходит намного быстрее, чем у «классического» Bluetooth, и исчисляется миллисекундами, а не секундами.
Отраслевой стандарт смещается в сторону ИС, способных обеспечить полную функциональность в устройствах сенсорного типа, за исключением самого элемента сенсорики. TI CC2541 — это пример однорежимного однокристального решения для Bluetooth Low Energy, которое содержит радиопередатчик, MCU и периферийные элементы, а также программируемую встраиваемую флэш-память.
Свою роль могут сыграть и другие факторы. Например, если вы хотите, чтобы ваше устройство могло соединяться с устройствами на базе iOS, для этой цели подойдет Bluetooth Low Energy. В настоящее время Apple требует, чтобы все устройства BR/EDR, поддерживающие профили помимо рекомендованных, проходили сертификацию по программе MFI. Относительно устройств на базе Bluetooth Low Energy таких ограничений нет, поэтому приложения на основе iOS для iPhone 4S, iPhone 5, iPod touch (пятого поколения) или iPad 3 (на базе iOS 5 или старших версий) cмогут использовать API на основе GATT для связи с BLE-устройствами.
Что касается других операционных систем, некоторые смартфоны на Android уже поддерживают Bluetooth v4.0, и количество таких решений будет расти. ОС Windows 8 предлагает полную поддержку Bluetooth v4.0, а соответствующие API уже были представлены на мероприятиях разработчиков Microsoft.
Также имеет смысл принять во внимание простоту внедрения и доступность инструментов и документации для разработчиков. Некоторые производители устройств на основе однорежимного Bluetooth Low Energy предлагают бесплатные программные стеки и документацию в открытом доступе на веб-сайтах. При разработке решений на основе «классического» Bluetooth принято требовать лицензионные выплаты за стек протоколов и предлагать техническую документацию и другие сведения при условии соблюдения политики неразглашения.
Благодаря Bluetooth v4.0 разработчики Bluetooth-устройств получили новый полезный инструмент, существующий под различными названиями: Bluetooth Smart, Bluetooth Smart Ready или Bluetooth Low Energy. Но как ее ни называй, эта новая технология основана на долговременном успехе Bluetooth на рынке устройств на основе ближней радиосвязи и позволяет комбинировать изначальные преимущества Bluetooth с низким энергопотреблением, простотой и дешевизной.
Для чего нужна функция Bluetooth?
Функция подключения Блютуз нужна в первую очередь для удобства пользователей.
- Возможность использования Bluetooth наушников позволит настраивать звук телевизора лично под себя, при этом не мешая соседям. Часто случается такое, что в одной комнате одновременно находится несколько человек и звук телевизора может помешать части из них. Bluetooth наушники решают эту проблему.
- Большое количество фирм-производителей и моделей Bluetooth наушников позволяют пользователю подобрать для себя наиболее подходящее устройство по приемлемой цене.
- Использование Bluetooth наушников предотвращает рассеивание звука, делая его более чистым и комфортным для восприятия.
- Также отсутствие проводов при подключении к различным девайсам не только увеличит эстетичное восприятие телевизора, но и увеличит долговечность его работы.
Как узнать, есть ли функция в разных устройствах и как инициализировать службу?
Для того, чтобы использовать функцию Bluetooth на телевизоре сначала нужно убедиться, что она там есть. Следующие примеры показывают как включить Bluetooth на телевизорах разных марок.
Smart TV (Смарт ТВ)
- Входим в меню настроек (кнопка в виде шестерёнки на пульте).
- Выбираем пункт Аудиовыход и нажимаем Ок.
- Кнопками Вправо и Влево находите пункт Bluetooth.
- С помощью кнопки Вниз переключаемся на пункт Выбор Устройства и нажимаете Ок.
- Появится окно со списком доступных беспроводных подключений.
- Если вашего устройства нету в списке нажмите кнопку Поиск.
- Если всё прошло успешно, то в углу появится сообщение об успешном подключении.
Samsung (Самсунг)
- Входим в меню настроек.
- Переключаемся на пункт Звук, нажимаем Ок.
- Открываем раздел Настройки громкоговорителей.
- Включаем наушники, открываем список устройств.
- Ждём подключения наушников.
LG
Далее вы узнаете, есть ли Bluetooth на LG и как его подключить:
- Заходим в меню.
- Включаем Bluetooth.
- Соединение начнётся автоматически, но потребуется установить PIN код.
Справка! Для того, чтобы начать поиск нажмите зелёную кнопку. У этой марки телевизора именно этим отличается кнопка поиска.
DEXP
- Нажать на кнопку настроек (menu) на пульте.
- В появившемся окне выбрать вкладку звук (её изображает динамик).
- Последовательно переходим в разделы аудиовыход и внешняя акустика.
- Нажимаем Ок, для того, чтобы начать поиск.
- Выбираем необходимый гаджет.
Для всех моделей телевизоров и наушников не забывайте включать возможность обнаружения, иначе соединения не произойдёт.
Что такое Блютуз-адаптер и как его подключить?
Покупные адаптеры бывают двух видов:
- С аккумулятором. Можно взять куда угодно, потому как проще в транспортировке. К тому же может подключаться к телевизору без прямого контакта и держать заряд долгое время.
- Через USB шнур. Требует непосредственного контакта с телевизором, а также не может быть перемещён без него.
Здесь каждому нужно решить для себя какой из них удобнее. Принципиальной разницы в качестве или скорости передачи между ними нет. Bluetooth адаптер сходят в стандартную комплектацию большинства телевизоров, выпущенных после 2016 года.
В противном случае для подключения Bluetooth аппаратуры вам необходимо будет купить специальный адаптер. По размерам он, обычно, не превышает спичечного коробка. Подключить его очень просто. Сзади телевизора должна быть небольшая панелька с надписью Audio. Туда нужно воткнуть провод, идущий от ресивера. Если у вас адаптер на батарейке, то флешку, которая для него выступает зарядкой нужно воткнуть в USB порт.
Важно! Не перепутайте USB разъём и HDMI. Они предназначены для разных целей.
Как найти обычные и беспроводные наушники?
Мы уже разобрали, как подключить беспроводные наушники. Но что, если у вас стандартные, проводные наушники? Обычно у них у всех стандартный штекер 3.5 (так называемый джек 3.5), потому существует 2 варианта подключения:
- Телевизор оснащён портом под «джека». В этом случае нужно просто воткнуть штекер в соответствующий порт. После этого звук автоматически переключится с колонок на наушники. Если же этого не произошло, то скорее повреждён порт, чем шнур.
- Телевизор не оснащён специальным портом, а только стандартными разъёмами под RCA провода (их чаще называют тюльпаны). В этом случае придётся купить переходник и подключать наушник уже через него. Конечно разъёмы тюльпанов не обладают аналогичными усилителями, но их вполне хватает на передачу хорошего звука.
- Также стоит учитывать такой нюанс, что если у вас наушники совмещённые с гарнитурой, то вставлять в порт нужно штекер именно от наушников.
Можно ли установить Блютуз-колонку?
Bluetooth колонка подключается к телевизору практически полностью аналогично наушникам.
Колонку к телевизору можно подключить:
- Напрямую. Для подключения колонки напрямую потребуется USB шнур. Стоит отметить, что этот шнур подходит всем современным телевизорам, так как он стандартный.
- Непосредственно через Bluetooth. В данном случае подключение полностью аналогично подключению наушников. На телевизоре нужно открыть настройки, вкладку звук, затем аудиовыхода и, включив Bluetooth, выбрать необходимое устройство. Возможно, придётся ввести PIN код, но он обычно указывается в документах, идущих вместе с телевизором.
Подводя итог, хочется сказать, что Bluetooth подключение как наушников, так и колонки обычно интуитивно понятно и вряд ли вызовут у вас какие-либо сложности. Наибольшая проблема может быть в несоответствии штекера и порта, однако эта проблема легко решается использованием переходника. В остальном же, следуя инструкциям из этой статьи можно легко подсоединить оборудование к телевизору.
Что такое Bluetooth Smart?
Большинство современных смартфонов оснащены технологией передачи данных Bluetooth. Обычно эта технология используется для передачи различных файлов относительно небольшого размера. Однако, если с помощью этой технологии можно передавать информацию, что мешает использовать ее как способ связи автомобиля с телефоном? Так и появилась технология StarLine Bluetooth Smart — уникальный способ интеграции автосигнализации с телефоном.
Для чего нужен Bluetooth Smart?
Использование технологии Bluetooth Smart открывает водителю множество интересных возможностей:
- Использование смартфона в качестве метки. Важнейшая особенность применения технологии Bluetooth Smart — использование Вашего смартфона в качестве метки. Это значит, что даже если вы забудете свою метку, Вы сможете с легкостью продолжить пользование автомобиле.
- Режим «Свободные руки». При работе в этом режиме сигнализация автоматически отслеживает Ваше приближение к автомобилю и снимает его с охраны, не вынуждая Вас лишний раз тянуться в карман за смартфоном или брелком и выключать режим охраны вручную. В то же время, когда Вы отойдете от автомобиля на достаточное расстояние, сигнализация автоматически закроет замки и поставит автомобиль в охрану.
- Удобное приложение StarLine. Даже если Вы окажетесь вне зоны сотового покрытия Вашего оператора, Вы сможете управлять Вашим автомобилем с помощью беспроводного канала Bluetooth. Таким образом, Вы никогда не застрянете даже там, где управление автомобилем через сотовую связь не представляется возможным (на парковке, например).
Как подключить Bluetooth Smart?
На данный момент технология Bluetooth Smart используется в сигнализациях:
Эти сигнализации представляет собой идеальную основу для построения охранно-телематического комплекса на базе оборудования StarLine. Установка всех устройств производится высококвалифицированными специалистами с многолетним стажем.
Приглашаем Вас на консультацию.
Недавно мы в команде придумали и реализовали функцию передачи денег по воздуху с помощью технологии Bluetooth LE. Я хочу рассказать вам, как мы это сделали и что Apple предоставляет нам из инструментов. Многие разработчики думают что Bluetooth — это сложно, ведь это достаточно низкоуровневый протокол, и по нему не так много специалистов. Но всё не так страшно, и на самом деле использовать эту функцию очень просто! А те функции, которые можно реализовать с помощью Bluetooth LE, безусловно, интересны и впоследствии позволят выделить ваше приложение среди конкурентов.
Давайте сначала разберёмся, что это вообще за технология и в чём её отличие от классического Bluetooth.
Что такое Bluetooth LE?
Почему разработчики Bluetooth назвали эту технологию именно Low Energy? Ведь с каждой новой версией Bluetooth энергопотребление и без того многократно снижалось. Ответ кроется в этой батарейке.
Её диаметр всего 2 см, а ёмкость около 220 мА*ч. Когда инженеры разрабатывали Bluetooth LE, они стремились к тому, чтобы устройство с такой батарейкой работало несколько лет. И у них это получилось! Bluetooth LE-устройства c таким элементом питания могут работать от года. Кто из вас еще по-старинке выключает Bluetooth на телефоне для экономии энергии, как это делали в 2000-м? Зря вы это делаете — экономия будет меньше 10 секунд работы телефона в день. А функциональность вы отключаете очень большую, такую как Handoff, AirDrop и другие.
Чего же инженеры добились, разработав Bluetooth LE? Они усовершенствовали классический протокол? Сделали его более энергоэфективным? Просто оптимизировали все процессы? Нет. Они полностью переделали архитектуру стека Bluetooth и добились того, что теперь, чтобы быть видимым для всех других устройств, необходимо меньше времени находиться в эфире и занимать канал. В свою очередь это позволило хорошо сэкономить на энергопотреблении. А с новой архитектурой теперь можно стандартизировать любое новое устройство, благодаря чему разработчики со всего мира могут коммуницировать с устройством, а значит, и с легкостью писать новые приложения для управления им. Кроме того, в архитектуру заложен принцип self-discovery: при подключении к устройству не нужно вводить никакие пин-коды, и если ваше приложение умеет общаться с этим устройством, подключение занимает считанные миллисекунды.
- Меньше времени в эфире.
- Меньше расход энергии.
- Новая архитектура.
- Уменьшено время подключения.
За счёт чего удалось инженерам сделать такой колоссальный скачок в энергоэффективности?
Частота осталась та же: 2,4 ГГц, не сертифицируемая и свободная для использования во многих странах. А вот задержка подключения стала меньше: 15-30 мс вместо 100 мс у классического Bluetooth. Расстояние работы осталось таким же — 100 м. Интервал передачи не сильно, но изменился — вместо 0,625 мс стало 3 мс.
Но не могло же из-за этого энергопотребление уменьшиться в десятки раз. Конечно же, что-то должно было пострадать. И это скорость: вместо 24 Мбит/с стало 0,27 Мбит/с. Вы, наверное, скажете, что это смешная скорость для 2018 года.
Где используется Bluetooth LE?
Технология эта немолодая, впервые она появилась в iPhone 4s. И уже успела завоевать много сфер. Bluetooth LE используется во всех устройствах умного дома и в носимой электронике. Сейчас уже есть даже чипы размером с кофейное зерно.
А как эта технология применяется в программном обеспечении?
Поскольку Apple была первой, кто встроил в своё устройство Bluetooth и начал её использовать, то к настоящему времени они достаточно хорошо продвинулись и встроили технологию в свою экосистему. И сейчас вы можете встретить эту технологию в таких сервисах, как AirDrop, Devices quick start, Share passwords, Handoff. И даже уведомления в часах сделаны через Bluetooth LE. Вдобавок, Apple выложила в открытый доступ документацию, как сделать так, чтобы на ваши собственные устройства приходили уведомления из всех приложений. Какие бывают роли устройств в рамках Bluetooth LE?
Broаdcaster. Отправляет сообщения всем, кто находится рядом, к этому устройству нельзя подключиться. По такому принципу работают iBeacons и навигация в помещениях.
Observer. Слушает, что происходит вокруг, и получает данные только от общедоступных сообщений. Соединения не создаёт.
А вот с Central и Peripheral интереснее. Почему их не назвали просто Server-Client? Логично же, судя по названию. А вот и нет.
Потому что Peripheral, на самом деле, выступает как сервер. Это периферийное устройство, которое потребляет меньше энергии и к которому подключается более мощный Central. Peripheral может извещать, что он находится рядом и какие у него есть службы. К нему может подключиться только одно устройство, и у Peripheral есть какие-то данные. А Central может сканировать эфир в поиске устройств, отправлять запросы на подключение, подключаться к любому количеству устройств, может читать, записывать и подписывать на данные у Peripheral.
Что же нам, как разработчикам, доступно в экосистеме Apple?
Что нам доступно?
iOS/Mac OS:
- Peripheral и Central.
- Фоновый режим.
- Восстановление состояния.
- Интервал подключения 15 мс.
watchOS/tvOS:
- watchOS 4+/tvOS 9+.
- Только Сentral.
- Максимум два подключения.
- Apple watch series 2+/ AppleTv 4+.
- Отключение при переходе в фоновый режим.
- Интервал подключения 30 мс.
Самое важно различие — интервал подключения. На что он влияет? Чтобы ответить на этот вопрос, сначала нужно разобраться, как работает протокол Bluetooth LE и почему такая небольшая разница в абсолютных значениях очень важна.
Как работает протокол
Как происходит процесс поиска и подключения?
Peripheral сообщает о своем присутствии с частотой advertisement-интервала, его пакет очень маленький и содержит всего несколько идентификаторов сервисов, которые предоставляет устройство, а также имя устройства. Интервал может быть достаточно большим и способен варьироваться в зависимости от текущего статуса устройства, режима энергосбережения и других настроек. Apple советует разработчикам внешних устройств привязывать длину интервала к акселерометру: увеличивать интервал, если устройством не пользуются, а когда оно активно — уменьшать, чтобы быстро находить устройство. Advertisement-интервал никак не коррелирует c интервалом подключения и определяется самим устройством в зависимости от энергопотребления и своих настроек. Нам он в экосистеме Apple недоступен и неизвестен, им полностью управляет система.
После того, как мы нашли устройство, отправляем запрос на подключение, и вот тут на сцену выходит интервал подключения — время, через которое второе устройство может ответить на запрос. Но это при подключении, а что же происходит при чтении/записи?
Интервал подключения также фигурирует и при чтении данных — его уменьшение в 2 раза увеличивает скорость передачи данных. Но нужно понимать, что если оба устройства не поддерживают одинаковый интервал, то будет выбран максимальный из них.
Давайте рассмотрим, из чего состоит пакет с информацией, который передает Peripheral.
MTU (maximum transmission unit) такого пакета определяется в процессе подключения и варьируется от устройства к устройству и в зависимости от операционной системы. В протоколе версии 4.0 MTU был около 30, и размер полезных данных не превышал 20 байтов. В версии 4.2 всё поменялось, теперь можно передавать около 520 байтов. Но, к сожалению, эту версию протокола поддерживают только устройства младше IPhone 5s. Размер накладных расходов, независимо от размера MTU, составляет 7 байтов: сюда входят ATT и L2CAP заголовков. С записью, в целом, похожая ситуация.
Есть только два режима: с ответом и без. Режим без ответа значительно ускоряет передачу данных, поскольку нет интервала ожидания перед следующей записью. Но этот режим доступен не всегда, не на всех устройствах и не на всех системах. Доступ к этому режиму записи может ограничить сама система, потому что он считается менее энергоэкономичным. В iOS eсть метод, в котором можно проверить перед записью, доступен ли такой режим.
Теперь давайте рассмотрим, из чего состоит протокол.
Протокол состоит из 5 уровней. Слой приложения — эта ваша логика, описанная поверх CoreBluetooth. GATT (Generic Attributes Layer) служит для обмена сервисами и характеристиками, которые есть на устройствах. ATT (Attributes Layer) используется для управления вашими характеристиками и передачей ваших данных. L2CAP — низкоуровневый протокол обмена данными. Controller — это уже сам BT-чип.
Вы, наверное, спросите, что такое GATT и как мы можем с ним работать?
GATT состоит из характеристики и сервисов. Характеристика — это объект, в котором хранятся ваши данные, словно переменная. А сервис — это группа, в которой находятся ваши характеристики, словно пространство имён. У сервиса есть название — UUID, вы сами его выбираете. Сервис может содержать в себе дочерний сервис.
У характеристики тоже есть свой UUID — фактически, имя. Значение (Value) характеристики — это NSData, сюда вы можете записывать и хранить данные. Дескрипторы — это описание вашей характеристики, вы можете описать, какие данные вы ожидаете в этой характеристике, или что они означают. В протоколе Bluetooth есть много дескрипторов, но в Apple-системах пока доступно только два: человеческое описание и формат данных. Также есть уровни доступа (Permissions) для вашей характеристики:
Попробуем сами
У нас появилась идея сделать возможность передачи денег по воздуху, ничего не требуя от получателя. Представьте, вот ломаете голову над очень интересной задачей, пишете идеальный код, и тут коллега предлагает сходить за кофе. А вы так увлечены задачей, что не можете отлучиться, и просите его купить вам чашечку вкусного капучино. Он приносит вам кофе, и нужно вернуть ему деньги. Можно перевести по номеру телефона, работает отлично. Но вот неловкая ситуация — вы не знаете его номера. Ну вот так, три года работаете, а номерами не обменялись 🙂
Поэтому мы решили сделать возможность передачи денег тем, кто находится рядом, без ввода каких-либо пользовательских данных. Как в AirDrop. Просто выбрать пользователя и отправить нужную ему сумму. Давайте посмотрим, что нам для этого нужно.
Отображение PUSH
Нам нужно, чтобы отправитель:
- Мог найти все устройства, которые находятся рядом и поддерживают наш сервис.
- Мог прочитать реквизиты.
- И мог отослать сообщение получателю о том, что успешно отправил ему деньги.
Получатель, в свою очередь, должен уметь сообщать окружающим отправителям, что у него есть сервис с нужными данными, и уметь получать сообщения от отправителя. Как происходит процесс перевода денег по реквизитам у нас в банке, думаю, описывать не стоит. А теперь попробуем это реализовать.
Для начала нужно придумать названия нашего сервиса и характеристик. Как я говорил, это UUID. Просто генерируем их и сохраняем на Peripheral и Central, чтобы на обоих устройствах были одинаковые.
Вы вольны использовать любые UUID, кроме тех, которые оканчиваются вот так: XXXXXXXX-0000-1000-8000-00805F9B34FB, — они зарезервированы под разные компании. Вы сами можете купить себе такой номер и никто его использовать не будет. Это будет стоить $2500.
Далее нам нужно будет создать менеджеры: один для передачи денежных средств, другой для получения. Нужно просто указать делегатов. Передавать у нас будет Central, получать Peripheral. Мы создаем оба, потому что и отправителем, и получателем может быть одно лицо в разное время.
Теперь нам нужно сделать возможность обнаружения получателя и записать в нашу характеристику реквизиты получателя.
Для начала создадим сервис. Пропишем UUID и укажем, что он primary — то есть сервис является главным для этого устройства. Хороший пример: пульсомер, для которого главным сервисом будет текущее состояние пульса, а состояние батареи — это второстепенная информация.
Далее создаем две характеристики: одну для чтения реквизитов получателя, вторую для записи, чтобы получатель мог узнать об отправке денег. Регистрируем их в нашем сервисе, потом добавляем в менеджер, запускаем обнаружение и указываем UUID сервиса, чтобы все устройства, которые находятся рядом, могли узнать о нашем сервисе до подключения к нему. Эти данные помещаются в пакет, который отправляет Central в ходе вещания.
Получатель готов, приступим к отправителю. Запустим поиск и подключение.
При включении менеджера мы запускаем поиск устройств с нашим сервисом. При нахождении мы их получаем в методе делегата и сразу подключаемся. Важно: нужно сохранять strong-ссылку на все Peripheral, с которыми вы работаете, иначе они «утекут».
После успешного подключения настраиваем делегат, который будет работать с данным устройством, и получаем от устройства нужный нам сервис.
Мы успешно подключились к получателю, теперь нужно прочитать его реквизиты.
Мы после подключения уже запросили все сервисы с устройства. И после их получения будет вызван метод делегата, в котором будут перечислены все сервисы, доступные на данном устройстве. Находим нужный и запрашиваем его характеристики. Результат можно будет найти по UUID в методе делегата, в котором хранятся данные для перевода. Пробуем их прочитать, и получим искомое опять в методе делегата. Все сервисы, характеристики и их значения кешируются системой, так что запрашивать их впоследствии каждый раз необязательно.
Всё, мы отправили деньги за кофе, самое время показать получателю красивое уведомление, чтобы он ждал рубли на своем счёте. Для этого нужно реализовать процесс отправки сообщения.
У отправителя достаем нужную нам характеристику, в данном случае мы её взяли из сохраненного значения. Но до этого вам её нужно получить с устройства, как мы делали до этого. А дальше просто записываете данные в нужную характеристику.
После этого на другом устройстве получаем в методе делегата запрос на запись. Тут вы можете прочитать данные, которые вам отправляют, ответить на какую-либо ошибкой, например, нет доступа, или данной характеристики не существует. Всё будет работать, но только если оба устройства включены и приложения активны. А нам нужно, чтобы работало и в фоне!
Apple позволяет использовать Bluetooth в фоне. Для этого нужно в info.plist указать ключ, в каком режиме мы хотим использовать, в Peripheral или Central.
Далее в менеджере нужно указать ключ восстановления и создать метод делегата. Теперь нам доступен и фоновый режим. Если приложение заснёт или будет выгружено из памяти, то при нахождении нужного Peripheral или при подключении Central оно проснётся, а менеджер восстановится с вашим ключом.
Всё отлично, уже готовы релизиться. Но тут к нам прибегают дизайнеры и говорят: «Хотим вставить фотографии пользователей, чтобы им было легче находить друг друга». Что же делать? У нас в характеристику можно записать всего какие-то 500 байтов, а на каких-то устройствах вообще 20 🙁
Спустимся глубже
Чтобы решить эту проблему, нам пришлось спуститься глубже.
Сейчас мы общались устройствами на уровне GATT/ATT. Но в iOS 11 у нас есть доступ к протоколу L2CAP. Однако в этом случае придётся самостоятельно позаботиться о передаче данных. Пакеты отправляются с MTU 2 Кб, не нужно ни во что перекодировать, применяется обычный NSStream. Скорость передачи данных до 394 Килобит/с., по заверению Apple.
Допустим, вы передаёте какие-либо данные вашего сервиса от Peripheral к Central в виде обычных характеристик. И понадобилось открыть канал. Вы открываете его на Peripheral, в ответ получаете PSM — это номер канала, к которому можно подключиться, и нужно с помощью тех же характеристик передать его Central. Номер динамический, система сама выбирает, какой PSM открыть в данный момент. После передачи можно уже на Сentral подключиться к Peripheral и обмениваться данными в удобном для вас формате. Давайте рассмотрим, как это сделать.
Для начала на Peripheral открываем порт с шифрованием. Можно делать и без шифрования, тогда это немного ускорит передачу.
Далее мы в методе делегата получаем PSM и отправляем на другое устройство.
После подключения другого устройства у нас вызовется метод, в котором из канала мы можем достать нужные нам для передачи NSStream.
С Central еще проще, мы просто подключаемся к каналу с нужным номером…
… и после этого получаем нужные нам стримы. В них вы можете передавать абсолютно любые данные любого размера, и строить поверх L2CAP свой протокол. Так мы и реализовали у себя передачу фотографий получателя.
Но есть подводные камни, куда же без них.
Подводные камни
Давайте рассмотрим подводные камни при работе в фоновом режиме. Поскольку вам доступны роли Peripheral и Central, вы можете подумать. что в фоне можете определять, какие устройства рядом находятся в фоновом режиме, а какие в активном. В теории так и должно было быть, но Apple ввела ограничение: телефоны, которые находятся в фоновом режиме, будь то Central или Peripheral, не доступны для других телефонов, которые тоже находятся в фоновом режиме. Также телефоны, которые находятся в фоновом режиме, не видны с неiOS-устройств. Давайте рассмотрим почему так происходит.
Когда ваше устройство активно, оно посылает обычный broadcast-пакет, в котором может быть имя устройства и список сервисов. которые предоставляет это устройство. И overflow данные — всё что не поместилось.
Когда же устройство переходит в фоновый режим, оно не передает название, а список поддерживаемых сервисов переносит в overflow-данные. Если приложение активно, то при сканировании с iOS-устройства оно читает эти данные, а при переходе в фон — игнорирует. Поэтому при переходе в фон вы не сможете видеть приложения, которые также находятся в фоне. Остальные операционные системы Apple всегда игнорируют overflow-данные, поэтому если вы будете искать устройства, поддерживающие ваш сервис, то получите пустой массив. А если подключиться к каждому устройству, которое находится рядом, и запросить поддерживаемые сервисы, то в списке, возможно, будет ваш сервис, и вы сможете с ним работать.
Дальше мы уже готовились передавать в тестирование, правили мелкие недочёты, занимались оптимизацией. И вдруг в какой-то момент мы стали получать в консоли эту ошибку:
CoreBluetooth Unknown error: 124
Самое плохое было в том, что никакой метод делегата не вызывался, мы даже не могли никак обыграть эту ошибку для пользователя. Просто сообщение в лог — и тишина, всё замирало. Никаких особых изменений не вносилось, поэтому мы начали откатываться по коммитам. И обнаружили, что однажды оптимизировали код и переделали способ записи данных. Проблема крылась в том, что не все клиенты были обновлены, поэтому возникала такая ошибка.
.write != .writeWithoutResponse
Мы, счастливые, что всё исправили, побежали скорее передавать в тестирование, а они нам почти сразу возвращают: «Ваши модные фоточки не работают. Они все недогруженные приходят». Мы начали пробовать, и правда, иногда, на разных устройствах, в разное время приходят битые фотографии. Начали искать причину.
И тут снова увидели прежнюю ошибку. Сразу подумали, что дело в разных версиях. Но после полного удаления старой версии со всех тестовых устройств ошибка всё равно воспроизводилась. Мы взгрустнули…
CoreBluetooth Unknown error: 722 CoreBluetooth Unknown error: 249 CoreBluetooth Unknown error: 312
Начали искать инструмент для отладки. Первое, что нам попалось, это Apple Bluetooth Explorer. Мощная программа, много всего умеет, но вот для отладки протокола Bluetooth LE одна маленькая вкладка с поиском устройств и получением характеристик. А нам-то нужно было анализировать L2CAP.
Потом нашли LightBlue Explorer. Оказалась вполне приличная программа, правда, с дизайном из iOS 7. Может делать то же самое, что и Bluetooth Explorer, а еще умеет подписываться на характеристики. И работает стабильнее. Всё хорошо, но опять без L2CAP.
И тут нам вспомнился всем известный сниффер WireShark.
Оказалось, он знаком с Bluetooth LE: может читать L2CAP, но только под Windows. Хотя это не страшно, что мы, не найдем винду, что ли. Самый большой минус — программа работает только с определенным устройством. То есть нужно было найти где-то устройство в официальном магазине. А вы сами понимаете, в большой компании вряд ли одобрят покупку непонятного устройства на барахолке. Мы даже начали просматривать зарубежные онлайн-магазины.
Но тут обнаружили в Additional Xcode Tools программу PacketLogger. Она позволяет смотреть траффик, которой идет на OS X-устройстве. А почему бы не переписать наш MoneyDrop под OS X? Он у нас уже был отдельной библиотеки. Мы просто заменили UIImage на NSImage, всё завелось само через 10 минут.
Наконец-то мы могли читать пакеты, которыми обмениваются устройства. Сразу стало понятно, что в момент передачи данных по L2CAP записывалась одна из характеристик. А из-за того, что канал был полностью занят передачей фотографии, iOS игнорировала запись, а отправитель после игнора обрывал канал. После исправления проблем с передачей фотографии не было.
На этом всё, спасибо за прочтение 🙂