Вопрос:
Как организовать автоматическое "прозрачное" соединение с помощью Bluetooth-модулей SiLabs (Bluegiga) WTxx без использования управляющего контроллера?
Ответ:
Для организации "прозрачного" соединения с помощью Bluetooth-модулей WTxx необходимо сконфигурировать модули, используя всего лишь несколько простых команд. Модули WTxx управляются ASCII-командами через интерфейс UART. После завершения конфигурирования модули могут работать автономно, автоматически восстанавливая соединение без участия управляющего устройства. Процесс настройки состоит из двух небольших этапов: сопряжения и установления соединения.
1. Сопряжение Bluetooth-модулей WTxx.
В процессе сопряжения устройства Bluetooth вырабатывают общий ключ соединения (link key), который затем используется ими для аутентификации и установления безопасного соединения. Существует несколько методов сопряжения, в качестве примера рассмотрим один из наиболее часто используемых, который называется Just Works. Этот метод предполагает простой ответ ДА/НЕТ одного из модулей (ожидающая сторона) на запрос сопряжения, полученный от другого модуля (инициатора). Рассмотрим команды, используемые при сопряжении, и соответствующие им ответы модулей.
1.1 На стороне инициатора:
[CPU -> WTxx] PAIR 00:11:22:33:44:55 - послать запрос сопряжения, 00:11:22:33:44:55 - MAC-адрес модуля, которому посылается запрос сопряжения.
[WTxx -> CPU] PAIR 00:11:22:33:44:55 OK - ответ модуля, свидетельствующий об успешном сопряжении устройств.
Другие полезные команды:
SET BT PAIR - выводит на UART модуля список сопряженных устройств,
SET BT PAIR * - очищает список сопряженных устройств.
1.2 На ожидающей стороне (если установлен бит 4 в optional_block_1, см. команду SET CONTROL CONFIG в iWRAP_User_Guide.pdf):
[WTxx -> CPU] SSPAUTH AA:BB:CC:DD:EE:FF? - поступление запроса сопряжения от модуля с MAC-адресом AA:BB:CC:DD:EE:FF
[CPU -> WTxx] SSPAUTH AA:BB:CC:DD:EE:FF OK - команда подтверждения сопряжения с модулем, имеющим MAC-адрес AA:BB:CC:DD:EE:FF
2. Установление автоматически восстанавливаемого соединения.
У Bluetooth-модулей SiLabs WTxx функция, которая автоматически восстанавливает соединение, называется AUTOCALL.
На стороне инициатора:
[CPU -> WTxx] SET CONTROL AUTOCALL 1101 xxxx RFCOMM - включить функцию AUTOCALL, 1101 - идентификатор профиля последовательного порта (SPP), xxxx - интервал времени в миллисекундах, через который инициатор периодически посылает запрос соединения в случае потери связи (например, 5000 означает интервал 5 секунд).
SET CONTROL AUTOCALL - отключить функцию AUTOCALL
После установления соединения модули автоматически переходят в режим данных и передают все данные, которые поступают через UART, на удаленную сторону. Для перехода в режим команд может использоваться любая последовательность трёх одинаковых символов, по умолчанию - "+++". Для настройки команды переключения между режимами используется команда SET CONTROL ESCAPE.
Также интересной особенностью Bluetooth-модулей WTxx является возможность автоматической трансляции на удаленную сторону состояния нескольких входов модуля. Таким образом могут передаваться, например, состояния сигналов DSR, DTR, RTS, CTS, RI, DCD COM-порта или любых других (см. команду SET CONTROL MSC в iWRAP_User_Guide.pdf).
Подробное описание всех команд приведено в документах iWRAPxx_User_Guide.pdf (xx - версия ПО), доступных на сайте производителя bluegiga.com.