|
Миниатюрный модуль позволяет подключиться к телефонам, PDA, наладоникам, смартфонам, ноутбукам, к любым устройствам, имеющим на борту модуль Bluetooth в режиме master, и передавать данные через стандартный RS-232.
Модуль HC-04 (так коротко он называется в даташите) питается от 3.3 вольт, снабжен малогабаритной антенной, имеет TTL сигналы приема и передачи RXD и TXD стандартного RS-232, а также выход на светодиод, отображающий статус радиоканала.
Процедура подключения выглядит следующим образом: сразу после включения питания модуль отвечает на нехитрый набор AT-команд (см. далее). Настройки порта по умолчанию 9600 бод, 8 бит данных, 1 стоп-бит, без бита четности (скорость можно менять AT-командой в широких пределах). При отсутсвии связи по радиоканалу индикационный светодиод часто мигает. После того, как master Bluetooth установил соединение, светодиод переходит на постоянное свечение, модуль перестает отвечать на AT-команды, и начинает просто передавать данные. Образуется следующий канал связи:
Таким образом, можно по радиоканалу Bluetooth передавать данные на стандартный UART, имеющийся в большинстве встраиваемых систем (этот порт имеется почти во всех микроконтроллерах, либо легко организуется программно). На стороне master-устройства BlueTooth (телефон, PDA, ноутбук с Linux или Windows и проч.) появляется виртуальный COM-порт, с которым можно легко работать программно.
Модуль построен на чипе BC417143B-IQN-E4 (BlueCore4-External device) компании CSR (Cambridge Silicon Radio), см. [2], и 8-мегабитном чипе FLASH-памяти ES29LV800DB, в котором записано firmware BC417143B.
[Технические параметры модуля HC-04]
- используемые радиочастоты 2.40 .. 2.48 ГГц, диапазон ISM (регистрация и лицензирование частот не требуется), уровень мощности Class2 (+6 dBm), чувствительность приемника -85 dBm.
- протокол BlueTooth V2.0.
- возможные скорости передачи данных 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1382400 бод. Скорость может быть выбрана пользователем с помощью AT-команд, по умолчанию скорость 9600 бод, 8 бит данных, 1 стоп-бит, без бита четности
- напряжение питания 3.3 вольт, ток потребления 35 мА в режиме поиска радиосоединения, и около 8 мА, когда радиоканал установлен и функционирует, ток в режиме сна <1 мА.
- рабочий температурный диапазон -40 .. +105 oC.
- размеры 28 x 15 x 2.35 мм.
[Система AT-команд модуля HC-04]
Модуль отвечает на команды AT, когда радиоканал не установлен.
AT проверка RS-232 (в ответ на эту команду модуль выдает OK).
AT+BAUDx установка скорости, где x шестнадцатеричное число от 1 до C (1 соответствует 1200 бод, C соответствует 1382400 бод), подробности см. в даташите (пакет [3]). Измененная настройка скорости сохраняется при выключении питания.
AT+NAMEname изменение имени устройства (в нашем примере linvor) на другое имя name.
AT+PINpppp изменение пароля (PIN-кода), где pppp новый пароль. Пароль по умолчанию 1234.
[Тестирование модуля HC-04]
1. Нужно подключить светодиод и подать 3.3 вольта на модуль. Получается следующая простая схема:
2. После подачи питания светодиод на модуле начинает часто мигать, сигнализируя о готовности к подключению радиоканала. В качестве master BlueTooth я использовал телефон HTC TOUCH pro2 T7373 (Windows Mobile 6.1 Professional, OS CE 5.2.21048). Чтобы установит канал связи, нужно сначала через меню настроек включить радиоинтерфейс Bluetooth.
3. После того, как интерфейс BlueTooth включен, нужно запустить поиск новых устройств Bluetooth через Меню -> Добавить устройство.... После поиска телефон обнаружит новое Bluetooth-устройство linvor, это и есть наш радиомодуль. Для соединения с устройством щелкните на имя linvor, появится запрос пароля. В качестве пароля (PIN-код) нужно ввести 1234. После успешного подключения будет предложено выбрать имя COM-порта, с которым будет связано Bluetooth-подключение (например COM2).
4. Чтобы соединиться с устройством, нужно выбрать его в списке и щелкнуть на надписи "Соединить". Как только соединение установлено, светодиод на модуле HC-04 переключится на постоянное свечение, и через COM2 можно передавать и принимать данные.
5. Для проверки передачи данных я использовал putty (на телефоне putty Windows Mobile, см. [4], а на компьютере putty для Windows XP, см. [5]). К TTL-сигналам порта RS-232 модуля я подключил микроконтроллер Atmel AVR AT90USB162MU (установленный на макетной плате AVR-USB162MU). При таком подключении питание +3.3 вольта подается на модуль Bluetooth от внутреннего стабилизатора напряжения микроконтроллера AT90USB162MU (перемычка SJ1 должна стоять в положении 2-3).
Передачу данных я контролировал через виртуальный COM-порт USB CDC, скомпилированный из примеров библиотеки LUFA. Получилась такая тестовая цепочка:
К сожалению, связь между двумя модулями HC-04 не поддерживается, связь возможна только с master-устройством Bluetooth (любой телефон, смартфон, наладонник или ноутбук, у которого есть интерфейс Bluetooth). Однако есть возможность написать для модуля HC-04 своё firmware с любым функционалом, в том числе и с поддержкой режима master Bluetooth (см. [2] и [8]).
Резюме: радиомодуль Bluetooth HC-04 очень удобен для быстрой и недорогой реализации двухсторонней беспроводной связи с различными embedded-системами - различными датчиками, роботами, бытовыми приборами. Модуль стоит на dealextreme.com всего лишь 7.2 доллара (бесплатная доставка free chipping), его можно легко заказать по предоплате через PayPal или картой VISA, MasterCard, получите прямо на почте. Мои модули я получил через 22 дня после заказа.
[Программатор для HC-04]
Компания CSR предлагает довольно дорогие программаторы, самый простой и дешевый из них стоит около $300 (USB SPI Converter, Product ID: DEV-SYS-1808-1A), и его в России нигде не купить. К счастью, можно собрать самому довольно простой программатор, подключающийся через порт LPT компьютера. Этот же программатор позволяет делать полноценную отладку по исходному коду программы и по дизассемблерованному коду, просматривать значения регистров процессора и ячеек памяти.
Внешний вид собранного программатора:
С программатором работают GUI-программы PSTool и BlueFlash, которые прозволяют скачивать данные настроек и firmware из чипа FLASH, а также стирать и перезаписывать настройки и firmware. Утилиты PSTool и BlueFlash находятся в пакете по ссылке [8]. Кроме того, этот LPT-флешер работает как полноценный аппаратный отладчик в среде разработки xIDE фирмы CSR (находится в том же пакете).
Программа PSTool позволяет считывать, сохранять, редактировать, сливать вместе (merge), записывать в память FLASH чипа настройки модуля и настройки firmware. Настройки сохраняются в виде текстового файла с расширением *.psr. Внешний вид интерфейса программы PSTool:
Для сохранения всей FLASH-памяти целиком и для её перезаписи служит программа BlueFlash.
[Ссылки]
1. Wireless Bluetooth RS232 TTL Transceiver Module.
2. Общее описание BlueCore4-External device на сайте компании CSR.
3. Документация на модуль (описание модуля, AT-команды, даташит на чип BC417143B).
4. Putty для Windows Mobile.
5. Putty для Windows XP и других платформ.
6. Как покупать на dealextreme.
7. LUFA - бесплатная библиотека USB для микроконтроллеров Atmel AVR.
8. CSR CASIRA BLUELAB SDK v4.1 - здесь есть все необходимое для разработки и отладки firmware для HC-04 (документация, среда разработки xIDE3, примеры кода, библиотеки, утилиты для прошивки и бекапа памяти).
9. Дампы настроек (.psr) и firmware HC-04 (.xdv и .xpv), сделанные программами PSTool и BlueFlash.
|
Комментарии
2012-05-1215:23:12 Здравствуйте! Хочу использовать такой модуль для создания USB флешки с блютузом, но как я понял этот модуль не будет напрямую работать с флешкой через USB порт? Придется делать схему наподобее: USB флешка -> Преобразователь USB в RS232 -> Модуль -> Комп ?
microsin: схема конструкции зависит от того, какие примеры исходного кода Вам удастся найти, и какое конкретно будет техзадание на конечный продукт. Просмотрите SDK Casira на предмет примеров кода USB-приложений.
2012-04-0903:00:59
Залил в HC-04 прошивку от HC-05 режим, мастера не проверял, но теперь AT команды от HC05-го.
2012-03-2720:23:53 Модуль OBD2 работает на нестандартных скоростях, например 10400?
2012-03-2716:27:41 То есть, как я понял, можно слить прошивку с HC-05 и залить в HC-04, и получим поддержку мастер-устройства?
microsin: откуда Вы это поняли? Мне неизвестно, совместимы ли по программному обеспечению модули HC-04 и HC-05.
2012-03-1422:33:13 Девайс недорогой, но вот поддержка полное г..о! Документация на библиотеки скудная. в описании чипа напрочь отсутствует информация о встроенном микроконтроллер е. Хотелось бы знать его архитектуру, команды ассемблера. Примеров нет, пока ещё не понял как сделать свою прошивку вместо дефолтовой. Собственно из одного девайса хочу сделать брелок управления автосигнализаци ей - к ножкам PIO подключить кнопки. Чтобы девайс постоянно "спал" а при нажатии кнопки (по изменению сигнала, как например в контроллерах Atmel) генерилось прерывание, девайс включал блютус и пытался соединиться с "базой", соединившись проходил аутентификацию через шифрование присланной случайной последовательно сти алгоритмом 3DES. Ну а далее отсылал бы зашифрованный 3DES пакет с коммандой. И чтобы все лишние стеки протоколов Blutooth напрочь отсутствовали в прошивке.
microsin: примеры кода и документация какая-никакая все же есть. Скачайте по ссылке [8] SDK, установите и покопайтесь в нем - может найдете то, что нужно.
2012-03-0121:01:04 У всех при добавлении устройства появляются два COM-порта? Кто знает, зачем нужен второй? Подключиться к второмуCOM-порту можно, но никакого ответа от него нет. Как определить, к какому из двух портов подключаться для обмена? Перебором? Тестированием портов?
И еще проблема - обновил прошивку на ту, которая должна понимать все команды. Она понимает, но после отправки команды (по Enter) в Putty модуль начинает на нее отвечать бесконечно, те если отправить AT и нажать Enter, то он циклически отвечает ОК, пока я не нажму Enter еще раз Что не так?
2012-02-2408:25:54 Читаем начало текста "у меня из АТ команд работает только АТ+NAME" :)
AT+BAUD8 просто проглатывается без каких либо ответов, в прочем как и любая АТ команда кроме АТ+NAME.
microsin: не обижайтесь, пожалуйста, просто проведите побольше экспериментов, чтобы убедиться, что Вы правильно понимаете даташит. Ответ "ОК" будет только на команду AT, все остальные команды будут проглатываться. Используйте команду AT, если Вы заранее не знаете, на какой скорости работает модуль (т. е. если ответ OK на команду AT не поступил, но нужно последовательно перебирать весь ряд стандартных скоростей и тестировать командой AT). Далее, если Вы выдали команду AT+BAUDx, то после неё модуль будет уже работать на новой скорости, и связь с ним Вы не восстановите, пока не поменяете настройку интерфейса на новую настроенную скорость. Кроме того, Вы можете попытаться с помощью утилит PSTool и BlueFlash поменять настройку по умолчанию порта (если такая настройка там предусмотрена). Вооружитесь осциллографом, чтобы убедится в том, что настройку порта Вы поменяли. И еще - у Вас есть исходный код аналогичного по функционалу модуля в пакете CASIRA SDK. Если оригинальное firmware Вас почему-то не устраивает, напишите на основе примера из CASIRA SDK свое.
2012-02-2320:22:29 у меня из АТ команд работает только АТ+NAME, все остальное игнорится Причем если кинуть АТ+NAME? он присвоит девайсу имя "?". Все уже перепробовал, и прошивку с этого сайта залил, то же самое. Логическую единицу на 34 выход подавал, результат тот же. Очень надо поменять скорость на 115200, а не выходит. Есть идеи?
microsin: идея простая - "если ничего не получается, то прочитать наконец даташит". Нужно научиться пользоваться AT-командами модуля, которые меняют скорость, см. [3].
2012-01-3108:31:04 Заработал у меня модуль, после переустановки системы. Переставил систему, как обычно установил свой любимый bluesoleil, модуль начал отвечать на AT команды, но напрочь отказывался гонять данные между двумя портами(были запущены 2 терминала, один на BT и один на USB-COM). Так как система была свежая, сносить ее было не жалко. Переустановил еще раз без установки bluesoleil и свершилось чудо, данные стали гоняться из порта в порт и обратно. В чем конкретно была причина мне не понятно, ясно только что виноват bluesoleil. Может кому пригодится эта информация.
2012-01-0318:27:51 Подскажите, как его отучить "засыпать"? Использую его в стационарном устройстве, потребление не важно. При перерыве в трансляции даже в полсекунды сразу "засыпает", а "просыпается" секунды через 2 после возобновления.
microsin: отучить "засыпать" можно только настройкой винды или программного обеспечения, которое использует устройство, либо только с помощью модификации firmware устройства. Что конкретно надо делать - не подскажу, это нужно разбираться для каждого случая отдельно.