Menu

Bluetooth c: Hello World для получения данных с Bluetooth (BLE) устройства через C# / Хабр

Содержание

BLE под микроскопом / Хабр


BLE под микроскопом. Часть 1

часть 2, часть 3
В мире существует большое разнообразие способов передачи информации «по воздуху». В последнее время всё большую популярность обретает формат BLE. Сегодня мы рассмотрим особенности этого протокола и поговорим о том, почему же он так востребован в современном мире. Так же мы рассмотрим средства разработки и особенности работы вспомогательных приложений на windows, android от фирмы Nordic.

Зачем придумали BLE


Как только люди научились передавать информацию без помощи проводов, встала задача передачи данных, используя устройство с батарейным питанием. Проблема в том, что ему должно помогать другое устройство, которое будет постоянно либо прослушивать эфир, либо передавать данные. Проблема возникает в том случае, если и приемник и передатчик имеют батарейное питание. В этом случае приходит на помощь BlueTooth Low Energy (BLE). Он впервые вошел в протокол BlueTooth 4.0. На данный момент уже вышла спецификация BlueTooth 5.0, однако мы будем рассматривать в основном формат BlueTooth 4.0, иногда указывая нововведения для формата 5.0. В качестве одного из устройств обычно выступает смартфон, а второго — батарейный гаджет. Андроид поддерживает BLE с версии 4.3.

Для передачи и приема данных необходима энергия, поэтому поднимают скорость передачи данных, что бы в единицу времени успеть передать больше информации. Для этого в BLE принята скорость передачи информации в 1 Mbit/c. Однако не только скорость передачи данных важна. Самым важным в BLE является то, что устройства связи умеют переходить в синхронный режим работы. Другими словами, устройства спят 99% времени, потом просыпаются на очень короткое время, обмениваются информацией и опять засыпают. Однако перед тем как войти в этот режим, необходимо пройти процедуру синхронизации. Для этого существует режим «advertising». Его мы рассмотрим позднее. А перед тем как погрузится в описание протокола BLE, хотелось бы затронуть тему инструментальных средств, для работы с протоколом BLE.

Инструменты


Для того чтобы разобраться во всем многообразии посылок и запросов нам необходимы инструментальные средства. С их помощью мы смогли бы увидеть содержимое посылок и проконтролировать механизм взаимодействия между устройствами. Для этих целей мы будем использовать nRF51822 Development Dongle (PCA10000), программу сниффера и, для отображения результатов, хорошо известную всем сисадминам программу «Wireshark».
Программы бесплатные, но достать сам донгл может оказаться проблемой. Однако без инструментария, заниматься разработкой таких сложных устройств будет весьма проблематично. На первом этапе может помочь программа на андроиде «nRF Connect».
Она позволяет сканировать эфир, находить и разбирать посылки как присоединяемых, так и не присоединяемых устройств. У Nordic-a есть и ещё инструменты для разработки BLE устройств, но нам будет достаточно этих. На российском рынке присутствует представитель компании Nordic – фирма «Rutronik» (rutronik24.com, rutronik.com). Через её представителей можно приобрести необходимые микросхемы, отладочные платы и т.д. Кроме того, в интернете имеется форум, на котором представители фирмы отвечают на вопросы разработчиков.

Сначала вкратце поговорим о том, как пользоваться нашими инструментами. Вставим в разъем USB наш донгл и запустим программу ble_sniffer_win. Мы увидим следующее окно.


Если донгл увидит BLE устройства, то внизу появится информация о них. В данном случае, в эфире присутствует одно устройство с именем «TestBLE». Так же отображается его уровень сигнала, MAC адрес и то, что этот адрес является случайным (random). Забегая вперед, хочется заметить, что здесь кроется один из подводных камней для разработчиков. Некоторые телефоны (LG G3S, Samsung S6) работают только с устройствами, MAC адреса которых зарегистрированы (public).

У сниффера есть два режима работы. Если мы нажмем кнопку «w» на клавиатуре, то запустится программа «Wireshark». Сниффер будет сканировать три рекламных канала и выдавать информацию обо всех устройствах объявления. Если мы сначала нажмем цифру на клавиатуре, такую же, как напротив интересующего нас устройства, то включится другой режим работы. В нем сниффер будет отслеживать трафик только одного выбранного устройства, причем как на каналах объявления, так и на рабочих каналах


Используя «Wireshark», легко получить всю информацию о посылке. Программа состоит из трех окон. Сверху отображаются все принятые посылки, во втором окне – детальная информация о выбранном пакете, а в третьем окне отображается сам фрейм. В свою очередь, во втором окне имеется три блока информации. В самом верхнем – временные значения выбранного фрейма, во втором (Nordic BLE sniffer meta) – общая информация о фрейме, такие как уровень сигнала, частотный канал и некоторые другие. Самым интересным для нас является третий блок информации (Bluetooth Low Energy Link Layer). В нем можно посмотреть разбор самого фрейма. В дальнейшем мы будем говорить именно об этом блоке информации. Сначала мы разберем формирование рекламных пакетов.

Advertising


Посмотрим на рисунок ниже. На нем показаны распределения каналов по частотам для BLE. Рекламные каналы — это 37 (2402Мгц), 38 (2426Мгц) и 39 (2480Мгц) каналы. Такое распределение рекламных каналов выбрано не случайно. Во-первых, рекламные каналы попадают между каналами Wi-Fi (1, 6, 11 каналы), что позволяет даже при малом уровне мощности, быть услышанными другими устройствами. Во-вторых, когда мы разносим рекламные каналы далеко друг от друга, мы получаем гарантированную доставку сообщения. Это связано с интерференцией сигнала в помещениях. Известно, что в результате отражения радиосигналов от стен, может получиться ситуация, когда приемник и передатчик не слышат друг друга. Однако в нашем случае, когда передача рекламных пакетов идет последовательно на трех разных каналах, максимально удаленных друг от друга по частоте, этот эффект отсутствует.
Рассмотрим теперь формат самого пакета advertising. В спецификации длина данных измеряется в октетах. Для нас это байты. Самым первым байтом идет преамбула. Она состоит из чередующихся нулей и единиц. Это нужно для синхронизации передатчика и приемника. Следом за преамбулой передаются четыре байта адреса доступа(Access Address). После него идет пакет данных (PDU). В спецификции 4.0 максимальная длина PDU составляет 39 байт, а в версии 5.0 длина пакета данных увеличена до 257 байт. В конце каждого рекламного пакета идут три байта контрольной суммы (CRC).
Здесь надо заметить, что Access Address служит для того, что бы устройства понимали, для кого предназначен BLE пакет. Это своеобразный код доступа. Если этот код доступа не знаком устройству, то пакет игнорируется. На всех рекламных каналах, в отличии от рабочих, он одинаков (0x8E89BED6), поэтому все устройства на каналах объявления видят друг друга.

Рассмотрим теперь формат блока данных PDU. В самом начале пакета PDU идет заголовок длинной 16 бит. В нем содержится тип пакета, флаги TxAdd, RxAdd, а так же длина всего поля PDU в байтах. RFU – это зарезервированные поля. Для спецификации 4.0 это выглядит так:


Заголовок:
Для спецификации 5.0 увеличена длина поля Payload до 255 байт, а так же добавлены новые поля в заголовок:
Заголовок:
Поле TxAdd как раз и отвечает за то, как будет видеться MAC адрес устройства. Если это поле равно единице, то МАС устройства будет виден как random. Рассмотрим теперь какие бывают типы advertising пакетов. На рисунке приведен их список для спецификации 4.0. В формате 5.0 их число увеличено, но мы будем рассматривать то, что есть в обоих форматах.
ADV_IND – это ненаправленные пакеты, которые рассылают устройства, готовые к присоединению. Большинство гаджетов при рассылке рекламных пакетов используют именно их.

ADV_DIRECT_IND — направленные рекламные пакеты присоединяемых устройств. Присоединять и обмениваться данными с ними может только конкретное устройство с заранее известным МАС адресом.

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

SCAN_REQ, SCAN_RSP, CONNECT_REQ – пакеты, которыми обмениваются присоединяемое устройство и телефон в процессе установления синхронного соединения. Эти пакеты и сам процесс присоединения мы рассмотрим во второй части статьи.

ADV_SCAN_IND – эти пакеты рассылает не присоединяемое устройство, которое может предоставить дополнительную информацию в ответ на запрос при сканировании.



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

Печерских Владимир

Bluetooth

Что такое Блютуз

Bluetooth - открытый стандарт беспроводной связи с низким энергопотреблением, обеспечивающий передачу данных и звука между совместимыми устройствами. Неофициальный сайт https://bluetooth.ru.com будет полезен для русскоязычных пользователей устройств с поддержкой технологии беспроводной связи Блютуз. Например, здесь можно бесплатно скачать Bluetooth для Windows 7, 8, 8.1, 10 и XP без регистрации и SMS. Подробнее смотрите здесь.

Для чего нужен Блютуз

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

В стандарте Bluetooth указаны следующие характеристики:

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

Преимущества технологии Bluetooth

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

Что значит название Bluetooth

Harald Blatand Стандарт Bluetooth назван в знак уважения Харальду Блатанду (Harald Blatand), который был королем Дании с 940 по 981. Он был сыном королей Дании и Англии. Его мертвый зуб сине-серого цвета заработал ему прозвище Блютуз. Харальд отвечал за мирное объединение Дании и Норвегии в 958 году. Логотип Блютуз объединяет руны Младшего Футарка (Hagall) и инициалы Харальда. Подробнее смотрите здесь.

История создания

Открытый стандарт беспроводной связи разработала в 1994 г. корпорация Эрикссон. В 1998 г. сформирована Bluetooth SIG. Специальная Interest Group, состоящая из представителей в телекоммуникационных, вычислительных и сетевых отраслях, стимулирует вывод Блютуза на рынок. Эта группа включает Сони-Эрикссон, Интел, Майкрософт и еще множество компаний.

Работа Bluetooth

Совместная работа Bluetooth-устройств предполагает, что они поддерживают общий профиль. Под профилем Bluetooth понимается набор определенных функций, которые одобрены Bluetooth SIG. Рекомендуем бесплатно скачать Блютуз на ноутбук или компьютер для Windows 10, 8.1, 8, 7 и XP на странице https://bluetooth.ru.com/download без регистрации и SMS, чтобы получить возможность подключаться к Bluetooth-устройствам и сетям и иметь доступ к периферийным устройствам.

Как осуществляется подключение Bluetooth

Устройства можно подключить по схемам "точка-точка", "точка-многоточка", объединить в пикосеть и распределительную сеть с возможностью синхронной или асинхронной передачи данных. При этом распределительная сеть может состоять из пикосетей, использующих разные шаблоны и между собой не синхронизирующихся. Со всеми устройствами в пределах досягаемости радиоволн возможно сопряжение. После обнаружения и ввода пароля выполняется беспроводное подключение. Передача данных и звука возможна на расстояние до ста метров. Радиоканал работает на частотах от 2,4 до 2,48 ГГц. Достаточно один раз произвести настройки, и устройства будут находить друг друга и сопрягаться при приближении автоматически. Связь не обрывается, если устройства не покидают определенную зону.

Bluetooth и Wi-Fi

С использованием Bluetooth возможны беспроводные соединения не только телефон-компьютер, смартфон-наушники, ноутбук-колонки и подобные, но и организация полноценной беспроводной сети, пригодной для использования в качестве альтернативы Вай-Фай. Скорость и пропускная способность, конечно, поменьше, чем у Wi-Fi (IEEE 802.11), а в остальном - очень удобно. Все интеллектуальные Блютуз совместимые устройства могут создавать беспроводные соединения и взаимодействовать друг с другом и использовать возможности пассивного беспроводного оборудования. Подробнее смотрите здесь и здесь.

Скачать бесплатно Bluetooth программы для Windows

Скачать бесплатно Bluetooth программы для Windows Существует прикладное ПО, использующее Bluetooth. Такое программное обеспечение может выполнять функции драйверов для организации беспроводного соединения (WIDCOMM, BlueSoleil, Driver Installer), синхронизации и управления данными телефона, смартфона, планшета (Mobile Master, Movil Multimedia), отслеживания активности устройств (BluetoothView), вывода информации и анализа окружающих устройств (Medieval Bluetooth Network Scanner), работы устройств в качестве мобильной веб-камеры (WebCamera Plus) или пульта дистанционного управления (Mobilewitch Bluetooth Remote Control).

Рекомендуем программу Broadcom WIDCOMM Bluetooth скачать бесплатно на компьютер или ноутбук для установки беспроводного соединения, добавления устройств, синхронизации, передачи данных, организации локальной Блютуз-сети.

Драйверы для Блютуз устройств

Универсальные драйверы работают со следующими Блютуз устройствами: десктопы, ноутбуки и нетбуки, планшетники, смартфоны, сотовые телефоны, гарнитуры, портативные колонки, наушники, микрофоны, моноподы для селфи, камеры, телевизоры, пульты, радио, mp3 плееры, часы, другая бытовая электроника, устройства беспроводной домашней автоматизации и умного дома, маяки и маршрутизаторы в сфере розничных продаж и услуг, Блютуз адаптеры, HDD, DVD, принтеры, модемы, клавиатуры, мышки, геймпады, предметы одежды и обуви, спортивные аксессуары, медицинские носимые устройства, GPS навигаторы и трекеры, эхолоты, автомобильный диагностический сканер OBD2 ELM327 и громкая связь в машину.

Ответы на множество вопросов

Кроме драйверов и программного обеспечения, на сайте https://bluetooth.ru.com можно найти ответы на множество вопросов, например:

Скачать Bluetooth

Рекомендуем программу Broadcom WIDCOMM Bluetooth скачать бесплатно на компьютер или ноутбук В первую очередь скачать Блютуз имеет смысл, чтобы подключить через Bluetooth беспроводные Блютуз гарнитуры, наушники, автомобильные сканеры для диагностики, например, OBD2 адаптер ELM327 Bluetooth и другое периферическое оборудование. Также можно подключить к стационарному компьютеру телефон, планшет и прочие гаджеты. Сайт https://bluetooth.ru.com предоставляет возможность пользователям разнообразных совместимых устройств скачать Bluetooth. Подобные драйверы Bluetooth также можно найти на официальных сайтах и через Windows Update. Универсальные драйверы Bluetooth скачать можно здесь.

Bluetooth LE не так уж и страшен, или Как улучшить пользовательский опыт без особых усилий

Недавно мы в команде придумали и реализовали функцию передачи денег по воздуху с помощью технологии 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


Нам нужно, чтобы отправитель:

  1. Мог найти все устройства, которые находятся рядом и поддерживают наш сервис.
  2. Мог прочитать реквизиты.
  3. И мог отослать сообщение получателю о том, что успешно отправил ему деньги.

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

Для начала нужно придумать названия нашего сервиса и характеристик. Как я говорил, это 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[WARNING] Unknown error: 124

Самое плохое было в том, что никакой метод делегата не вызывался, мы даже не могли никак обыграть эту ошибку для пользователя. Просто сообщение в лог — и тишина, всё замирало. Никаких особых изменений не вносилось, поэтому мы начали откатываться по коммитам. И обнаружили, что однажды оптимизировали код и переделали способ записи данных. Проблема крылась в том, что не все клиенты были обновлены, поэтому возникала такая ошибка.
.write != .writeWithoutResponse

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

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

CoreBluetooth[WARNING] Unknown error: 722
CoreBluetooth[WARNING] Unknown error: 249
CoreBluetooth[WARNING] 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 игнорировала запись, а отправитель после игнора обрывал канал. После исправления проблем с передачей фотографии не было.

На этом всё, спасибо за прочтение 🙂

Полезные ссылки


WWDC/CoreBluetooth:


Bluetooth
YouTube
  • Arrow Electronics → Bluetooth Low Energy Series

Как выбрать Bluetooth-устройство для прослушивания музыки — Лайфхакер

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

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

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

На что обратить внимание, чтобы слушать музыку без проводов — будь то просто MP3 или высококачественный рип с виниловой пластинки, мы расскажем в этой статье.

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

Версия Bluetooth

В современных устройствах чаще всего можно встретить поддержку Bluetooth 3.0 или 4.0, в некоторых топовых смартфонах и прочих гаджетах — 4.1. При этом вполне может оказаться, что приобретаемая гарнитура поддерживает подключение только по протоколу версии 2.1. Адаптеры обратно совместимы, но при подключении работает наиболее медленный протокол из двух.

Отличие между версиями протокола для обычного пользователя минимальны за счёт обратной совместимости. Основное, что бросается в глаза, — с каждой новой версией снижается энергопотребление устройств, а начиная с 3.0 добавлен второй модуль для высокоскоростной передачи данных на скорости 24 Мбит/с.

Версия 2.1 + EDR передаёт данные со скоростью не более 2,1 Мбит/с. Этого достаточно для воспроизведения аудиопотока низкого битрейта. Для воспроизведения аудиовидеопотока рекомендуется использовать версию Bluetooth не ниже 3.0.

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

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

Профили Bluetooth

Профили — набор определённых функций, поддерживаемых устройствами. Из всех используемых в Bluetooth для прослушивания музыки интересны следующие:

  1. Headset Profile (HSP) необходим для связи гарнитуры и смартфона и беспроводной передачи монозвука с битрейтом 64 кбит/с.
  2. Hands-Free Profile (HFP) также обеспечивает только передачу моно, однако с более высоким качеством.
  3. Advanced Audio Distribution Profile (A2DP) необходим для передачи двухканального аудиопотока.
  4. Audio/Video Remote Control Profile (AVRCP) обеспечивает управление функциями воспроизводящих устройств (без него невозможно даже изменение громкости музыки).

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

Однако, даже если и передающее, и воспроизводящее устройство (например, смартфон и беспроводные наушники) оснащены Bluetooth 3.0 или 4.0 и поддерживают работу с необходимым протоколом, нужно обратить внимание на кодек, который используется.

Кодеки Bluetooth

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

  1. Subband Coding (SBC) — кодек, используемый A2DP по умолчанию и созданный разработчиками профиля. К сожалению, SBC жмёт значительно грубее, чем MP3. И стало быть, для прослушивания музыки не подходит.
  2. Advanced Audio Coding (AAC) — более продвинутый кодек, использующий другие алгоритмы сжатия. Звучит значительно лучше SBC.
  3. AptX — вот он, правильный выбор! Хотя бы из-за возможности передавать файлы в MP3 и AAC без дополнительных манипуляций и перекодирования. А значит, и без ухудшения звука. Однако стоит оговориться. Для воспроизведения разных битрейтов существует несколько версий aptX. Каждая из них предназначена для своего звукового потока.
Версия Число поддерживаемых каналов Максимальная частота дискретизации, кГц Квантование, бит Максимальный битрейт Степень сжатия
AptX 2 44,1 16 320 кбит/с 2:1
Enhanced AptX 2, 4, 5.1, 5.1+2 48 16, 20, 24 до 1,28 Мбит / с 4:1
AptX Live н/д 48 16, 20, 24 н/д 8:1
AptX Lossless н/д 96 16, 20, 24 н/д н/д
AptX Low Latency  н/д 48 16, 20, 24 н/д н/д

»
Главные особенности последних двух версий кодека — максимально сниженная задержка воспроизведения звука и сниженная нагрузка на процессор при кодировании. Версия Low Latency позволяет достигать задержки в 32 мс между источником аудиопотока и воспроизводящим устройством. Это позволит уменьшить искажения, вносимые аппаратурой при прослушивании музыки.

Таким образом, при определённых предпочтениях можно выбрать определённый кодек. Если воспроизведение lossless-потока не предполагается, а высокая задержка звука не критична — стоит ограничиться стандартным aptX и не переплачивать за поддержку устройством последующих версий.

Стоит помнить, что необходимый профиль и кодек должен поддерживаться как смартфоном (или другим источником аудиопотока), так и самой гарнитурой (или Bluetooth-колонкой). В противном случае алгоритм A2DP автоматически начнёт работу с использованием SBC.

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

Для прослушивания музыки в течение долгого времени требуется поддержка Bluetooth не ниже версии 3.0, кодека aptX и профиля A2DP. Для прослушивания музыки с высоким битрейтом необходима поддержка кодека aptX Lossless — ни один другой не подойдёт, поскольку музыка будет сжиматься при передаче на воспроизводящее устройство.

Все что нужно знать о технологии Bluetooth

Чем интересен Bluetooth и как он связан с Харальдом Синизубом?

Все что нужно знать о технологии Bluetooth

Что такое Bluetooth и с чем его «едят». Основы технологии и дата создания

Все что нужно знать о технологии Bluetooth

Связь Bluetooth – это стандарт беспроводной технологии для обмена данными на кроткой дистанции, которая использует коротковолновые СВЧ радиоволны в ISM диапазоне от 2.4 до 2.485 ГГц, для обмена данными между стационарными и мобильными устройствами, и построении персональных сетей (Personal Area Network PAN).

 

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

 

Спецификация Bluetooth была разработана группой Bluetooth Special Interest Group (Bluetooth SIG), которая на сегодняшний день имеет в членстве более чем 25.000 компаний работающих в области электросвязи, вычислительной техники, сетевого оборудования и потребительской электроники.

 

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

 

Тайна названия Bluetooth

Все что нужно знать о технологии Bluetooth

 

"Bluetooth" является не совсем правильной англизированной версией скандинавского Blåtand/Blåtann, (старонорвежский blátǫnn) являющейся прозвищем короля Харальда Синезубого, жившего в X веке. Ему удалось объединить враждовавшие датские племена в единое королевство, по преданию он также ввел Христианство. По примеру Харальда объединившего народы, Bluetooth делал тоже самое с протоколами, объединяя их в единый универсальный стандарт.

 

И еще немного по поводу названия. Слово «blå» в современных скандинавских языках означает «синий», но в то время когда жили викинги его второе значение означало и «черный цвет». Поэтому, скорее всего у Харальда, конечно же, был черный передний зуб, но никак ни синий. И в переводе датское Harald Blåtand более правильно было б интерпретировать как Harald Blacktooth, нежели Harald Bluetooth. Вот такая историческая неточность.

 

Идея названия была предложена в 1997 году Джим Кардашем, который разработал систему, позволявшую мобильным телефонам «общаться» с компьютерами. На момент разработки, Джим читал исторический роман Франса г. Бенгтссона «Корабли Викингов», повествовавшем о Викингах и о короле Харальде Синезубом. Таким образом роман и повлиял на название.

 

Логотип Bluetooth сочетает две скандинавские руны «хаглаз» и «беркана».

 

1998

Пятью кампаниями формируется Bluetooth Special Interest Group (SIG)

К концу года Bluetooth SIG принимает своего 400го члена

Имя Bluetooth получает официальный статус

1999

Выпущена спецификация Bluetooth 1.0

Bluetooth в SIG организовывает первую встречу разработчиков UnPlugFest

Технология Bluetooth награждена в качестве  "Best of Show Technology Award" на COMDEX

2000

На рынок выходит первый мобильный телефон с поддержкой Bluetooth

Появляется первая PC card

Прототип мыши для ноутбука и продемонстрированы на CeBIT 2000

Прототип USB модуля показан на выставке COMDEX

Первый чип объединивший радиочастоту, основную полосу частот, функции микропроцессора и беспроводное программное обеспечение связи Bluetooth

В продажу уходит первая гарнитура

2001

Первый принтер

Первый ноутбук

Первый hands-free автомобильный комплект

Первый hands-free с распознаванием речи

Bluetooth SIG, Inc. формируется как некоммерческая, неакционерная компания

2002

Первый комплект клавиатуры и мыши

Первый GPS приемник

Количество кондиционных Bluetooth продуктов составило 500 единиц

IEEE одобряет, что 802.15.1 стандарт соответствует беспроводной технологии Bluetooth

Первая цифровая фотокамера

 

Реализация Bluetooth

Все что нужно знать о технологии Bluetooth

Bluetooth работает на частотах от 2400 до 2483.5 МГц (включая поле допусков от 2 МГц в нижнем диапазонt и 3.5 МГц наверху). Соответственно как видно, принцип действия основан на использовании радиоволн. Радиосвязь Bluetooth осуществляется в диапазоне ISM применяющемся в различных бытовых приборах и беспроводных сетях.

 

Bluetooth использует радио технологию, которая называется скачкообразной перестройкой частоты с расширенным спектром, Frequency Hopping Spread Spectrum, FHSS. Bluetooth делит данные на пакеты и передает каждый пакет по одному из обозначенных 79 каналов (рабочих частот). Каждый канал имеет полосу пропускания 1 МГц. Связь Bluetooth 4.0 использует 2 МГц интервал, который вмещает в себя 40 каналов. Первый канал запускается на 2402 МГц и продолжается до 2480 МГц с шагом 1 МГц. Для Bluetooth применяется метод расширения спектра со скачкообразной перестройкой частоты, несущая частота сигнала скачкообразно меняется 1600 раз в секунду.

 

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

 

Версии Bluetooth

Все что нужно знать о технологии Bluetooth

Bluetooth 1.0

Устройства первой версии 1.0 имели ряд проблем. У них наблюдалась посредственная совместимость с техникой сторонних производителей. В 1.0 и 1.0B была обязательной передача адреса устройства (BD_ADDR) на этапе установления связи, что делало невозможной реализацию анонимности соединения на протокольном уровне и было основным недостатком версии.

 

Bluetooth 1.1

Первое же обновление 1.1 исправило много недочетов найденных в версии 1.0B. Добавлены: поддержка нешифрованных каналов и RSSI (Received Signal Strength Indication) индикация уровня мощности.

 

Bluetooth 1.2

У последующего обновления были улучшения: Быстрое подключение и обнаружение. Она стала стойкой к радиопомехам, благодаря использованию адаптивной перестройки частоты с расширенным спектром. Скорости передачи данных до 1 Мбит/с. Появилось Расширенные Синхронные Подключения (eSCO), улучшившее качество передачи голоса в аудиопотоке. В Host Controller Interface (HCI) добавлена поддержка трёхпроводного интерфейса UART. В качестве стандарта принят IEEE Standard 802.15.1-2005.

 

Bluetooth 2.0 + EDR

EDR обеспечивает следующие преимущества: увеличение скорости передачи в 3 раза до 2,1 Мбит/с, возможность установки нескольких подключений  в связи с дополнительной полосой пропускания. Снижение потребления энергии из-за уменьшения нагрузки.

 

Bluetooth 2.1

Добавлена технология расширенного запроса характеристик устройства, энергосберегающая технология Sniff Subrating, которая позволяет увеличить продолжительность работы устройства от одного заряда аккумулятора в 3—10 раз. Обновлённая спецификация существенно упрощает и ускоряет установление связи между двумя устройствами, позволяет производить обновление ключа шифрования без разрыва соединения

 

Bluetooth 2.1 + EDR

В августе 2008 года Bluetooth SIG представил версию 2.1+EDR. Новая редакция Bluetooth снижает потребление энергии в 5 раз, повышает уровень защиты данных и облегчает распознавание и соединение Bluetooth-устройств благодаря уменьшению количества шагов, за которые оно выполняется.

 

Bluetooth 3.0 + HS

21 апреля 2009 года  появился Bluetooth 3.0+HS. Скорость передачи данных (теоретически) возросла до 24 Мбит/с. Особенностью являлось добавление AMP (Alternate MAC/PHY), дополнение к 802.11 как высокоскоростное сообщение. Для AMP были предусмотрены две технологии: 802.11 и UWB.

 

Bluetooth 4.0

Через четыре года, 30 июня 2010, Bluetooth SIG утвердил спецификацию 4.0. Bluetooth 4.0 включал протоколы: классический Bluetooth, высокоскоростной Bluetooth и Bluetooth с низким энергопотреблением.

 

Bluetooth 4.1

SIG в конце 2013 года представила спецификацию Bluetooth 4.1. Одно из улучшений, реализованных в спецификации Bluetooth 4.1, касается совместной работы Bluetooth и мобильной связи четвёртого поколения LTE. Стандарт предусматривает защиту от взаимных помех путём автоматического координирования передачи пакетов данных.

 

Bluetooth 4.2

Bluetooth 4.2 был представлен 2 декабря 2014 года. Стандарт улучшили в его скоростных характеристиках и информационной безопасности.

 

Bluetooth 4.2 добавить возможность прямого подключения к Сети. То есть устройства с поддержкой Bluetooth 4.2 смогут не только напрямую взаимодействовать друг с другом, но и подключаться к Интернет (благодаря поддержке протокола IPv6/6LoWPAN) через соответствующие точки доступа. Ключевая идея развития стандарта заключается в том, чтобы с помощью Bluetooth можно было соединить любые устройства друг с другом.

 

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

 

2003

Первый MP3-плеер с технологией Bluetooth

Версия Bluetooth 1.2 принята Bluetooth SIG

Поставка продуктов Bluetooth выросло до 1 млн в неделю

Первая одобренная медицинская система Bluetooth

2004

SIG принимает версию Core Specification Version 2.0 Enhanced Data Rate (EDR)

Технология Bluetooth установлена в качестве базовой комплектации на 250 млн устройств

Поставки превзошли 3 млн. единиц в неделю

Первые стереонаушники

2005

Поставки продукции поднялись до 5 млн чипсетов в неделю

SIG приветствует своего 4,000 участника

Открыта штаб-квартира SIG  в Белвью, штат Вашингтон, региональные офисы начали работать в г. Мальме, Швеции и Гонконге

SIG запускает Profile Testing Suite (PTS)  v1.0, инструмент для тестирования и проведения типовых испытания полностью разработанный собственными силами компании

2006

Первые солнцезащитные очки

Первые часы

Первая цифровая фоторамка поддерживающая Bluetooth

Bluetooth установлен на 1 млрд устройств

Поставки Bluetooth устройств достигает 10 миллионов в неделю

Тестирование Profile Tuning Suite (PTS)  становится обязательной частью продуктов Bluetooth квалификационного отбора

SIG объявляет, что она будет интегрировать технологию сверхширокополосной связи (Ultra-Wide Band, UWB) с WiMedia Alliance

2007

Первый будильник радио

Первый телевизор

SIG приветствует  8,000 участника

Исполнительный директор Bluetooth SIG , Майкл Фолей, получает награду Telematics Leadership Award

PTS Protocol Viewer выпущен в качестве части недавно опубликованной версии 2.1.1 наряду со значительно обновленным пользовательским интерфейсом

 

Самые распространенные профили Bluetooth

Все что нужно знать о технологии Bluetooth

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

 

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

 

Существует широкий спектр профилей Bluetooth, которые описывают различные типы приложений или сценариев использования устройства.

Список основных профилей одобренных Bluetooth SIG с кратким описанием и предназначением:

Advanced Audio Distribution Profile (A2DP) разработан для передачи музыки, к беспроводной гарнитуре или иным устройствам.

 

Audio / Video Remote Control Profile (AVRCP) создан для управления стандартными функциями телевизоров, высокоточного оборудования. Позволяет создавать устройства с функциями дистанционного управления.

 

Basic Imaging Profile (BIP) разработан для пересылки изображений между устройствами. С помощью этого профиля, возможно, изменять размер изображения и конвертировать его в поддерживаемый принимающим устройством формат.

 

Basic Printing Profile (BPP) с его помощью возможно пересылать текст, сообщения электронной почты, vCard на принтер. Профилю не требуется наличие драйверов.

 

Common ISDN Access Profile (CIP) используется для доступа устройств к цифровой сети с интеграцией служб, ISDN.

 

Cordless Telephony Profile (CTP) поддерживает беспроводную телефонию.

 

Device ID Profile (DIP) помогает определить класс устройства, его производителя и версию продукта.

 

Dial-up Networking Profile (DUN) протокол предоставляет стандартный доступ к Интернету или другому телефонному сервису через Bluetooth.

 

Fax Profile (FAX) предоставляет интерфейс между мобильным или стационарным телефоном, а также персональным компьютером на котором установлено программное обеспечение для работы с факсами.

 

File Transfer Profile (FTP_profile) обеспечивает доступ к файловой системе устройства.

 

General Audio / Video Distribution Profile (GAVDP) база для A2DP и VDP.

 

Generic Access Profile (GAP) база для остальных профилей.

 

Generic Object Exchange Profile (GOEP) база для других профилей передачи данных, основывается на OBEX.

 

Hard Copy Cable Replacement Profile (HCRP) замена кабельного соединения между устройством и принтером. Отрицательная сторона профиля, делающая его не универсальным- необходимость установки драйверов.

 

Hands-Free Profile (HFP) используется для соединения беспроводной гарнитуры и телефона.

 

Human Interface Device Profile (HID) обеспечивает поддержку устройств с HID в которые входят клавиатуры, мышки, джойстики и т.д. Отличительная особенность - использует медленный канал, работает на пониженной мощности.

 

Headset Profile (HSP) используется для соединения беспроводной гарнитуры и телефона.

 

Intercom Profile (ICP) обеспечивает голосовые звонки между Bluetooth совместимыми устройствами.

 

LAN Access Profile (LAP) обеспечивает доступ Bluetooth устройствам к вычислительным сетям LAN, WAN или Интернет посредством другого Bluetooth устройства, которое имеет физическое подключение к этим сетям.

 

SIM Access Profile (SAP, SIM) позволяет получить доступ к SIM-карте телефона, что делает возможным использование одной SIM-карты для нескольких устройств.

 

Synchronisation Profile (SYNCH) позволяет синхронизировать персональные данные (PIM).

 

Video Distribution Profile (VDP) позволяет передавать потоковое видео.

 

Wireless Application Protocol Bearer (WAPB) протокол для организации P-to-P (Point-to-Point) соединения через Bluetooth.

Подборка Bluetooth APT-X аудиоресиверов с Aliexpress

Хорошая подборка беспроводных аудиоресиверов для домашнего кинотеатра, мультимедиа системы, акустических колонок и наушников, которые не просто передают lossless форматы без потерь, но и обеспечивают малую задержку звука. Это популярные форматы Bluetooth APT-X, в том числе APT-X LL и APT-X HD, а также последние версии кодека на Bluetooth 5.0. Приведенные модели не просто являются последними модификациями, но также будут подлюбой кошелёк и на любой вкус. Устройства предназначены для стационарного применения, для автомобиля или для подключения наушников к смартфону.

10. Один из современных и функциональных ресиверов — Bluetooth приемник Blitzwolf BW-BR5. Представляет собой беспроводной адаптер стандарта Bluetooth V5.0 с внешними антеннами. Предусмотрены одельные режимы работы: приемник (RX) и передатчик (TX) что может быть очень удобно. Два таких устройства образуют беспроводной аудиомост без потерь связи.  Ресивер Blitzwolf BW-BR5 реализован на чипе CSR8670 и имеет интерфейсы Micro USB, 3,5 мм AUX, оптический вход/выход.

9. Второй интересный гаджет — беспроводной приемник-передатчик Ugreen СМ144 Bluetooth 5.0 c поддержкой AptX HD+LL. Это небольшой функциональный трансивер с аккумулятором (300мАч — на 3 часа работы) и двойным выходом: Toslink/оптика или AUX. Для выбора режима работы предусмотрен селектор Rx/Tx. В лоте, кстати, можно выбрать и версию с Bluetooth 4.2.

 8. Еще один интересный приемник для наушников и акустики — это модель BTR3 от FiiO. Это необычный приемник стандарта Bluetooth 4.2 с поддержкой кодека АptXLL и со встроенным выделенным ЦАП AK4376A, что в сумме обеспечивает непередаваемое звучание. Может работать как USB-DAC. Приемник на чипе CSR8670 автономный — встроенного аккумулятора на 300 мАч хватает на 11 часов работы.  Хороший вариант для домашней акустики, автомобиля или наушников. Есть встроенный микрофон с шупомодавлением для приема звонков.

7. Еще одна модель беспроводного Bluetooth приемника с APT-X — это ресивер UGREEN Bluetooth 5.0 CM110. Обеспечивает до 5 часов работы в источника звука для наушников, автомагнитолы или акустической системы. Может работать как адаптер для голосовой связи. Для подключения наушников используется джек 3.5 мм.

6. Ультрадешевый ресивер с APT-X LL Kebidu B7. Стоит,  как минимум, в два раза дешевле любого из этой подборки. Оснащен NFC ответчиком для быстрого спаривания со смартфоном. Имеет встроенный микрофон для ответа на звонки. Идеальный вариант для наушников или автомобиля. Аккумулятор 300 мАч, время работы до двух часов.

 5. Один из самых популярных и самый продаваемый ресивер от UGREEN — беспроводной Bluetooth 5.0 с джеком 3.5 мм. Встроенный аккумулятор обеспечивает работу до 5 часов. Предусмотрен микрофон для голосовой связи. Идеальный вариант для автомобильной магнитолы. При выборе внимательно выбирайте — в лоте есть устаревшая модель без APT-X, правда, чуть дешевле.

 

4. Недорогой брендовый беспроводной трансивер VIKEFON с заявленной дальностью связи до 80 метров. Устройство реализовано на чипе CSR8670 (Bluetooth 5.0) и имеет интерфейсы Micro USB, 3,5 мм, AUX, оптический вход/выход. Хорошо подходит для подключения наушников к телевизору или подключения акустической системы к смартфону. Простой в управлении. 

 

3. Один из лучших в своем классе — беспроводной аудиоресивер FX-AUDIO BL-MUSE-02 на базе чипа CSR8670 Bluetooth 4.0. Поддерживает кодеки APTX, SBC, A2DP, AVRCP, PBAP и обеспечивает соотношение сигнал/шум до -95dB. Подключение осуществляется через оптику/toslink, либо коаксиальным проводом (RCA). Для увеличения дальности используется внешняя антенна.

2. Аудиоресивер DIG Shine BTS2 в корпусе на чипе CSR8675 Bluetooth v5.0. Заявлена поддержка 24BIT APTX HD. Для увеличения дальности используется отдельная внешняя антенна. Поддерживает профили: APTX-HD, APTX-LL, APT-X, A2DP, AVRCP, AAC и так далее. Для подключения можно выбрать оптический цифровой выход, коаксиальный цифровой выход.

 

1. Если вам не нужны понты, бренд или красивый корпус напоказ, то есть смысл приобрести отдельный аудиомодуль цифрового Bluetooth приемника для самоделок и DIY. Это популярный аудиомодуль AIYIMA Bluetooth с поддержкой протокола APT-X. На фотографии виден отдельный чип CSR64215, а также на плате распаяны коммутационные реле, предусилитель, разъемы для удобства монтажа. Этого будет достаточно для домашней аудиосистемы. 

 

Ну и под занавес небольшие диаграммы для сравнения.

Версии Bluetooth и задержка (условно).

 Версии кодека и задержка в мс. Чем «круче» кодек — тем лучше звук и меньше задержка. Заметно на динамичных сценах, когда звук попросту отстает от картинки. 

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

 

 

Подборка Bluetooth аудиомодулей для ремонта и модернизации мультимедиа систем

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

Аудиомодуль Bluetooth AIYIMA TPA3116

Неплохой и недорогой вариант для модернизации компьютерных колонок и акустических систем формата 2.1. Это значит, что устройство, реализованное на базе гибридной микросхемы TPA3116 с приемником канала Bluetooth, выдает на выходных каскадах аж 200 мощных китайских ватт. А конкретно: стерео 2 х 50 Вт, плюс выход на сабвуфер до 100 Вт. Предусмотрена регулировка тембра, канала НЧ, баланс L/R, и общая громкость. Питается от DC12V-24V.

Аудиомодуль Bluetooth VHM-302 TPA3116D2

Недорогой модуль для аудиосистем VHM-302 на базе модернизированной версии микросхемы TPA3116D2. Оборудован приемником протокола Bluetooth 4.0. Из особенностей — читает карты памяти MicroSD и флеш-накопители USB. Выход обеспечивает до 2 х 50 Вт при питании DC12V-24V.  Цена скромная — всего  $5.95.

Самый дешевый Аудиомодуль Bluetooth WAVGAT

Да, все верно. Это самый дешевый и самый популярный модуль аудиоресивера для самоделок и ремонта от WAVGAT. Это модернизированная версия, на которой установлен чип с приемником протокола Bluetooth 5.0. Из-за компактных размеров отлично подходит для DIY. Предусмотрены отверстия для крепления. Антенна встроенная (печатная). Выход звука через разъем 3.5 мм (джек), питание от 5 Вольт или от аккумулятора. Цена очень хорошая — всего $1.29.

 Аудиомодуль Bluetooth WAVGAT МН-М18/М28/М38

Интересный лот с продвинутым аудиомодулем WAVGAT. Это модель MH-Mх8 (на выбор М18, М28, М38). Различные варианты исполнения отличаются не только размерами, но и функционалом. Самая старшая версия беспроводного Bluetooth приемника имеет встроенный на плате усилитель звука (5 Вт + 5 Вт стерео). На модулях установлен Bluetooth  версии  4.2.

 Аудиомодуль Bluetooth WAVGAT VHM-15 CT14 c усилителем

Еще один вариант от Wavgat — модуль CT14 с распаянным разъемом на колонки и аудио взход. Предназначен для ремонта музыкальных центров. Это самый простой способ, например, добавить Bluetooth в старую автомагнитолу. Питается от  3,7 V  (аккумудяторная батарея) или 5 V (Micro USB). На плате распаян  цифровой аудио усилитель 3 W. Антенна встроенная (Печатная). Два провода с разъемами в комплекте.

 Аудиомодуль Bluetooth CSR8645 APTX c усилителем

А вот этот модуль от WAVGAT  интересен сразу двумя функциями. Во-первых, на зеленой (нижней) плате распаян усилитель 10 Вт (5 Вт + 5 Вт) для подключения динамиков на прямую к модулю. Во-вторых, верхняя плата — это беспроводной модуль Bluetooth 4.0 с установленным чипом CSR8645. Главная особенность этого чипа — поддержка протокола APT-X, который обеспечивает передачу аудиопотока без потерь. Модуль можно питать от 5В / аккумулятора. Предусмотрена функция голосового вызова.

 Аудиомодуль Bluetooth AIYIMA С APTX

Один из самых интересных модулей цифрового Bluetooth приемника для самоделок и DIY. Это популярный аудиомодуль AIYIMA Bluetooth с поддержкой протокола Bluetooth APT-X. На фотографии виден отдельный чип CSR64215, а также на плате распаяны коммутационные реле, предусилитель, разъемы для удобства монтажа. 

 

Мощный Аудиомодуль Усилителя 100 Вт с Bluetooth

А вот это интересный вариант для полноценной мощной аудиосистемы для дома. Аудиомодуль имеет усилитель мощности на основе микросхемы TDA7492P (Class D). Выход стерео, два канала по 50 Вт. На плате распаян модуль беспроводной связи Bluetooth 4.0, а также предусмотрены кнопки для управления воспроизведением.

 Аудиомодуль Bluetooth с USB/TF

Этот безымянный аудиомодуль относится к недорогим, но функциональным. При компактных размерах, модуль питается от USB (5 В) или от аккумулятора, одновременно обеспечивает воспроизведение не только по протоколу Bluetooth, но и с карты памяти (MicroSD) или накопителя USB. Управление воспроизведением осуществляется с кнопок. Для удобства предусмотрены клеммники и джек 3.5 мм.

Панельный аудиомодуль с Bluetooth и пультом

Последний модуль представляет компактную панель с дисплеем для установки в корпус, например, колонок. Управлять можно с кнопок на панели или с ИК-пульта (в комплекте). Модуль обеспечивает воспроизведение через беспроводное подключение Bluetooth, а также с карт памяти (MicroSD) и с накопителей USB.

  

 

Программирование

C # и Bluetooth - qaru. Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. работы Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

nholthaus / win-bluetooth: набор современных классов c ++ для использования bluetooth в windows

перейти к содержанию Зарегистрироваться
  • Почему GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • команда
  • предприятие
  • Проводить исследования
    • Изучите GitHub →
    Учитесь и вносите свой вклад
    • Темы
    • Коллекции
    • В тренде
    • Учебная лаборатория
    • Руководства с открытым исходным кодом
    Общайтесь с другими
    • События
    • Форум сообщества
    • GitHub Educa
.

Отправить ответ

avatar
  Подписаться  
Уведомление о