Перейти к основному содержимому

Bluetooth

Телефон передаёт команды роботу через Bluetooth-модуль

Bluetooth удобен, когда робот должен принимать короткие команды с телефона рядом: вперёд, стоп, включить режим, вывести телеметрию. В учебных проектах часто используют HC-06 или HC-05: для Arduino они выглядят как последовательный UART-мост, а телефон видит Bluetooth-устройство.

Коротко

Bluetooth — это радиоканал ближнего действия. HC-06 и HC-05 обычно работают как Bluetooth Classic SPP и передают байты через UART. BLE-модули вроде HM-10 используют другую модель данных: сервисы и характеристики. Перед программой нужно уточнить профиль, скорость UART, питание и формат команд.

Зачем это нужно

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

Для первых опытов лучше начинать не с моторов, а со встроенного светодиода Arduino. Если символы с телефона уверенно включают и выключают LED, значит питание, сопряжение, UART и программа уже работают.

Примеры устройств

Примеры Bluetooth-модулей

МодульТип BluetoothИнтерфейс к ArduinoЧто важно проверить
HC-06Classic SPP, обычно только принимает соединениеUARTскорость, пароль, уровень RXD
HC-05Classic SPP, может инициировать или принимать соединениеUARTрежим AT-команд и режим данных
HM-10Bluetooth Low EnergyUART к модулю, BLE GATT по радиоприложение должно поддерживать BLE
JDY-31dual-mode / SPP-вариантыUARTпрошивка и команды могут отличаться от HC-05/06

Главный вопрос: телефон видит модуль как «последовательный порт» или как BLE-устройство с сервисами? От этого зависит приложение, библиотека и формат обмена.

Главная идея

Модуль разделяет две стороны:

телефон <- Bluetooth радио -> модуль <- UART -> Arduino

Для Arduino HC-06 похож на обычный последовательный порт. Он не знает, что символ F означает «вперёд», а S — «стоп». Смысл байтов задаёт ваш скетч.

Bluetooth Classic и BLE

СвойствоClassic SPPBluetooth Low Energy
Типичный учебный модульHC-05, HC-06HM-10, BLE-платы на ESP32
Как выглядит обменпоток байтов, похожий на Serialсервисы и характеристики GATT
Для чего удобнопростой пульт, терминал, командыдатчики, настройки, экономия энергии
Частая ошибкасчитать любой Bluetooth «UART»ждать SPP там, где есть только BLE

HC-06 удобен простотой: телефонное приложение отправляет символы, Arduino читает байты. BLE полезен в более современных проектах, но требует понимать модель GATT и UUID характеристик.

Подключение HC-06 к Arduino

HC-06 передаёт команды от телефона к Arduino

Типичное подключение для учебного опыта:

HC-06Arduino UnoКомментарий
VCC5V или 3.3V по модулюмногие платы HC-06 имеют стабилизатор, но проверяйте свой модуль
GNDGNDобщий провод обязателен
TXDпин 10 Arduinoвход программного UART
RXDпин 11 Arduino через делительвход модуля часто рассчитан на 3,3 В

Если подключить модуль к аппаратным пинам 0/1, он может мешать загрузке скетча и Serial Monitor. Для учебного примера удобнее использовать SoftwareSerial.

Управление встроенным светодиодом через HC-06

Идея такая же, как в простом Bluetooth-роботе: программа читает один символ и выполняет действие. Только вместо моторов сначала управляем безопасным встроенным светодиодом.

#include <SoftwareSerial.h>

const int BT_RX_PIN = 10; // Arduino принимает TXD модуля
const int BT_TX_PIN = 11; // Arduino передаёт на RXD модуля через делитель
const int LED_PIN = LED_BUILTIN;
const long BT_BAUD = 9600;

SoftwareSerial bluetooth(BT_RX_PIN, BT_TX_PIN);

void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);

Serial.begin(9600);
bluetooth.begin(BT_BAUD);

Serial.println("HC-06 LED control ready");
Serial.println("Send 1 to turn LED on, 0 to turn it off");
}

void loop() {
if (bluetooth.available()) {
char command = bluetooth.read();

if (command == '1') {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED on");
} else if (command == '0') {
digitalWrite(LED_PIN, LOW);
Serial.println("LED off");
} else {
Serial.print("Unknown command: ");
Serial.println(command);
}
}
}

Для мобильного робота вместо прямого управления моторами добавляют тайм-аут: если новые команды не приходят, робот останавливается. Светодиодный опыт нужен именно для проверки канала без риска.

Сопряжение и отладка

  1. Подайте питание на HC-06 и убедитесь, что индикатор мигает.
  2. Найдите модуль в Bluetooth-настройках телефона.
  3. Введите пароль из документации модуля, часто 1234 или 0000.
  4. Откройте Bluetooth-terminal приложение.
  5. Отправьте 1 и 0, наблюдая встроенный LED и Serial Monitor.
  6. Если ответа нет, проверьте TX/RX, общий GND, скорость UART и уровень входа RXD модуля.

Что запомнить про Bluetooth

  • HC-06 и HC-05 обычно являются Bluetooth-UART мостами.
  • UART между Arduino и модулем не равен самому радиоканалу Bluetooth.
  • BLE-модуль может требовать совсем другое приложение и модель данных.
  • Перед моторами сначала проверьте канал на светодиоде.
  • Для робота нужна безопасная остановка при потере команд.

Практика

  1. Подключите HC-06 и управляйте LED_BUILTIN символами 1 и 0.
  2. Измените команды на A и B, чтобы убедиться, что смысл байта задаёт программа.
  3. Запишите, какая скорость UART установлена у вашего модуля.
  4. Опишите, что должен делать робот, если команда не приходила 500 мс.

Проверьте себя

  1. Где заканчивается Bluetooth и начинается UART в схеме с HC-06?
  2. Почему BLE-приложение может не работать с HC-06?
  3. Зачем нужен делитель напряжения на вход RXD модуля?
  4. Почему моторы нельзя бесконечно держать в последнем состоянии команды?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

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

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

  • Bluetooth Classic — семейство режимов Bluetooth, где SPP часто используют как беспроводной serial-порт.
  • SPP — Serial Port Profile, профиль последовательного порта.
  • BLE — Bluetooth Low Energy, вариант Bluetooth с сервисами и характеристиками.
  • GATT — модель данных BLE.
  • Сопряжение — связывание телефона и модуля с проверкой доступа.

Связанные темы

  • USB-TTL — как проверить UART-сторону модуля через компьютер.
  • Wi-Fi — когда нужен веб-интерфейс или работа через сеть.
  • Выбор способа связи — как сравнить Bluetooth с другими вариантами.

Источники