Подготовка к настройке AT-командами

В одном из наших уроков мы знакомились с Bluetooth модулями HC-05 и HC-06, которые широко распространены в среде DIY энтузиастов. Если вы еще не знакомы с bluetooth, то для начала следует почитать именно этот урок: Arduino: bluetooth.

В этой же статье мы поговорим о тонкой настройке Bluetooth-модулей: смены имени устройства, скорости передачи данных, пароля и много другого.

Режим AT-команд

Настройка bluetooth модуля осуществляется в режиме AT-команд. В этом режиме модуль принимает данные через UART интерфейс (RX,TX) и интерпретирует их как команды настройки. Чтобы перевести HC-05 и HC-06 в режим AT-команд необходимо задействовать контакт KEY, который в зависимости от типа печатной платы модуля может быть, а может и не быть.

Есть вариант платы, на которой нет контакта KEY, но есть кнопка. Эта кнопка выполняет ту же функцию. А есть вариант, когда нет ни кнопки ни выведенного контакта (тот же HC-06). В таком случае необходимо будет припаять дополнительный провод к контакту, отмеченному на фото ниже.

Режим AT команд Bluetooth HC-05

Подключение к компьютеру

Для настройки модуля нам необходимо будет подключить его к компьютеру. Сделать этом можно тремя способами.

Способ №1. С помощью отдельного USB-UART моста, например такого: USB-UART на основе CP2102.

Bluetooth HC-05 Gnd Vcc RX TX
USB-UART CP2102/CP2104 Gnd 5V TX RX

Микросхема CP2102 или CP2104 имеют напряжение сигнальных линий 3,3 Вольта, а значит их можно смело подключать напрямую к bluetooth модулю не боясь его повредить.

Способ №2. С помощью платы Arduino, подключенной в режиме USB-UART моста.

На большинстве плат из линейки Ардуино имеется встроенный USB-UART мост, который можно использовать в обход самой Ардуино. Для этого необходимо замкнуть проводом контакты RST и Gnd, а затем подключить bluetooth по следующей схеме.

Настройка bluetooth hc-05 при помощи Arduino

Встроенный USB-UART Arduino имеет напряжение сигнальных линий 5 Вольт, а следовательно нам придется преобразовать уровень напряжения для RX линии bluetooth модуля. Это нужно сделать только для RX; подробности согласования уровней для HC-05 и HC-06 можно найти в нашем уроке.

Обратите внимание, что на этой схеме контакт Arduino RX подключается к контакту RX bluetooth-модуля. Хотя в таких случаях всегда делают крест-на-крест — это не ошибка. Дело в том, что мы используем не сам контроллер Atmega328, а именно микросхему USB-UART моста, которая с ним связана. Эта микросхема уже подключена крест-на-крест к микроконтроллеру. То есть, по факту, мы имеет такую цепочку соединений: USB-UART TX — Arduino RX — Bluetooth RX. И соединив RST и Gnd, мы просто убираем Arduino из этой цепочки.

Способ №3. С помощью платы Arduino с программным USB-UART ретранслятором.

В этом случае USB-UART мостом будет служить основной микроконтроллер платы Arduino — Atmega328p. Подключим Ардуино к bluetooth по следующей схеме.

Настройка bluetooth hc-05 при помощи Arduino

На этой схеме мы подключаем TX и RX bluetooth модуля к контактам 10 и 11, так как аппаратный UART на ногах 0(RX) и 1(TX) будет занят общением с компьютером.

Затем пишем небольшую программу-ретранслятор ( программный USB-UART мост), которая будет осуществлять обмен данными между терминалом на компьютере и Bluetooth модулем. Программа крайне проста:

В этой программе есть два важных параметра, на которые следует обратить внимание:

Serial.begin(9600); — это скорость общения Ардуино и компьютера. Именно эту скорость нужно будет выставить в терминале!

BTSerial.begin(38400); — это скорость общения Ардуино и bluetooth модуля. В зависимости от варианта входа в режим AT-команд, она будет разной. Об этом будет сказано ниже.

Загружаем программу на Ардуино — USB-UART мост готов!

Терминал

В данном контексте терминал — это программа для текстового общения с различными устройствами по различным протоколам связи. Нам важен терминал, который работает с аппаратными или программными COM-портами.

В качестве терминала для нашей задачи можно использовать встроенный в Arduino IDE монитор порта — он тоже умеет передавать данные через COM-порт. В настройках следует выбрать передачу символов CR+LF (0x0D+0x10) и нужную скорость. Вот так должен выглядеть экран монитора порта (см. настройки внизу окна).

Монитор порта Arduino IDE bluetooth

Также можно использовать любой другой терминал, например, достаточно популярный TeraTerm. Его настройки:

Настройка teraterm

Настройка teraterm

Все дальнейшие манипуляции рационально поделить на две части: для ведомого модуля HC-06 и для ведущего HC-05.

Настройка bluetooth-модулей HC-05/06 : 66 комментариев

Все сделал как написано, но ЛЕД на модуле все равно продолжает быстро мигать не переходя в АТ режим… в чем дело?

Нужно приконектится с мобилки, Включить прогу terminal bluetoth, и ей приконектится к модульчику. Тампочка сразу начинает мигать. длинный пропуск, короткие два мигания…

**** А еще, кнопочка EN, она подает 3,6 вольта через делитель напряжения на платке..
Выдернув питание, прижав кнопку, и подав питание снова, модуль моргает мЕЕЕдленно. Это похоже и есть тот режим, пронраммирования модуля.
Я пака свою беду не победил. Есть много подозрений, одна, что уровни 3.6 не видит комп, через микруху (как ее, не помню), котора соединяет МК с RS-232 на МК.
…воюем дальше.

У меня тоже не работало. Во первых поменял подключение каналов зеркально(подключил rx-tx и tx-rx) и перебирая скорости поставил 38400. и сразу заработало.

Эти контакты надо включать зеркально всегда tx -прием сигнала rx выход сигнала

Здравствуйте! Почему модуль тройка bluetooth hc-05 может быть не видима ни для компьютера, ни для телефона? Модуль соединяю с Arduino Uno, K — 3.3В, V — 5В, G-Gnd, RX — TX, TX-RX. При подключении Ардуино через USB к компьютеру на модуле мигает светодиод ‘mode’ в режиме 2с/2с

В АТ режиме пропиши AT+CLASS?
если там 0 или 1 то пропиши AT+CLASS:7936
после на AT+CLASS? должен ответить +CLASS:1f00

Модуль на вид HC-05, все ножки в круговую припаяны. есть вход KEY, его и включаю на 3.3В на ардуино.

А кнопка есть? Можно попробовать зажать кнопку, подать питание, отпустить кнопку

А почему в делителе напряжений резисторы на 47к и 10к? Ведь тогда при напряжении 5В с ардуино на блютуз пойдёт 0,8В.

Андрей, спасибо за замечание! Опечатка:) Исправлено.

Вам спасибо, за статью 🙂

Автор будь внимателен , будет время ,поставлю 4.7 k ,про верю отпишусь 😉

Леонид, будь уважителен, автор в 100 раз больше пользы сделал на этой странице

Здравствуйте!
У кого есть этот модуль HC-06, замерьте и подскажите пожалуйста, что это диод или стабилитрон или еще что, который идет от плюсовой ноги (черная) видел на фото на нем было написано B2, дело в том что пришло мне это чудо, долго не мог понять почему не работает, оказывается не хватает этой детали!
Кто разбирается подскажите что это и его номинал?
Спасибо!

Если через эту деталь идёт питание, то скорее всего это диод — защита от переплюсовки. Можно поставить любой. В прямом направлении. Или заменить перемычкой

Диод от переплюсовки нельзя заменить перемычкой.

Но если очень нужно, то можно)

Здравствуйте!
У меня задача стоит передать MIDI команды без проводов. Это UART со скоростью 31 250 бит в сек. Возможно ли это осуществить на данных модулях? Меня смущает скорость, необходимо передавать именно со скорость 31250.
Спасибо.

Модуль устойчиво работает на скорости 115200, а максимум установлен вообще на уровне 1382400.

сделал всё по аналогии, подключаюсь к hc-06, лед горит непрерывно (статус коннект), но при посылке любых команд ничего не происходит 🙁
не подскажите, в чем проблема?

Команды должны заканчиваться комбинацией 0х13 0х10. Скорее всего нет символа конца строки и он считает что команда не завершена.

Неправильно! В конце AT-команды комбинация символов такая: 0x0d 0x0a

int gLedPin = 13;
int gRxPin = 10;
int gTxPin = 11;

SoftwareSerial BTSerial(gRxPin, gTxPin);

void setup() <
BTSerial.begin(9600);
Serial.begin(9600);
delay(500);
>

void loop() <
if (BTSerial.available()) <
Serial.write(BTSerial.read());
>
if (Serial.available()) <
BTSerial.write(Serial.read());
>
>

Пробовали ли Вы подключать, например, к HC-5 (в режиме мастер) другие устройства. Например, гарнитуру, или пульсометр?

Доброго времени суток! Вопрос, при отправки команды АТ на BT не могу распознать ответ от него, т.к. приходит в формате xxxx⸮, может кто сталкивался.

разобрался, проблема была в разности скоростях BTSerial.begin и Serial.begin.

Спасибо за статью. Остались вопросы:
1. Зачем кнопка на модуле?
2. Что выдается на ноге STATE?
3. Как управлять модулем с ноги EN?
Спасибо за ответы&#8230;

Кнопка соединяется к контактом KEY. С помощью неё можно переходить в режим настройки.
STATE &#8212; это контакт, который отвечает за светодиод состояния. Можно подключить STATE к Ардуино и проверять, например, есть ли соединение в данный момент.
EN переключает модуль в активное состояние. По-умолчанию модуль активен, так что можно не трогать этот контакт.

1. Кнопку необходимо удерживать, чтобы проходили команды? Или достаточно нажать и отпустить?
2. А на выводе STATE будет также мигание 2 раза в секунду или 1 раз в две секунды как и светодиод состояния?
3. Какой уровень надо подать на EN чтобы отключить модуль?
Извините за въедливость мою&#8230; хочу поэкспериментировать и прикинуть где и как это может пригодиться. Спасибо&#8230;

Кнопка привязана к контакту KEY, так что пользуйтесь ей как описано в статье.
STATE привязан к светодиоду, соответственно полностью повторяет его поведение.
Про EN не подскажу, на самом чипе такого пина вообще не предусмотрено. Кто-то пишет, что он вообще может быть никуда не подключен. Вам стоит проверить, подать на него высокий и низкий уровень.

почему при компиляции скетча из п4 выходит exit status 1
Ошибка компиляции.?

потому что в скетче ошибка. Комментарий в ардуине начинается с //, а не с #

подскажите, пожалуйста, все сделал как надо:подключил на KEY, светодиод моргал раз в две секунди, но команды АТ не принимаются. не знаю что делать дальше. помогите!

Проверьте все скорости обмена. Для разных вариантов входа в режим AT команд, будет разная скорость обмена с модулем &#8212; 9600 или 38400.
Если не получается, попробуйте скорость 115200

нужно получать отладочные данные с ком порта приличной кучи ардуин но ноут с 2303 прожигателем таскать не удобно. смотрю на телефон и этот блютус. хочу узнать. этот модуль может передавать данные с ком порта сам если просто подключить рх тх и питание? его можно настраивать с телефона? или нужна еще ардуинка как переходник с юарта нужного устройства на юарт блютуза? вроде как по логике модуль должен передавать все что на него приходит по юарту кроме команд настройки.

Если вы умеете с телефона передавать данные по UART, то контроллер не нужен. Максимум, что может потребоваться, это согласовать уровни напряжения 3.3В &#8212; 5В. Настройки модуля тоже делаются через UART с помощью AT Команд.

Привет всем. Попался мне тут Bluetooth-модуль BT-20 на чипе BC212 от CSR. Стоит задача поднять на нём виртуальный COM-порт (режим ведомого, чтобы на смарте/ноуте появлялся виртуальный ком-порт при подключении к модулю). Поиск документации на сей модуль и чип особого успеха не принёс. Как я понимаю, конфигурация и общение с модулем со стороны микроконтроллера ведётся с помощью АТ-команд через UART. Хотелось бы понять как его перевести в режим АТ-команд, какие команды воспринимаются модулем и как его необходимо конфигурить, чтобы он работал как виртуальный com-порт? Какова сама процедура приёма/передачи потока данных черех модуль?
Спасибо!

Друзья, помогите пожалуйста ! Можно ли с помощью hc-5 сделать такое: два модуля при обнаружения друг, друга начинаю т подавать сигнал (включение светодиода) Напишите в whattssapp пожалуйста +79091554056 очень нужно. Или инстаграм @valery_voropaev

пропиши им пару как описано в статье и будешь понимать, что есть сопряжение и связь по выходу 32 &#8212; bt_link. подключи к этому выходу LED.

Плата arduino nano, при подачи напряжения на модуль HC-06, индикатор моргает в течении 3-5 сек. и перестает моргать. Это что значит, что ему П&#8230;Ц?

Автор решил эту проблему,у меня такая же беда,что с ним не понятно,идти за новым или этот можно еще как то оживить

У меня HC-06 у меня нету пина KEY и нету никакой кнопки? Это чё мне нужно растаять пин KEY?!

Хорошая статья, спасибо!

Перейдём в терминальную программу, соединимся с портом и попробуем послать команду AT , на которую нам модуль должен ответить OK

Есть модификация модуля HC-05 с 6ногами, (State,RX,TX,GND,VCC,EN), очень популярная сейчас на Алиэкспресс, так вот, для нее не нужно припаивать проводок на 34пин (KEY) и подавать туда 3.3в, чтобы включить работу RX-TX на выводах необходимо подать 3.3в. на разъем EN а не на key, после этого такой модуль начинает работать как положено начинает отвечать на AT команды отправленные с компьютера или ардуины по пинам. С трудом нашел эту информацию в одном описании этого модуля на странице товара на алиекспресс.
Короче все также как с KEY в этой статье, только 3.3в. подаем на EN! (Enter).
Привожу описание на англ.

First, the module parameters:
1.PCB Dimensions: 37.3mm (length) * 15.5mm (W)
2 Weight:. 3.5g
(3) Input voltage: 3.6V&#8212;6V, 7V ban over
4 power anti-reverse, reverse module does not work
5 leads to 6 feet: EN / VCC / GND / RXD / TXD / STATE (Bluetooth status leads to the foot, is not connected to the output low, after connecting output high)
6 with the connection status indicator, LED flash means no Bluetooth connection; LED flashing slowly that enter the AT command mode
7 onboard 3.3V regulator chip, the input voltage DC 3.6V-6V; When unpaired, current of about 30mA (because LED lights flashing, the current state of change); After successful pairing, the current is about 10mA
8 Interface level 3.3V, you can directly connect a variety of microcontroller (/51/AVR/PIC/ARM/MSP430 etc.), 5V microcontroller can also be directly connected. Directly connected to the microcontroller serial port, not through the MAX232 chip!
9 open area effective transmission distance of 10 meters, over 10 meters are possible, but do not guarantee the quality of the connection
10. After successful pairing, can be used as a full-duplex serial port. Do not need to know anything about the Bluetooth protocol, but only supports 8 data bits, 1 stop bit, no parity communication format. This is the most common communication format that does not support other formats!
11 Press the key to give the Bluetooth module is energized to enter AT mode, set parameters and query information
12 can be switched master and slave mode via AT commands
13 modules default baud rate is 9600, the default passkey is 1234, the default name for the HC-05
14 protection with transparent shrink tube
Second, wiring methods:
VCC: positive power supply
GND: power supply is negative
RXD: Receive side, the Bluetooth module receives data sent to the other device; TXD terminal normally connected to the other device to send
TXD: sending end, the Bluetooth module to send data to other devices; RXD terminal normally connected to other devices receiving
EN: Enable, then you need to enter AT mode 3.3V

Павел, у меня как раз такой модуль (с EN-Z), и вот нифига не получается его заставить что-то говорить в ответ.


Источник: robotclass.ru