В мемориз Mac OS Bluetooth Arduino
Речь пойдет о весьма популярном модуле 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 нужно выставить следующие параметры:
И вот теперь с модулем стало можно общаться, на команды отвечает и параметры принимает. Еще одно отличие от HC-05 это то, как работают AT-команды. У HC-06 между командой и значением нет никаких разделителей, так же нельзя ничего спросить знаком вопроса, например:
AT+NAME
установит модулю пустое имя, а не покажет текущее, AT+NAME?
установит имя "?" ну и так так далее.
Ну и примеры правильных команд:
AT+BAUD8
- установит скорость 115200, AT+NAMEHC-06-11500
установит имя "HC-06-11500" и так далее.
Еще про команды можно посмотреть здесь.
Я потратил вечер на то, чтоб дойти до этих различий методом около-научного тыка, и получить от HC-06 желаемый режим работы, надеюсь моя писанина сэкономит вечер вам)