Полное руководство по HC-06

Ниже представлены официальные/оригинальные модули HC-06 от Guangzhou Huicheng Information Technology Co., Ltd. (сокращённо HC Huicheng Information) / Wavesen. Последняя версия имеет прошивку hc01.comV2.0 и синий светодиод, но по-прежнему встречается множество старых версий с прошивкой linvorV1.8 без синего светодиода. Оба варианта работают одинаково. Новая прошивка имеет несколько дополнительных AT-команд.

Существует множество модулей, продаваемых как HC-06 и HC-06-совместимые, однако оригиналы от Guangzhou Huicheng Information имеют логотип HC на печатной плате. Хотя я обычно рекомендую искать официальные модули, SPP-профиль, используемый HC-06, довольно прост, и копии и совместимые модули работают так же хорошо. Для HC-05 это не так. Если вам нужен только Bluetooth 2 SPP модуль, то подойдёт практически всё, что заявлено как Bluetooth 2 SPP.

Собственно модуль HC-06 — это маленькая зелёная SMD-плата. Синяя плата — это плата расширения для макетной платы. Существует довольно много разных плат расширения, и все они очень похожи.

HC-06 старая версия с прошивкой linvorV1.8

Старая версия с прошивкой linvorV1.8

HC-06 новая версия с прошивкой hc01.comV2.0

Новая версия с прошивкой hc01.comV2.0

HC-06 без светодиода

Без LED

HC-06 с синим светодиодом

С синим LED

Самые новые модули имеют URL-адрес веб-сайта в верхней части.

HC-06 последняя версия

Спецификации HC-06

  • Только Slave модуль

  • Bluetooth 2.0 EDR (Extended Data Rate) 2-3 Мбит/с

  • Основан на чипе CSR BC417

  • Прошивка: linvor V1.8 или hc01.comV2.0

  • Скорость UART по умолчанию: 9600

  • Профиль UART по умолчанию: 8N1

  • AT-команды должны быть в верхнем регистре без символов окончания строки

  • PIN-код по умолчанию: 1234

Даташит V2.2 2011-04-06 для linvor V1.x (English)

Даташит V2.3 2012-02-01 для linvor V1.x (Chinese)

Даташит V2.0 2016-02-26 для hc01.comV2.00 (Chinese)

Китайские даташиты немного более актуальны.

Страница продукта HC-06 на hc01.com

На странице продукта есть ссылки для скачивания английского даташита и ZIP-архива с информацией о HC-06. Информационный пакет содержит утилиты, примеры приложений и дополнительную информацию. К сожалению, всё на китайском языке.

Информация о HC-06

HC-06 — это устройство Bluetooth 2.0 EDR, имеющее последовательный UART-слой поверх Bluetooth. UART-слой делает их чрезвычайно простыми в использовании, но скрывает функции Bluetooth от пользователя. Это хорошо, если вам нужно просто обеспечить связь двух устройств.

Bluetooth 2.0 не совместим с iOS / продуктами Apple. Если вам нужен Bluetooth-модуль для подключения к iOS-устройству, ищите Bluetooth 4/5 или BLE.

HC-06 — это модули только slave, и им требуется master-устройство для установления соединения. Slave-устройства не могут инициировать подключение, что означает, что нельзя соединить два HC-06 вместе. Master-устройством, создающим соединение, может быть HC-05 или что-то вроде Android-телефона/планшета.

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

HC-06 имеет 2 режима работы: AT-режим и режим передачи данных. При первом включении модули переходят в AT-режим. Здесь можно вводить AT-команды через проводное последовательное соединение. После установления соединения модули переходят в режим передачи данных. В режиме передачи всё, что модуль получает через проводное последовательное соединение, отправляется по беспроводному каналу на подключённое устройство. AT-команды не могут быть введены снова до разрыва соединения.

Когда HC-06 не подключён по беспроводному каналу, светодиод(ы) быстро мигают примерно 5 раз в секунду. При установлении соединения светодиоды перестают мигать (горят постоянно).

AT-команды HC-06

HC-06 запускается в режиме AT-команд при включении и ожидает команды в верхнем регистре без символов окончания строки (без \r\n). Скорость UART по умолчанию — 9600.

HC-06 имеет немного команд — кроме установки скорости и переименования, мало что можно сделать.

Команда

Описание

AT

Тест связи. Возвращает OK

AT+VERSION

Проверка версии прошивки. Возвращает linvorV1.8 или hc01.comV2.0

AT+BAUDx

Установка скорости UART. x — шестнадцатеричное значение от 1 до C: 1—1200, 2—2400, 3—4800, 4—9600 (по умолчанию), 5—19200, 6—38400, 7—57600, 8—115200, 9—230400, A—460800, B—921600, C—1382400. Отвечает OKxxxx где xxxx — новая скорость. Будьте осторожны — убедитесь, что можете использовать эту скорость, прежде чем устанавливать.

AT+NAMEновоеимя

Изменение имени модуля. Отвечает OKsetname. Максимальная длина — 20 символов. Может потребоваться перезагрузка модуля.

AT+PINxxxx

Изменение PIN-кода. Новый PIN должен состоять из 4 цифр.

AT+PN

Установить чётность: None (нет).

AT+PE

Установить чётность: Even (чётная).

AT+PO

Установить чётность: Odd (нечётная).

AT+LED0

Выключить синий LED (только прошивка hc01.comV2.0).

AT+LED1

Включить синий LED (только прошивка hc01.comV2.0).

AT+ROLE

Изменение режима Slave/Master (только прошивка hc01.comV2.0). AT+ROLE=S — slave (по умолчанию), AT+ROLE=M — master. Разницу между режимами обнаружить не удалось.

Скорость UART и PIN нельзя запросить, поэтому будьте осторожны при установке. Хотя PIN можно сбросить с помощью AT-команд, для этого нужно знать скорость, а аппаратного сброса нет, если вы забыли, на какую скорость переключились!

Общение с HC-06

Два простых способа общения с HC-06:

  • Использовать Arduino с скетчем последовательной ретрансляции

  • Использовать USB-UART адаптер

Использование Arduino с скетчем последовательной ретрансляции

Arduino можно использовать для общения с HC-06 с помощью простого скетча последовательной ретрансляции. Скетч передаёт всё, что получает через аппаратный Serial, на программный Serial, и наоборот.

Схема подключения

  • Arduino D3 (TX) → HC-06 RX через делитель напряжения (5В → 3.3В)

  • Arduino D2 (RX) → HC-06 TX

  • GND → GND

  • Arduino 5V → HC-06 VCC

Я использую готовый делитель напряжения.

HC-06 подключение к Arduino на макетной плате Схема подключения HC-06 к Arduino с делителем напряжения

Используемый мной HC-06 принимает только 3.3В на пине RX. Для безопасности я добавляю делитель напряжения между Arduino TX и HC-06 RX для понижения напряжения с 5В до 3.3В.

Некоторые более новые платы допускают 5В на пинах RX/TX и не требуют делителя напряжения.

Serial Bluetooth Terminal

Скетч Arduino

/*
 *  sketch: SerialPassThrough_SoftwareSerial_Basic
 *  martyncurrey.com
 *
 *  Использование программного Serial для связи с устройством через UART
 *  Всё, что вводится в Serial Monitor, отправляется на подключённое устройство
 *  Всё полученное от устройства копируется в Serial Monitor
 *
 *  Пины
 *  BT VCC к Arduino 5V.
 *  BT GND к GND
 *  Arduino D2 (Arduino RX) к модулю TX
 *  Arduino D3 (Arduino TX) к модулю RX. Может потребоваться делитель напряжения.
 *
 *  Предполагается использование 5В Arduino
 *  Если устройство 3.3В — добавьте делитель напряжения (5В→3.3В) между Arduino TX и RX устройства
 *  Arduino RX к TX устройства не требует делителя. Arduino распознаёт 3.3В как HIGH
 *
 */

#include <SoftwareSerial.h>
SoftwareSerial softSerial(2, 3); // RX, TX

char c=' ';


void setup()
{
    Serial.begin(9600,SERIAL_8N1 );
   Serial.print("Sketch:   ");   Serial.println(__FILE__);
    Serial.print("Uploaded: ");   Serial.println(__DATE__);
    softSerial.begin(9600);
    Serial.println("softSerial started at 9600");
    Serial.println("Ready");
}


void loop()
{
    // Чтение из Serial Monitor и отправка на UART-модуль
    if (Serial.available())
    {
        c = Serial.read();
         softSerial.write(c);
    }

    // Чтение из UART-модуля и отправка в Serial Monitor
    if (softSerial.available())
    {
        c = softSerial.read();
        Serial.write(c);
    }

} // void loop()

Использование USB-UART адаптера

Я использую USB-UART адаптер, который можно переключить на 3.3В, поэтому делитель напряжения не требуется.

Схема подключения

  • HC-06 RX → адаптер TX

  • HC-06 TX → адаптер RX

  • HC-06 VCC → адаптер 5V

  • GND → GND

HC-06 подключение через USB-UART на макетной плате Схема подключения HC-06 через USB-UART

Проверка HC-06

Подключите HC-06 и включите питание. Светодиод(ы) должны быстро мигать примерно 5 раз в секунду.

На Android-устройстве (я использую телефон Samsung) откройте Настройки и нажмите Подключения.

Android настройки подключений

Убедитесь, что Bluetooth включён.

Нажмите Bluetooth.

Android Bluetooth настройки

Начните Сканирование. Через несколько секунд должен появиться HC-06 (или что-то подобное). У меня более новый модуль, который отображается как hc01.com.

HC-06 обнаружен на Android

Это руководство сосредоточено на AT-командах. Если вас интересует использование мобильного телефона для связи с HC-06, посмотрите Bluetooth Serial App.

Для общения с HC-06 я использую Arduino с Simple Serial Monitor. Это аналог Serial Monitor Arduino IDE, но с несколькими дополнительными функциями. Вы можете скачать Simple Serial Monitor или использовать Arduino IDE. Оба варианта подойдут.

С подключённым Arduino и HC-06 откройте Simple Serial Monitor. Установите скорость 9600 и выберите No Line Ending (без символов окончания строки).

Выберите COM-порт Arduino и нажмите красную кнопку CONNECT.

Simple Serial Monitor подключение

Приложение должно подключиться к Arduino, и вы увидите приветственное сообщение.

Simple Serial Monitor приветствие

AT

Для проверки правильности подключения используйте команду AT. Это тест связи, который ничего не настраивает. HC-06 просто отвечает OK.

В текстовом поле внизу введите AT и нажмите Send.

Отправка команды AT

HC-06 должен ответить OK.

Ответ OK на команду AT

Simple Serial Monitor показывает отправленную команду синим цветом в основном окне.

AT+VERSION

Для проверки прошивки HC-06 используйте команду AT+VERSION.

Отправка AT+VERSION Ответ на AT+VERSION

HC-06, используемый в этом руководстве, имеет прошивку hc01.comV2.0.

AT+BAUDx

AT+BAUDx изменяет скорость UART последовательного интерфейса модуля. Используйте осторожно. Аппаратного сброса нет, если ошибётесь.

Если вы используете Arduino с программным Serial, не устанавливайте скорость выше 38400, так как это верхний предел работы SoftwareSerial.

AT+BAUD4 устанавливает скорость 9600.

Отправка AT+BAUD Ответ на AT+BAUD

AT+NAME

AT+NAME позволяет задать новое имя для HC-06. Это имя, транслируемое по Bluetooth. Здесь я меняю имя на Sensor1.

Примечание: может потребоваться перезагрузка HC-06, прежде чем новое имя начнёт транслироваться.

Отправка AT+NAME

Используйте Android-устройство для подтверждения смены имени.

Новое имя HC-06 на Android

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

AT+ROLE

Прошивка hc01.comV2.0 добавила команды AT+ROLE. Команды принимаются HC-06, но мне не удалось выяснить, что делает режим Master (если он вообще что-то делает). Режим Slave и режим Master, по всей видимости, работают абсолютно одинаково.

Заключение

Раньше я много использовал официальные модули HC-06 и HC-05, но несколько лет назад цены начали расти, они стали довольно дорогими, и я начал искать альтернативы. Есть дешёвые неофициальные HC-06 и HC-05 модули.

По моему опыту, все дешёвые HC-06 работали нормально, и если вам нужен просто обычный Bluetooth SPP модуль, необязательно использовать линейку HC. Гораздо более дешёвые модули, такие как JDY-31, работают отлично. Если вы хотите остаться с официальными модулями HC, то HC-02 и HC-07 — хорошие варианты (я начал использовать HC-02 в контроллере dropControllerV3).

HC-02 — это Bluetooth 2.0 и Bluetooth 4, HC-07 — только Bluetooth 2.0. Оба предлагают AT-команды, аналогичные HC-06 (у HC-02 есть пара дополнительных).

Найти альтернативу HC-05 немного сложнее. Существует много более дешёвых неофициальных модулей, но нужно быть осторожным при покупке. У многих недокументированные прошивки, что может затруднить использование.

Если вам не обязательно использовать Bluetooth 2, вероятно, лучше перейти на Bluetooth 4 (или даже BT 5). Bluetooth 4 более широко поддерживается, хотя может быть медленнее при больших объёмах данных.


Оригинал статьи: Martyn Currey — martyncurrey.com