Главная → Связь

Bluetooth-модули HC-05 и HC-06: обзор и подключение

24 сентября 2026 · Связь

Две платы на одном чипе

Когда надо добавить в самоделку беспроводной «провод» — чтобы телефон или вторая Arduino видели плату как обычный COM-порт, — почти всегда берут HC-05 или HC-06. Оба построены на чипе CSR BC417143 и работают по Bluetooth 2.0 + EDR с профилем SPP: модуль на 2,4 ГГц умеет менять частоту адаптивно (adaptive frequency hopping) и выдаёт по воздуху до 3 Мбит/с в режиме EDR. Разница не в железе, а в прошивке: HC-05 умеет быть и ведущим, и ведомым, HC-06 — только ведомым, он сидит и ждёт, пока кто-то подключится. Ниже — цифры из datasheet Shenzhen SHSD Technology, порядок подключения и то, на чём новички их губят.

HC-05: master и slave по выбору

У HC-05 два режима работы: командный (order-response) и режим автоматического соединения, и три роли — master, slave и loopback. Переключатель — вывод PIO11, на отладочной плате он подписан KEY или EN: подал на него высокий уровень — командный режим, низкий или висит в воздухе — обычная передача данных. В командный режим модуль входит при подаче высокого уровня на PIO11 до включения питания; скорость порта в командном режиме — 38400 бод, а в режиме данных — та, что настроена (по умолчанию 9600). Команды HC-05 заканчиваются переводом строки CRLF: «AT+ROLE=1\r\n» делает модуль мастером, «AT+PSWD=1234» задаёт пин pairing. Команды чувствительны к регистру.

HC-06: только ведомый, но проще

HC-06 — slave-only: соединение инициирует мастер (телефон, ПК или HC-05). Два HC-06 между собой не соединятся никогда — ведомый сам ничего не начинает. Прошивка либо linvor V1.8, либо hc01.com V2.0; при подаче питания модуль сразу в AT-режиме, после установления связи переходит в прозрачную передачу. Команды вводятся ЗАГЛАВНЫМИ и без переводов строк: «AT» возвращает OK, «AT+VERSION» показывает прошивку, «AT+BAUD8» поднимает скорость до 115200, «AT+NAMEPump1» переименовывает модуль, «AT+PIN5678» меняет пин. Характерная беда: если случайно задал неверную скорость и не вспомнил какая — аппаратного сброса нет, скорость и пин модулем не читаются, спасает только перебор от 1200 до 1382400.

Характеристики по datasheet

Параметр HC-05 HC-06
Чип CSR BC417143 CSR BC417143
Bluetooth 2.0+EDR, class 2 2.0+EDR, class 2
Роли master / slave / loopback только slave
Питание модуля-переходника 3,6–6 В 3,6–6 В
Питание ядра 3,1–4,2 В 3,1–4,2 В
Уровень UART 3,3 В 3,3 В
Ток при pairing 30–40 мА 30–40 мА
Ток в передаче 30–40 мА (pairing) 8 мА
Чувствительность до −80 дБм до −80 дБм
Мощность выхода −4…+6 дБм −4…+6 дБм
Скорость UART по умолчанию 9600 данных, 38400 в AT 9600, 8N1
Температура работы −25…+75 °C −25…+75 °C
Размер ядра 27 × 13 × 2 мм
Пин pairing по умолчанию 1234 1234
iOS / iPhone НЕ ПОДКЛЮЧАТСЯ — нужен BLE

Подключение к Arduino и ESP32

На отладочной плате четыре контакта: VCC, GND, TXD, RXD (у HC-05 ещё KEY/EN и STATE). Крест-накрест: TX модуля — RX платы, RX модуля — TX платы.

  1. Arduino Uno (5 В). VCC модуля — от 5 В: на плате стоит стабилизатор, который держит на ядре нужные 3,1–4,2 В. TXD модуля (3,3 В) — прямо в пин D2, для встроенного входа Arduino это честная «единица». А вот TX Arduino (5 В) в RXD модуля — только через делитель: резистор 1 кОм последовательно и 2 кОм на землю, на стыке получаются нужные модулю 3,3 В.
  2. ESP32 (3,3 В). Проще некуда: и логика модуля, и логика ESP32 — 3,3 В, делитель не нужен. Питание — 3,3 В или 5 В от платы (тоже через встроенный стабилизатор модуля), земля общая.
  3. Скорость. SoftwareSerial надёжно тянет примерно до 38400 бод, выше растёт доля ошибок. Если надо 115200 — бери плату с аппаратным Serial1/Serial2.

Схема для кода ниже (Arduino Uno): HC-06 или HC-05 в режиме slave — VCC на 5 В, GND на GND, TXD в D2, RXD через делитель 1к/2к от D3. Реле-модуль — на D8.

// Управление реле из телефона по Bluetooth (SPP)
// HC-06 или HC-05 в режиме slave, 9600 бод, 8N1
#include <SoftwareSerial.h>
SoftwareSerial BT(2, 3);       // RX, TX — как подключено в схеме

const int RELAY = 8;

void setup() {
  pinMode(RELAY, OUTPUT);
  Serial.begin(9600);
  BT.begin(9600);              // скорость из AT+BAUD, заводская 9600
}

void loop() {
  if (BT.available()) {
    char c = BT.read();
    if (c == '1') digitalWrite(RELAY, HIGH);  // телефон отправил «1»
    if (c == '0') digitalWrite(RELAY, LOW);   // телефон отправил «0»
    Serial.write(c);           // дубль в монитор порта для отладки
  }
  // Статусы плате на телефон: BT.print("T=25.4\n");
}

Частые ошибки

  1. Кормят RXD модуля пятью вольтами без делителя. Ядро BC417 питается 3,1–4,2 В, вход UART — CMOS 3,3 В с внутренней подтяжкой. Пять вольт в лоб — за пределом; модуль может жить неделями, а потом деградирует. Делитель копеечный — ставь сразу.
  2. Шлют «AT» в обычном режиме передачи. HC-05 в режиме данных молчит на команды: ни ответа, ни ошибки, просто тишина. Чтобы команды заработали, надо подать высокий уровень на KEY/EN (PIO11) до включения питания или зажать кнопку на плате, если она есть.
  3. Путают формат команд между модулями. HC-05 ждёт CRLF в конце каждой команды и понимает «AT+ROLE=1», «AT+PSWD=1234». HC-06 ждёт строго заглавные буквы и НЕ терпит переводов строк: «AT+BAUD8» — и всё, без \r\n. Одна и та же команда в чужом формате вернёт ошибку или молчание.
  4. Пытаются связать модуль с iPhone. Bluetooth 2.0 SPP с устройствами Apple не работает — нужен BLE-модуль типа HC-08. С Android и ПК — без проблем.
  5. Пара из двух HC-06. Ведомые не инициируют ничего, два ведомых никогда не соединятся. Правильный рецепт: HC-05 настроить мастером (AT+ROLE=1, AT+CMODE=1) — он найдёт и запомнит HC-06.
  6. Светодиод мигает — связи нет. Быстрое мигание (примерно 5 раз в секунду) — подключения нет, ровное свечение — связь установлена. Если связь рвётся или идут пропуски символов, проверь сначала делитель и общий провод, потом скорость порта с обеих сторон.

Что взять под задачу

Связь между двумя Arduino без проводов — берите HC-05: режим мастера сам найдёт HC-06 и запомнит его. Если телефонные команды — не предел и нужна скорость — смотри радиосвязь nRF24L01+. А если хочешь управлять нагрузкой со смартфона — ставьте модуль в паре с реле-модулем.

Информация собрана из открытых источников и паспортов производителей и не является истиной в последней инстанции. Характеристики, распиновку и совместимость проверяйте по документации конкретной партии модуля перед покупкой и подключением.

Читайте дальше

Готовые проекты

Автополив теплицы на ESP32: датчик влажности почвы, помпа и реле

Что собираем Теплица живёт по своему расписанию: вода нужна растениям каждый день, а хозяин бывает раз в неделю. Соберём систему, которая поливает…

Читать обзор →
Дисплеи

Цветной TFT-дисплей 1.8″ на ST7735: обзор и подключение

Экран 16×2 показывает только готовые символы из своей прошивки. Этот модуль — другой жанр: 128×160 = 20 480 пикселей, и каждый закрашивается…

Читать обзор →
Питание

Модуль часов реального времени DS3231: обзор и подключение

Зачем плате Arduino часы У Arduino и ESP32 есть таймеры, но нет часов: millis() честно считает миллисекунды с момента включения, а какой…

Читать обзор →