код класса устройства 7936 bluetooth
Блютус адаптер для ГБО на основе НС-05
С диджиком и атикером я соединяюсь примитивным шнурком и иногда ну очень неудобно ковыряться под капотом с подключеннм ноутом и вот я снова решил сделать адаптер на основе уже HC-05 так как его проще вывести в режим программирования и вообще они вроде более стабильные по качеству.
Подключение USB-TTL CH340G прошивальщика и Bluetooth адаптера:
5V CH340G — +5V HC-05
GND CH340G — GND HC-05
RXD CH340G — TX HC-05
TXD CH340G — RX HC-05
Программы использовал btinit.exe (у меня XP, а если у Вас Windows 10 64bt или Windows выше XP (7,8 итд), то качаем еще и библиотеку msvbvm50 ), паралельно проверял прогой Termite.
Зажимаем на Bluetooth адаптере кнопку и только после этого втыкаем прошивальщик CH340G в USB порт компьютера. На Bluetooth адаптере должен начать медленно мигать красный светодиод, означающий что Bluetooth адаптер перешел в режим прошивки.
И ВСЕ ничего там подпаивать в обход кнопки не нужно, и подавать питание на пин STATE или EN тоже НЕНУЖНО.
Запускаем прогу Btinit, настраиваем:
Module Firmware — HC05
COMPORT — порт выданный нашему CH340G( у меня работает даже если порт выше 10го)
Скорость порта — 38400
Галку с RX не снимаем и параметр 1200 не меняем.
Жмем OPEN, и если все ОК, то справа в окошке должны появиться ответы как на фото:
Для сборки на столе я приобрел макетную плату и проводки с нужными пинами для соединения всей этой лабуды.
Еще для преобразователя логических уровней понадобится стабилизатор на 3.3в я взял 1117 — 3.3 стоит 40р, если кто то подпаивался к родному стабилизатору на HC-05 то там напруга 2.5-2.8в скачет это не есть хорошо.
Для стабильности работы адаптера берем внешние 3.3в с нашего отдельного стабилизатора.
AT-команды для настройки bluetooth-модулей HC-05, HC-06.
При разработке проектов с беспроводным управлением часто падает выбор на bluetooth-модули HC-05, HC-06. В связи с небольшой стоимостью и простотой использования. Но перед тем как создать проект нужно настроить bluetooth-модуль. Настройка модулей осуществляется с помощью AT-команд.
Схема подключения bluetooth-модулей HC-05, HC-06 к Arduino для настройки.
Какие параметры bluetooth-модулей HC-05, HC-06 можно настроить с помощью AT-команд?
В зависимости от версии bluetooth-модуля и прошивки настроить можно разное количество параметров. Также AT-команд могут быть разные, у разных версий модулей и прошивок. Но основной набор команд неизменный для любой версии. Возможно, разделительный знак будет отличаться, но методом «научного подбора» можно определить, если даже нет описания для вашего модуля.
Основные AT-команды bluetooth-модулей HC-05, HC-06:
Это основные AT-команды. Остальные команды используются редко. Более подробный список вы можете посмотреть в таблице ниже.
Список ошибок которые может вернуть Bluetooth модуль HC-05, HC-06.
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 | — |
D | Слишком длинный общий код доступа IAC | — |
E | Недопустимый общий код доступа IAC | — |
F | Не указан пароль | — |
10 | Слишком длинный пароль | 16 байт |
11 | Недопустимая роль модуля | — |
12 | Недопустимая скорость передачи данных | — |
13 | Недопустимый размер стоп-бита | — |
14 | Недопустимая настройка бита четности | — |
15 | Устройство отсутствует в списке пар | — |
16 | Профиль последовательного порта не инициализирован | — |
17 | Повторная инициализация профиля SPP | — |
18 | Недопустимый режим опроса Bluetooth устройств | — |
19 | Слишком большое время опроса | — |
1A | Не указан адрес Bluetooth устройства | — |
1B | Недопустимый режим безопасности | — |
1C | Недопустимый режим шифрования | — |
Сравнение модулей HC-05 и HC-06
Модули HC-05 и HC-06 являются наиболее используемыми. Оба модуля основаны на одинаковом чипе, но есть и важные отличия. Модуль HC-05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).
Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций. Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.
Подключение обоих модулей к плате Arduino одинаково.
Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.
Bluetooth-модуль HC-05
Сегодня мы познакомимся с недорогим модулем для беспроводной пердачи данных по Bluetooth.
Bluetooth – производственная спецификация беспроводных персональных сетей, которая обеспечивает передачу данных без проводов между многими устройствами.
Наш модуль именуется HC-05. Это один из представителей линейки подобных модулей HC-03 – HC-09.
Данные модули позволяют передавать данные без проводов, не задумываясь о том, как вообще устроен протокол Bluetooth, о его полях и прочих тонкостях. Эти модули при правильных настройках обеспечивают передачу данных таким образом, что программист, сочиняющий код, пишет алгоритм так, будто он работает с проводным интерфейсом UART. Поэтому писать код становится максимально удобно и поэтому данная линейка модулей снискала такую огромную популярность среди начинающих программистов и не только.
Вот и мы с вами давайте тоже не будем от них отставать и немного отдохнём от сетевых протоколов и изучим такой модуль. Также было очень много просьб личного характера, а также и в публичных чатах, чтобы я не обошёл стороной такие модули и написал какие-либо уроки с их использованием.
Модули имеют следующие основные характеристики:
Также наряду с данными характеристиками стоит отметить то, что модуль имеет на борту очень много ножек, что позволяет использовать его в более широком спкетре. Давайте посмотрим схему выводов модуля
Мы видим зедесь ножки GPIO, SPI, USB, PCM.
Правда мы пока будем работать только с интерфейсом USART, с помощью которого мы будем не только передавать какие-то полезные данные, а также и настраивать наш модуль.
Мы так поступим во-первых потому, что модули у нас будут одного типа (у меня их аж 4 штуки!), в которых модуль HC-05 напаян ещё на одну плату, на которой наружу разведены только 6 контактов. Вот такие вот они все у меня приблизительно (вид сверху и вид снизу)
Снизу платы нанесено назначение ножек, с ними мы разберёмся, когда будем подключать модуль.
Во-вторых, мы не будем работать с остальными многочисленными контактами потому, что не каждая прошивка этим позволяет заниматься.
Вообще, выбор пал именно на HC-05 ещё потому, что данный модуль прекрасно настраивается для работы как ведущего, так и ведомого устройства.
Настраивается для дальнейшей работы с данными модуль с помощью AT-команд. Мы, я думаю, все в той или иной мере знакомы, что это за команды такие, мы с ними немного знакомились, когда работали с модулем Wi-Fi. Конечно, данные команды у всех устройств разные и поэтому я приложу внизу страницы документ с полным перечнем команд. Также в интернете немудрено найти ресурсы, где описание данных команд переведено на русский язык, и даже есть некоторые примеры их использования. Мы же не будем здесь заниматься полным переводом команд, мы будем изучать только те команды, которыми нам прийдётся воспользоваться. Пока их перечень будет не столь широк, но впоследствии мы к данным модулям ещё вернёмся, надеюсь, и не раз, и тогда мы уже расширим свой кругозор в знании данного модуля. А пока же мы проведём только краткий экскурс по модулю. Конечно, мы попробуем его и в работе, не без этого.
А пока давайте подключим наш модуль к переходнику TTL-USB, который в свою очередь мы подключим к ПК.
Соединим мы по следующей схеме
Переходник TTL-USB Модуль HC-05
VCC VCC
GND GND
TXD RXD
RXD TXD
На практике это будет выглядеть примерно вот так
Подключим переходник к компьютеру, как работать с переходниками такого плана, рассказывать не буду, мы и так с ними постоянно работаем. Запустим терминальную программу, я воспользуюсь программой CoolTerm, так как у неё более гибкие настройки для пердачи данных с клавиатуры, а нам для ввода команд необходимо, чтобы каждая строка при передаче заканчивалась кодом перевода строки и возврата каретки.
Зайдём в настройки программы и настроим сначала порт
Данная скорость 38400 была выбрана потому, что модуль в режиме приёма AT-команд работает именно на такой скорости.
Теперь слева выберем пункт Receive и переключим там одну кнопку, а другую включим
Первая кнопка для окончания переданных команд символами перевода строки и возврата каретки, а вторая для того, чтобы мы свои введённые команды видели также после ввода в терминальном окне приёма.
Сохраним настройки и попробуем соединиться. Если всё удачно, то разъединяеся, так как сейчас у нас модуль находится в режиме передачи данных, и, если он ещё не настраивался, то скорей всего, мы даже не знаем его адреса, его настроек. О нахождении модуля в данном режиме свидетельствует быстрые мигания голубого светодиода Поэтому нам надо как-то перевести модуль в состояние передачи AT-команд.
Для этого мы пока отсоединим переходник от USB-порта и подклюим провод на ножку модуля HC-05 KEY. У кого-то она может иметь другое название, но, думаю, не перепутаете. Провод подключим вот такой и вот таким образом
Соединим данный провод с плюсом питания (с ножкой VCC)
И, не отпуская контакта, соединим перходник с портом USB компьютера и через некоторое время (через секунду или две) разъединим наш контакт KEY с контактом VCC, убрав провод. Модуль должен будет перейти в режим приёма AT-команд, о чём будет свидетельствовать очень медленная скорость мигания светодиода.
Перейдём в терминальную программу, соединимся с портом и попробуем послать команду AT, на которую нам модуль должен ответить «OK»
Модуль ответил, значит всё правильно.
Чтобы не путаться с настройками, которые были кем-то и когда-то внесены, давайте сборсим все настройки, введя команду «AT+ORGL«. Настройки должны будут сброситься к следующим параметрам:
Только настройки сразу не применятся. Надо перезагрузить модуль. Удобно сделать это, введя команду «AT+RESET«, в ответ на которую модуль перезагрузится и перейдёт опять в режим передачи данных и не сможет пока принимать команды. Чтобы он их принимал, проделаем те же действия, что и выше, для того чтобы модуль опять перешёл в режим приёма команд AT. Есть ещё один способ, но пока мы им пользоваться не будем.
Проверим теперь некоторые параметры нашего модуля.
Чтобы узнать версию прошивки, введём команду «AT+VERSION?«, на которую модуль должен будет ответить приблизительно вот так
Если прошивка не ниже данной версии, то мы можем быть уверены, что данный модуль с такой прошивкой способен работать в режиме ведущего устройства (Мастера).
Узнаем адрес устройства с помощью команды «AT+ADDR?«
По данному адресу мы и будем определять наше устройство на ведущем устройстве. В качестве ведущего устройства мы возьмём самый обыкновенный смартфон, но это чуть позже. Надо ещё как следует наиграться с командами.
Давайте запросим ещё и имя устройства с помощью команды «AT+NAME?«, на который многие модули, в том числе и мой реагируют только при наличии высокого уровня на ножке KEY, то есть при подключенном проводе. Так и сделаем
Давайте попробуем ещё это имя изменить, так как оно не очень удобное, для этого введём команду «AT+NAME:Желаемое_имя». Данную команду можно вводить без высокого уровня на ножке KEY
Проверим, что имя изменилось, только не забываем про высокий уровень на ножке KEY
Имя прекрасно применено.
Проверим пароль командой «AT+ PSWD?«
Аналогичным образом, как и имя, можно поменять и пароль.
Теперь узнаем тип устройства (ведомый или ведущий) с помощью команды «AT+ ROLE?«
0 – это значит ведомый. Тип также можно изменить в любой момент. Но нам это пока не нужно, так как мы будем работать с устройством как с ведомым.
Сбросим спаренные устройства командой «AT+RMAAD«
Теперь давайте узнаем настройки интерфейса USART командой «AT+ UART?«
Эти настройки означают: скорость 38400 кбпс, 1 стоповый бит и отсутствие контроля чётности.
В данной таблице находятся возможные варианты настроек USART
Давайте изменим, например, скорость передачи командой «AT+UART=115200,0,0«
Только данные настройки вступят в силу после перезагрузки модуля и будут актуальны только для режима передачи данных, для режима передачи AT-команд в модуль останутся настройки прежние со скоростью 38400.
Давайте перезагрузим модуль командой «AT+RESET«, после чего модуль перейдёт в режим передачи данных.
Настроим порт в терминальной программе на данную скорость и соединимся с ним
Попробуем ввести команду, на что модуль наш не прореагирует, так как режим не тот
Но не будем отчаиваться. Оказывается, чтобы отправлять команды модулю, необязательно переводить его в этот режим. Можно включить поддержку передачи AT-команд в режиме передачи данных. На короткое время (достаточно менее секунды) коснёмся проводом, который подключен к контакту KEY плюсовой шины модуля и модуль перейдёт в режим поддержки AT-команд. Правда, по характеру мигания светодиода мы это не определим, он будет мигать также быстро. Также в режиме поддержки команд мы с нами не сможет соединиться ведущее устройство. Но тем не менее, нам не потребуется для каких-то настроек постоянно вынимать провод из разъёма USB и перенастраивать порт в терминальной программе. Это уже хорошо. Сделаем данное действие и убедимся в том, что модуль также будет принимать команды, как и в режиме приёма команд
Чтобы убрать данную поддержку и чтобы модуль смог соединяться, достаточно перезагрузить его командой «AT+RESET«. Так и сделаем
Отлично! Мы уже кое-что умеем. В принципе, мы настроили модуль для передачи данных в режиме ведущего устройства.
Теперь смартфон, который у нас сегодня выступит в роли ведущего устройства. Подойдёт любой с андроидом, лишь бы встала какая-нибудь терминальная программа под Bluetooth. Я установил вот такую. Мне она показалась удобной
Во-первых, она бесплатная, не требует создания подключения заранее, а также имеет несколько кнопок с заранее сохранёнными нами строками.
Скачаем и установим программу и запустим её. Нажмём кнопку SCAN и наш модуль должен будет отобразиться в списке найденных устройств
Выберем данное устройство и попадём в диалог создания пары, в котором надо будет ввести пароль (у нас «1234») и согласиться, нажав кнопку «ОК»
Устройство появится в списке спаренных устройств
Также наши устройства создадут между собой соединение, о чём нам укажет намного медленнее мигающий светодиод на модуле. Причём мигать он будет двойными короткими вспышками.
Выберем наше устройство и попадём в диалог терминального обмена строками
Введём что-нибудь в строке и нажмём кнопку «Send ASCII»
Наш текст переместится в поле чата
Также если всё нормально со связью, мы этот же текст увидим в терминальной программе на ПК
Теперь попробуем, наоборот, послать строку из терминальной программы ПК в терминальную программу смартфона
Посмотрим, пришла ли наша команда
То есть связь у нас работает.
Таким образом, сегодня мы познакомились с очень удобным и несложно конфигурируемым устройством для беспроводной передачи данных – модулем Bluetooth HC-05. Мы научились менять различные режимы работы, отправлять команды для получения информации из модуля, а также для его настройки. Пусть это далеко не все команды, которые знает наш модуль, но принцип нам уже ясен, а с остальными ещё познакомимся. Также мы увидели на практике работу модуля в режиме передачи данных, создав соединение между модулем, подключенным к ПК и смартфоном.
Спасибо за внимание!
Модуль Bluetooth можно приобрести здесь HC-05
Смотреть ВИДЕОУРОК (нажмите на картинку)
AT-команды Bluetooth HC-05
Подключение:
Настройка:
Модуль Bluetooth HC-05 сможет принимать команды только если правильно настроены следующие параметры последовательного порта:
Для настройки этих параметров в программе Termite, нажмите на кнопку «Настройки» (Settings). В том же окне можно установить Русский язык.
При использовании Arduino, номер порта указывается во вкладке «Инструменты». Параметры передачи данных используются по умолчанию. Для добавления символов NL & CR воспользуйтесь меню в правом нижнем углу монитора последовательного порта.
Проверка:
После каждого подключения питания или перезагрузки модуля, до того как отправлять команды, нужно кратковременно нажать на кнопку модуля. Если у модуля нет кнопки, то кратковременно подать высокий уровень на вывод K. После чего модуль останется в обычном режиме, но будет воспринимать AT-команды. Помимо обычного режима, модуль может работать в режиме AT-команд. О том как войти в этот режим и чем он отличается от обычного, рассказано ниже, в разделе примечание.
AT-команды:
Описание ошибок выдаваемых модулем:
Если отправить команду, которую модуль не знает, не может выполнить, или у команды неправильные аргументы, то модуль вернёт строку «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-команды.
У некоторых модулей есть вывод En который управляет питанием и подтянут к Vcc. Если на вывод En подать низкий логический уровень, то отключится питание чипов. Данный вывод можно использовать для программного входа в режим AT-команд. Если сразу после снятия низкого уровня с вывода En подать команду AT+PIO=11,1\r\n это будет эквивалентно включению модуля с нажатой кнопкой.
Создание ведомого ожидающего подключения ведущего:
Не раньше чем через пол секунды после перезагрузки (командой AT+RESET \r\n ) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать новые AT-команды.
Создание ведущего с подключением к ведомому:
Не раньше чем через пол секунды после перезагрузки (командой AT+RESET \r\n ) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать новые AT-команды.