Возможна ли связь Bluetooth без сопряжения?


36

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

Поэтому мой вопрос заключается в том, чтобы использовать связь Bluetooth, есть ли способ связи без сопряжения? Другими словами, предположим, что мой приемник Bluetooth ожидает код «abc123». Устройство Bluetooth, как и телефон, запрограммировано на постоянную передачу этого кода. После получения кода система начинает делать все, что должно, после предоставления доступа. Такая система, конечно, устранит барьер сопряжения за счет безопасности.

Так возможна ли эта концепция? Я не очень разбираюсь в протоколах связи Bluetooth на очень техническом уровне, но если кто-то может дать мне подсказку, я могу начать обучение с этого момента. Не считайте мое ограниченное понимание ограничением.


Есть режим Bluetooth, который делает именно это, но я не знаю, как он называется. Он использовался для отправки местной рекламы на мобильные телефоны.
Джиппи

2
Существуют различные модули 433 МГц, которые передают сигнал включения / выключения «мгновенно»; часто используется в открывателях гаражных ворот. Они также дешевы и просты в эксплуатации, хотя и не обеспечивают присущей безопасности.
pjc50

Ответы:


25

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

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

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

Вы также можете попытаться преднамеренно открыть себя для блюджеккинга . Я не знаком с этим, но если безопасность не проблема, это может сработать.


2
Отлично, это кажется наиболее перспективным. Мне нравится простота метода дружественных имен, и Bluejacking кажется хорошим кандидатом.
Capcom

12

Короткий ответ - да, можно использовать Bluetooth без сопряжения. Тем не менее, он по-прежнему всегда будет связью точка-точка. Существуют также потенциальные проблемы, связанные с отсутствием сопряжения (в основном из-за недостаточной безопасности и недостаточной поддержки этого режима работы). Может ли это быть сделано, зависит от аппаратной части Bluetooth вашего ресивера. Я предполагаю, что вы используете «стандартный» Bluetooth вместо Bluetooth с низким энергопотреблением (который полностью отличается и не особенно хорошо поддерживается в мобильных телефонах). Если вы используете низкое энергопотребление, то ваш передатчик будет устройством с низким энергопотреблением, а ваш приемник будет тем, кто слушает сообщения. Я не использовал это, поэтому я не могу дать вам никакой информации по этому поводу, поэтому я буду придерживаться «нормального» Bluetooth.

На мой взгляд, нужно преодолеть две проблемы:

  1. Отключение сопряжения контактов

  2. Автоматическое инициирование соединения

Сначала я расскажу о номере 2, так как у меня сложилось впечатление, что это то, что вас действительно интересует (извиняюсь, если я читаю это неправильно). Чтобы сделать это с телефона или другого «главного» устройства, он должен будет постоянно искать удаленные устройства Bluetooth. Когда он распознал тот, который был применим, он автоматически подключался к нему и отправлял те или иные данные, которые могли бы инициировать любые необходимые действия. Другие упоминали об использовании дружественного имени Bluetooth для этого процесса, и это, безусловно, один из способов сделать это. Мой опыт использования дружественных имен Bluetooth (особенно, но не исключительно со стеком Microsoft Bluetooth) заключается в том, что они не настолько надежны, как метод сканирования. Возможно, вам лучше использовать класс устройств Bluetooth, который транслируется одновременно с уникальным адресом устройства. Этот класс устройств имеет большое количество предварительно определенных записей для таких вещей, как мобильные телефоны, ноутбуки, настольные компьютеры и т. Д. И т. Д. Если вы используете один из нестандартных классов устройств (например, 00:00:00), вы сразу сможете отфильтровать подавляющее большинство устройств Bluetooth. После этого вы можете подключиться к оставшемуся устройству и выполнить какое-либо соединение для подтверждения запроса, чтобы инициировать ваше действие. Если вы сделаете это соответствующим образом неясным (или проверите дружественное имя в качестве второго соображения), оно должно неявно отфильтровывать все оставшиеся неправильные устройства.


Что касается номера 1, соединение пар не особенно логично, если вы создаете временные соединения, но все же может быть лучшим способом достижения того, что вы хотите сделать. Если вы хотите избежать сопряжения контактов, его можно отключить и установить непарное соединение. Как это сделать, зависит от реализации приемника Bluetooth, но вот несколько примеров:

  1. Bluegiga WT12: используйте команду SET BT AUTH *
  2. National Semiconductor LMX9838: используйте команду GAP_SET_SECURITY_MODE с режимом безопасности 1 (без сопряжения)

и т.п.

Подключение к устройству можно выполнить без сопряжения. Если устройство, инициирующее соединение, совпадает с приемником, это очень просто. Если вы используете ПК с Windows, вы можете выполнить трудоемкий процесс создания нового соединения и выбрать «не использовать пин-код», хотя Windows, вероятно, по-прежнему будет запрашивать пин-код при подключении (обычно работает 0000, но это очень облезло). Если вы используете Python с Pybluez, это очень просто:

import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))

Однако, если вы хотите подключиться с мобильного телефона, все становится намного сложнее. Android SDK не поддерживает непарные соединения:

Текущие API-интерфейсы Bluetooth для Android требуют, чтобы устройства были сопряжены до установления соединения RFCOMM. (Сопряжение выполняется автоматически при инициации зашифрованного соединения с API-интерфейсами Bluetooth.)

http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Есть способы обойти это, но они очень сложны и плохо поддерживаются. Если вы используете iPhone, то Bluetooth-соединение - это совершенно иная червь (лицензирование и т. Д.), Поэтому я оставлю это сейчас.


Сказав все это, почти каждый API, на который я когда-либо смотрел, позволяет создавать пары иотмена пары (за исключением python / pybluez, но это всего лишь оболочка для стека Microsoft в Windows, поэтому вы всегда можете вызвать функцию низкого уровня напрямую). Итак, когда вы обнаружили устройство с правильным классом устройств, почему бы просто не выполнить автоматическое сопряжение (с предварительно определенным номером контакта), выполнить подключение, отправить необходимые данные, отключить и затем разорвать соединение. Ничто из этого не потребует вмешательства пользователя, и, если вы не делаете это тысячи раз (что может вызвать проблемы с износом EEPROM), это не должно вызывать у вас никаких проблем. Это также избавит вас от хлопот, связанных с попыткой заставить различные API работать хорошо с тем, что воспринимается как нестандартный метод использования Bluetooth.


1
Спасибо за превосходный ответ! Многое для меня, чтобы посмотреть сейчас.
Capcom

10

Это может быть достигнуто с помощью технологии под брендом Bluetooth под названием Bluetooth Smart (или Bluetooth Low Energy / Bluetooth 4.0), а также в зависимости от имеющегося у вас телефона.

Основным преимуществом Low Energy по сравнению с обычным Bluetooth является то, что он потребляет намного меньше энергии, и ожидаемый срок службы устройства может составлять годы в зависимости от интервала подключения и от того, сколько рекламы на батарейке типа «таблетка».

Для решения этой проблемы вы можете поместить соответствующий код в рекламные данные чипа. ( Базовая спецификация Bluetooth 4.0, том 3, часть C, раздел 11.1.4 или 11.1.10)

Есть 3 основных производителя чипов, которые производят чипы с низким энергопотреблением (TI, CSR и Nordic Semiconductor)

У Nordic есть чип подключения nRF8001 (чип подключения, полностью квалифицированное устройство) и SoC nRF51822 . Преимущество использования nRF8001 заключается в том, что вы можете использовать свой процессор по своему выбору, и вам не нужно беспокоиться о спецификации Bluetooth, поскольку это обрабатывается микросхемой. Преимущество nRF51822 заключается в том, что это система на чипе, которая сокращает спецификацию, работает под управлением Cortex-M0 и должна быть полностью квалифицирована после выпуска.

TI имеет чип SoC 8051 cc2540, а CSR имеет чип CSR SoC µEnergy

Все сводится к вашим потребностям, предпочтениям процессора и функциональности / стоимости.



1

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

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

Например, в Linux после сопряжения infoфайл сохраняется для каждого сокращенного устройства в / var / lib / bluetooth / local-device-address / remote-device-address /

После того, как Generalраздел содержит следующее: [LinkKey] Key=FF00112233445566778899AABBCCDDEE Type=5 PINLength=0

Это может быть установлено напрямую без сопряжения. Если то же самое написано на удаленном устройстве. Устройства сопряжены.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.