Настройка 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 к ПК, у вас есть два варианта.
Вы можете использовать USB-to-TTL конвертер, напрямую установив соединение между модулем HC-05 и вашим ПК. Этот конвертер служит мостом между USB-портом вашего ПК и последовательными сигналами TTL-уровня, которые понимает модуль HC-05.
В качестве альтернативы вы можете использовать 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 Module | USB-to-TTL converter | Notes | |
| VCC | VCC | – | |
| GND | GND | – | |
| TXD | Rx | – | |
| RXD | Tx | Use level shifter if using 5V converter |
С 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 Module | Arduino | Notes | |
| VCC | 5V | – | |
| GND | GND | – | |
| TXD | D1 | – | |
| RXD | D0 | Use level shifter if using 5V MCU |
Если вы используете этот метод, убедитесь, что в Arduino загружен пустой скетч.
Вход в режим AT
Чтобы войти в режим AT, выполните следующие шаги.
Нажмите и удерживайте кнопку на модуле HC-05.
Подайте питание на модуль.
Теперь отпустите кнопку. Если встроенный светодиод начнёт мигать с интервалом примерно 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 к ПК, он распознаётся как COM-порт. Откройте диспетчер устройств и в дереве «Порты (COM и LPT)» вы найдёте новый порт.
Затем в Arduino IDE перейдите в Инструменты > Порт и выберите этот COM-порт.
Откройте монитор последовательного порта через Инструменты > Монитор последовательного порта и убедитесь, что скорость передачи данных в правом нижнем углу установлена на 38400, а также выбрана опция „Both NL and CR“ (Оба: NL и CR). Это означает, что при отправке команд модулю HC-05 в конец будут добавлены символы новой строки и возврата каретки.
Теперь введите «AT» (без кавычек) в текстовом поле в верхней части монитора последовательного порта и нажмите кнопку «Отправить». Вы должны увидеть «OK» в качестве ответа от модуля. Это означает, что связь установлена успешно.
Теперь вы можете отправлять команды, подобные приведённым ниже, чтобы получить больше информации о вашем модуле:
AT+VERSION? — Выводит версию прошивки.
AT+NAME? — Выводит имя устройства.
AT+ PSWD? — Выводит пароль.
Это команды чтения. Вы также можете отправлять команды записи, например:
AT+NAME=Param1 — Устанавливает имя устройства как Param1. Обратите внимание, что имя устройства может быть длиной до 32 байт и может содержать специальные символы.
Список AT-команд HC-05
Ниже приведён список всех AT-команд HC-05 для справки.
AT
Назначение |
Тест |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
– |
Пример |
AT OK |
AT+RESET
Назначение |
Сброс модуля |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
– |
Пример |
AT+RESET OK |
AT+VERSION?
Назначение |
Получить версию прошивки |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
– |
Пример |
AT+VERSION? +VERSION:2.0-20100601 OK |
AT+ORGL
Назначение |
Восстановить настройки по умолчанию |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
Параметры по умолчанию:
|
Пример |
AT+ORGL OK |
AT+ADDR?
Назначение |
Получить Bluetooth-адрес модуля |
|---|---|
Ответ |
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?
Назначение |
Запросить роль модуля |
|---|---|
Ответ |
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?
Назначение |
Запросить «код доступа поиска» |
|---|---|
Ответ |
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?
Назначение |
Запросить пароль |
|---|---|
Ответ |
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?
Назначение |
Запросить режим подключения |
|---|---|
Ответ |
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-адрес |
|---|---|
Ответ |
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 и статусом соединения |
|---|---|
Ответ |
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), которые могут быть использованы как дополнительные входные и выходные порты. |
Пример |
AT+PI0=10, 1 OK 2. Порт PI010 выдаёт низкий уровень: AT+PI0=10, 0 OK |
AT+MPIO=Param1
Назначение |
Установить вывод нескольких портов PIO |
|---|---|
Ответ |
OK |
Параметр |
Param1: Маска комбинации номеров портов PIO (десятичный) |
Примечания |
Пример: Маска номера порта PI02 = (1<<2) = 0x004 Маска номера порта PI010 = (1<<10) = 0x400 Маска комбинации портов PI02 и PI010 = (0x004|0x400) = 0x404 |
Пример |
AT+MPI0=404 OK
AT+PI0=004 OK
AT+PI0=400 OK
AT+MPI0=0 OK |
AT+MPIO?
Назначение |
Запросить состояние входов портов PIO |
|---|---|
Ответ |
OK |
Параметр |
Param1: Значение порта PIO (16 бит) Param[0]=PI00 Param[1]=PI01 Param[2]=PI02 … Param[10]=PI010 Param[11]=PI011 |
Примечания |
– |
Пример |
– |
AT+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 |
|---|---|
Ответ |
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?
Назначение |
Получить количество аутентифицированных устройств в списке пар |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
– |
Пример |
AT+ADCN? +ADCN:0 OK |
AT+MRAD?
Назначение |
Получить Bluetooth-адрес последнего использованного аутентифицированного устройства |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
– |
Пример |
AT+MRAD? +MRAD:0:0:0 OK |
AT+STATE?
Назначение |
Получить рабочий статус Bluetooth-модуля |
|---|---|
Ответ |
OK |
Параметр |
– |
Примечания |
Результат может быть одним из следующих: «INITIALIZED» -> статус инициализации «READY» -> статус готовности «PAIRABLE» -> статус готовности к сопряжению «PAIRED» -> статус сопряжения «INQUIRING» -> статус поиска «CONNECTING» -> статус подключения «CONNECTED» -> статус подключения установлено «DISCONNECTED» -> статус отключения «NUKNOW» -> неизвестный статус |
Пример |
AT+STATE? +STATE:INITIALIZED OK |
AT+INIT
AT+INQM?
Назначение |
Поиск Bluetooth-устройств |
|---|---|
Ответ |
… 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+LINK=Param1
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-адрес устройства |
Примечания |
– |
Пример |
– |