Bluetooth-модуль bolutek для Arduino с UART-интерфейсом и AT-команды к нему

  • Цена: $2.28-2.30

Всех с Первомаем и Пасхой!
Христос воскрес!

А вчера прислали этот 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 бод сигнал доставал через две бетонные стены панельного дома на расстоянии , в компе торчал вышеупомянутый свисток…
Планирую купить +20 Добавить в избранное +20 +31
+
avatar
  • Kartus
  • 01 мая 2016, 12:38
+7
Христос воскрес!
Если бы не воскрес, то волчком бы крутился от того, как его РПЦ вспоминает)))
+
avatar
0
Во истину воскресе!
И Вас с праздниками!
Задам вопрос, который может показаться странным:
куда собираетесь применить?
Вопрос об области применения не задаю, по понятным причинам)
Может Ваша идея применения заразит(в хорошем смысле) других
Если стоимость wifi-модулей и Bluetooth практически равная, видимо есть причина
по который Вы отдали предпочтение Bluetooth.
Я прочитав вот эту статью:
загорелся wifi-выключателем и сделал его под свои нужды, благодаря подсказке toxatmn.
Очевидно, что и у героя обзора есть применение, которое будет небезынтересно другим.

За обзор спасибо!
+
avatar
  • yurok
  • 01 мая 2016, 13:21
0
mySKU.me/blog/aliexpress/37297.html
вот мой пример использования
+
avatar
  • Nkk
  • 01 мая 2016, 16:22
0
Да для всего, для чего провода от компа тянуть или подключать экран не удобно: вольтметр, омметр, амперметр (так и не нашёл нормальной и понятной схемы) а также дебаг-информация из мест, в которых иметь компьютер не удобно.
Сначала, думаю, на смартфон выводить каденс — mySKU.me/blog/aliexpress/39653.html#comment1369600
+
avatar
  • Fog
  • 01 мая 2016, 13:36
0
Народ подскажите как найти вот такой Bluetooth модуль?
+
avatar
0
Fog, посмотрите вот тут или тут
может поможет в поиске.

ЗЫ еще облегчит поиск, если снять наклейку с надписью «A5BC6 4051» с чипа.
+
avatar
  • sir0ta
  • 01 мая 2016, 15:44
0
А пробовал slave-master из двух модулей? У меня что-то не вышло. Связь вроде бы устанавлиается, но инфа не гуляет.
+
avatar
  • Nkk
  • 01 мая 2016, 16:35
0
Сам не пробовал, но прогу какую-то на планшет поставил, она должна была какими-то светодиодами управлять:
play.google.com/store/apps/details?id=dev.merahkemarun.btcontrollamp
В той проге есть выпадающий список, выбрал устройство, нажал «Connect», ввёл пароль, — написало, что соединение установлено. При нажатии выключателей в проге, в окне «Монитора порта» появлялись какие-то символы. Думаю, ничего сложного не будет:
char chFullCommand[50];
byte btReaded, cmd;

void loop() {
  if (Serial.available()) {
    btReaded = Serial.readBytesUntil('\n', chFullCommand, 50);
    if (btReaded > 0) {
      // *** Пред-обработка команды
      switch (cmd) {
      case 1:
        // ***
      break;
      case 2:
        // ***
      break;
      }
    }
  }
//...
, например, если передаются команды строками, длиной не более 50 символов, а cmd — индекс, который содержится в команде и предварительно вычленяется из нее.
+
avatar
  • sir0ta
  • 01 мая 2016, 18:05
0
Нет. Не так. Мне надо что бы один модуль был сервером, т.е. точкой доступа как по умолчанию, а второй модуль был клиентом, т.е. он подключался по синезубу с первому модулю.
+
avatar
  • Nkk
  • 01 мая 2016, 20:45
0
А-а, понял, как всегда, медленно…
Нет, и пока не планирую. Может, это Вам поможет:
elasticsheep.com/2011/05/serial-bluetooth-module-masterslave-connection/
we.easyelectronics.ru/part/rabota-s-bluetooth-modulem-hc05.html
или Вы уже это видели и делали, но что-то упустили %)
+
avatar
  • iLink
  • 01 мая 2016, 18:02
-2
Воистину воскрес!
+
avatar
  • Nkk
  • 04 мая 2016, 14:55
0
Дополнил обзор еще на 200%! Хотелось бы услышать мнение о таком тестировании сокрости…
И хорош уже дизлайкать пост iLink выше: Первомайя на Пасху пришлось!
+
avatar
  • Nkk
  • 21 мая 2016, 16:23
0
AT+BAUD1   1200
AT+BAUD2   2400
AT+BAUD3   4800
AT+BAUD4   9600
AT+BAUD5   19200
AT+BAUD6   38400
AT+BAUD7   57600
AT+BAUD8   115200
AT+BAUD9   230400

AT+BAUDA   460800
AT+BAUDB   921600
AT+BAUDC   1382400

default 4 - 9600 
+
avatar
0
Всем доброго времени суток, подскажите знатоки а какими ат командами можно управлять пинами на spp модуле, перерыл инет, но не нашел команд.