Bluetooth-модуль HC-05 и HC-06 для Ардуино: АТ-команды и подключение

Вопросы и ответы

Bluetooth в Arduino проектах

Подключение модулей Arduino Bluetooth HC 05 HC06Проекты часто требуют удаленного управления или передачи данных с телефона или другого устройства. Один из самых популярных и удобных способов — обмен данными через Bluetooth. Интерфейс UART (последовательный) используется для соединения платы Arduino и компьютера. Поскольку любая плата Arduino имеет как минимум 1 последовательный порт UART, для подключения модуля Bluetooth не требуются специальные библиотеки и схемы.

Самыми популярными модулями являются устройства на базе микросхемы BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть как сервером подключения, так и клиентом, они имеют широкий набор AT-команд.

Для подключения к ПК вам понадобится модуль Bluetooth, плата Arduino, соединительные кабели и компьютер. Скетч для управления платой Arduino через смартфон и компьютер будет одинаковым, поскольку в обоих случаях данные будут отправляться на микроконтроллер по протоколу UART. Схема подключения модуля Bluetooth к плате представлена ​​на рисунке. Вывод RX на Arduino подключается к TDX, TX к RDX, GND к GND, 5V к VCC.

При загрузке скетча нужно отключить модуль Bluetooth, иначе при доступе к Arduino будет отображаться ошибка. Также необходимо установить приложение для отправки данных в форму на смартфоне или планшете, поддерживающем операционную систему Android. После установки приложения вам необходимо скачать скетч и подключить модуль к плате Arduino. Пример кода мигания светодиода:

Теперь вам нужно настроить соединение между телефоном и модулем. Чтобы установить соединение, вам нужно зайти в настройки телефона и включить Bluetooth. Как только устройство будет найдено, необходимо ввести пароль, обычно «1234» или «0000». Далее вам необходимо авторизоваться в приложении, нажать на кнопку «Подключить Bluetooth» и выбрать желаемое устройство. Если сопряжение выполнено успешно, светодиод на модуле начнет мигать медленнее, примерно 1 раз в 2 секунды.

В скетче светодиод включается и выключается при получении чисел «1» и «0». Помимо цифр, вы также можете использовать буквы латинского алфавита с учетом регистра.

Точно так же вы можете подключиться к модулю с помощью компьютера. Для этого существуют различные программы, которые подключаются к COM-порту. При запуске программа запрашивает номер порта, скорость и тип подключения. В случае успешного подключения на экране появится поле терминала, в котором необходимо ввести цифры / буквы с клавиатуры, при которой загорится светодиод.

Описание проекта

Мы подключим Arduino Uno к модулю nRF8001 для отправки и получения данных от него, как если бы это был последовательный порт.

Другими словами, мы будем использовать встроенную возможность действовать как UART. Мы добавим красный, зеленый и синий светодиоды и, отправив «r», «b» или «g», заставим этот светодиод пульсировать в течение нескольких мс.

Мы также введем строки в последовательную консоль и отправим их обратно на мобильный телефон.

Примечание. Все протестировано только на телефоне Android (Samsung Galaxy J3)

Сопряжение с Android

Чтобы подключить модули к устройствам под управлением Android, выполните следующие действия:

  1. Включите подключенные устройства и включите bluetooth.
  2. В открывшемся окне выберите микросхемы с названиями HC-05 или HC-06 и выберите опцию «Подключить». При выполнении первого сопряжения необходимо ввести пароль для модулей (по умолчанию «1234» или «0000». При повторном подключении этот процесс произойдет автоматически.
  3. Установите и откройте приложение Bluetooth Terminal, предназначенное для организации управления контроллерами Arduino через Bluetooth.
  4. В открывшемся меню нажмите кнопку «Подключить устройство — Защитить”.

Если ассоциация верна, светодиод на микроконтроллере загорится на несколько секунд.

Терминальное приложение Bluetooth

Подключаемся к bluetooth-модулю по bluetooth с компьютера

Для подключения к модулю bluetooth можно использовать различные программы, которые можно подключить к COM-порту. Например, такие как HyperTerminal, PuTTY, Tera Term, Termite и другие. Все они бесплатны и бесплатно распространяются в Интернете.

Удобство TeraTerm заключается в том, что он автоматически перечисляет COM-порты, назначенные модулю bluetooth вашего компьютера. Запустите программу, выберите последовательное соединение, выберите соответствующий COM-порт Bluetooth из списка, нажмите OK.

Подключение к модулю Bluetooth с помощью программы TeraTerm
Подключение к модулю Bluetooth с помощью программы TeraTerm

Когда PuTTY запускается, он также запрашивает номер порта (COM4, ​​у вас будет свой), скорость соединения (9600), тип соединения (Serial). Затем нажмите кнопку «Подключить.

Подключение к модулю bluetooth с помощью PuTTY
Подключение к модулю bluetooth с помощью PuTTY

В случае ошибки при подключении программа выдаст соответствующее уведомление. Если соединение вашего компьютера с модулем bluetooth прошло успешно, вы увидите перед собой поле терминала. Введите цифру 1 с клавиатуры в это поле — и светодиод на выводе 13 Arduino включится, введите 0 — он погаснет.

Характеристики модулей HC-05 и HC-06

Есть 2 основных модуля для Arduino Bluetooth: HC-06 и HC-05. Это несколько распаянных плат с микросхемами, выводами GPIO и регуляторами напряжения. Эти модули имеют следующие отличия:

  1. HC 06 не может работать в 2-х режимах.
  2. Чип HC 06 стоит на 0,5 доллара дороже.
  3. Скорость передачи по умолчанию для AT-команд составляет 9600 для HC-06 и 38400 для HC-05.

Модули совместимы с платами Arduino Nano, Uno и Mega. Подключение переходников происходит при наличии разделителя. Чипы адаптированы для адаптивного подключения.

Они поддерживают технологию SPP, которая имитирует последовательные порты персонального компьютера с использованием протокола RFCOMM.

Максимальная скорость передачи составляет 115 300 бод. Модули работают на расстоянии до 20 м при отсутствии огромных препятствий и помех. Они работают при температуре до + 85 ° C и напряжении 3,3 В.

Bluetooth-модули HC-06 и HC-05

Схема подключения модуля HC-05 к Arduino

Ниже представлена ​​схема подключения модуля к плате. Как видно из схемы, вывод RX модуля подключен к выводу TX Arduino, а вывод TX модуля подключен к RX Arduino. Подавать напряжение необходимо на вывод VCC и GND, можно прямо с платы Arduino или от другого источника.

Схема подключения модуля HC-06 на Arduino

Вот как все это выглядит на макетной плате

Подключение Bluetooth-модуля HC-06 к Arduino

Подключение

Модуль подключается к блоку питания и к цифровым выводам МК:

  • JDY-31> Arduino
  • GND> GND
  • VCC> 5 В
  • RX> Последовательная передача
  • TX> Последовательный RX
  • При желании EN можно подключить к любому цифровому выводу для контроля состояния подключения.

На схеме слева я напрямую подключил JDY-31 к аппаратным выводам UART, справа через делитель напряжения, состоящий из трех резисторов 10 кОм (доступен в GyverKIT). Такой делитель 2: 1 будет подавать примерно 3,1 В на вход RX модуля. Правильная схема предпочтительнее, но от прямого подключения модуль, насколько я знаю, пока ни у кого не вышел из строя.

По этой ссылке:

  • Модуль будет мешать загрузке прошивки (загружается через RX TX), во время загрузки необходимо отключить провода от выводов RX и TX Arduino
  • Вы можете общаться с модулем, используя стандарт Serial, фактически он будет дублировать монитор COM-порта

На следующих двух схемах я подключил модуль к любым двум цифровым контактам Arduino:

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

Распиновка и подключение

Модули HC-05 и HC-06 имеют следующую распиновку:

  • IT — пин для активации и деактивации чипов;
  • VCC — контакт для питания + 5В;
  • GND — земля или непрограммируемый порт, необходимый для обеспечения стабильного напряжения;
  • TXD и RXD — шина для обмена информацией с микроконтроллером, входящая в интерфейс UART;
  • STATUS — индикатор состояния модуля;
  • KEY — пин для активации командного режима AT.

Расстояние между кабелями, расположенными на поверхности модулей, составляет 1,5 мм. По этой причине к ним необходимо припаять 5 проводов, чтобы надежно соединить микросхемы и пины контроллера Arduino.

При подключении модуля bluetooth к Arduino рекомендуется использовать штекерные разъемы.

Чипы необходимо подключать в следующем порядке:

  1. Вывод VCC на порт 5 В.
  2. Вывод TX на шину RXD.
  3. Вывод RX на шину TXD.

Распиновка модуля

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

После подключения технического оборудования необходимо настроить работу микросхем по интерфейсу USART-Bluetooth.

Как работает nRF8001

Одной из интересных особенностей nRF8001 является то, что его пользовательский интерфейс представляет собой UART.

Другими словами, те же старые серийные Tx и Rx, что делает его очень простым в использовании. Первые три контакта на плате — это интерфейс SPI, SCK — это просто часы, MISO — это Master In Slave Out, а MOSI — Master Out Slave In.

Эти четыре контакта идут к Arduino, как показано на схеме, и не подлежат обсуждению. REQ сигнализирует nRF, что Arduino что-то означает, а RDY сообщает Arduino, что nRF что-то означает и должен перейти на один из контактов запроса прерывания Arduino, который равен 2 или 3.

RST — это вывод сброса, который восстанавливает nRF при загрузке. REQ используется аналогично SS, с которым вы могли столкнуться в других приложениях SPI. Более подробную информацию о своем nRF8001 у Адафрута можно найти по этой ссылке.

Взаимодействие HC-06 с компьютером

На видео ниже показано, как подключить HC-06 к персональному компьютеру или другому устройству Bluetooth.

Примечание. Загруженное видео, которое программа, которую вы используете в качестве монитора последовательного порта (в данном случае Teraterm), подключает к COM-порту ВХОДЯЩИЙ (входящий). Это не верно. Должен использоваться порт COM OUTPUT.

После подключения HC-06 откройте Teraterm или другой подходящий терминал. Выберите последовательный порт, отвечающий за связь с HC-06 (подробности смотрите в видео).

После правильного подключения HC-06 можно отправлять данные на Arduino и обратно. Если вы загрузили второй эскиз, вы можете включить / выключить светодиод, отправив символы «n» и «f» соответственно.

Пример Echo

Описание модуля Bluetooth HC 06

Все существующие типы модулей Bluetooth имеют свои особенности, но схожи по функциям и работе. Один из видов модулей — Bluetooth HC 06. Со стороны Arduino модуль выглядит как обычный последовательный интерфейс, поэтому вы можете сразу наладить взаимодействие с устройством на компьютере.

Основные возможности модуля:

  • Электропитание 3.3В — 6В;
  • Максимальное входное напряжение 5 В;
  • Максимальный ток 45 мА;
  • Скорость передачи данных 1200-1382400 бод;
  • Рабочие частоты 2,40 ГГц — 2,48 ГГц;
  • Поддержка спецификации Bluetooth версии 2.1;
  • Низкое энергопотребление;
  • Высокий уровень защиты данных;
  • Дальность связи 30 м;
  • Для подключения к смартфону используются следующие данные: пароль «1234», скорость передачи 9600, название модуля HC-06.

arduino bluetoorh 1

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

  • VCC, GND — плюс и минус питания;
  • RX и TX — приемник и передатчик;
  • MCU-INT — отображает статус;
  • Clear (Сброс) — сбрасывает и перезапускает модуль. Последние два пина обычно в работу не вовлекаются, поэтому сейчас выпускают модули без этих контактов.

Модуль HC-06 используется только в режиме slave, т.е он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи» можно изменить с помощью AT-команд.

В модуль не входят соединительные кабели.

Библиотеки

требуется только одна библиотека: библиотека SPI, которая автоматически устанавливается вместе с Arduino IDE. Но если у вас его нет, вы можете скачать его отсюда.

Вам также потребуется загрузить и установить приложение Nordic Android nRF UART 2.0 из Play Store на свой телефон Android. У меня нет iPhone для тестирования, но он должен работать и на устройствах Apple.

LED скетч для Arduino и HC-06

Эта программа дает возможность включать / выключать светодиод, отправляя команды на Arduino через Bluetooth.

AT-команды

Используя AT-команды, вы можете изменить настройки по умолчанию. Обратите внимание, что в 2018 году модули начали поставляться с разными прошивками, и некоторая информация, ранее описанная в Интернете, устарела. Я описываю настоящие команды на 2019 год.

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

В Serial Monitor введите AT-команду. В ответ мы получаем ОК.

Чтобы изменить имя модуля, введите команду AT + NAME = CAT-06, где CAT-06 — новое имя. Имя не должно превышать 20 символов.

Откройте для себя версию модуля: AT + VERSION. Ответ: ВЕРСИЯ: 3.0-20170609.

Смена пароля: AT + PSWD: «0000», где 0000 — ваш новый пароль.

Также есть команды для изменения скорости, но здесь нужно быть осторожным. После изменения скорости старые скетчи работать не будут, нужно внести в них изменения, чтобы они соответствовали новым настройкам. Не уверен, стоит ли этим увлекаться.

Скетч для Arduinoдля работы по bluetooth

Напишем этот скетч и загрузим его в память Arduino:

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

SoftwareSerial

Например, мы подключаем модуль по второй схеме (на выводах D2 и D3) и загружаем простую программу, которая будет отправлять данные из последовательного программного обеспечения (на выводах D2 и D3, Bluetooth) на оборудование (что мы видим через дверной монитор в Arduino IDE):

Мы открываем терминал и порт монитора, и мы можем общаться с компьютером, Arduino действует как посредник и передает данные с Bluetooth на USB и наоборот:

Аналогичным образом SoftwareSerial можно использовать для программ и приложений, если оборудование UART на Arduino необходимо для других целей.

Echo скетч для Arduino и HC-06

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

Примечание. Если вы используете Arduino Mega, измените строку кода while (Serial.available ()); из while (Serial.available ()> 0) ;. Иначе скетч не получится.

Настройка JDY-31, AT команды

Также мы рассматриваем конфигурацию самого JDY-31, это делается с помощью AT-команд:

  • Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
  • Загрузите пустую программу в Arduino (File / New). Или любой другой, не связанный с Serial. Или подключаем вывод RST к GND, чтобы микроконтроллер не запускался и нам не мешал
  • Подключаем JDY-31 к RX TX Arduino (аппаратный последовательный) наоборот: TX> TX, RX> RX
  • Откройте монитор порта, установите текущую скорость модуля (по умолчанию 9600 бод), конец строки NL и CR

Отправляем команду AT + VERSION. Если все сделано правильно, модуль ответит + VERSION = JDY-31-V1.35, Bluetooth V3.0

Командование Описание Отвечать
В + ВЕРСИЯ Информация о версии + ВЕРСИЯ = JDY-31-V1.35, Bluetooth V3.0
ПРИ + СБРОС Перезагрузить + ОК
AT + ДИСК Отключить + ОК
AT + LADDR Требуется MAC-адрес + LADDR = 5C7B00006378
AT + BAUD Запросить скорость текущего порта. Код:
  • 4 : 9600
  • 5: 19200
  • 6 : 38400
  • 7: 57600
  • 8: 115200
  • 9: 128000
+ BAUD = 4
AT + BAUDx Установите скорость порта, где x — код (см. Выше). Пример настройки скорости 115200: AT + BAUD8

Примечание: после перезагрузки модуль будет работать с AT-командами на новой скорости!

+ ОК
AT + PIN Текущий запрос PIN-кода + PIN = 1234
AT + PINx Установка булавки. Пример: AT + PIN1234 + ОК
AT + NAME Запрос имени текущего модуля + НАЗВАНИЕ = JDY-31-SPP
AT + NOMEx Настройка имени формы. Пример: AT + MYBTNAME + ОК
ПРИ + ПО УМОЛЧАНИЮ Сброс настроек + ОК

Схема соединения

Все детали соединяем по следующей схеме:

Собранный проект выглядел так:

HC-06 – bluetooth модуль (slave)

Модуль Bluetooth HC-06

Читайте также: Передача данных через Arduino на частоте 433 МГц

Оцените статью
Блог про Arduino