Bluetooth
«Синий зуб» сейчас получил большое распространение. Он есть почти в каждом сотовом телефоне, большинстве ноутбуков или можно в любом компьютерном магазине купить компактный адаптер и вставить в компьютер. Все больше появляется различных мобильных устройств и игрушек управляемых по нему. Все к большему числу серьезных устройств можно подключиться без труда и проводов. Так давайте тоже начнём применять его и в своих конструкциях.
Bluetooth адаптеры
Такой адаптер очень прост в использовании, т.к. его можно подключить к микроконтроллеру по UART, что, по сути, превращает его в радио COM порт.
Сейчас на рынке есть множество разнообразных Bluetooth адаптеров с разными характеристиками. Средняя цена – 400-500р. Но этой весной в Китайских Интернет магазинах появился адаптер HC-05 по цене в 10$, а за лето успели подешеветь до 6.6$, что в переводе на нашу валюту ~190 рублей.
Большинство синих имеют на борту следующие порты: UART, SPI, USB и PCM для передачи звука. SPI используется для прошивки. По UART можно подключить такой адаптер к любому контроллеру. В статье будет рассмотрено подключение по UART к COM порту компьютера и к микроконтроллеру PIC6F873A на примере выше упомянутого Bluetooth HC-05.
Для подключения адаптера разработал небольшую платку переходник с разводкой модуля и согласованием питания и линий связи 5В и 3,3В.
Схема и плата адаптера
Схема
Печатка
Во главе платы модуль Bluetooth HC-05. Резисторы R1 и R2 0805 по 4,7кОм. Небольшой светодиод в корпусе 0604 или 0805 с резистором на 470-510 Ом в корпусе типоразмера 0805, сигнализируют о наличие питания. В согласование питания приняли участие L78L33ABUTR и два конденсатора по 0,1мкФ типоразмера 0805. На плате есть две длинные проводные перемычки, которые в угоду габаритам заменили 2 длинные дорожки идущие по краю платы.
Настройки HC-05
Данный модуль пришёл с программным обеспечением Linvor V1.5, со следующими настройками по умолчанию:
- Настройки порта – 9600 8N1
- Пароль – 1234
Настройки можно изменить с помощью AT команд, к сожалению, у этой прошивки список этих команд не богат.
AT | OK | Проверка модуля. |
AT+VERSION | OKlinvorV1.5 | Возвращает версию прошивки. |
AT+BAUD4 | OK9600 | Установка скорости: 1 — 1200 2 — 2400 3 — 4800 4 — 9600 (по умолчанию) 5 — 19200 6 — 38400 7 — 57600 8 — 115200 9 — 230400 |
AT+NAME | OKsetname | Переименование модуля. Новое имя пишется сразу после команды. |
AT+PIN | OKsetPIN | Смена пин кода. |
AT+PN | OK None | Установка чётности модуля — нет. |
AT+PO | OK Odd | Установка чётности модуля — нечётный. |
AT+PE | OK Event | Установка чётности модуля — чётный. |
Представленный модуль поддерживает работу, как мастера, так и подчинённого устройства на скоростях до 115200.
Испытание
Как уже было сказано ранее модуль, по сути, является беспроводным UART (COM) портом, а значит самый простой способ его проверки – это подключить его к COM порту компьютера. На компьютере было открыто 2 терминальные программы: одна для виртуального COM порта синего зуба, а вторая для виртуального порта USB-UART адаптера на ft232. После подачи питания от USB оба модуля начали работать: первым автоматически нашёлся и подключился проводной адаптер, а беспроводной для начала пришлось, без труда, найти обычным USB Bluetooth адаптером, потом подключиться с вводом пароля, только после чего он стал доступен для работы.
COM+Bluetooth – USB Bluetooth
Как видно: всё что вводиться в терминале ft232 отображаться в терминале блютуза и наоборот.
Bluetooth и Ft232
Так же Bluetooth адаптер был подключен к микроконтроллеру.
PIC16F873a + Bluetooth
Сразу после подключения в терминал посыпались посылки.
Посылки с контроллера
Статья обновлена 24.01.2012
Alex_EXE | 04.09.2011 | Связь |
Altais пишет 04.09.2011 в 23:13 #
Обрати внимание на линию питания и включение стабилитрона в схеме)
Alex_EXE пишет 05.09.2011 в 00:29 #
Спасибо, недоглядел, исправил.
atlantis пишет 06.09.2011 в 21:30 #
bluetoothHC-05.rar 404 — Не найдено
Alex_EXE пишет 06.09.2011 в 23:41 #
Исправил
Михаил пишет 20.09.2011 в 13:15 #
Как использовать линии RTS и CTS? Возможно ли это? Нужна другая прошивка и есть ли она в открытом доступе?
Alex_EXE пишет 20.09.2011 в 20:58 #
Насчёт перепрошивки модуля нечего сказать не могу. Но этот блютуз не оригинальный, оригинальный HC-05, если посмотреть в интернете доки, обладает большим функционалом. Так же есть и другие модули. К линиям RTS и CTS попробую подключиться и проверить их работоспособность, но около выходных.
Михаил пишет 21.09.2011 в 17:16 #
А в чем проявляется оригинальность? В смысле оригинал? Я думал что это изначально китайская приблуда!!! Оригинальный китай и не оригинальный?)))))) Или они просто что-то как всегда скопировали, а прошивочку не долепили?
Alex_EXE пишет 23.09.2011 в 00:56 #
Китайцы без труда и зазрения совести подделывают и свои приблуды.
Как писал в предыдущем комментарии, оригинальный модуль обладает большим функционалом, а не всего несколькими AT командами, которые с трудом удалось откапать.
Но самую главную функцию он выполняет 🙂 .
Владимир пишет 23.09.2011 в 18:20 #
А как заставить работать на другой скорости, например на 10400 ?
Alex_EXE пишет 23.09.2011 в 23:11 #
С этим модулем, думаю, не выйдет, все поддерживаемые скорости приведены.
Valera18 пишет 31.05.2012 в 23:47 #
А могут ли взаимодействовать два модуля Bluetooth HC-05?
Один передаёт другой принимает.
Alex_EXE пишет 31.05.2012 в 23:59 #
Именно тот, про который писал, с прошивкой Linvor V1.5 — нет.
Но есть другие версии, в том числе и HC-05, которые могут работать не только как подчинённый, но и как мастер (к подчинённому подключается мастер). Позже об этом напишу.
kiluch пишет 16.06.2012 в 19:33 #
А вот если состыковать HC-05 c сотовым (Android4), смогу ли я увидеть полученные циферки без специального программного обеспечения и сохранятся ли они хотябы в виде файла на сотовом телефоне.
Alex_EXE пишет 17.06.2012 в 12:36 #
На любой платформе с любой системой нужно специальное ПО.
Valera пишет 05.09.2012 в 21:40 #
Какой диапазон питания у модуля bluetooth hc-05.
Минимальное и максимальное напряжение?
Alex_EXE пишет 06.09.2012 в 00:17 #
Рабочее напряжение 3.3В, если сильно отклоняться — то на свой страх и риск.
Zyx пишет 13.11.2012 в 00:09 #
На 5 вольтах работают без проблем. 7805 в помощ.
Alex_EXE пишет 14.11.2012 в 17:45 #
Работать то может и работает, но как долго, не откажет ли в самый неподходящий момент, не упадут ли со временем характеристики — вот вопросы с которыми Вы можете столкнуться.
В документации к нему прописано 3.3В и думаю в решение об выборе рабочего напряжения стоит исходить из нее.
Алексей пишет 22.02.2013 в 20:01 #
В статье указано, что HC-05 поддерживает usb. Нельзя ли было в вашем эксперименте не использовать ft232 и поключить hc-05 c помощью выводов usb- и usb+? или для этого нужна спец. прошивка?
Спасибо
Alex_EXE пишет 23.02.2013 в 17:20 #
Не поддерживает, по крайней мере не эта прошивка. В статье сказано обобщенно.
Василий пишет 22.03.2013 в 15:17 #
Здравствуйте. Вот такой блютуз можно присандалить?http://technoportal.ua/img/Bluetooth.jpg
Alex_EXE пишет 25.03.2013 в 09:38 #
Да.
К компьютеру, к одноплатнику или к МК, но придётся реализовать поддержку USB-Host (если нет) и дрова.
Если требуется простое подключение и без извратов — то нет, смотрите специальные модули, вроде того, что описан в статье.
search_max пишет 07.07.2013 в 21:19 #
А как понять какое ПО у модуля если продавался в пакетике сам модуль и всё? Без печатки и подключения к RS232 не узнать? Или есть различные виды этого самого зелёного модуля с контактами HC-05, а если есть, то как расспознать?
search_max пишет 11.07.2013 в 01:00 #
Ясно… на robocraft нашёл ответ на этот вопрос. Спросить можно только у самого модуля AT командами, значит если покупаешь модуль, то не почтой, а самому сделать COM-терминал простенький с изначально распаенным слотом под модуль и так проверять. Аа кста, автор, если можно сливать прошивку, было бы неплохо если бы сделать что-то типа нескольких бэкапов прошивок разных версий с этого модуля. Это так… просто предложение. Или выложить только свою версию 🙂
Alex_EXE пишет 23.07.2013 в 23:15 #
При покупки модуля обращайте внимание — что именно покупаете, обычно указывают HC-04, HC-05, HC-06 или модуль Slave иль Master/Slave, а некоторые ещё и сразу документацию приводят (хотя, бывает, могут и наврать), если же не ясно — то лучше поискать другого продавца.
Бэкапами прошивок заниматься желания и времени нет.
Mr.Ex пишет 29.04.2015 в 21:00 #
Интересует вопрос о A2DP очень интересно превалировать синезубую колонку на данном девайсе.
Alex_EXE пишет 13.05.2015 в 16:00 #
В стандартных версиях HC-04/5/6/9 — не встречал упоминания о командах работы с аудио потоком и не видел при подключении к данным модулем нечего кроме SPP. Не исключаю, что при сторонней прошивки с из помощью можно передавать или принимать звук (в цифровом формате).
Есть другие модули, которые способны передавать аудио поток, при чём на них предусмотрены обычные аналоговые входы и выходы.
H`UGO пишет 08.01.2016 в 01:45 #
Здравия желаю. Если не сложно, поясните что значит «установка чётности»? Случайно установил «чётный», теперь не могу переустановить, не отвечает на команды AT. С терминала на него посылаю и в порт компа передаёт, не совсем корректно но работает, а на АТ не отвечает. (РС-06) Или есть возможность вернуть заводские? Здорово былобы конечно Перепрошить через SPI, но мой USB ASP видимо с этим не справиться, а LPT нет.
Alex_EXE пишет 08.01.2016 в 23:24 #
Бит чётность (нечетности…) — 9 дополнительный бит в стандартной посылке (если включен), отвечающий за целостность посылки. Если количество единиц в посылки четное или нечетное — он принимает соответствующее значение, подробнее можно прочитать в описании COM порта.
В вашем случае нужно установить программу терминал, которая может работать с этим самым битом четности. Например программу terminal т.к. он наиболее простой со стороны настройки, на скриншоте экрана нетбука — слева. В нём выбираете бит чётности (parity) в соответствии с установленным или перебором, если не помните. Когда установите посылаете команду удаляющей у модуля бит чётности и работаете с модулем, как раньше.
Михаил пишет 24.01.2016 в 17:06 #
Спасибо, очень интересно!
А планируется ли статья о «общении» pic и bluetooth модуля? Как подключен pic и какая прошивка в нем? Может ли pic посылать AT команды и принимать их?
Андрей пишет 26.01.2019 в 13:34 #
Здравствуйте. Подскажите, пожалуйста:
1. Почему ножки RX и TX к микроконтроллеру надо подключать через резисторы на 4,7кОм?
2. Что будет ели подключать их напрямую без резисторов?
3. Как вы узнали, что RX и TX надо подключать через резисторы? Есть какая-та документация с примером подключения от HC-05 или что-то ещё?
Спасибо!
Alex_EXE пишет 26.01.2019 в 16:34 #
3. опыт. Документация есть. Можете поискать по запросам: Hc-05 bluetooth pdf и datasheet на конце, но в большей её части уровни не прописаны, а только распиновка модуля и его AT команды. Так же можно занятся поиском документации на используемый чип в модуле и проследить по плате, какие компоненты стоят между чипом и выводом модуля. Если же Вы используете готовый распаянный модуль на плате с PLS гребенкой (штырями), то у таких модулей уже обычно стоит и преобразователь питания на 5В и согласующие компоненты.
2. завист от подключаемого устройства. Некоторые могут сгореть, другие будут нормально работать. Нужно изучать документацию
1. Эти резисторы — гасящие резисторы. Их номинал примерно лежит в диапазоне от 1кОм до 5 кОм.
При подключении контроллеров с различным логическим уровнем есть риск, что устойства могут выйти из строя.
На линии данных на каждый чип должно быть указана величина максимального допустимого напряжения для них. Например у контроллера stm32 (у него питание 3.3В) есть, условно, 2 типа линий: обычные, у которых максимальньное допустимое напряжение 3.3В и выводы толерантные к 5В логике. Если на первые линии просто так подать 5В то нечего хорошего не будет, вторые линии будут штатно работать.
Что же делать, если линии питания имеют разное максимальное напряжение — применять способы согласования различных уровней. Тут есть специальные ИМС, есть способы на биполярных и полевых транзисторых , можно применять делите напряжения… Один из самых простых способов — гасящие резисторы, но он подойдёт не для всех случаев!
В чем заключается способ. Обычно цифровые выводы ИМС защищают диодными сборками, которые защищают вход от превышения напряжения тем, что излищек напряжения направлют на линию питания. Если на такой вывод подать более напряжение напрямую то это сначала спалит защиту, а затем и сам вывод. Дело в том, что ток, который будет приходить нечем не будет ограничен. Если поставим гасящий резистор — то он ограничит максимальный входной ток, который уже не смогжет навредить входу и его защите.
Например два вывода 5В и 3.3В. 3.3В вывод снабжен защитными диодами и ставим гасящий резистор. Разница между 5 и 3.3В = 1.7 В (падение на диоде пренебрегаю) будет уходить через защитный диод на 3.3В питания той ИМС. Ограничивая ток гасящим резистором к 1К ток будет протекать 1.7мА, при 4.7К — 0.36мА.
Но повторюсь: не все ИМС снабжены защитными диодами, так же могут быть другие особенности.
Ещё: если разница между логическими уровнями будет больше то добавятся новые факторы: т.е. от логике с большим напряжением к логике с меньшей передать сигнал можно будет, а от меньшей к большей нельзя.
Напрмер 5V -> 1.2V, т.к. уровень перехода от 0 к 1 у 1.2V будет, скажем в районе 0.4V; а от 1.2V -> к 5V неполучится, т.к. у 5V цровень перехода будет скажем около 1.5V, т.е. ниже детектируемого порога и она всегда будет видеть 0 логический уровень.
P.s. Гасящий резистор не самый «красивый» способ, с точки зрения схемотехники, для согласовании уровней, но самый простой.