Bluetooth-модуль HC-05



Сегодня мы познакомимся с недорогим модулем для беспроводной передачи данных по Bluetooth.

Bluetooth — производственная спецификация беспроводных персональных сетей, которая обеспечивает передачу данных без проводов между многими устройствами.

Наш модуль именуется HC-05. Это один из представителей линейки подобных модулей HC-03 — HC-09.

Данные модули позволяют передавать данные без проводов, не задумываясь о том, как вообще устроен протокол Bluetooth, о его полях и прочих тонкостях. Эти модули при правильных настройках обеспечивают передачу данных таким образом, что программист, сочиняющий код, пишет алгоритм так, будто он работает с проводным интерфейсом UART. Поэтому писать код становится максимально удобно и поэтому данная линейка модулей снискала такую огромную популярность среди начинающих программистов и не только.

Вот и мы с вами давайте тоже не будем от них отставать и немного отдохнём от сетевых протоколов и изучим такой модуль. Также было очень много просьб личного характера, а также и в публичных чатах, чтобы я не обошёл стороной такие модули и написал какие-либо уроки с их использованием.

Модули имеют следующие основные характеристики:

  • чип Bluetooth – BC417143 производства CSR company,
  • протокол передачи данных — Bluetooth 2.0 + EDR,
  • класс 2, что соответствует передаче данных в радиусе до 10 м,
  • поддержка Serial Port Profile (SPP), что обеспечивает совместимость со всеми устройствами, поддерживающими данный профиль,
  • энергонезависимая память flash объёмом 8 мб,
  • радиоканал частотой 2.4 — 2.4835 MHz,
  • интерфейс USB Host 1.1/2.0,
  • интерфейс UART с регулируемой скоростью передачи.

Также наряду с данными характеристиками стоит отметить то, что модуль имеет на борту очень много ножек, что позволяет использовать его в более широком спектре. Давайте посмотрим схему выводов модуля

 

Image00

 

Мы видим зедесь ножки GPIO, SPI, USB, PCM.

Правда мы пока будем работать только с интерфейсом USART, с помощью которого мы будем не только передавать какие-то полезные данные, а также и настраивать наш модуль.

Мы так поступим во-первых потому, что модули у нас будут одного типа (у меня их аж 4 штуки!), в которых модуль HC-05 напаян ещё на одну плату, на которой наружу разведены только 6 контактов. Вот такие вот они все у меня приблизительно (вид сверху и вид снизу)

Image01  Image02

Снизу платы нанесено назначение ножек, с ними мы разберёмся, когда будем подключать модуль.

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

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

Настраивается для дальнейшей работы с данными модуль с помощью AT-команд. Мы, я думаю, все в той или иной мере знакомы, что это за команды такие, мы с ними немного знакомились, когда работали с модулем Wi-Fi. Конечно, данные команды у всех устройств разные и поэтому я приложу внизу страницы документ с полным перечнем команд. Также в интернете немудрено найти ресурсы, где описание данных команд переведено на русский язык, и даже есть некоторые примеры их использования. Мы же не будем здесь заниматься полным переводом команд, мы будем изучать только те команды, которыми нам придётся воспользоваться. Пока их перечень будет не столь широк, но впоследствии мы к данным модулям ещё вернёмся, надеюсь, и не раз, и тогда мы уже расширим свой кругозор в знании данного модуля. А пока же мы проведём только краткий экскурс по модулю. Конечно, мы попробуем его и в работе, не без этого.

А пока давайте подключим наш модуль к переходнику TTL-USB, который в свою очередь мы подключим к ПК.

Соединим мы по следующей схеме

Переходник TTL-USB    Модуль HC-05

         VCC                             VCC

         GND                            GND

         TXD                             RXD

         RXD                            TXD

На практике это будет выглядеть примерно вот так

Image03

Подключим переходник к компьютеру, как работать с переходниками такого плана, рассказывать не буду, мы и так с ними постоянно работаем. Запустим терминальную программу, я воспользуюсь программой CoolTerm, так как у неё более гибкие настройки для пердачи данных с клавиатуры, а нам для ввода команд необходимо, чтобы каждая строка при передаче заканчивалась кодом перевода строки и возврата каретки.

Зайдём в настройки программы и настроим сначала порт

Image04

Данная скорость 38400 была выбрана потому, что модуль в режиме приёма AT-команд работает именно на такой скорости.

Теперь слева выберем пункт Receive и переключим там одну кнопку, а другую включим

Image10

Первая кнопка для окончания переданных команд символами перевода строки и возврата каретки, а вторая для того, чтобы мы свои введённые команды видели также после ввода в терминальном окне приёма.

Сохраним настройки и попробуем соединиться. Если всё удачно, то разъединяется, так как сейчас у нас модуль находится в режиме передачи данных, и, если он ещё не настраивался, то скорей всего, мы даже не знаем его адреса, его настроек. О нахождении модуля в данном режиме свидетельствует быстрые мигания голубого светодиода Поэтому нам надо как-то перевести модуль в состояние передачи AT-команд.

 

 

Для этого мы пока отсоединим переходник от USB-порта и подключим провод на ножку модуля HC-05 KEY. У кого-то она может иметь другое название, но, думаю, не перепутаете. Провод подключим вот такой и вот таким образом

Image08

Соединим данный провод с плюсом питания (с ножкой VCC)

Image09

И, не отпуская контакта, соединим переходник с портом USB компьютера и через некоторое время (через секунду или две) разъединим наш контакт KEY с контактом VCC, убрав провод. Модуль должен будет перейти в режим приёма AT-команд, о чём будет свидетельствовать очень медленная скорость мигания светодиода.

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

Image11

Модуль ответил, значит всё правильно.

Чтобы не путаться с настройками, которые были кем-то и когда-то внесены, давайте сбросим все настройки, введя команду «AT+ORGL«. Настройки должны будут сброситься к следующим параметрам:

  • Device type: 0
  • Inquire code: 0x009e8b33
  • Module work mode: Slave Mode
  • Connection mode: Connect to the Bluetooth device specified
  • Serial parameter: Baud rate: 38400 bits/s; Stop bit: 1 bit; Parity bit: None.
  • Passkey: “1234”
  • Device name: “H-C-2010-06-01”

Только настройки сразу не применятся. Надо перезагрузить модуль. Удобно сделать это, введя команду «AT+RESET«, в ответ на которую модуль перезагрузится и перейдёт опять в режим передачи данных и не сможет пока принимать команды. Чтобы он их принимал, проделаем те же действия, что и выше, для того чтобы модуль опять перешёл в режим приёма команд AT. Есть ещё один способ, но пока мы им пользоваться не будем.

Проверим теперь некоторые параметры нашего модуля.

Чтобы узнать версию прошивки, введём команду «AT+VERSION?«, на которую модуль должен будет ответить приблизительно вот так

Image12

Если прошивка не ниже данной версии, то мы можем быть уверены, что данный модуль с такой прошивкой способен работать в режиме ведущего устройства (Мастера).

Узнаем адрес устройства с помощью команды «AT+ADDR?«

Image13

По данному адресу мы и будем определять наше устройство на ведущем устройстве. В качестве ведущего устройства мы возьмём самый обыкновенный смартфон, но это чуть позже. Надо ещё как следует наиграться с командами.

Давайте запросим ещё и имя устройства с помощью команды «AT+NAME?«, на который многие модули, в том числе и мой реагируют только при наличии высокого уровня на ножке KEY, то есть при подключенном проводе. Так и сделаем

Image14

Давайте попробуем ещё это имя изменить, так как оно не очень удобное, для этого введём команду «AT+NAME:Желаемое_имя». Данную команду можно вводить без высокого уровня на ножке KEY

Image15

Проверим, что имя изменилось, только не забываем про высокий уровень на ножке KEY

Image16

Имя прекрасно применено.

Проверим пароль командой «AT+ PSWD?«

Image17

Аналогичным образом, как и имя, можно поменять и пароль.

Теперь узнаем тип устройства (ведомый или ведущий) с помощью команды «AT+ ROLE?«

Image18

0 — это значит ведомый. Тип также можно изменить в любой момент. Но нам это пока не нужно, так как мы будем работать с устройством как с ведомым.

 

 

Сбросим спаренные устройства командой «AT+RMAAD«

Image19

Теперь давайте узнаем настройки интерфейса USART командой «AT+ UART?«

Image20

Эти настройки означают: скорость 38400 кбпс, 1 стоповый бит и отсутствие контроля чётности.

В данной таблице находятся возможные варианты настроек USART

Image21

Давайте изменим, например, скорость передачи командой «AT+UART=115200,0,0«

Image22

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

Давайте перезагрузим модуль командой «AT+RESET«, после чего модуль перейдёт в режим передачи данных.

Настроим порт в терминальной программе на данную скорость и соединимся с ним

Image23

Попробуем ввести команду, на что модуль наш не прореагирует, так как режим не тот

Image24

Но не будем отчаиваться. Оказывается, чтобы отправлять команды модулю, необязательно переводить его в этот режим. Можно включить поддержку передачи AT-команд в режиме передачи данных. На короткое время (достаточно менее секунды) коснёмся проводом, который подключен к контакту KEY плюсовой шины модуля и модуль перейдёт в режим поддержки AT-команд. Правда, по характеру мигания светодиода мы это не определим, он будет мигать также быстро. Также в режиме поддержки команд мы с нами не сможет соединиться ведущее устройство. Но тем не менее, нам не потребуется для каких-то настроек постоянно вынимать провод из разъёма USB и перенастраивать порт в терминальной программе. Это уже хорошо. Сделаем данное действие и убедимся в том, что модуль также будет принимать команды, как и в режиме приёма команд

Image25

Чтобы убрать данную поддержку и чтобы модуль смог соединяться, достаточно перезагрузить его командой «AT+RESET«. Так и сделаем

Отлично! Мы уже кое-что умеем. В принципе, мы настроили модуль для передачи данных в режиме ведущего устройства.

Теперь смартфон, который у нас сегодня выступит в роли ведущего устройства. Подойдёт любой с андроидом, лишь бы встала какая-нибудь терминальная программа под Bluetooth. Я установил вот такую. Мне она показалась удобной

Image26

Во-первых, она бесплатная, не требует создания подключения заранее, а также имеет несколько кнопок с заранее сохранёнными нами строками.

Скачаем и установим программу и запустим её. Нажмём кнопку SCAN и наш модуль должен будет отобразиться в списке найденных устройств

Image27

Выберем данное устройство и попадём в диалог создания пары, в котором надо будет ввести пароль (у нас «1234») и согласиться, нажав кнопку «ОК»

Image28

Устройство появится в списке спаренных устройств

Image30

Также наши устройства создадут между собой соединение, о чём нам укажет намного медленнее мигающий светодиод на модуле. Причём мигать он будет двойными короткими вспышками.

Выберем наше устройство и попадём в диалог терминального обмена строками

Image31

Введём что-нибудь в строке и нажмём кнопку «Send ASCII»

Image33

Наш текст переместится в поле чата

Image32

Также если всё нормально со связью, мы этот же текст увидим в терминальной программе на ПК

Image34

Теперь попробуем, наоборот, послать строку из терминальной программы ПК в терминальную программу смартфона

Image35

Посмотрим, пришла ли наша команда

Image36

То есть связь у нас работает.

Таким образом, сегодня мы познакомились с очень удобным и несложно конфигурируемым устройством для беспроводной передачи данных — модулем Bluetooth HC-05. Мы научились менять различные режимы работы, отправлять команды для получения информации из модуля, а также для его настройки. Пусть это далеко не все команды, которые знает наш модуль, но принцип нам уже ясен, а с остальными ещё познакомимся. Также мы увидели на практике работу модуля в режиме передачи данных, создав соединение между модулем, подключенным к ПК и смартфоном.

Спасибо за внимание!

 

 

Тесты устройств и аксессуаров Следующий урок

 

 

Техническая документация:

Техническая документация на модуль HC-05

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

 

 

Модуль Bluetooth можно приобрести здесь HC-05

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

STM Bluetooth-модуль HC-05

5 комментариев на “Bluetooth-модуль HC-05
  1. Александр:

    Прикольно, Спасибо. С некоторыми комбинациями удалось запустить на НС-06…

  2. Максим:

    У меня может глупый, но вопрос. На Ютуб тоже в комментах его задал. Увидел фото как подключен модуль и вот сразу про согласование уровней непонятка у меня. Питаем 5V, но четко написано же LEVEL 3,3, т.е. от адаптера надо от TX к RX модуля пару резисторов в делитель сколхозить, чтобы не попортить ничего. Разве нет? От модуля к адаптеру то не страшно, а вот наоборот….

  3. Евгений:

    Кто поможет вывести через НС-05 на часы скорость, обороты и температуру двигателя (информация представлена в двоичном коде)? es55@bk.ru

  4. Vitaliy_75:

    Добрий день,подскажите пожайлуста, какие настройки необходимо изменить в программе CoolTerm в пункте Recieve? В описании написано, что нужно переключить какую — то кнопку, а вот какую, вопрос. Можно пожайлуста скрин?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*