Bluetooth обозрение. Мини-тест модулей HC-05, HC-06, HM-10, DX-BT18.
Как уже многие могли заметить, большинство моих поделок подвижного состава имеют управление со смартфона через технологию Bluetooth.
За это время у меня накопился некоторый експириенс на эту тему и которым я срочно желаю поделиться с общественностью.
Первыми на обо рз ении будет классические модули НС-05 и НС-06.
Они, фактически одинаковые. Отличаются прошивкой. Тот, который «05-ый», можно переключить в режим Мастер. И тогда он сам автоматически будет подключаться к заранее привязанному парному устройству, как только появилось питание. В некоторых случаях – удобно. Например, джойстик или пульт сразу находят свою жертву, без участия человеков. «06-ой» такого не может. Его каждый раз требуется женить вручную.
Собраны на основе чипа BC417
Данный чип умеет только во вторую версию Bluetooth. С одной стороны это хорошо – можно его задружить с любым древним девайсом на Андроиде из ближайшей помойки. А с другой – плохо. Так как абсолютно вся техника Аппл проходит строго мимо. Ибо мало-мальски современные их устройства понимают только версию зуба 4.0 и выше (которая BLE). А все, что выпущено до iPhone 4s, хоть и имеет по пачпорту версию 2.1 ERD, но в буквальном смысле анально огорожено. Подключить разрешалось только строго сертифицированные Яблоком примочки, к которым описываемые китайские поделки, ясен пень, не относятся.
Обзоров по данным модулям – милльон, повторять их не вижу смысла.
Еще одно мелкое отличие НС-05 от 06, это работа с АТ командами. У шестерок изначально включен этот режим, и можно слать команды из консоли сразу после подключения. У 5-ой версии для этого требуется подать высокий уровень на первый пин разведенной суб-платы. Благо, контактная площадка этого пина находится скраешку, и до нее легко добраться самым обычным Дюпонтом, аккуратно подсунув его под защитную прозрачную термоусадку.
Нужен этот АТ режим, в первую очередь, чтобы выдать легко запоминаемые и адекватные имена для пачки одинаковых модулей. Ибо, когда у меня накопалась критическая масса устройств, то при подключении смартфона, отличить один НС-06 от другого стало возможным только по МАС-адресу.
А учить наизусть мак-адреса, какой для РС-трактора, какой для самосвала, а какой для тестовой платформы и т.п. — занятие так себе.
Следующий подопытный, это модуль, приобретенный под названием НМ-10 Bluetooth 4.0 BLE. Который при ближайшем рассмотрении идентифицировался как АТ-09. Прошивка версии: JDY-09-V4.3S
Собран на чипе: CC2540 или CC2541.
Основное его отличие от предыдущих двух, это способность работать с версией Блютут под номером 4.0. При этом возможность работы с более ранними версиями – отсутствует. По итогу, имеем строго обратную ситуацию с совместимостью. Относительно свежие Яблоки с модулем – дружат. (Не свежие, как уже ранее упоминалось – ни с кем не дружат). Свежие ведрофоны – в целом дружат, а вот старорежимные — однозначно в пролете. И, как подсказывает нам капитан Очевидность: никак не получится совокупить эти модули со своими старыми собратьями.
Кстати, мой ведрофон Redmi 7 при поиске, данный модуль обнаруживает, но коннектиться к нему упорно не желает. Не знаю, в чем причина: в модуле или в Сяоми. iPad mini 2, что характерно, с этим модулем работает без проблем. Как старые Sony Tablet Z & Xperia Z1.
Бонусом данного девайса является гораздо более низкое энергопотребление, в сравнении с олдовыми НС-05/06. Что, как бы вытекает из его названия и режима работы: BLE ( Bluetooth Low Energy) .
Но подробнее об этом будет чуть ниже.
И вот, некоторое время назад, в мои цепкие лапы попался ранее не ведомый науке модуль DX-BT18.
Обнаружен он был исходно в ближайшей радиолавке, после чего был немедленно заказан на АЛИ.
Стоимость модуля такая же, как и у вышеописанных, форм-фактор аналогичный. А весь прикол в том, что он умеет в двухрежимность! Т.е. эта сволочь дружит как со старорежимными девайсами, которые только со второй версией БТ, так с прогрессивными с BLE, что есть однозначно круто. Если верить описанию, то поддерживается SPP2.0 и 4.2 BR / EDR+BLE.
Опыты показали, что и iPad, и Redmi 7 и обе Sony и мой верный ископаемый Fly 440, все отлично видят и спариваются с этим чудесным устройством.
А замер энергопотребления показал, что жрет он даже меньше, чем АТ-09, который вроде тоже BLE. Чудеса, да и только!
Недостаток выискался ровно 1. Чтобы вогнать модуль в АТ-режим, и переименовать его (или просто поиграться с режимами передачи и прочим), требуется подать 0 на нужный пин. Вроде все как у всех. Даже даташит сравнительно легко нашелся, и там даже описана сия процедура. Вот только для реализации ее необходима некоторая ловкость рук и немного мошенства.
Во первых, номер пина и номер выведенной на плате ноги имеют разные, но близкие значения и их легко перепутать. Во вторых, нужно подавать 0, а не 1, как на НС-05.
А в третьих – до этого пина совсем не просто добраться. Мне пришлось аккуратно расковырять шилом термоусадку напротив нужного контакта и подсунуть туда обжатый проводок с тонким кончиком.
Кстати, для программирования модуля, гораздо удобнее оказалось заюзать удачно подвернувшийся FTDI преобразователь UART-TTL, чем подрубать Ардуину с прошивкой для работы с Seral и баловаться скоростями (некоторые модули работают на 9600 Бод, некоторым подавай 33400).
Собственно, из-за чего я вообще сел топтать клавиатуру из-за каких-то там БТ модулей. А связано это вот с чем.
На заре разработки первых прототипов ССU модуля управления для проекта «Трактордуино», я словил нежданчик. Уже, казалось бы отлаженная типовая схема: Ардуино Нано + Драйвер + БТ модуль дала сбой при попытке запитать ее от 3В, через DC-DC 5В повышайку.
Т.е. пока схема была подключена по USB, все было ок. Когда же было решено перейти на автономное питание, дабы затестить залитую прошивку, так сказать в действии, почему-то перестал работать БТ модуль. На нем не загорался светодиод, устройство в сети не находилось.
Проверка соединений, контактов и прочего к успеху не привела. От УСБ же все работало как часы.
Начал грешить на повышайку, тем более, что на ней диод после включения схемы начинал светить как-то тускловато. Попробовал другую, мало ли, попалась бракованная – но результат остался тот же.
В описалове у повышайки обещали до 200 мА при питании 1В. Казалось бы, с запасом. Тем более, что тут 3В, хоть и батарейки слегка разряженные. Но фиг. Различные игрища и комбинации (например, пробовал запитать БТ модуль от 3.3В преобразователя самой Ардуино) привели к тому, что работать оно начало только после того, как в качестве питания был заюзан литиевый акумм на 3.7В.
Почесав репу и немного подумав, я вместо установленного НС-06, воткнул НМ-10. Подкинул 3В, повышайку, и все заработало!
Далее, руки уже сами потянулись за мультиметром, и первые замеры показали, что потребление НС-06 модуля в режиме ожидания коннекта плавает в пределах 10-40 мА. Вместе с Нано и драйвером, получалось около 40-60 мА. В подключенном состоянии, потребление (чисто БТ) падает где-то до 20 мА. Немедленная проверка родственника в виде НС-05 дала ровно такие же результаты.
Испытания же НМ-10 модуля показали, что он жрет порядка 8-9 мА вне зависимости от состояния. И суммарное потребление укладывается в пределы возможности DC-преобразователя от разряженных АА-элементов.
Таким образом, выяснилось, что разница потребления между старым БТ и БЛЕ натурально разы, более того, НС-05/06 жрут в 2 раза больше не задушенной Ардуино Нано, хотя сами цифры вроде бы и не кажутся шибко пугающими в абсолютном выражении. Гугление даташитов так же показало, что 50 мА является типичным потреблением для таких модулей. Т.е. это не у меня брак, это норма(с).
Ну, а когда ко мне в пыточную попали модули BT18, то оказалось, что они лопают еще в полтора раза меньше, чем НМ-10: порядка 5-6мА. Вне зависимости от того, идет поиск или есть коннект. А так же, по какому протоколу коннект: 2.0 или 4.0. Круто, что сказать.
С нонешнего дня буду заказывать теперь только такие модуля. Однозначано.
З.Ы. настоятельно рекомендую оформить подписку о не выходе из заметки до окончания прочтения.
Arduino и модули Bluetooth HC-05/06
Bluetooth — один из самых распространённых протоколов беспроводной связи на малом расстоянии для персональных электронных устройств. С его помощью работают различные устройства ввода и управления, аудиоустройства.
На фоне остальных протоколов Bluetooth выделяется прежде всего помехоустойчивостью и простотой. От не менее распространённого Wi-Fi Bluetooth отличается в первую очередь низким энергопотреблением, что делает его доступным для автономных устройств. Благодаря этому BT получил повсеместное распространение.
Чаще всего для самоделок используются BT-модули HC-05 и HC-06. Их легко найти в продаже. HC-05 отличается от HC-06 тем, что ему доступны оба режима работы: ведомый (master) и ведущий (slave). А вот HC-06 работает только ведомым, то есть он не способен находить другие устройства и самостоятельно устанавливать с ними связь (но это можно исправить).
Оба модуля основаны на одинаковом чипе и поддерживают BT версии 2.0. Их максимальная скорость работы – 3 Мегабита в секунду.
Небольшой обзор модулей HC-05 и HC-06
Чаще всего HC-05 и HC-06 представляют собой две спаянные платы. Верхняя – заводская плата с микросхемой BC417. Нижняя – специальная плата для самодельных устройств, содержащая самые нужные ножки GPIO с шагом 2.54 мм, стабилизатор напряжения и кнопку сброса. На фотографии ниже плата с BC417:
А это — модули HC-05 и HC-06 вместе с подложкой:
HC-05 не намного дороже HC-06. Но при этом он может работать в обоих режимах прямо “из коробки”. С HC-06 же придётся повозиться, чтобы заставить его работать ведущим.
Также встречаются немного другие версии модулей. Вместо вывода EN на них выведен KEY.
Распиновка модулей
- EN — управление питанием;
- VCC — питание от 3,6 до 6 В;
- GND — земля;
- RX, TX — интерфейс UART;
- STATE — индикация работы;
- KEY — активация режима управления с помощью AT-команд.
Настройка модулей производится при помощи AT-команд. Но пин KEY есть не на всех модулях. И что с этим делать?
Пин KEY конечно же присутствует на малой плате с большим числом контактов, но не разведён на большой. Причины такого странного решения китайцев неизвестны.
Этот контакт находится здесь:
Подключение HC-05 и HC-06 к Arduino
Подключение к Arduino выполняется следующими контактами:
- GND – GND;
- VCC – +5V;
- TXD – 10;
- RXD – 11;
- KEY при обычной работе модуля не используется. Для перехода в режим AT-команд его надо соединить с +3.3V.
TXD и RXD соединены с пинами 10 и 11, потому, что аппаратный UART будет использоваться для связи с компьютером.
Согласование логических уровней
Bluetooth-модули работают с логическими уровнями 3.3 В, и использование пятивольтовой логики может вывести их из строя. Но чаще всего на плате имеется всё необходимое для согласования уровней.
Бывают ситуации, в которых между Arduino TXD — Bluetooth RXD необходимо согласование напряжения. Использование делителя – гарантия надёжной работы.
Справа приведена схема простейшего делителя:
Скетч для подключения к Arduino
Для настройки модулей можно использовать USB-UART конвертер, если вы воспользуетесь им – следующий пункт можно пропустить. Для начала нам потребуется прошить Arduino.
Скетч просто отправляет данные, полученные с компьютера, на настраиваемый модуль.