| Сравнение модулей HC-05 и HC-06 |
|
| Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Если вы профессионально разрабатываете встраиваемые системы или увлекаетесь DIY электроникой, то скорее всего сталкивались с Bluetooth-модулями HC-05 и HC-06. Эти маленькие платы были идеальным выбором для беспроводной последовательной связи в течение многих лет, и не зря - они дешевы, надежны и работают прямо из коробки с большинством микроконтроллеров (MCU). Но вот в чем дело: выбирать между HC-06 и HC-05 не всегда просто. Я видел, как множество инженеров (включая меня) хватали сразу то, что было доступно, чтобы только позже понять, что им нужны функции, которых не было в модуле. Итак, давайте разберем, что именно отличает эти два модуля и когда вы должны использовать каждый из них. Примечание: здесь приведен перевод статьи [1]. [HC-05 vs HC-06] Оба модуля HC-05 и HC-06 основаны на одном и том же чипе CSR BC417 Bluetooth, и используют радиообмен данными Bluetooth 2.0+EDR или Bluetooth SPP (внимание: если модули действительно оригинальные, а не поддельные. Клоны часто используют другие чипы, и Bluetooth BLE вместо Bluetooth Classic SPP). HC-05 и HC-06 оба поддерживают Serial Port Protocol (SPP), смысл которого - работать так же, как будто это просто кабель для последовательной передачи данных, организованный по радио. Вы подключаете модуль HC-05 и HC-06 к Arduino или какому-нибудь другому MCU через UART, запускаете обнаружение модуля на смартфоне или компьютере (pair), и передаете данные по воздуху. Ключевое отличие HC-05 и HC-06 заключается в наборе функциональных возможностей. HC-05 может работать либо как главное устройство (master, такое как смартфон или компьютер) или как подчиненное устройство (slave). Здесь master и slave обозначает, какая сторона инициирует подключение. Master действует в радиосети как клиент, сканирует эфир и инициирует подключение к устройству slave. Устройство slave действует в радиосети как сервер, постоянно посылая в эфир оповещения о своем присутствии и принимает запросы на подключение от master. HC-06, в отличие от HC-05, фиксировано исполняет роль только slave-устройства — он сидит и ждет, пока к нему не подключится master. Это единственное, но важное отличие этих модулей, которое определяет различия в их использовании. В таблице приведено сравнение технических параметров модулей HC-05 и HC-06:
Примечание (*): верно только для официальных модулей. Клоны/подделки более дешевые, обнаруживаются в под теми же именами HC-05/HC-06, но обычно используют протокол BLE вместо Classic SPP. Поведение этих модулей для инициирования подключения также значительно отличается от Classic SPP. Оба модуля обычно продаются в составе базовых материнских плат EGBT-045MS (HC-05) и EGBT-046S (HC-06), на которых собрана необходимая обвязка - стабилизатор напряжения и преобразование уровней логики. [HC-05: назначение выводов, функции] Модуль HC-05 обладает более богатыми функциональными возможностями. У него наружу выводятся 6 выводов, а у HC-06 их только 4. Дополнительные 2 вывода дают возможность переключаться между режимами master и slave, что может использоваться для некоторых проектов. Цоколевка коннектора HC-05 и функции выводов:
Вывод STATE полезен в случае, когда ваш код должен знать, активно ли подключение Bluetooth (можно ли передавать и принимать данные). Например, если соединение неактивно, то управляющий MCU может войти в режим сна с пониженным энергопотреблением, а переход STATE в состояние HIGH может выводить MCU из этого режима. Вывод EN (Enable) или KEY это то, что позволит вам перевести модуль в режим управления AT-командами. Если в момент включения питания модуля на этом выводе удерживался уровень HIGH, то модуль активирует режим AT-команд, которыми вы можете конфигурировать такие параметры, как имя устройства, скорость UART, роль устройства master/slave (для HC-05), и другие параметры. Рабочие режимы UART-интерфейса модуля HC-05: Data Mode. Этот режим активируется по умолчанию, в нем модуль ведет себя как прозрачный мост для последовательной передачи/приема данных — любые данные, переданные вами на вывод RXD, будут переданы через Bluetooth, и любые данные, принятые через Bluetooth, появятся на выводе TXD модуля. Светодиод LED часто мигает (с частотой около 5 Гц), когда модуль ожидает соединение, и мигает с меньшей частотой (примерно 2 раза в секунду), когда соединение активно. AT Command Mode. В этом режиме модуль принимает AT-команды, которые позволяют конфигурировать параметры модуля. [HC-06: назначение выводов, функции] Работать с модулем HC-06 намного проще. У него только 6 вывода, и он поддерживает только режим slave. Обычно это именно то, что необходимо для быстрой организации связи между хостом (смартфон, компьютер) и управляемым устройством. Цоколевка коннектора HC-06 и функция выводов:
Обратите внимание, что здесь нет выводов STATE или EN. HC-06 автоматически входит в режим AT после включения питания, когда не активно Bluetooth соединение с хостом. Это может показаться удобной фичей, но есть подвох - вы должны успеть отправить AT-команду в течение 1 секунды после начала ввода, иначе модуль команду не распознает. Это означает, что вы не сможете вводить команды интерактивно в последовательном терминале; необходимо использовать программное обеспечение, которое отправляет всю команду сразу. Как только хост установил Bluetooth-соединение, HC-06 сразу переходит в режим данных (data mode), и игнорирует любые AT-команды. Еще одна причуда: HC-06 AT команды не используют\r\n в конце. Фактически, отправка символа новой строки приведет к сбою команды. Это вызывает много людей, которые привыкли к HC-05 или другим устройствам на основе AT-команд. Еще одно странное отличие HC-06: AT-команды HC-06 не используют в конце символы \r\n (символ перевода каретки CR и и символ перевода строки LF). Фактически если послать в конце AT-команды символ перевода строки, то это приведет к ошибке, и команда не выполнится. Это может быть неожиданностью для тех, кто привык к поведению традиционного интерфейса команд HC-05 или других устройств, использующих AT-команды. [Сравнение AT-команд HC-06 и HC-05] Наборы AT-команд - это то, где эти модули действительно различаются. Вот сравнение наиболее часто используемых команд:
HC-05 поддерживает более 40 AT-команд, включая расширенные функции, такие как режим запроса (inquiry mode, сканирование близлежащих устройств), привязка к конкретным адресам устройств (binding) и настройка шифрования. HC-06 ограничивается набором базовых команд: имя устройства, пароль доступа и скорость передачи данных. HC-06 использует другой формат для установки скорости UART (baud rate), так называемые нумерованные пресеты:
[Выбор между HC-05 и HC-06] Выбор между HC-06 и HC-05 сводится к тому, что требует ваш проект. Используйте HC-06, когда: • Нужен простой линк смартфон-микроконтроллер. Например, если с помощью телефона нужно управлять Arduino — машинка, управляемая через Bluetooth, система умного дома, мониторинг датчиков — здесь HC-06 отлично подойдет. Ваш телефон действует как master, а HC-06 как slave. Используйте HC-05, когда: • Обмен данными Arduino-Arduino. Это классический случай использования. Вы настраиваете один модуль HC-05 как master, и один как slave, и при включении питания они автоматически устанавливают связь друг с другом(*). Модуль HC-06 в этом сценарии может использоваться как slave, однако вам все еще потребуется HC-05 (или эквивалентное устройство) для роли master. Примечание(*): для неофициальных модулей такое простое соединение скорее всего не сработает. [Практические замечания по использованию обоих модулей] Оба модуля используют логические уровни 3.3V, но некоторые платы разработчика, такие как Arduino, используют источник питания 5V и соответствующие уровни логики. Это важно учитывать, когда вы подключаетесь, например, к микроконтроллеру платы Arduino Uno. Для соединения TX (выход модуля, вход MCU): это сигнал можно подключать напрямую. Большинство 5V MCU нормально распознают уровень 3.3V как логический уровень HIGH. Для соединения RX (выход MCU, вход модуля): понадобится делитель напряжения. Выводы HC-05 и HC-06 сигнала RX не допускают уровни логики 5V (not 5V tolerant). Простое решение - поставить резистор 1 кОм последовательно между Arduino TX и RX модуля, с резистором 2 кОм между RX модуля и землей:
Модуль не отвечает на AT-команды: для HC-05, убедитесь, что на выводе KEY установлен уровень HIGH перед включением его питания, и используется скорость 38400 при передаче строки команды, с окончанием CR+LF в конце. Для HC-06 убедитесь, что в конце команды нет символов CRLF, и вы успеваете быстро отправить команду как одиночную строку (не вводите каждый символ команды по одному). Соединение (pairing) успешно устанавливается, но данные не передаются: проверьте сигналы RX/TX и настройки скорости на обоих сторонах соединения. Самая частая ошибка - перепутаны друг с другом сигналы: TX соединен с TX и RX соединен с RX, вместо их перекрестного соединения. Случайные мусорные символы в принятых данных: несовпадение скорости. Убедитесь в том, что ваш код MCU, последовательный терминал и модуль Bluetooth имеют совместимые настройки baud rate. HC-05 не хочет входить в режим master: некоторые модули HC-05 поставляются с firmware, которое не поддерживает режим master, несмотря на заявление маркетинга. Попробуйте выполнить команду AT+ROLE=1, и если она возвратит ERROR, то вероятно это проблема firmware. Постоянно разрывается соединение: проверьте качество источника питания. Эти модули потребляют около 30 .. 40 мА, и шумные или маломощные источники питания могут вызвать подобную нестабильность. Не устанавливается соединение с iPhone. В обоих модулях используется Bluetooth Classic SPP (2.0+EDR), что iOS не допускает для аксессуаров, не сертифицированных по стандарту MFi. Однако это прекрасно работает с телефонами Android, операционными системами Windows, Linux и Mac. Для совместимости с iOS вам понадобится модуль Bluetooth Low Energy (BLE), такой как HM-10 или ESP32. Многие поддельные модули HC-05 и HC-06 используют BLE вместо SPP, возможно из соображений совместимости с iOS. [Ссылки] 1. HC-06 vs HC-05: The Complete Bluetooth Module Comparison Guide for Your Projects site:pcbsync.com. |