2022-12-09 16:41:53

Bluetooth модуль HC-06 в руках дилетанта

В мемориз Mac OS Bluetooth Arduino

HC-06

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


Немного о предметной области. Bluetooth модули HC-05 и HC-06 предназначены для беспроводной передачи данных в DIY проектах на базе Arduino и других МК. Они весьма доступны по цене на алиэкспресс и достаточно функциональны. По факту, они предоставляют беспроводной последовательный порт (UART) через bluetooth. И, в отличие от еще более дешевого JDY-23 с технологией пониженного энергопотребления BLE, к ним можно нормально подключаться штатными средствами Android-телефона. 

HC-05 более продвинутый и может выступать как ведущим, так и ведомым. Более простой HC-06 может быть только ведомым т.е. не может инициировать соединение.

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

Итак берем USB-Serial преобразователь, вроде CH340 или CP2102 с того же алиэкспресс, подключаем к нему HC-06 (не забываем, что RX в TX, а TX в RX), подключаем к компьютеру, открываем какую-нибудь программу для работы с последовательным портом, например, СoolTerm для мака (далее буду описывать относительно ее), выставляем параметры соединения как из примера и... понимаем, что AT-команды либо не работают вовсе, либо работают не так. 

Для того, чтоб все работало с HC-06 нужно выставить следующие параметры:

  • скорость соединения 9600 (а не 38400 как для HC-05);
  • конец строки "00 0B" (а не CR+LF как для HC-05);
  • режим терминала "Line Mode", а не "Raw Mode" чтоб сначала набрать, что надо, а потом отправить все;
  • "Local Echo" чтоб видеть диалог, а не только ответы, но тут дело вкуса.

 

И вот теперь с модулем стало можно общаться, на команды отвечает и параметры принимает. Еще одно отличие от HC-05 это то, как работают AT-команды. У HC-06 между командой и значением нет никаких разделителей, так же нельзя ничего спросить знаком вопроса, например:

AT+NAME установит модулю пустое имя, а не покажет текущее, AT+NAME? установит имя "?" ну и так так далее.

Ну и примеры правильных команд:

AT+BAUD8 - установит скорость 115200, AT+NAMEHC-06-11500 установит имя "HC-06-11500" и так далее.

Еще про команды можно посмотреть здесь.

Я потратил вечер на то, чтоб дойти до этих различий методом около-научного тыка, и получить от HC-06 желаемый режим работы, надеюсь моя писанина сэкономит вечер вам)