Блютуз JDY-30

180 руб.

1 в наличии

Артикул: 72 Категория:

Описание

Подключение и настройка модуля

Удалось найти на нашем Сайте такие обзоры:
mysku.ru/blog/others/9084.html
mysku.ru/blog/aliexpress/36726.html
mysku.ru/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.
Пример моего взаимодействия с устройством

Более полное описание команд изложено в этом документе. Надеюсь, не сильно отвлек от празднований и эта инфа поможет Вам в труде и обороне)… Хотя, на Пасху о труде думается не особо.

Сопряжение с ПК

Что-то не особо большой обзор получился. Добавлю информацию о том, как настроить 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 бод сигнал доставал через две бетонные стены панельного дома на расстоянии , в компе торчал свисток…