Настройка HC-05 с помощью AT-команд

Настройка HC-05 с помощью AT-команд

Любой, кто работает с Bluetooth-модулем HC-05, рано или поздно столкнётся с необходимостью использовать так называемые «AT-команды». AT-команды — это простые текстовые команды, которые начинаются с префикса «AT» (от слова «ATtention» — внимание). Эти команды аналогичны тем, которые использовались в старых модемных устройствах. Отправляя определённые AT-команды модулю HC-05, вы можете настраивать его или получать основную информацию о нём, такую как имя, скорость передачи данных, PIN-код, роль и так далее.

В этом руководстве вы научитесь настраивать модуль HC-05 с помощью AT-команд, чтобы адаптировать модуль под требования вашего проекта.

Настройка модуля HC-05

Для настройки модуля HC-05 необходимо перевести его в командный режим и отправлять AT-команды через порт UART. В командном режиме любые отправленные ASCII-байты интерпретируются как команды. После внесения изменений необходимо перезапустить модуль, чтобы применить настройки. Когда вы изменяете параметры конфигурации, они сохраняются до тех пор, пока вы не измените их снова или не выполните сброс к заводским настройкам.

Конфигурация модуля HC-05 по умолчанию:

  • Имя устройства: HC-05

  • Роль: Slave (ведомый)

  • Пароль: 1234

  • Параметры последовательного порта: Скорость: 38400 бит/с

  • Стоп-бит: 1 бит

  • Бит чётности: нет

Подключение модуля HC-05 к ПК

Когда речь идёт о подключении модуля HC-05 к ПК, у вас есть два варианта.

  1. Вы можете использовать USB-to-TTL конвертер, напрямую установив соединение между модулем HC-05 и вашим ПК. Этот конвертер служит мостом между USB-портом вашего ПК и последовательными сигналами TTL-уровня, которые понимает модуль HC-05.

  2. В качестве альтернативы вы можете использовать Arduino в качестве посредника между ПК и модулем HC-05. В такой конфигурации Arduino выполняет роль транслятора, передавая команды и данные между ПК и модулем HC-05.

С USB-to-TTL конвертером

Давайте подключим ваш модуль HC-05 к ПК с помощью USB-to-TTL конвертера.

Подключение модуля HC-05 к USB-to-TTL конвертеру так же просто, как подключение питания и подсоединение последовательных выводов Rx и Tx. Вывод Tx модуля HC-05 подключается к RXD конвертера, Rx — к TXD, GND к GND и VCC к 5V.

Обратите внимание, что вывод Rx модуля HC-05 не поддерживает 5V. Поэтому, если вы используете USB-to-TTL конвертер, работающий на уровне 5V, необходимо понизить сигнал Tx конвертера до 3.3V. Существует множество способов сделать это, но самый простой — использовать резисторный делитель напряжения. Резистор 1 кОм между Rx HC-05 и TXD конвертера и резистор 2 кОм между Rx HC-05 и GND отлично подойдут.

Подводя итог, ниже приведены соединения:

HC-05 ModuleUSB-to-TTL converterNotes
VCCVCC
GNDGND
TXDRx
RXDTxUse level shifter if using 5V converter
На изображении ниже показано подключение HC-05 к ПК через USB-to-TTL конвертер FT232RL.Настройка HC-05 с помощью AT-команд

С Arduino

Аналогичным образом вы можете подключить модуль HC-05 к Arduino. TXD модуля HC-05 подключается к выводу D1 Arduino, RXD — к D0, GND к GND и VCC к 5V.

И снова! Вывод Rx модуля HC-05 не поддерживает 5V. Поэтому, если вы используете 5V микроконтроллер, такой как Arduino UNO, необходимо понизить сигнал Tx Arduino до 3.3V с помощью резисторного делителя напряжения. Резистор 1 кОм между Rx HC-05 и D0 Arduino и резистор 2 кОм между Rx HC-05 и GND отлично подойдут.

Подводя итог, ниже приведены соединения:

HC-05 ModuleArduinoNotes
VCC5V
GNDGND
TXDD1
RXDD0Use level shifter if using 5V MCU
На изображении ниже показано, как подключить модуль HC-05 к Arduino Uno.Настройка HC-05 с помощью AT-команд

Если вы используете этот метод, убедитесь, что в Arduino загружен пустой скетч.

Вход в режим AT

Чтобы войти в режим AT, выполните следующие шаги.

  1. Нажмите и удерживайте кнопку на модуле HC-05.

  2. Подайте питание на модуль.

  3. Теперь отпустите кнопку. Если встроенный светодиод начнёт мигать с интервалом примерно 2 секунды, HC-05 успешно вошёл в режим AT; в противном случае повторите процедуру.

Обратите внимание, что в режиме AT HC-05 общается на скорости 38400 бод по умолчанию, и к каждой команде обязательно нужно добавлять „r“ и „n“.

Отправка AT-команд

Для отправки AT-команд вам потребуется терминальная программа Windows, установленная на вашем ПК, которая может обмениваться данными с модулем HC-05 через UART. Для этих целей мы рекомендуем использовать «Монитор последовательного порта Arduino». Однако существует также множество других бесплатных вариантов (таких как PuTTY, Tera Term и т.д.), которые вы можете попробовать.

Для начала запустите Arduino IDE.

Настройка HC-05 с помощью AT-команд

Убедитесь, что модуль HC-05 включён и находится в режиме AT. Встроенный светодиод должен мигать медленно и равномерно.

Когда вы подключаете HC-05 к ПК, он распознаётся как COM-порт. Откройте диспетчер устройств и в дереве «Порты (COM и LPT)» вы найдёте новый порт.

Настройка HC-05 с помощью AT-команд

Затем в Arduino IDE перейдите в Инструменты > Порт и выберите этот COM-порт.

Настройка HC-05 с помощью AT-команд

Откройте монитор последовательного порта через Инструменты > Монитор последовательного порта и убедитесь, что скорость передачи данных в правом нижнем углу установлена на 38400, а также выбрана опция „Both NL and CR“ (Оба: NL и CR). Это означает, что при отправке команд модулю HC-05 в конец будут добавлены символы новой строки и возврата каретки.

Настройка HC-05 с помощью AT-команд

Теперь введите «AT» (без кавычек) в текстовом поле в верхней части монитора последовательного порта и нажмите кнопку «Отправить». Вы должны увидеть «OK» в качестве ответа от модуля. Это означает, что связь установлена успешно.

Настройка HC-05 с помощью AT-команд

Теперь вы можете отправлять команды, подобные приведённым ниже, чтобы получить больше информации о вашем модуле:

AT+VERSION? — Выводит версию прошивки.

AT+NAME? — Выводит имя устройства.

AT+ PSWD? — Выводит пароль.

Настройка HC-05 с помощью AT-команд

Это команды чтения. Вы также можете отправлять команды записи, например:

AT+NAME=Param1 — Устанавливает имя устройства как Param1. Обратите внимание, что имя устройства может быть длиной до 32 байт и может содержать специальные символы.

Список AT-команд HC-05

Ниже приведён список всех AT-команд HC-05 для справки.

AT

Назначение

Тест

Ответ

OK

Параметр

Примечания

Пример

AT

OK

AT+RESET

Назначение

Сброс модуля

Ответ

OK

Параметр

Примечания

Пример

AT+RESET

OK

AT+VERSION?

Назначение

Получить версию прошивки

Ответ

+VERSION:****

OK

Параметр

Примечания

Пример

AT+VERSION?

+VERSION:2.0-20100601

OK

AT+ORGL

Назначение

Восстановить настройки по умолчанию

Ответ

OK

Параметр

Примечания

Параметры по умолчанию:

  1. Тип устройства: 0

  2. Код запроса: 0x009e8b33

  3. Режим работы модуля: Slave (ведомый)

  4. Режим подключения: Подключение к указанному Bluetooth-устройству

  5. Параметры последовательного порта: Скорость: 38400 бит/с; Стоп-бит: 1 бит; Бит чётности: нет.

  6. Пароль: «1234»

  7. Имя устройства: «H-C-2010-06-01»

Пример

AT+ORGL

OK

AT+ADDR?

Назначение

Получить Bluetooth-адрес модуля

Ответ

+ADDR:****

OK

Параметр

Примечания

Bluetooth-адрес отображается в формате: NAP:UAP:LAP (шестнадцатеричный)

Пример

AT+ADDR?

+ADDR:1234:56:abcdef

OK

AT+NAME?

AT+NAME=Param1

Назначение

Установить имя устройства

Ответ

OK

Параметр

Param1: Имя Bluetooth-устройства

Примечания

Длина до 32 байт. Поддерживает специальные символы.

AT+NAME=»HC-05″ равнозначно AT+NAME=HC-05

Пример

AT+NAME=myBluetooth

OK

AT+RNAME?Param1

AT+ROLE?

Назначение

Запросить роль модуля

Ответ

+ROLE:****

OK

Параметр

Примечания

Результат — число, где:

0 -> Slave (ведомый)

1 -> Master (ведущий)

2 -> Slave-Loop

Пример

AT+ROLE?

+ROLE=0

OK

AT+ROLE=Param1

Назначение

Установить роль модуля

Ответ

OK

Параметр

Param1: роль модуля:

0 -> Slave (ведомый)

1 -> Master (ведущий)

2 -> Slave-Loop

Примечания

Роли:

Slave (по умолчанию): Пассивное подключение

Slave-Loop: Пассивное подключение, получение данных от удалённого ведущего Bluetooth-устройства и отправка их обратно ведущему устройству

Master: Поиск ближайших SPP Bluetooth ведомых устройств, активное установление соединения и создание прозрачной передачи данных между ведущим и ведомым устройствами.

Пример

AT+ROLE=0

OK

AT+CLASS?

AT+CLASS=Param1

Назначение

Установить тип устройства

Ответ

OK

Параметр

Примечания

Тип Bluetooth-устройства — это 32-битный параметр, указывающий тип устройства и поддерживаемые типы. Для быстрого и эффективного поиска пользовательского Bluetooth-устройства среди окружающих устройств можно задать нестандартный тип, например 0x1F1F (шестнадцатеричный).

Пример

AT+IAC?

Назначение

Запросить «код доступа поиска»

Ответ

+IAC: ****

OK

Параметр

Примечания

По умолчанию: 9e8b33

Пример

AT+IAC?

+IAC: 9e8b3f

OK

AT+IAC=Param1

AT+INQM?

Назначение

Запросить режим доступа поиска

Ответ

+INQM:*,*,***

OK

Параметр

Примечания

Вывод в формате: Режим поиска, макс. количество ответивших Bluetooth-устройств, макс. время поиска

По умолчанию: 1, 1, 48

Пример

AT+INQM

+INQM:1, 9, 48

OK

AT+INQM=Param1, Param2, Param3

AT+PSWD?

Назначение

Запросить пароль

Ответ

+PSWD:****

OK

Параметр

Примечания

По умолчанию: «1234»

Пример

AT+PSWD?

+PSWD:1234

OK

AT+PSWD=Param1

Назначение

Установить пароль

Ответ

OK

Параметр

Param1: Пароль

Примечания

Пример

AT+PWD=1234 (или AT+PSWD=»1234″)

OK

AT+UART?

Назначение

Запросить параметры последовательного порта

Ответ

+UART=****, **, **

OK

Параметр

Примечания

Вывод в формате: Скорость, Стоп-бит, Бит чётности

По умолчанию: 9600, 0, 0

Пример

AT+UART?

+UART:115200,1,2

OK

AT+UART=Param1, Param2, Param3

Назначение

Установить параметры последовательного порта

Ответ

+UART=Param1, Param2, Param3

OK

Параметр

Param1: Скорость:

4800 -> 4800 бит/с

9600 -> 9600 бит/с<br 19200 -> 19200 бит/с

38400 -> 38400 бит/с

57600 -> 57600 бит/с

115200 -> 115200 бит/с

230400 -> 230400 бит/с

460800 -> 460800 бит/с

921600 -> 921600 бит/с

1382400 -> 1382400 бит/с

Param2: Стоп-бит: 0 -> 1 бит 1 -> 2 бита

Param3: Бит чётности: 0 -> Нет 1 -> Нечётная чётность 2 -> Чётная чётность

Примечания

Пример

Установить скорость 115200, стоп-бит 2 бита, бит чётности — чётная чётность:

AT+UART=115200,1,2

OK

AT+CMODE?

Назначение

Запросить режим подключения

Ответ

+CMODE:****

OK

Параметр

Примечания

Результат — число, где:

0 (по умолчанию) -> Подключение к указанному Bluetooth-адресу

1 -> Подключение к любому адресу

2 -> Slave-Loop

Пример

AT+CMODE?

+CMODE:2

OK

AT+CMODE=Param1

Назначение

Установить режим подключения

Ответ

OK

Параметр

Param1: Режим подключения:

0 -> Подключение к указанному Bluetooth-адресу

1 -> Подключение к любому адресу

2 -> Slave-Loop

Примечания

Пример

AT+CMODE=2

OK

AT+BIND?

Назначение

Запросить привязанный Bluetooth-адрес

Ответ

+BIND:****

OK

Параметр

Примечания

Bluetooth-адрес отображается в формате: NAP:UAP:LAP (шестнадцатеричный)

Пример

AT+BIND?

+BIND:1234:56:abcdef

OK

AT+BIND=Param1

Назначение

Установить привязанный Bluetooth-адрес

Ответ

OK

Параметр

Param1: Bluetooth-адрес, к которому нужно привязаться

Примечания

При записи адреса необходимо использовать запятые вместо двоеточий.

Пример

AT+BIND=1234,56,abcdef

OK

AT+POLAR?

Назначение

Запросить управление индикацией LED и статусом соединения

Ответ

+POLAR=****, ****

OK

Параметр

Примечания

Вывод в формате: режим PI08, режим PI09

По умолчанию: 1, 1

Пример

AT+POLAR?

+POLAR=0, 1

OK

AT+POLAR=Param1, Param2

Назначение

Установить управление индикацией LED и статусом соединения

Ответ

OK

Параметр

Param1: Режим PI08:

0 -> PI08 выдаёт низкий уровень и включает LED

1 -> PI08 выдаёт высокий уровень и включает LED

Param2: Режим PI09: 0 -> PI09 выдаёт низкий уровень при успешном соединении 1 -> PI09 выдаёт высокий уровень при успешном соединении

Примечания

Пример

PI08 выдаёт низкий уровень и включает LED, PI09 выдаёт высокий уровень при успешном соединении:

AT+POLAR=0, 1

OK

AT+PIO=Param1, Param2

Назначение

Установить вывод одного порта PIO

Ответ

OK

Параметр

Param1: Номер порта PIO (десятичный):

Param2: Состояние порта PIO:

0 -> низкий уровень

1 -> высокий уровень

Примечания

Bluetooth-модуль HC-05 предоставляет пользователю порты (PI00~PI07 и PI010), которые могут быть использованы как дополнительные входные и выходные порты.

Пример

  1. Порт PI010 выдаёт высокий уровень:

AT+PI0=10, 1

OK

2. Порт PI010 выдаёт низкий уровень: AT+PI0=10, 0 OK

AT+MPIO=Param1

Назначение

Установить вывод нескольких портов PIO

Ответ

OK

Параметр

Param1: Маска комбинации номеров портов PIO (десятичный)

Примечания

  1. Маска номера порта PIO = (1<<номер порта)

  2. Маска комбинации номеров портов PIO = (маска порта PIO 1 | маска порта PIO 2 | ……)

Пример: Маска номера порта PI02 = (1<<2) = 0x004 Маска номера порта PI010 = (1<<10) = 0x400 Маска комбинации портов PI02 и PI010 = (0x004|0x400) = 0x404

Пример

  1. Порты PI010 и PI02 выдают высокий уровень:

AT+MPI0=404

OK

  1. Порт PI04 выдаёт высокий уровень:

AT+PI0=004

OK

  1. Порт PI010 выдаёт высокий уровень:

AT+PI0=400

OK

  1. Все порты выдают низкий уровень:

AT+MPI0=0

OK

AT+MPIO?

Назначение

Запросить состояние входов портов PIO

Ответ

+MPIO:****

OK

Параметр

Param1: Значение порта PIO (16 бит)

Param[0]=PI00

Param[1]=PI01

Param[2]=PI02

Param[10]=PI010

Param[11]=PI011

Примечания

Пример

AT+IPSCAN?

Назначение

Запросить параметры сканирования страниц и запросов

Ответ

+IPSCAN:**, **, **, **

OK

Параметр

Примечания

Вывод в формате: интервал поиска, продолжительность поиска, интервал страниц, продолжительность страниц

По умолчанию: 1024,512,1024,512

Пример

AT+IPSCAN?

+IPSCAN:1234,500,1200,250

OK

AT+IPSCAN=Param1, Param2, Param3, Param4

Назначение

Установить параметры сканирования страниц и запросов

Ответ

OK

Параметр

Param1: Интервал поиска

Param2: Продолжительность поиска

Param3: Интервал страниц

Param4: Продолжительность страниц

Примечания

Пример

AT+IPSCAN=1234,500,1200,250

OK

AT+SNIFF?

Назначение

Запросить параметры энергосбережения SNIFF

Ответ

+SNIFF:**, **, **, **

OK

Параметр

Примечания

Вывод в формате: макс. время, мин. время, время тестирования, ограниченное время

По умолчанию: 0,0,0,0

Пример

AT+SENM?

Назначение

Запросить режим безопасности и шифрования

Ответ

+SENM:**, **

OK

Параметр

Примечания

Вывод в формате: значение режима безопасности, значение режима шифрования

По умолчанию: 0,0

Пример

AT+SENM=Param1, Param2

AT+RMSAD=Param1

Назначение

Удалить аутентифицированное устройство из списка пар

Ответ

OK

Параметр

Param1: Bluetooth-адрес устройства

Примечания

Пример

AT+RMSAD=1234,56,abcdef

OK | FAIL

AT+RMAAD

Назначение

Удалить все аутентифицированные устройства из списка пар

Ответ

OK

Параметр

Примечания

Пример

AT+RMAAD

OK

AT+FSAD=Param1

AT+ADCN?

Назначение

Получить количество аутентифицированных устройств в списке пар

Ответ

+ADCN:****

OK

Параметр

Примечания

Пример

AT+ADCN?

+ADCN:0

OK

AT+MRAD?

Назначение

Получить Bluetooth-адрес последнего использованного аутентифицированного устройства

Ответ

+MRAD:****

OK

Параметр

Примечания

Пример

AT+MRAD?

+MRAD:0:0:0

OK

AT+STATE?

Назначение

Получить рабочий статус Bluetooth-модуля

Ответ

+STATE:****

OK

Параметр

Примечания

Результат может быть одним из следующих:

«INITIALIZED» -> статус инициализации

«READY» -> статус готовности

«PAIRABLE» -> статус готовности к сопряжению

«PAIRED» -> статус сопряжения

«INQUIRING» -> статус поиска

«CONNECTING» -> статус подключения

«CONNECTED» -> статус подключения установлено

«DISCONNECTED» -> статус отключения

«NUKNOW» -> неизвестный статус

Пример

AT+STATE?

+STATE:INITIALIZED

OK

AT+INIT

AT+INQM?

Назначение

Поиск Bluetooth-устройств

Ответ

+INQ:****

+INQ:****

OK

Параметр

Примечания

Каждый результат выводится в формате: +INQ:Bluetooth-адрес, Тип устройства, Интенсивность сигнала RSSI

Пример

AT+INQ

+INQ:2:72:D2224,3E0104,FFBC

+INQ:1234:56:0,1F1F,FFC1

+INQ:1234:56:0,1F1F,FFC0

OK

AT+PAIR=Param1, Param2

AT+DISC

Назначение

Отключение

Ответ

При успешном отключении:

+DISC:SUCCESS

OK

При потере соединения:

+DISC:LINK_LOSS

OK

При отсутствии SLC-соединения:

+DISC:NO_SLC

OK

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

+DISC:TIMEOUT

OK

При ошибке отключения:

+DISC:ERROR

OK

Параметр

Примечания

Пример

AT+ENSNIFF=Param1

Назначение

Войти в режим энергосбережения

Ответ

OK

Параметр

Param1: Bluetooth-адрес устройства

Примечания

Пример

AT+EXSNIFF=Param1

Назначение

Выйти из режима энергосбережения

Ответ

OK

Параметр

Param1: Bluetooth-адрес устройства

Примечания

Пример