Полное руководство по 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-плата. Синяя плата — это плата расширения для макетной платы. Существует довольно много разных плат расширения, и все они очень похожи.
Старая версия с прошивкой linvorV1.8
Новая версия с прошивкой hc01.comV2.0
Без LED
С синим LED
Самые новые модули имеют URL-адрес веб-сайта в верхней части.
Спецификации 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 |
Тест связи. Возвращает |
AT+VERSION |
Проверка версии прошивки. Возвращает |
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.
Отвечает |
AT+NAMEновоеимя |
Изменение имени модуля. Отвечает |
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).
|
Скорость 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 принимает только 3.3В на пине RX. Для безопасности я добавляю делитель напряжения между Arduino TX и HC-06 RX для понижения напряжения с 5В до 3.3В.
Некоторые более новые платы допускают 5В на пинах RX/TX и не требуют делителя напряжения.
Скетч 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
Подключите HC-06 и включите питание. Светодиод(ы) должны быстро мигать примерно 5 раз в секунду.
На Android-устройстве (я использую телефон Samsung) откройте Настройки и нажмите Подключения.
Убедитесь, что Bluetooth включён.
Нажмите Bluetooth.
Начните Сканирование. Через несколько секунд должен появиться HC-06 (или что-то подобное). У меня более новый модуль, который отображается как hc01.com.
Это руководство сосредоточено на 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.
Приложение должно подключиться к Arduino, и вы увидите приветственное сообщение.
AT
Для проверки правильности подключения используйте команду AT. Это тест связи, который ничего не настраивает. HC-06 просто отвечает OK.
В текстовом поле внизу введите AT и нажмите Send.
HC-06 должен ответить OK.
Simple Serial Monitor показывает отправленную команду синим цветом в основном окне.
AT+VERSION
Для проверки прошивки HC-06 используйте команду AT+VERSION.
HC-06, используемый в этом руководстве, имеет прошивку hc01.comV2.0.
AT+BAUDx
AT+BAUDx изменяет скорость UART последовательного интерфейса модуля. Используйте осторожно. Аппаратного сброса нет, если ошибётесь.
Если вы используете Arduino с программным Serial, не устанавливайте скорость выше 38400, так как это верхний предел работы SoftwareSerial.
AT+BAUD4 устанавливает скорость 9600.
AT+NAME
AT+NAME позволяет задать новое имя для HC-06. Это имя, транслируемое по Bluetooth. Здесь я меняю имя на Sensor1.
Примечание: может потребоваться перезагрузка 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