Подключение Arduino Bluetooth модулей HC 05 HC06

Модуль Bluetooth HC-05 позволяет наладить двунаправленную радиосвязь по протоколу bluetooth при управлении различными объектами. Модуль, установленный в прибор с микроконтроллером или без, связывает его, используя радиосвязь по протоколу bluetooth с персональным компьютером или смартфоном на Android. image

Второе применение – связь двух приборов по схемам микроконтроллер–микроконтроллер или микроконтроллер–прибор. Устройство подключается через проводной интерфейс USART. Применение HC-05 прокладывает мост между приборами USART–bluetooth–USART. МК воспринимает модуль bluetooth HC-05 как ответное устройство USART, а за организацию связи отвечает электроника модуля. При использовании устройства инженеру не требуются знания в области bluetooth.

HC-05 отличается от HC-06 тем, что ему доступны оба режима работы: ведомый (slave) и ведущий (master). А вот HC-06 работает только ведомым, то есть он не способен находить другие устройства и самостоятельно устанавливать с ними связь.

Для входа в режим конфигурирования AT командами необходимо подключить контакт EN к «земле» и во время включения модуля нажать на нем кнопку. Как только индикаторный светодиод на модуле начнет мигать каждые две секунды, можно отпускать кнопку — модуль перешел в режим конфигурирования. ВНИМАНИЕ! По умолчанию скорость передачи данных в режиме конфигурирования составляет 38 400 бод.

Распиновка

  • STATE – проверка состояние модуля. На этом контакте дублируется сигнал, который отображает встроенный на плате светодиод. Если он очень быстро мигает, значит модуль находится в активном состоянии. В режиме установления связи ток составляет ~30-40 мА. Когда модуль устанавливает связь с другим устройством, светодиод просто горит. В режиме передачи данных ток составляет ~10 мА.
  • RX – получение данных
  • TX – передача данных
  • GND – подключается к земле
  • +5V – питание 5 В
  • EN (Key) – включение / выключение модуля. Если на этот контакт подать логическую 1 (5 В) – модуль выключится, если подать логический 0 или не подключаться к этому контакту – модуль будет работать.

Пример: RX/TX

image

Пример: Двунаправленная передача данных

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

Убедитесь, что HC-05 находится в режиме AT-команд, для этого перед тем, как подключить 5V (HC-05) к 5V (Arduino) зажмите кнопку Reset на модуле, затем подключите питание. Светодиод на модуле должен мигать с интервалом в 2 секунды.

Документация

Описание

HC-05 миниатюрный модуль bluetooth

HC-05  модуль беспроводной связи, использующий технологию Bluetooth. Может работать в двух режимах: режим “запрос-ответ” и режим автоматического подключения. В режиме автоматического подключения может выполнять три роли – Master, Slave и Loopback. Когда модуль находится в режиме автоматического подключения, то он передает данные автоматически, используя настройки, заданные в прошлом сеансе связи (работает как обычный UART-удлинитель). Когда модуль работает в режиме “запрос-ответ”, то пользователь может отправлять ему AT команды для установки параметров и порядка передач. Режим работы модуля может быть выбран путем установки нужного уровня сигнала на входе PIO11.

Особенности:

Области применения:

Ну вот пришла очередная игрушка для меня. Китайский bluetooth модуль HC-06 на чипе BC417. В готовой компоновке с платой подложной и выводами для подключения к Arduino.

ХАРАКТЕРИСТИКИ :

  • Протокол связи Bluetooth Specification v2.0+EDR.
  • Питание 3.3 В, модулю на фото можно подавать 5 В.
  • Мощность Class 2.
  • Энергопотребление 40-50 mA.

ПОДКЛЮЧЕНИЕ :

  • 3.3v — к 3.3 В от Arduino.
  • GND — к GND Arduino.
  • RX — к TX Arduino.
  • TX — к RX Arduino.

В китайских модулях с платой подложки, RX и TX можно подключать без делителя напряжения к выводам Arduino. Но у самого чипа логика 3.3 В . Будьте внимательны !

HC-06 или HC-05 :

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

HC-06 :

  • Работает только в режиме  ведомого (slave).
  • Заблокированы многие AT-команды.

HC-05 :

  • Работает в обоих режимах,  ведомого (slave) , ведущего (master).
  • Доступны все AT-команды(Подаем на ногу KEY сигнал +3.3V).

Более подробно об AT-командах можно прочитать в datasheet.

Простой пример работы :

Для простоты тестирования мы подключимся к модулю с телефона на OC Android. 

Первым делом скачаем терминал для телефона. Я использовал простую и бесплатную программу Bluetooth Terminal. Ссылка на Pley Market в QR-коде. Подаем питание, модуль начинает бодро моргать диодиками)). Выполним сопряжение телефона с модулем. Пароль по умолчания «1234» или «0000».

Прежде чем подключать выводы RX|TX с начало зальем простой скетч в Ардуино :

void setup() {  Serial.begin(9600);  }  void loop() {  Serial.println("Goodnight moon!");  delay(5000);  }

Посылаем в USART каждые пять секунд «Goodnight moon!». Собственно наш Bluetooth модуль передает это в терминал на телефон.

На этих базовых принципах мы и закончим нашу статью. Модуль очень прост в обращение и для самостоятельного изучения подходит очень хорошо.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Перепрошивка HC-06 в HC-05

Все знают эти bluetooth модули. Так как схема включения не сложная, по быстренькому подключил модуль к переходнику USB<->UART.

Модуль упорно отказывался работать. Постоянно зависал терминал, а на команды, описанные в даташите, модуль не отвечал.

После недолгих поисков, оказалось, что у этой платки есть несколько прошивок. Итак:

  • Версии HC-04 и HC-06 отвечают на 9600. При этом, разделителем служит таймаут. Да, да, вам нужно очень-очень быстро написать AT (при этом, без никаких /r/n) и через таймаут, модуль ответит OK.
  • Версия HC-05 отвечает на скорости 38400, при этом нужно передавать ATrn. Но, кроме того, нужно подтянуть вывод “mode” к питанию – это переводит модуль в командный режим.

У меня оказался модуль HC-06, и я подумал, что проблемы с зависанием связаны с этим. Для перепрошивки модуля, кустарно собрал программатор:

Питание взял от того-же переходника (в ft232r есть стабилизатор на 3.3 вольта). Я немного упростил ту схему, что гуляет в интернетах. Вот, что получилось:

Подключать нужно 1:1, то есть MOSI к SP_MOSI, итп.

Дальше я нашел компьютер с LPT портом и установил BlueLab. Скачать его можно вот тут, правда придется зарегистрироваться.

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

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

Сам процесс прошивки прост до безобразия – возьмите вот этот архив:

update_to_hc_05.rar

  • Считает калибровочные данные из модуля
  • Запишет новую прошивку
  • Запишет калибровочные данные

Модуль перепрошился отлично и начал отвечать на команды HC-05, но проблема с терминалом не исчезла. Как оказалось, во всем виноват сам терминал. Я использовал терминал bray’а. Я не знаю, что он там делает при инициализации, но при попытке отослать любой символ в порт, он наглухо вис.

Я взял другой терминал – termite и… все заработало. Получается, я зря перепрошивал модуль – новые AT команды мне не нужны. Возможно, вам пригодится.

(Подписаться на комментарии) | (Как правильно комментировать?)

Создать новую ветку комментариев

Вы должны войти или зарегистрироваться чтобы оставить комментарий.

image

ОБНОВЛЕНО 18 июля: Теперь вы можете войти в режим AT HC-05, используя плату Arduino (arduino uno используется в этом руководстве)

ОБНОВЛЕНО 7 июля: у меня была возможность протестировать модуль HC06. Это руководство теперь также охватывает модуль HC-06. 🙂

Наличие нескольких модулей Bluetooth с одинаковым именем может сбить с толку. Иногда может потребоваться изменить настройки по умолчанию, такие как скорость передачи данных или роль ведущего / подчиненного модуля. В этом руководстве показано, как войти в режим AT-команд модуля Bluetooth HC05 / HC-06 с помощью преобразователя USB в TTL. В качестве альтернативы для HC-05 вы можете использовать плату Arduino.

Требования:

1.HC-05 / HC-06 Bluetooth-модуль с коммутационной панелью.

2.USB в TTL конвертер: я использовал PL2303HX USB в TTL конвертер. Подойдет любой другой конвертер usb в ttl. / Доска Arduino, arduino uno, используемая в этом руководстве, должны работать с другими платами.

3. Arduino IDE / Tera Term: его можно скачать отсюда или, если вы не хотите загружать Arduino, тогда скачайте Tera Term отсюда.

Расходные материалы:

Шаг 1: Идентификация вашего модуля

image

Первое, что вам нужно сделать, это определить свой модуль. Это может быть либо HC05, либо HC06. Оба модуля одинаковы по функциональности за исключением распиновки. Кроме того, HC05 может действовать как ведущий и ведомый, тогда как HC06 работает только как ведомый. Трудно провести различие между ними, только видя. Одним из вероятных способов было бы проверить заднюю панель. Если на обороте написано «JY-MCU», это, вероятно, HC06. На моем “ZS-040” написано, и это HC05. И у модуля HC06, который я тестировал, был знак Bluetooth с тремя контурами печатной платы (см. Рисунок 2). Чтобы подтвердить подлинность устройства, вы можете включить модуль, выполнить поиск нового устройства на вашем ПК или мобильном телефоне и найти HC05 или HC06 в списке найденных устройств.

Шаг 2: Распиновка и вход в режим AT

image

PINS: контакты, найденные на панели обсуждения,

Некоторые из коммутационных панелей имеют контакт EN или даже контакт WAKE UP вместо контакта KEY.Кажется, ни один из них не подключен к каким-либо контактам модуля. Но это не имеет значения, потому что они нам все равно не понадобятся.

Как только вы определили модуль, теперь пришло время войти в режим AT. Для HC05: Подключите вывод Rx модуля Bluetooth к выводу Tx преобразователя USB в TTL, а вывод Tx Bluetooth к выводу Rx преобразователя. Также подключите их заземление, но пока не подключайте Vcc. Сначала вам придется замкнуть штифт ключа Vcc. Соедините штифт ключа и Vcc вместе на макете или любым другим способом. После подключения всех остальных контактов подключите Vcc модуля bt к Vcc преобразователя USB в TTL. Теперь светодиод на модуле будет мигать с интервалом в 2 секунды. Это означает, что он вошел в режим AT. Если светодиод мигает быстрее, режим AT не был включен. Отключите Vcc, проверьте схему и попробуйте снова. Если это не работает, то есть вероятность того, что ваш вывод KEY модуля на самом деле не спаян с KEY основного чипа, то есть с 34-м выводом. Вы можете проверить это с помощью мультиметра.

Если вы используете Arduino Uno, то подключите контакт Rx модуля Bluetooth к контакту 11 Arduino Uno (предположительно то же самое для Arduino Mega), а контакт Tx Bluetooth к контакту 10 Arduino. Также подключите ключевой вывод модуля к выводу 9 Arduino и заземление, но пока не подключайте Vcc. Вы должны сначала включить arduino, а затем подключить Vcc, как вы это делали в случае конвертера USB в TTL.

Для HC06: Просто подключите Rx модуля к Tx конвертера usb-ttl и Tx модуля. Подключите заземление и Vcc. Модуль находится в режиме AT. Не видел, что тот идет, верно? : P Оказывается, модуль HC06 постоянно настроен как подчиненный, и он всегда находится в режиме AT, когда не связан с каким-либо другим устройством. Таким образом, индикатор подтверждения не мигает, что он находится в режиме AT, как в HC05. Просто включите модуль и передайте AT-команды, чтобы изменить настройки по умолчанию.

Обзор подключения:

HC06 USB для TTL

Шаг 3: Если ключевой штифт отсутствует или не подключен

image

Только для HC05: Как указывалось ранее, некоторые модели коммутационной платы не имеют штырька ключа, вместо этого они имеют штырь EN (активировать) или штырь WAKE UP, который может или не может быть подключен к какому-либо штырю, так же как штырь STATE. В этом случае вам придется припаять провод к 34-му выводу модуля bt. Я припаял мужской разъем к моему, но если вы не можете припаять или не хотите, тогда вы можете просто держать провод (заостренный конец соединительного провода мужчина-мужчина будет удобно) при подключении Vcc к 5 вольт. Когда модуль bt находится в режиме AT, вы можете освободить провод.

HC06 не требует ключевой штифт.

Шаг 4: Настройка соединения

image

Для HC05:

Когда модуль находится в режиме AT, откройте arduino. Выберите «Инструменты»> «Последовательный порт»> «Выберите ком-порт, к которому подключен конвертер USB в TTL» (чтобы узнать, перейдите в диспетчер устройств вашего ПК> «Порты (COM и LPT)»). Теперь откройте последовательный монитор. Модуль bt теперь обменивается данными со скоростью 38400 бод. Поэтому измените скорость передачи на 38400 в правом нижнем углу последовательного монитора. Также замените «без окончания строки» на «оба NL и CR», которые находятся рядом со скоростью передачи данных.

Если у вас нет Arduino IDE, загрузите термин Tera (который является отличным терминальным эмалюатором). Термин Open Tera. Откроется всплывающее окно, выберите Serial и выберите com-порт, к которому подключен конвертер usb в ttl. Нажмите ок, и соединение будет установлено. Теперь перейдите к настройке> последовательный порт> установите скорость передачи 38400. После настройки скорости передачи перейдите к настройке> терминал> измените новую строку на CR + LF из выпадающего меню. Также установите флажок локального эха под новой строкой. Теперь настройка завершена.

Если вы используете плату Arduino (UNO / MEGA), скопируйте и вставьте следующий код, который является лишь модификацией примера Software Serial, включенного в примеры Arduino.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

SoftwareSerial mySerial (10, 11); // RX, TX

void setup () {

Serial.begin (9600);

pinMode (9, OUTPUT); digitalWrite (9, HIGH);

Serial.println («Введите AT команды:»);

mySerial.begin (38400);

}

void loop ()

{

если (mySerial.available ())

Serial.write (mySerial.read ());

if (Serial.available ())

mySerial.write (Serial.read ());

}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Загрузите код на плату Arduino, как только код загружен, откройте Serial monitor, замените «no end end» на «NL & CR» внизу, закройте его и отсоедините плату arduino от usb. Теперь снова подключите arduino к usb, подключите vcc модуля bluetooth к arduino 5volt и откройте последовательный монитор. Индикатор на модуле должен мигать с интервалом в 2 секунды. Это означает, что он вошел в режим AT. Теперь вы готовы к вводу AT-команд.

Для HC06:

Теперь у HC06 есть небольшой недостаток: он не ожидает завершения символа для каждой записи AT-команды. Вместо этого он действует на любой символ, который вы ввели через одну секунду. Следовательно, если вы не можете завершить ввод команды в течение секунды, она будет проигнорирована. Из-за этого поведения может быть крайне сложно выполнить ручную настройку ввода с помощью программного обеспечения Windows Hyper-Terminal. Терминальное программное обеспечение, которое позволяет пакетную отправку нескольких символов должны быть использованы. Я обнаружил, что Arduino работает отлично. С другой стороны, если вы используете термин Tera, вы должны записать AT-команды в блокноте, а затем скопировать и вставить его в термин Tera. Щелчок правой кнопкой мыши на консоли термина Tera автоматически вставит скопированную строку и выполнится немедленно.

Поэтому, когда модуль подключен к преобразователю usb-ttl и включен, откройте arduino, выберите com-порт usb-ttl, установите скорость передачи данных 38400. Никакие другие настройки не должны применяться в отличие от HC05. А для Tera therm выберите соответствующий com-порт, перейдите в настройки> последовательный порт> установите скорость передачи 38400, перейдите в настройки> терминал> установите флажок локального эхо-сигнала, и все будет установлено.

Шаг 5: AT команды

image

Для HC05: Введите «AT» (без кавычек) на последовательном мониторе и нажмите Enter. если появляется «ОК», то все в порядке, и модуль готов принять команду. Теперь вы можете изменить название модуля, получить адрес или версию или даже сбросить до заводских настроек. Чтобы увидеть имя по умолчанию, введите AT + NAME. Имя будет предложено, по умолчанию это HC-05 или JY_MCU или что-то в этом роде. Чтобы изменить имя, просто введите AT + NAME = желаемое имя.

Важное замечание: если ключевой вывод не высокий, то есть не подключен к Vcc во время приема AT-команд (если вы не перепаяли провод и не отсоединили его после перехода модуля в AT-режим), он не будет отображать имя по умолчанию, даже если после того, как дал правильную команду. Но вы все равно можете изменить имя с помощью команды, упомянутой выше. Чтобы проверить, действительно ли имя изменилось, выполните поиск устройства на своем ПК / мобильном телефоне. Измененное имя появится. Чтобы изменить скорость передачи, введите AT + UART = требуемая скорость передачи. Выйдите, отправив команду AT + RESET.

Самые полезные AT-команды

Более подробные AT-команды приведены в 1-м файле PDF.

Для HC06: На серийном мониторе Arduino введите «AT» (без кавычек) и нажмите ввод, «OK» подтвердит режим AT. В отличие от HC05, вы не можете видеть имя по умолчанию или скорость передачи данных. Вы можете только изменить их. Чтобы изменить имя типа AT + NAMEDESIRED NAME, обратите внимание, что между командой и именем не должно быть пробела. Модуль ответит OK вашим заданным именем. Например, AT + NAMEPROTOTYPE установит имя в PROTOTYPE. Чтобы изменить скорость передачи, введите AT + BAUDX, где X = от 1 до 9.

Для Tera Term запишите команды в другом месте и вставьте их в консоль, щелкнув правой кнопкой мыши. Нет необходимости нажимать Enter. Команда будет выполнена немедленно и подтверждена.

AT-команды HC 06 ограничены, все, что я мог найти, дано здесь.

Подробнее в 2-м pdf.

6 человек сделали этот проект!

  • MaineProjectors сделали это!

  • Stalker94 сделал это!

  • pmclagan сделал это!

  • GFT2012 сделал это!

  • sagar.salwe сделал это!

  • zikolach1 сделал это!

  • Смотрите еще 2

Вы сделали этот проект? Поделитесь этим с нами!

рекомендации

  • WIDI – беспроводной HDMI с использованием Zybo (Zynq Development Board)

  • WSPR (репортер слабых сигналов) Автономный маяк

  • Интернет вещей

  • Конкурс «Цвета радуги»

  • Party Challenge

  • IoT Challenge

137 обсуждений

MarkusR5

2 месяца назад

1 buestad

1 год назад

Я изо всех сил пытался получить AT-команды, которые устанавливают новые значения для работы на некоторых устройствах HC-06 с базой ZS-040, которые я недавно купил на eBay в Китае.

У меня это работает на других HC-06, но не на этих новых.

AT + VERSION возвращает VERSION: 3.0-20170609

Поэтому я попытался нагуглить HC-06 v3.0 и наткнулся на какой-то сайт, на котором были некоторые AT-команды, где между командой и новым значением было добавлено a =, поэтому я попытался:

AT + NAME = NewName, который вернулся ОК

Так похоже что-то случилось в прошивке 3?

1 ответ JoseS374 buestad

Ответить 6 месяцев назад

Деннис BoH

7 месяцев назад

Вы можете использовать команду “AT + HELP”, чтобы получить полный список всех команд, поддерживаемых модулем (по крайней мере, для HC-06 … Я не знаю, работает ли это для HC-05)

Conexus

2 года назад

Обратите внимание, что команды AT, отправленные на HC-06, НЕ должны сопровождаться CR LF.

Если вы отправляете AT CR LF, то через 1 секунду после получения LF HC-06 смотрит на строку и говорит, что «AT CR LF» не является допустимой командой.

Нужно просто отправить АТ самостоятельно. HC-06 отправит OK.

3 ответа LiborP3 Conexus

Ответить 9 месяцев назад

Просто провел весь вечер, что устройство, которое идентифицирует себя как HC-06, не реагирует на AT, а затем CR / LF. AT + VERSION говорит “linvorV1.8”.

JamesK66 Conexus

Ответить 1 год назад

У меня есть пара таких. Похоже, что те, кто отвечает с версией “hc01.comV2.0”, будут работать только с NO CR / LF. Те, которые отвечают «Версия прошивки: 3.0-20170609» ТОЛЬКО с CR / LF. Похоже, что он изменился с обновлением прошивки, но я еще не получил достаточно, чтобы увидеть больше различий.

whythelolface1 Conexus

Ответить 1 год назад

Это неправда. Модуль HC06, который у меня есть (версия прошивки: 3.0-20170609), ТОЛЬКО отвечает, если вы отправляете CR LF после вашей команды.

Мартиника

10 месяцев назад

Будучи новичком в Arduino, я удивляюсь тому, что инструкции HV-06 очень просты, и их нужно внимательно прочитать.

uriel01

Вопрос 10 месяцев назад

можно ою подскажите пожалуйста как подключить этот модуль (мастер) к другому hc06 плесе?

raddevus

10 месяцев назад

Также это показывает, что Serial Monitor настроен на 38400, но это всегда давало мне беспорядочный вывод. Я полагаю, что это должно быть в 9600 (это то, что работало для меня).

Это очевидно, как только вы узнаете это, но это вызвало небольшую борьбу при попытке в первый раз.

1 ответ uriel01 raddevus

Ответить 10 месяцев назад

YEP TX СОЕДИНЯЕТСЯ К PIN 11 И RX К PIN 10

1 SamuelB174

Совет 10 месяцев назад на шаге 4

В посте говорится, что скорость передачи Serial Monitor должна быть установлена ​​на 38400, но это не так. Чтобы получить правильный вывод, скорость передачи данных должна быть установлена ​​на 9600. Однако скорость передачи «mySerial» в коде не должна изменяться (38400), поскольку это скорость передачи по умолчанию для HC05.

Хуан Себастьян

10 месяцев назад

Привет, для проблем ошибка (0) или версия 3.0-20170609

BharadwajV2

Вопрос 11 месяцев назад

Что делает АТ мужская или определяет Т.е. bt = Bluetooth точно так же, как в режиме AT IN Bluetooth, пожалуйста, напишите мне на [email protected] срочно

Stevonator

Вопрос 1 год назад о введении

1 ответ 1 jrenner Stevonator

Ответить 12 месяцев назад

Не используйте символ + после AT, используйте тире – посмотрите, работает ли это. Мой использует + для изменения и – для запроса доски. Я только что получил несколько дешевых eBay, и мне было трудно понять, что скорость передачи данных составляет 9600, а Arduino 101 не будет ее программировать. Я должен был пойти в ООН.

палингенезис

Совет 1 год назад

powerpauljoseph

1 год назад

У меня есть модуль HC 06 …. он не отвечает на AT комментирует ….. как я могу решить это ..

Sohrab82

1 год назад

САМОЕ ВАЖНОЕ, ЕСЛИ ИСПОЛЬЗУЕТЕ LINUX:

RUN ARDUINO КАК ПОЛЬЗОВАТЕЛЬ КОРЕНЬ!

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий