Bluetooth модуль HC-05 подключается по шине UART и способен выполнять AT-команды. AT-команда это строка начинающаяся с букв «AT» (от английского at tention - «внимание»). Модуль выполняет поступившую команду и отправляет обратно ответ (результат выполнения команды), который также является строкой. В Bluetooth модулях HC-05 каждая команда (как и ответ) должна заканчиваться символами перевода строки «\r\n».
Подключение:
- Управлять Bluetooth модулем HC-05 можно либо с компьютера, либо через микроконтроллер, например, Arduino . Вывод RX модуля подключается к выводу TX, а вывод TX модуля подключается к выводу RX того устройства с которого он будет управляться.
- Для подключения модуля к компьютеру (без микроконтроллеров) потребуется адаптер USB-UART , или адаптер RS232-UART , или программатор с выводами TX RX, вместо адаптера USB-UART можно использовать плату Arduino , как описано в статье . Для отправки команд в модуль потребуется установить программу терминал. Одним из таких терминалов является свободно распространяемая программа Termite с поддержкой Русского языка.
- Для подключения модуля к Arduino можно воспользоваться аппаратной или программной шиной UART. При использовании аппаратной шины, модуль подключается к выводам TX и RX указанным на плате. При использовании программной шины, модуль подключается к назначаемым выводам TX и RX Arduino .
Настройка:
Модуль Bluetooth HC-05 сможет принимать команды только если правильно настроены следующие параметры последовательного порта:
- Номер порта: Его можно узнать экспериментально, отключите адаптер или Arduino , посмотрите какие порты доступны. Подключите адаптер или Arduino и вновь посмотрите какие порты доступны. Появившийся порт и есть тот самый.
- Скорость передачи данных: В обычном режиме, Bluetooth модуль HC-05 сохраняет последнюю установленную скорость передачи данных, но по умолчанию она равна 38400 бит/сек (редко 9600 бит/сек). Если обе скорости не подойдут, то смотрите примечание в конце статьи.
- Параметры передачи данных: Модуль сохраняет последние установленные параметры передачи данных. Значения параметров по умолчанию: количество бит в пакете - 8, размер стопового бита = 1, без проверки чётности.
- Передаваемый текст: Нужно установить пункт «добавлять символы CR & LF(NL)» это символы перевода строки «\r\n» которые Вы не сможете ставить самостоятельно в конце AT-команд.
Для настройки этих параметров в программе Termite , нажмите на кнопку «Настройки» (Settings). В том же окне можно установить Русский язык.
При использовании Arduino , номер порта указывается во вкладке «Инструменты». Параметры передачи данных используются по умолчанию. Для добавления символов NL & CR воспользуйтесь меню в правом нижнем углу монитора последовательного порта.
Проверка:
После каждого подключения питания или перезагрузки модуля, до того как отправлять команды, нужно кратковременно нажать на кнопку модуля. Если у модуля нет кнопки, то кратковременно подать высокий уровень на вывод K. После чего модуль останется в обычном режиме, но будет воспринимать AT-команды. Помимо обычного режима, модуль может работать в режиме AT-команд. О том как войти в этот режим и чем он отличается от обычного, рассказано ниже, в разделе примечание.
Для проверки связи с Bluetooth модулем отправьте тестовую команду AT (введите текст AT и нажмите Enter). Если связь установлена корректно, то модуль ответит OK . После этого можно отправлять остальные AT-команды.
AT-команды:
Если в программе терминал указано добавлять символы CR & LF или NL & CR то символы «\r\n» в командах ставить не нужно!
Команды могут быть обычными: AT+КОМАНДА\r\n
, запросами: AT+КОМАНДА?\r\n
, или установками: AT+КОМАНДА=ПАРАМЕТР(Ы)\r\n
.
AT-команда: | Ответ: | Назначение: | |
---|---|---|---|
AT | AT \r\n | OK\r\n | Команда Тест:
Используется для проверки связи с модулем. |
RESET | AT+RESET \r\n | OK\r\n | Команда программной перезагрузки модуля:
Модуль ведёт себя так, как после кратковременного отключения питания. |
VERSION | AT+VERSION? \r\n | +VERSION:ВЕРСИЯ
\r\n
OK\r\n |
Запрос версии прошивки модуля:
Модуль возвращает версию в виде строки до 32 байт. Пример ответа: +VERSION:hc01.comV2.1\r\n OK\r\n |
AT+ORGL | AT+ORGL \r\n | OK\r\n | Сброс пользовательских настроек:
Модуль сбрасывает следующие настройки: CLASS=0, IAC=9e8b33, ROLE=0, CMODE=0, UART=38400,0,0, PSWD=1234, NAME=hc01.com. |
ADDR | AT+ADDR? \r\n | +ADDR:АДРЕС
\r\n
OK\r\n |
Запрос адреса модуля:
Модуль возвращает три части своего адреса NAP:UAP:LAP разделённые двоеточием. Каждая часть состоит из шестнадцатиричных цифр. Пример ответа: +ADDR:1234:56:789ABC\r\n OK\r\n |
NAME | AT+NAME? \r\n | +NAME:ИМЯ
\r\n
OK\r\n |
Запрос / установка имени модуля:
Имя модуля представлено строкой до 32 байт. Пример ответа: +NAME:iArduino\r\n OK\r\n Пример установки: AT+NAME=iArduino\r\n Некоторые модули реагируют на команду AT+NAME?\r\n только при нажатой кнопке модуля или наличии высокого уровня на входе K. |
AT+NAME= ИМЯ\r\n | OK\r\n | ||
RNAME | AT+RNAME? АДРЕС\r\n | +RNAME:ИМЯ
\r\n
OK\r\n |
Запрос имени найденного Bluetooth устройства:
Адрес вводится после пробела, а части адреса (NAP,UAP,LAP) разделены запятой. Модуль возвращает имя найденного Bluetooth устройства находящегося в зоне действия, адрес которого был в запросе. Пример запроса: AT+NAME? 1234,56,789ABC\r\n Пример ответа: +RNAME:iArduino\r\n OK\r\n |
ROLE | AT+ROLE? \r\n | +ROLE:РОЛЬ
\r\n
OK\r\n |
Запрос / установка роли модуля:
Роль модуля представлена цифрой: 0 - ведомый, 1 - ведущий, 2 - ведомый в цикле*. Пример ответа: +ROLE:1\r\n Пример установки: AT+ROLE=0\r\n |
AT+ROLE= РОЛЬ\r\n | OK\r\n | ||
CLASS | AT+CLASS? \r\n | +CLASS:ТИП
\r\n
OK\r\n |
Запрос / установка типа устройства:
Тип устройства представляется 32 битным числом, по которому можно определить назначение модуля: Bluetooth клавиатура, Bluetooth мышь, гарнитура... Пример установки: AT+CLASS=0\r\n |
AT+CLASS= ТИП\r\n | OK\r\n | ||
IAC | AT+IAC? \r\n | +IAC:КОД \r\n OK\r\n | Запрос / Установка кода общего доступа GIAC:
Код представлен 32 битным числом и используется для обнаружения Bluetooth устройств. В роли ведущего, по данному коду модуль будет получать доступ к другим Bluetooth устройствам для их поиска (опроса), а в роли ведомого по данному коду будет предоставляться доступ для опроса модуля другими ведущими. Пример ответа: +IAC:9e8b33\r\n OK\r\n Пример установки: AT+IAC=9e8b33\r\n |
AT+IAC= КОД\r\n | OK\r\n
или FAIL\r\n |
||
INQM | AT+INQM? \r\n | +INQM:РЕЖИМ
,КОЛ
,ВРЕМЯ
\r\n
OK\r\n |
Запрос / Установка режима опроса модулей:
Используемые параметры являются настройками для команды поиска (опроса) других Bluetooth устройств. - Режим поиска представлен цифрой: 0-стандартный, 1-поиск по интенсивности сигнала. - Количество представлено цифрой определяющей предельное количество найденных Bluetooth устройств, после которого требуется прекратить поиск. - Время поиска задаёт таймаут после которого поиск прекращается. Реальное время поиска в секундах равно указанному числу умноженному на 1,28. Пример ответа: +INQM:1,1,48\r\n OK\r\n Пример установки: AT+INQM:1,1,48\r\n |
AT+INQM= РЕЖИМ,КОЛ,ВРЕМЯ\r\n | OK\r\n
или FAIL\r\n |
||
PSWD | AT+PSWD? \r\n | +PSWD:КОД
\r\n
OK\r\n |
Запрос / Установка PIN-кода:
Код доступа представлен строкой до 16 байт. Код модуля в роли ведомого устройства является паролем доступа к текущему модулю. Код модуля в роли ведущего устройства является паролем доступа к внешним Bluetooth устройствам. Пример ответа: +PSWD:1234\r\n OK\r\n Пример установки: AT+PSWD=1234arduino\r\n |
AT+PSWD= КОД\r\n | OK\r\n | ||
UART | AT+UART? \r\n | +UART:СКОР
,СТОП
,ПРОВ
\r\n
OK\r\n |
Запрос / установка скорости UART:
Скорость представлена числом бит/сек Стоп бит представлен цифрой: 0 - один, 1 - два Проверка представлена цифрой: 0 - без проверки, 1 - проверка нечётности, 2 - проверка чётности. Пример ответа: +UART:38400,0,0\r\n OK\r\n Пример установки: AT+UART=38400,0,0\r\n |
AT+UART= СКОР,СТОП,ПРОВ\r\n | OK\r\n | ||
CMODE | AT+CMODE? \r\n | +CMOD:РЕЖИМ
\r\n
OK\r\n |
Запрос / установка режима подключения:
Режим представлен цифрой: 0 - модуль в роли ведущего подключается только к тому Bluetooth устройству, адрес которого указан командой AT+BIND. 1 - модуль в роли ведущего подключается к любому ведомому Bluetooth устройству. 2 - модуль в роли ведомого работает в цикле* Пример ответа: +CMOD:0\r\n OK\r\n Пример установки: AT+CMOD=1\r\n |
AT+CMODE= РЕЖИМ\r\n | OK\r\n | ||
BIND | AT+BIND? \r\n | +BIND:АДРЕС
\r\n
OK\r\n |
Запрос / установка фиксированного адреса:
Если модуль находится в роли ведущего (ROLE=1) и установлен режим подключения к фиксированному адресу (CMODE=0), то он будет подключаться только к тому Bluetooth устройству, адрес которого указан данной командой. Части адреса вводятся: при установке - через запятую, а при ответе - через двоеточие. Пример ответа: +BIND:1234:56:789ABC\r\n OK\r\n Пример установки: AT+BIND=0,0,0\r\n |
AT+BIND= АДРЕС\r\n | OK\r\n | ||
POLAR | AT+POLAR? \r\n | +POLAR:ЛОГ
,ЛОГ
\r\n
OK\r\n |
Запрос / установка активного логического уровня для включения светодиодов:
Полярность представлена цифрой 0 или 1 соответствующей активному логическому уровню. Первый параметр указывает логический уровень для включения светодиода подключённого к выводу PIO8 (отображает режим работы), а второй для светодиода подключённого к выводу PIO9 (отображает статус соединения). Пример ответа: +POLAR:1,1\r\n OK\r\n Пример установки: AT+POLAR=1,1\r\n |
AT+POLAR= ЛОГ,ЛОГ\r\n | OK\r\n | ||
PIO | AT+PIO= НОМЕР,УРОВЕНЬ\r\n | OK\r\n | Установка логического уровня PIO:
Позволяет установить логический уровень на выводе PIO. Номер вывода представлен числом от 2 до 11, кроме 8 и 9. Уровень представлен цифрой 0 или 1. Пример установки: AT+PIO=11,0\r\n |
MPIO | AT+MPIO? \r\n | +MPIO:ЧИСЛО
\r\n
OK\r\n |
Запрос / установка логических уровней PIO:
Позволяет узнать или установить логические уровни сразу на всех выводах PIO. Уровни представлены шестнадцатиричным числом, каждый бит которого соответствует уровню вывода PIO. Пример ответа: +MPIO:1F0\r\n OK\r\n Пример установки: AT+MPIO:CFC\r\n |
AT+MPIO= ЧИСЛО\r\n | OK\r\n | ||
IPSCAN | AT+IPSCAN? \r\n | +IPSCAN:А
,Б
,В
,Г
\r\n
OK\r\n |
Запрос / установка параметров IP сканирования:
А - интервал сканирования Б - продолжительность сканирования В - интервал страниц Г - количество страниц Пример ответа: +IPSCAN:1024,512,1024,512\r\n OK\r\n Пример установки: AT+IPSCAN:1024,512,1024,512\r\n |
AT+IPSCAN= А,Б,В,Г\r\n | OK\r\n | ||
SNIFF | AT+SNIFF? \r\n | +SNIFF:А
,Б
,В
,Г
\r\n
OK\r\n |
Запрос / установка параметров энергосберегающего режима:
А - максимальное время Б - минимальное время В - период повторов Г - таймаут Пример ответа: +SNIFF:0,0,0,0\r\n OK\r\n Пример установки: AT+SNIFF=0,0,0,0\r\n |
AT+SNIFF= А,Б,В,Г\r\n | OK\r\n | ||
ENSNIFF | AT+ENSNIFF= АДРЕС\r\n | OK\r\n | Переход в энергосберегающий режим:
Пример команды: AT+ENSNIFF=1234,56,789ABC\r\n |
EXSNIFF | AT+EXSNIFF= АДРЕС\r\n | OK\r\n | Выход из энергосберегающего режима:
Части адреса вводятся через запятую (NAP,UAP,LAP) Пример команды: AT+EXSNIFF=1234,56,789ABC\r\n |
SENM | AT+SENM? \r\n | +SENM:СЕКРЕТ
,ШИФР
\r\n
OK\r\n |
Запрос / установка параметров безопасности:
Режим секретности представлен цифрой: 0 - выключен 1 - незащищённое соединение 2 - защита на сервисном уровне 3 - защита на уровне соединения 4 - неизвестный режим Режим шифрования представлен цифрой: 0 - без шифрования 1 - шифруется только трафик PTP 2 - шифруется весь трафик Пример ответа: +SENM:0,0\r\n OK\r\n Пример установки: AT+SENM:0,0\r\n |
AT+SENM= СЕКРЕТ,ШИФР\r\n | OK\r\n | ||
PMSAD | AT+PMSAD= АДРЕС\r\n | OK\r\n | Удаление устройства из списка пар:
Удаление Bluetooth устройства из списка приведёт к необходимости заново образовывать пару для подключения к нему. Части адреса удаляемого устройства вводится через запятую (NAP,UAP,LAP) Пример команды: AT+PMSAD=1234,56,789ABC\r\n |
RMAAD | AT+RMAAD \r\n | OK\r\n | Удаление всех устройств из списка пар:
Очистка данного списка приведёт к необходимости заново образовывать пары с Bluetooth устройствами для подключения к ним. |
FSAD | AT+FSAD= АДРЕС\r\n | OK\r\n
или FAIL\r\n |
Поиск устройства в списке пар:
Если Bluetooth устройство с указанным адресом имеется в списке, то модуль вернёт OK\r\n иначе FAIL\r\n . Части адреса вводятся через запятую (NAP,UAP,LAP) Пример запроса: AT+FSAD=1234,56,789ABC\r\n |
ADCN | AT+ADCN? \r\n | +ADCN:КОЛИЧЕСТВО
\r\n
OK\r\n |
Запрос количества устройств в списке пар:
При образовании пары ведущий-ведомый, данные о паре автоматически попадают в список пар и для последующих подключений (даже после отключения питания) не требуется повторно устанавливать пару. Пример ответа: +ADCN:10\r\n OK\r\n |
MRAD | AT+MRAD? \r\n | +MRAD:АДРЕС
\r\n
OK\r\n |
Запрос адреса устройства из списка пар:
Модуль вернёт адрес Bluetooth устройства из списка пар с которым выполнялось последнее успешное соединение. Части адреса выводятся через двоеточие (NAP:UAP:LAP) Пример ответа: +MRAD:1234:56:789ABC\r\n OK\r\n |
STATE | AT+STATE? \r\n | +STATE:СТАТУС
\r\n
OK\r\n |
Запрос статуса модуля:
Модуль вернёт свое текущее состояние в виде строки: INITIALIZED - инициализация READY - готов PAIRABLE - образование пары PAIRED - пара образована INQUIRING - запрос CONNECTING - подключение CONNECTED - подключён DISCONNECTED - отсоединён NUKNOW - неизвестное состояние Пример ответа: +STATE:CONNECTED\r\n OK\r\n |
INIT | AT+INIT \r\n | OK\r\n
или FAIL\r\n |
Инициализация профиля SPP:
Профиль SPP эмулирует последовательный порт. |
INQ | AT+INQ \r\n | +INQ:АДРЕС,ТИП,СИГНАЛ\r\n
+INQ:АДРЕС,ТИП,СИГНАЛ\r\n ... +INQ:АДРЕС,ТИП,СИГНАЛ\r\n |
Поиск (опрос) Bluetooth устройств:
Модуль ищет Bluetooth устройства в радиусе действия и выводит каждый найденный модуль на новой строке. Режим поиска (опроса) устанавливается командой AT+INQM, код опроса устанавливается командой AT+IAC, тип искомых устройств указывается командой AT+CLASS. Поиск завершается по достижении предельного количества найденных Bluetooth устройств, или по достижении таймаута, или командой AT+INQC. Пример ответа: +INQ:1234:56:789ABС,240404,7FFF |
INQC | AT+INQC \r\n | OK\r\n | Завершить поиск (опрос) Bluetooth устройств:
Досрочно завершает поиск Bluetooth устройств инициированный командой AT+INQ |
PAIR | AT+PAIR= АДРЕС,ТАЙМАУТ\r\n | OK\r\n
или FAIL\r\n |
Создать пару с Bluetooth устройством:
Создание пары или сопряжение Bluetooth устройств инициируется ведущим устройством. Таймаут указывается десятичным числом в секундах. Если пара создана, то информация о ней автоматически запишется в список пар, модуль ответит OK\r\n после чего можно подключить Bluetooth устройство командой AT+LINK. Если пара не создана (например не подошёл PIN-код или истек таймаут), то модуль ответит FAIL\r\n . Пример команды: AT+PAIR=1234,56,789ABC,10\r\n |
LINK | AT+LINK= АДРЕС\r\n | OK\r\n
или FAIL\r\n |
Подключиться к Bluetooth устройству:
После выполнения данной команды можно общаться с подключённым Bluetooth устройством. Команда доступна модулю в роли ведущего. Пример команды: AT+LINK=1234,56,789ABC\r\n |
DISC | AT+DISC \r\n | +DISC:РЕЗУЛЬТАТ
\r\n
OK\r\n |
Отключиться от Bluetooth устройства:
Команда указывает модулю отключиться от Bluetooth устройства с которым установлено соединение. После отключения от Bluetooth устройства информация о нём сохраняется в списке пар. Если потребуется вновь подключиться к этому устройству, то создание пары будет необязательно (если Bluetooth устройство намеренно не удалить из списка пар). После выполнения команды модуль ответит результатом её выполнения: SUCCESS - успех LINK_LOSS - соединение потеряно NO_SLC - отсутствует SLC TIMEOUT - истекло время ожидания ERROR - ошибка Пример ответа: +DISC:SUCCESS\r\n OK\r\n |
* Ведомый в цикле
- это ведомая роль модуля в которой он отправляет обратно всё что получает от ведущего.
** На некоторые команды модуль реагирует только при нажатой кнопке модуля или наличии высокого уровня на выводе K.
Описание ошибок выдаваемых модулем:
Если отправить команду, которую модуль не знает, не может выполнить, или у команды неправильные аргументы, то модуль вернёт строку «ERROR:(НОМЕР )», где по указанному шестнадцатиричному номеру можно определить, на что «ругается» модуль.
№ ошибки | Описание ошибки |
---|---|
0 | Неправильная AT команда (нет такой команды) |
1 | Результат по умолчанию |
2 | Ошибка сохранения пароля |
3 | Слишком длинное имя устройства (более 32 байт) |
4 | Имя устройства не указано |
5 | Часть адреса NAP слишком длинная (более 4 разрядов в шестнадцатиричной системе) |
6 | Часть адреса UAP слишком длинная (более 2 разрядов в шестнадцатиричной системе) |
7 | Часть адреса LAP слишком длинная (более 6 разрядов в шестнадцатиричной системе) |
8 | Не указана маска порта PIO |
9 | Не указан номер вывода PIO |
A | Не указан тип (класс) устройства |
B | Слишком длинный тип (класс) устройства |
C | Не указан общий код доступа IAC (Inquire Access Code) |
D | Слишком длинный общий код доступа IAC (Inquire Access Code) |
E | Недопустимый общий код доступа IAC (Inquire Access Code) |
F | Не указан пароль (или пароль пуст) |
10 | Слишком длинный пароль (более 16 байт) |
11 | Недопустимая роль модуля |
12 | Недопустимая скорость передачи данных |
13 | Недопустимый размер стоп-бита |
14 | Недопустимая настройка бита четности |
15 | Устройство отсутствует в списке пар (списке сопряжённых Bluetooth устройств) |
16 | Профиль последовательного порта (SPP, Serial Port Profile) не инициализирован |
17 | Повторная инициализация профиля SPP (SPP, Serial Port Profile) |
18 | Недопустимый режим опроса Bluetooth устройств |
19 | Слишком большое время опроса |
1A | Не указан адрес Bluetooth устройства |
1B | Недопустимый режим безопасности (секретности) |
1C | Недопустимый режим шифрования |
Примечание:
Если нажать на кнопку или подать высокий уровень на вход K непосредственно в момент включения модуля (подачи питания), то модуль перейдёт в режим AT-команд. В этом режиме модуль не соединится с другими модулями, но у этого режима фиксированная скорость = 38400 бит/сек. Если при настройке, в обычном режиме работы модуля, Вы не смогли определить скорость модуля, то можно войти в данный режим и установить новую скорость. Вновь установленная скорость вступит в силу только в обычном режиме, для этого потребуется перезагрузить модуль не удерживая кнопку и не подавая высокий уровень на вход K в момент включения. Помните, что в обычном режиме, не раньше чем через пол секунды после подачи питания (или перезагрузки) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать AT-команды.
Если Вы хотите иметь возможность «нажимать» на кнопку программно, но у Вашего модуля нет вывода K, воспользуйтесь командой AT+PIO=11,УРОВЕНЬ \r\n, где уровень представляется цифрой 1 или 0 соответствующий устанавливаемому логическому уровню. (AT+PIO=11,0 \r\n - кнопка отпущена, AT+PIO=11,1 \r\n - кнопка нажата).
У некоторых модулей есть вывод En который управляет питанием и подтянут к Vcc. Если на вывод En подать низкий логический уровень, то отключится питание чипов. Данный вывод можно использовать для программного входа в режим AT-команд. Если сразу после снятия низкого уровня с вывода En подать команду AT+PIO=11,1\r\n это будет эквивалентно включению модуля с нажатой кнопкой.
Создание ведомого ожидающего подключения ведущего:
- AT+DISC
- AT+ORGL
- AT+RMAAD \r\n - Очистить список пар (авторизованных устройств) чтоб к модулю не подключился тот кого отсоединили.
- AT+NAME= iArduino\r\n - Установить имя модуля (не более 32 символов).
- AT+PSWD= 1234\r\n - Установить PIN-код для подключения к модулю (не более 16 символов).
- AT+ROLE=0 \r\n - Установить модулю роль ведомого (если она не установилась при сбросе пользовательских настроек).
- AT+RESET \r\n - Перезагрузить модуль.
Не раньше чем через пол секунды после перезагрузки (командой AT+RESET \r\n ) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать новые AT-команды.
Если модуль с ведущей ролью подключается к ведомым модулям по их адресу, а не через их имя, то адрес данного (ведомого) модуля можно узнать выполнив команду AT+ADDR?\r\n .
Создание ведущего с подключением к ведомому:
- AT+DISC \r\n - Разорвать соединение (на случай если модуль соединён).
- AT+ORGL \r\n - Сбросить пользовательские настройки в значения по умолчанию.
- AT+RMAAD \r\n - Очистить список пар (авторизованных устройств) чтоб к модуль не пытался подключился к тому от кого отсоединили.
- AT+BIND= АДРЕС\r\n - Установить фиксированный адрес для подключения (указываем адрес ведомого Bluetooth устройства)
- AT+CMODE=0 \r\n - Указываем модулю подключаться только к фиксированному адресу
- AT+ROLE=1 \r\n - Установить модулю роль ведущего устройства
- AT+PSWD= 1234\r\n - Запомнить PIN-код ведомого Bluetooth устройства
- AT+PAIR= АДРЕС,10\r\n - Образовать пару с ведомым Bluetooth устройством, указав его адрес и таймаут 10 сек .
Ищете простой способ беспроводного дистанционного управления вашим устройством с помощью bluetooth? Воспользуйтесь bluetooth-модулем HC-06.
Со стороны управляемого устройства, такого как Arduino , этот модуль выглядит как обычный последовательный интерфейс. Поэтому вы можете отладить всё общение с устройством на компьютере, а потом просто подключить этот bluetooth-модуль, и всё заработает как надо.
С HC-06 вы можете управлять роботом прямо со своего смартфона. Поставив на телефон или планшет одну из многочисленных программ для управления через bluetooth, вы можете превратите его в настоящий продвинутый джойстик, и ваш робот сможет послушно поворачивать вслед за поворотом смартфона. Точно так же можно связаться со своим устройством с ноутбука, или с любого другого прибора, который может подключаться к bluetooth-устройствам.
Сфера применения этого модуля не исчерпывается управлением. Его можно использовать и для пересылки показаний разнообразных сенсоров .
Рабочее напряжение этого bluetooth-модуля - 3,3 В, но его входы толерантны к 5 В, поэтому он совместим со всеми платами Arduino .
Подключение
Контакты модуля можно соединить с макетной платой или Arduino проводами «мама-папа» . А с Troyka Shield через провода «мама-мама» .
Подключение стандартное для устройств, подключающихся по последовательному интерфейсу:
- Контакт RX модуля подключается к контакту TX целевого устройства
- Контакт TX модуля подключается к контакту RX целевого устройства
Настройки
Все настройки по умолчанию могут быть изменены с помощью АТ-команд.
Bluetooth-модуль HC-06 может выступать только в slave-режиме. Это означает, что он не может самостоятельно подключаться к другим Bluetooth-устройствам.
Комплектация
В комплект не входят провода. Для подключения к управляющей электронике используйте макетные провода с разъёмами «мама» на стороне модуля или
Мы заняты разработкой приложения под Android для управления нагрузками на Arduino. Но, как вы все понимаете, просто там одно к другому не подключишь - нужен канал связи, а какой у нас самый доступный и дешманский канал? Конечно же bluetooth! О нём дальше и пойдёт речь.
Сегодня решаем производственные вопросы - подключаем Bluetooth модуль HC-06. Его главное отличие от HC-05 в том, что он урезан и предоставляет только необходимый минимум возможностей.
В целом, HC-06 можно рассматривать как беспроводной удлинитель UART. Поскольку мы подключаясь к нему с ПК через Bluetooth видим его как COM порт и подключаясь к контактам мы имеем чистый UART. Практически всё, что идёт с одной стороны - выходит с другой. За исключением AT команд со стороны контактов.
AT команды - это наследие старых модемов ещё из 1977 года. Представляют они из себя короткие строковые команды, например «AT», «AT-NAME», «AT-PIN». Обычно ввод команды завершается клавишей Enter. Но в этот раз всё немного иначе, и команда целиком должна быть получена, примерно, в течение одной секунды. По этой причине, для настройки нам не подойдут программы позволяющие писать напрямую с клавиатуры в порт (можно попробовать из буфера обмена, но есть шанс на облом). Нам нужна возможность послать по сигналу строку целиком.
Вооружившись COM Port Toolkit
, мы выставляем скорость в 9600 и соответствующий номер порта. Далее готовим первую строку «AT». Отправляем и получаем на неё ответ «OK». Это уже хороший знак. Мы не перепутали RX и TX и не ошиблись со скоростью. Дальше вам наверняка захочется дать своё название модулю. Пишем: «AT-NAMEhome» и получаем в ответ что-то типа «OKhome». Меняем код доступа так: «AT-PIN010203», и получаем: «OKsetpin»
Ну что же. На этом начальная настройка закончена.
Не пропустите обновления! Подписывайтесь на нашу группу
1 Описание модуля bluetooth HC-06
Существует большое количество реализаций модулей Bluetooth. Каждая имеет свои особенности, но в общем и целом они все очень похожи. Рассмотрим представителя bluetooth модуля семейства HC-06 , который можно приобрести по отличной цене на этом сайте .
Данный модуль работает на частоте от 2,40 ГГц до 2,48 ГГц и поддерживает спецификацию bluetooth версии 2.1+EDR: пониженное потребление энергии, повышенный уровень защиты данных и лёгкое соединение Bluetooth-устройств. Устойчивый приём с модулем гарантирован в пределах 10 метров.
Назначение выводов bluetooth-модуля такое:
Последние два вывода могут быть не задействованы; часто можно встретить модули вообще без этих выводов.
2 Схема подключения bluetooth-модуля к Arduino
Подключим bluetooth модуль к Arduino по приведённой схеме. Обратите внимание, что передатчик (Tx) Ардуино подключается к приёмнику (Rx) модуля, и наоборот.
На выводе Status появляется высокий уровень, когда модуль сопряжён с другим bluetooth устройством, и низкий - когда не сопряжён. Можно считывать его значение, подключив к пину Arduino и назначив ему режим работы pinMode(pinStatus, INPUT) и таким образом узнавать состояние модуля. Но не на всех модулях индикатор статуса работает корректно, поэтому мы не будем его использовать в данном примере.
В результате должно получиться примерно как на фотографии.
3 Скетч для Arduino для работы по bluetooth
Напишем такой скетч и загрузим в память Arduino:
Const int ledPin = 13; // вывод встроенного светодиода char incomingbyte; // переменная для данных Bluetooth void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { // если порт доступен incomingbyte = Serial.read(); // считываем с порта данные switch(incomingbyte) { case "1": // если приходит "1" digitalWrite(ledPin, HIGH); // break; case "0": // если приходит "0" digitalWrite(ledPin, LOW); // break; } } }
Включаем собранную схему с Arduino и подключённым к нему bluetooth-модулем. Правильно подключённый модуль сразу входит в режим ожидания подключения, о чём будет свидетельствовать ритмично мигающий светодиод статуса.
4 Сопряжение с bluetooth-устройством
Теперь нужно добавить bluetooth-устройство в список доверенных устройств. Включаем Bluetooth на компьютере, идём в Параметры Устройства Bluetooth .
Если в области уведомлений при включении bluetooth на компьютере появилась иконка bluetooth, то можно кликнуть по ней правой кнопкой мыши и выбрать пункт :
Убеждаемся, что наш bluetooth-модуль виден компьютеру. Выбираем его из списка и нажимаем кнопку Связать . В диалоговое окно вводим пароль по умолчанию 1234 . При успешном добавлении устройство появится в списке с пометкой Сопряжено .
Пароль по умолчанию для конкретного модуля может отличаться от "1234". Эту информацию должен предоставить изготовитель (продавец) модуля.
Если вы хотите подключиться к вашему модулю bluetooth со смартфона, то порядок действий аналогичный: включить bluetooth на смартфоне, обнаружить модуль, подключённый к Arduino, выполнить сопряжение с ним.
5 Подключаемся к bluetooth-модулю по bluetooth с компьютера
Для подключения к bluetooth модулю можно использовать различные программы, которые могут подключаться к COM-порту. Например, такие как HyperTerminal, PuTTY, Tera Term, Termite и другие. Они все бесплатные и свободно распространяются в интернете.
Удобство программы TeraTerm в том, что она автоматически выводит список COM-портов, которые назначены модулю bluetooth вашего компьютера. Запускаем программу, выбираем подключение Serial, из списка выбираем соответствующий bluetooth COM-порт, нажимаем OK.
Программа PuTTY при запуске также спрашивает номер порта (COM4, у вас будет свой), скорость подключения (9600), тип соединения (Serial). Затем нажимаем кнопку Соединиться .
В случае ошибки при подключении программа выведет соответствующее оповещение. Если соединение вашего компьютера с bluetooth-модулем произошло успешно, то вы увидите перед собой поле терминала. Введите с клавиатуры в это поле число 1 - и светодиод на 13 выводе Arduino загорится, введите 0 - погаснет.
6 Подключение со смартфона с помощью Bluetooth Terminal
Аналогично можно подключиться к модулю bluetooth со смартфона. Скачайте приложение для работы с bluetooth по терминалу, например Bluetooth Terminal . Подключайтесь к модулю и вводите команды 0 или 1.
Таким образом, мы научились подключаться по bluetooth к Arduino и передавать ему данные.
Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. В этой статье мы узнаем, как с помощью популярных и не очень недорогих bluetooth модулей HC05 и HC06 организовать беспроводную работу своего ардуино проекта. Вы не поверите, но подключение и программирование Bluetooth модулей совсем не сложное занятие и доступно даже начинающим. Давайте убедимся в этом.
Нередко в проектах возникает необходимость дистанционного управления или передачи данных с телефона или другого устройства. Одним из самых популярных и удобных способов является обмен данных через Bluetooth. Для связи платы Ардуино и компьютера используется интерфейс UART (Serial). Так как любая плата Ардуино имеет хотя бы 1 последовательный порт UART, для подключения Bluetooth модуля не требуются специализированные библиотеки и схемы.
Самыми популярными модулями являются устройства на основе чипа BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть и сервером соединения, и клиентом, они обладают широким набором АТ команд.
Для подключения к ПК потребуются модуль Bluetooth, плата Ардуино, соединительные провода и компьютер. Скетч для управления платой Ардуино через смартфон и компьютер будет одинаковым, так как в обоих случаях данные в микроконтроллер буду поступать по протоколу UART. Схема подключения Bluetooth-модуля к плате представлена на рисунке. Пин RX на ардуино подключается к TDX, TX – к RDX, GND – к GND, 5V – к VCC.
При загрузке скетча нужно отключить Bluetooth-модуль, иначе будет появляться ошибка доступа к Ардуино. Также нужно установить на смартфон или планшет, поддерживающий ОС Android, приложение для отправки данных на модуль. После установки приложения нужно загрузить скетч и подключить модуль к плате Ардуино. Пример кода мигания светодиода:
Int val; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход } void loop() { if (Serial.available()) // проверка поданных команд { val = Serial.read(); if (val == "1") {digitalWrite(13, HIGH);} // при 1 включается светодиод if (val == "0") {digitalWrite(13, LOW);} // при 0 выключается светодиод } }
Теперь нужно настроить соединение телефона и модуля. Для установки соединения нужно зайти в настройки телефона и включить Bluetooth. Как только устройство будет найдено, нужно ввести пароль – обычно это «1234» или «0000». После этого нужно зайти в приложение, нажать на кнопку «подключить Bluetooth» и выбрать нужное устройство. При успешном сопряжении на модуле светодиод начнет мигать медленнее, примерно 1 раз в 2 секунды.
В скетче светодиод включается и выключается при получении цифр «1» и «0». Кроме цифр также можно использовать буквы латинского алфавита с учетом регистра.
Аналогичным образом можно подключаться к модулю при помощи компьютера. Для этого существуют различные программы, которые подключатся к COM-порту. При запуске программы запрашивают номер порта, скорость и тип подключения. При успешном подключении на экране появится поле терминала, в которое нужно ввести с клавиатуры цифры/буквы, включающие светодиод.
Описание модуля Bluetooth HC 06
Все существующие типы модулей Bluetooth имеют свои особенности, но по функциям и действию они похожи. Одним из видов модулей является Bluetooth HC 06. Со стороны Ардуино модуль выглядит как обычный последовательный интерфейс, поэтому можно сразу наладить взаимодействие с устройством на компьютере.
Основные характеристики модуля:
- Питание 3,3В – 6 В;
- Максимальное входное напряжение 5 В;
- Максимальный ток 45 мА;
- Скорость передачи данных 1200–1382400 бод;
- Рабочие частоты 2,40 ГГц – 2,48ГГц;
- Поддержка спецификации bluetooth версии 2.1;
- Малое потребление энергии;
- Высокий уровень защиты данных;
- Дальность связи 30 м;
- Для подключения к смартфону используются следующие данные – пароль «1234», скорость передачи данных 9600, имя модуля HС-06.
Модуль имеет следующие контакты:
- VCC , GND – плюс и минус питания;
- RX и TX – приемник и передатчик;
- MCU-INT – выводит статус;
- Clear (Reset) – сбрасывание и перезагрузка модуля. Последние два вывода обычно не задействованы в работе, поэтому сейчас производятся модули без этих контактов.
Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи данных» можно изменить при помощи АТ-команд.
В комплектацию модуля не входят соединительные провода.
Сравнение модулей Bluetooth HC 05 и HC 06
Модули HC 05 и HC 06 являются наиболее используемыми, их чаще остальных можно найти в продаже. Принцип действия этих модулей схож, оба модуля основаны на одинаковом чипе, но есть и важные отличия. В первую очередь, модуль HC 05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).
Оба модуля представляют собой две спаянные платы. Одна из них – заводская с микросхемой, другая нужна для самодельных устройств, она оснащена ножками GPIO со стандартным шагом 2,54 мм и стабилизатором напряжения.
Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций.
Распиновка модуля HC-05:
- EN – управление питанием;
- Питание VCC;
- RX, TX;
- STATE – индикация;
- KEY – активирует режим управления при помощи АТ-команд. При KEY=0 – передача данных, при KEY=1 – АТ-команды.
Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.
Основные характеристики HC-05:
- Рабочие частоты 2,4 – 2,48 ГГц;
- Мощность передачи 0,25 – 2,5мВт;
- Дальность 10 м;
- Максимальная скорость обмена данными 115200 бод;
- Питание 3,3В;
- Ток 30-40 мА;
- Рабочие температуры от -25С до 75С.
Подключение обоих модулей к плате Ардуино одинаково.
Вариант подключение модуля с использованием делителя.Представлен вариант для Arduino Nano, но он подойдет и к плате Uno.
Заключение
В этой статье мы рассмотрели варианты подключения и работы с одними из самых распространенных Ардуино модулей Bluetooth HC05, HC06 . Никаких особенных сложностей с этими модулями у вас быть не должно – просто подключайте его к пинам с аппаратным или программным UART, после чего используйте традиционные библиотеки (Serial для модуля, подключенного к 0, 1 пинам, SoftwareSerial в случае присоединения к другим).
Подключение Bluetooth к вашему Arduino-проекту может существенно увеличить ваши возможности по взаимодействию с другими устройствами. Вы сможете контролировать состояния датчиков и изменять параметры системы без перезагрузки контроллера. И. конечно же, вы сможете без проблем создать роботы и машинки на ардуино, управляемые через bluetooth со смартфона. Будем надеяться, что вы сможете сделать свой первый проект после прочтения этой статьи.