Тип устройства bluetooth uart
UART интерфейс наряду со стандартными механизмами типа JTAG и SWD является является одним из основных методов отладки микропрограмм для микроконтроллеров. Обычно используется COM-порт, хотя последнее время все чаще мосты на USB-шину и драйверы виртуального COM-порта на PC, так как USB есть повсеместно, а вот COM-порт встречается все реже и реже.
Еще один способ использования UART, ставший доступным и дешевым относительно недавно — это UART-Bluetooth мост, позволяющий производить обмен с микроконтроллерами по беспроводному интерфейсу BlueTooth. При этом с софтовой стороны на PC все точно так же как и при работе по обычному физическому COM-порту, да и со стороны контроллера не нужны никакие дополнительные модификации. Мало того, Bluetooth-UART — это практически идеальный способ состыковки своего устройства с современным планшетом-кпк-телефоном на Android, WinCE и, скорее всего, iOS. Купить модули можно, к примеру, на DealExtreme, там цена за модуль около 200 рублей с доставкой.
Вообще, имеется информация о модулях HC-04 (на сколько я понимаю, полноценный) и HC-05 (видимо урезанный, только с функционалом UART). Какой модуль продается на DX не разбирался. В настоящий момент мне требуется только функционал UART.
Добавление: как выясняется, зоопарк модулей растет, попался модуль HC-05, видимо, «истинный». Определился не как linvor, а как HC-05. Распиновка оказалась у него несколько другая (светодиод не загорался):
Невысокая цена и подтолкнуло попробовать внедрить беспроводной интерфейс и опробовать его для целей отладки. Для своих целей я обернул модуль в оболочку и вывел основные линии на обычный удобный PBD-разъем с возможностью установки на плату управления LPC134x:
Для конфигурирования модуля используются сделующие команды:
- AT — команда проверки модуля и доступности конфигурирования через AT-команды. В ответ модуль должен вернуть OK.
- AT+BAUDx — установка скорости, где x — код скорости из таблицы:
Значение Скорость (бод) 1 1200 2 2400 3 4800 4 9600 5 19200 6 38400 7 57600 8 115200 9 230400 - AT+NAMEname — изменение имени устройства, где name — новое имя. Имя по умолчанию linvor.
- AT+PINpass — изменение пароля (PIN-кода), где pass — новый пароль. Пароль по умолчанию 1234.
Команды требуется посылать по интерфейсу UART, когда Bluetooth не активен, иначе модуль не воспримет команды и передаст их по воздуху хосту. Скорость по-умолчанию 9600, хотя должен работать Autobaund (автоподстройка скорости), но это не проверял. Время выполнения команды до 1 секунды, пока не придет ответа, лучше ничего посылать нельзя. Что не маловажно, эти настройки энергонезависимы.
Так же есть статьи о программировании непосредственно самих модулей, это очень интересная опция, в отдельных случаях можно вообще построить целую систему на таком модуле, не прибегая к помощи отдельного микроконтроллера.
А вот и сам модуль на хост-компьютере:
Вариант использования
Сброс на компьютер полетной информации:
Ссылки
Bluetooth-модуль bolutek для Arduino с UART-интерфейсом и AT-команды к нему
Дошло за три недели, в конверте с пупырчатыми стенками,
упаковано в пакетик с мягкой прокладкой, чтобы не погнулись штыревые контакты.
Описание
Это блютуз-модуль, установленный на плату с линейником 3.3В, синим светодиодом и выводами интерфейса:
И прозрачная термоусадочная трубка — куда же без неё?!
В комплекте была бумажка, с надписью «SKU:B16-7BC01T11» — не нагуглилось.
Подключение и настройка модуля
Удалось найти на нашем Сайте такие обзоры:
mysku.club/blog/others/9084.html
mysku.club/blog/aliexpress/36726.html
mysku.club/blog/aliexpress/36528.html
в них описаны подобные модули, способы подключения их к Ардуино и примеры написания программ для Андроид. Не вижу смысла повторяться и приводить пример того, как Я буду подключать его и как буду писать прогу для смартфона, тем более, что Андроид у меня старый и таким практически уже не пользуются. Этот модуль просто подключается к Ардуино по последовательному порту — и Вы передаёте по нему данные так, как бы передавали в окно терминала, когда отлаживаете программу, а в смартфоне или компьютере обрабатываете эти данные.
Однако, я не нашел в обзорах, как изменить пароль или имя устройства, чтобы кто попало не коннектился к Вашей ардуньке вместо Вас. Изменить пароль, скорость и какие-то еще настройки — это уже следующий шаг, но я решил, что он мало освящен, хоть и немаловажен!
Подключить к компьютеру модуль можно через USB-to-TTL-адаптер, описанный мною ранее или любым удобным для Вас способом по интерфейсу UART: например, вытащить плату из UNO и пробросить TX и RX к модулю.
Штыревые контакты модуля (слева) соединяем с адаптером интерфейса (справа):
MCU-INT — (не пригодился)
RX — TX
TX — RX
GND — GND
+5V — VCC
CLEAR — (не пригодился)
на этом изображении — упомянутые контакты расположены снизу вверх:
Подключаем адаптер к USB-разъему компьютера,
открываем среду разработки Ардуино (или putty, или терминал), выбираем наш виртуальный COM-порт и запускаем «Монитор порта».
в ответ получаем список доступных команд, которые помогут нам изменить имя адаптера видимое другими Bluetooth-устройствами, код доступа (пароль), скорость работы интерфейса и некоторые другие полезняшки:
Command Description ---------------------------------------------------------------- AT Check if the command terminal work normally AT+RESET Software reboot AT+VERSION Get firmware, bluetooth, HCI and LMP version AT+HELP List all the commands AT+NAME Get/Set local device name AT+PIN Get/Set pin code for pairing AT+BAUD Get/Set baud rate AT+CLEAR Remove the remembered remote address AT+LADDR Get local bluetooth address AT+DEFAULT Restore factory default AT+COD Get/Set local class of device AT+IAC Get/Set inquiry access code AT+ROLE Get/Set master or slave mode AT+STATE Get current state AT+UARTMODE Get/Set uart stop bits and parity AT+ENABLEIND Enable/Disable Indication print AT+LSP List Paired Device List AT+RESETPDL Reset Paired Device List AT+REMOVEPDL Remove one entry from Paired Device List ----------------------------------------------------------------- Note: (M) = The command support master mode only, other commands support both master and slave mode. For more information, please visit http://www.bolutek.cn Copyright@2012 www.bolutek.cn. All rights reserved.
>> AT+VERSION +VERSION=+BOLUTEK Firmware V2.2, Bluetooth V2.1 >> AT+NAMESO-NO-ME +NAME=SO-NO-ME OK >> AT+NAME +NAME=SO-NO-ME >> AT+PIN +PIN=1234 >> AT+PIN0987 +PIN=0987 OK >> AT+BAUD +BAUD=4 >> AT+LADDR +LADDR=00:**:**:**:**:** >> AT+STATE +STATE=3
Чтобы установить пин-код для подключений в значение 0000, достаточно отправить «AT+PIN0000\r\n» — и всё, не нужно никаких дополнительных манипуляций, менять его можно из ардуино «на лету», и не запоминать пароль каждый раз, а прописвать его в скетче.
Более полное описание команд изложено в этом документе. Надеюсь, не сильно отвлек от празднований и эта инфа поможет Вам в труде и обороне)… Хотя, на Пасху о труде думается не особо.
Сопряжение с ПК
Что-то не особо большой обзор получился. Добавлю информацию о том, как настроить USB Bluetooth-dongle на компьютере, чтобы подключиться с него к нашему модулю как к COM-порту.
Подключаем USB-свисток к компьютеру. У меня он выглядит как в этом обзоре. Устанавливаем драйвера, — в трее появляется иконка; кликаем по ней и выбираем «Открыть параметры»:
При этом Ардуино с модулем уже должна работаь и Вы должны помнить пин-код доступа к ней (по умолчанию — 1234).
Переходим на вкладку «COM-порты», если Вы не добавляли их ранее, список будет пуст:
Нажимаем «Добавить. » — откроется окно, выбираем «Исходящий»:
Если Вы ранее там мусолили, то в списке будут устройства, если их нет, нажимаем «Обзор. » и выбираем устройство по имени модуля (имя, как мы помним, устанавливается AT-командой AT+NAME):
Далее пройдёт какое-то время и в списке портов появится новый, нужно запомнить его номер, в моём случае — 13:
Готово! Теперь мы можем из любого приложения соединяться по этому порту — с Ардуино и обмениваться данными. Для примера, я использоВал клиент putty:
Выбираем «Serial», вводим имя порта и баудрейт (9600), затем жмём «Open» и быстро…
Быстро кликаем по этому балон-попапу… Дааа, ну не могу я называть tray balloon pop up иначе, уж извините, это запомнилось мне давно, программировании таких уведомлений, всплывающих из системной области… Если не успели — кликайте по значку в трее — откроется окно для ввода пин-кода доступа к Ардуниевскому модулю и вводим туда наш пин (он устанавливается командой AT+PIN в том модуле):
Если пин-«пароль» введён корректно, открывается окно терминала, а в это время модуль отправляет Ардуино такое информационное сообщение:
«Окно ардуино» у меня эмулируется «Монитором порта» сверху, putty — снизу.
В любом случае, нам, как программистам Ардуино полезно знать, что из модуля мы вычитываем не только то, что в него пишет клиент, но еще и такие информационные сообщения, их нужно фильтровать ну или опознавать и обрабатывать. Чтобы отправить сообщение из ардуино, достаточно написать в модуль:
так как это окно «Монитора порта», сообщения отправляются только после нажатия на кнопку.
Далее напечатаем что-то в окне putty:как и следовало ожидать, после каждого нажатия клавиши в окне putty, в «Мониторе порта» появляются символы. Так же, когда мы будем писать в этот порт данные, на стороне Ардуино они будут считываться.
Далее, я ошибся и ввёл «а» в другой раскладке, ну да ладно, закроем окно putty:
Оно предупреждает — жмём «OK».
При отключении, на стороне Ардуино появляется информация об этом:
Жуть какая-то с этими сообщениями, может, есть AT-команда для их отключения? Да! Есть такая команда. Это как раз Indication print — просто введите на стороне «Монитора порта» код:
(ноль на конце) — и лишние сообщения не будут засорять Вам трафик на Ардуино… Хотя, возможно, кому-то эти сообщения будут полезными.
Тестирование скорости
230400 baud — 185 Kbps, 9600 baud — 8 Kbps, от погрешности, вносимой терминалом решил абстрагироваться.
Измерял расстояние работы: на скорости 4800 бод сигнал доставал через две бетонные стены панельного дома на расстоянии 6м, в компе торчал вышеупомянутый свисток…