Всех с Первомаем и Пасхой!
Христос воскрес!
А вчера прислали этот Bluetooth-модуль,
хочу написать о нём пару строк того, чего не нашёл в Интернет.
Дошло за три недели, в конверте с пупырчатыми стенками,
упаковано в пакетик с мягкой прокладкой, чтобы не погнулись штыревые контакты.
Описание
Это блютуз-модуль, установленный на плату с линейником 3.3В, синим светодиодом и выводами интерфейса:
И прозрачная термоусадочная трубка — куда же без неё?!
В комплекте была бумажка, с надписью «SKU:B16-7BC01T11» — не нагуглилось.
Подключение и настройка модуля
Удалось найти на нашем Сайте такие обзоры:
mySKU.me/blog/others/9084.html
mySKU.me/blog/aliexpress/36726.html
mySKU.me/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-порт и запускаем «Монитор порта».
Скорость по умолчанию 9600 бод, разделители строк —
\r\n.
Вводим первую команду:
AT+HELP
в ответ получаем список доступных команд, которые помогут нам изменить имя адаптера видимое другими 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 — просто введите на стороне «Монитора порта» код:
AT+ENABLEIND0
(ноль на конце) — и лишние сообщения не будут засорять Вам трафик на Ардуино… Хотя, возможно, кому-то эти сообщения будут полезными.
Тестирование скорости
С помощью такого PHP-скрипта произвёл пару тестов скорости (под Винду):
<?php
$port = 6; // Порт для отправки.
$txt = ''; // Буфер для отправки
for ($i = 0; $i < 999; $i++) // заполняем
$txt .= uniqid(); // случайными значениями.
// Настраиваем порт.
echo `mode COM$port: BAUD=9600 PARITY=n DATA=8 STOP=1 xon=off octs=off rts=on`;
$fp = fopen('COM'.$port, 'r+'); // Открываем порт.
if (!$fp) // Если произошла ошибка
exit('Port not accessible'); // сообщаем и выходим.
$tm = microtime(true); // Время начала теста.
$size = fwrite($fp, $txt); // Отправляем буфер и сохраняем количество отправленных Байт.
$tm2 = microtime(true); // Время окончания теста.
fclose($fp); // Закрываем порт.
// Вычисляем, умножая на 8 (переводим в биты) и деля на 1000
echo round($size * 0.008 / ($tm2 - $tm), 2)" Kbps\n"; // (переводим в Кило) и выводим скорость.
230400 baud — 185 Kbps, 9600 baud — 8 Kbps, от погрешности, вносимой терминалом решил абстрагироваться.
Измерял расстояние работы: на скорости 4800 бод сигнал доставал через две бетонные стены панельного дома на расстоянии
6м, в компе торчал
вышеупомянутый свисток…
И Вас с праздниками!
Задам вопрос, который может показаться странным:
куда собираетесь применить?
Вопрос об области применения не задаю, по понятным причинам)
Может Ваша идея применения заразит(в хорошем смысле) других
Если стоимость wifi-модулей и Bluetooth практически равная, видимо есть причина
по который Вы отдали предпочтение Bluetooth.
Я прочитав вот эту статью:
загорелся wifi-выключателем и сделал его под свои нужды, благодаря подсказке toxatmn.
Очевидно, что и у героя обзора есть применение, которое будет небезынтересно другим.
За обзор спасибо!
вот мой пример использования
Сначала, думаю, на смартфон выводить каденс — mySKU.me/blog/aliexpress/39653.html#comment1369600
может поможет в поиске.
ЗЫ еще облегчит поиск, если снять наклейку с надписью «A5BC6 4051» с чипа.
play.google.com/store/apps/details?id=dev.merahkemarun.btcontrollamp
В той проге есть выпадающий список, выбрал устройство, нажал «Connect», ввёл пароль, — написало, что соединение установлено. При нажатии выключателей в проге, в окне «Монитора порта» появлялись какие-то символы. Думаю, ничего сложного не будет: , например, если передаются команды строками, длиной не более 50 символов, а cmd — индекс, который содержится в команде и предварительно вычленяется из нее.
Нет, и пока не планирую. Может, это Вам поможет:
elasticsheep.com/2011/05/serial-bluetooth-module-masterslave-connection/
we.easyelectronics.ru/part/rabota-s-bluetooth-modulem-hc05.html
или Вы уже это видели и делали, но что-то упустили %)
И хорош уже дизлайкать пост iLink выше: Первомайя на Пасху пришлось!