Уроки Arduino: управление устройствами со смартфона для чайников. Уроки Arduino: управление устройствами со смартфона для чайников Zs 040 bluetooth подключение ардуино

Блютуз свисток для компьютера: http://ali.pub/2jfj3y

Для начала давайте разберемся что такое блютуз.

Bluetooth (от слов англ. blue - синий и tooth - зуб; произносится /bluːtuːθ/ ), блюту́с - производственная спецификация беспроводных персональных сетей (Wireless personal area network, WPAN ). Bluetooth обеспечивает обмен информацией между такими устройствами, как персональные компьютеры (настольные, карманные, ноутбуки), мобильные телефоны, принтеры, цифровые фотоаппараты, мышки, клавиатуры, джойстики, наушники, гарнитуры на надёжной, бесплатной, повсеместно доступной радиочастоте для ближней связи. Bluetooth позволяет этим устройствам сообщаться, когда они находятся в радиусе до 10 м друг от друга (дальность сильно зависит от преград и помех), даже в разных помещениях.

Теперь зная что блютуз служит для построения сетей и обмена данными между устройствами, мы будем его использовать для соединения между собой CNC (ЧПУ) станка и компьютера или телефона или планшета и ноутбука.

Так как я использую прошивку grbl на платформе arduino для управления ЧПУ, то и подключать будем к станку блютуз модуль подходящий для arduino, а именно блютуз модуль HC-06.

Перед подключением Блютуз модуля к ардуино, нужно убедиться, на одинаковой ли скорости COM порта работают блютуз модуль и ардуино.

Если вы используете прошивку grbl 0.8, то ничего менять не нужно, но если grbl 0.9 и выше, то скорость COM порта ардуино станет 115200, а по умолчанию на модуле скорость 9600.

Вот нам и понадобится на самом блютуз модуле поменять скорость порта.

Для настройки Bluetooth-модулей существуют специальные АТ-команды , с помощью которых мы можем устанавливать необходимые параметры модуля.

AT-командами мы можем изменить скорость COM порта или изменить название Bluetooth устройства или узнать или поменять пин код для сопряжения.

Для того чтоб подключить блютуз модуль к компьютеру для ввода AT-команд нам понадобится программаторFTDI ссылка на него в начале статьи. Схема подключения я думаю тут ненужна. Подключать нужно gnd к gnd, 5в к 5в, rx к tx и tx к rx.

После подключения нам понадобится программа HMComAssistant для ввода AT команд и программирования нашего модуля. Скачать: https://yadi.sk/d/eVzPmnh63Wab5R

Ну и здесь я приведу некоторые AT-команды для изменения настроек блютуз модуля:

АТ-команда Ответ модуля Комментарий
AT ОК Используется для проверки связи, как правило перед выполнением любых операций сперва используется данная команда для проверки связи.
AT+BAUD1 OK или OK1200 Устанавливает скорость передачи данных в 1200 бод
AT+BAUD2 OK или OK2400 Устанавливает скорость передачи данных в 2400 бод
AT+BAUD3 OK или OK4800 Устанавливает скорость передачи данных в 4800 бод
AT+BAUD4 OK или OK9600 Устанавливает скорость передачи данных в 9600 бод
AT+BAUD5 OK или OK19200 Устанавливает скорость передачи данных в 19200 бод
AT+BAUD6 OK или OK38400 Устанавливает скорость передачи данных в 38400 бод
AT+BAUD7 OK или OK57600 Устанавливает скорость передачи данных в 57600 бод
AT+BAUD8 OK или OK115200 Устанавливает скорость передачи данных в 115200 бод
AT+BAUD9 OK или OK230400 Устанавливает скорость передачи данных в 230400 бод
AT+BAUDA OK или OK460800 Устанавливает скорость передачи данных в 460800 бод
AT+BAUDB OK или OK921600 Устанавливает скорость передачи данных в 921600 бод
AT+BAUDC OK или OK1382400 Устанавливает скорость передачи данных в 1382400 бод
AT+NAME +NAME=test Возвращает текущее имя модуля
AT+NAMEiarduino_BLU +NAME=test OK Устанавливает новое имя модуля “test“
AT+PIN +PIN=000000 Возвращает текущий пароль, в данном случае пароль “000000”
AT+PIN123456 +PIN=123456 OK Устанавливаем новый пароль, в данном случае пароль “123456”
AT+VERSION +VERSION=Firmware V3.0.6,Bluetooth V4.0 LE Возвращает версию прошивки, в данном случае пароль “Firmware V3.0.6,Bluetooth V4.0 LE”
AT+RESET +RESET OK
AT+HELP ——– Возвращает список всех доступных АТ-команд

После изменения скорости ком порта и установки пин кода для сопряжения. (по умолчанию пин код для сопряжения “1234”, давайте подключим модуль к ардуино.

И так как я использую CNC shield v 3.0. То и схему подключения приведу к нему.

Я не буду создавать свою схему, а возьму с одной статьи. Да простит меня ее создатель.

Схема конечно не очень ровная, но на мой взгляд довольно понятная.

Итак для чего в схеме используются резисторы? Ардуино имеет 5 вольтовую логику, это значит, что на все выходы свои ардуино посылает напряжение 5В. Но на модуле написано LEVEL 3.3v это значит что Блютуз требует 3.3В, но никак не 5в. Поэтому и подключаются резисторы, чтобы понизить напряжение и предотвратить выход из строя блютуз модуль.

Но я решил использовать напрямую без резисторов, посмотрим насколько долго прослужит модуль, некий краш тест устроим.

Для управления CNC (ЧПУ) станком с телефона или планшета я использовал программу “Grbl controller” она бесплатная и довольно многофункциональная. В видео приведенном ниже я мельком показывал как управляется станочек с этой программы.

Но если вы будете подключаться с компьютера, то тут есть нюанс, при сопряжении соединения с модулем, в устройствах появится два новых COM порта. У меня это COM6 и COM7. Так вот один из них служит для отправки данных, а другой для приема. Поэтому ненужно пугаться и просто попробовать подключиться к одному если ничего не произойдет то подключитесь к другому.

Но если что-то непонятно, но наглядно я это показал в видео:

Хотели бы вы организовать беспроводное включение/выключение света в доме? Если да, то для подобного проекта можно использовать Arduino, bluetooth модуль HC-06, реле и знания основ схемотехники.

В этой статье мы рассмотрим основы взаимодействия bluetooth модуля HC-06 с Arduino. Рассмотрим примеры передачи и приема данных через блютуз на примере включения/выключения светодиода.

Для реализации более серьезных автоматизированных систем вроде "умного дома", эти основы будут как нельзя кстати.

Начать работать с HC-06 достаточно просто. Все, что вам надо знать - расположение контактов для подключения. На HC-06 шесть контактов: wakeup, VCC, GND, TXD, RXD и State. На этапе, используем 4 контакта: VCC, GND, TXD и RXD.


Ниже показано как именно подключается Bluetooth модуль к Arduino.


HC-06 выступает в роли последовательного порта, через который вы передаете и принимаете данные. То есть, используя окно серийного монитора в Arduino IDE или Bluetooth приложение на вашем компьютере или телефоне, вы можете контролировать и управлять вашим проектом. Например, в качестве терминала можно использовать Teraterm. Перед загрузкой скетча на Arduino , отключите модуль HC-06. Так как модуль производит обмен данными с помощью контактов tx/rx, загрузить скетч не получится. После загрузки скетча можете подключать bluetooth модуль.

Echo скетч для Arduino и HC-06

Данный скетч дает вам возможность отсылать строку на Arduino через bluetooth и получать ответ, который отображается в серийном мониторе.

Примечание . Если вы используете Arduino Mega, измените строку кода while(Serial.available()); на while(Serial.available()>0);. В противном случае, скетч не будет отрабатывать.

LED скетч для Arduino и HC-06

Эта программа дает возможность включать/выключать светодиод, отправляя команды на Arduino через Bluetooth.

Взаимодействие HC-06 с компьютером

На видео ниже показано как подключить HC-06 к персональному компьютеру иди другму устройству с поддержкой bluetooth.

Примечание . На видео скачано, что программа, которую вы используете в качестве серийного монитора (Teraterm в данном конкретном случае), подключается к INCOMING (входящему) com порту. Это не правильно. Надо использовать OUTGOING (исходящий) com порт.

После подключения HC-06, откройте Teraterm или другой подходящий терминал. Выберите серийный порт, который отвечает за обмен данными с HC-06 (более детальные пояснения по этому поводу есть на видео).

После успешного подключения HC-06, можете отправлять данные на Arduino и обратно. Если вы загрузили второй скетч, вы сможете включать/выключать светодиод, отправляя символы “n” и “f” соответственно.

Пример Echo

Пример LED

Сфера применения HC-06 по сути безгранична. Можно управлять любыми роботизированными системами и процессами. Надеемся, что приведенные основы работы с bluetooth модулем HC-06 будут вам полезны в проектах на Arduino.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!


Как правило в заголовках к подобным статьям указывается конкретная модель модуля, например, HC-05 или HC-06. На самом деле все они подключаются одинаково. На что действительно следует обратить внимание, так это на режим работы. Bluetooth модуль может работать в одном из двух режимов: master или slave.

Slave (ведомый) - наиболее часто встречающийся режим работы, в котором устройство ожидает подключения, само при этом не способно подключиться к другому устройству.
Данный режим может использоваться в роботе, bluetooth розетке, метеостанции и любом другом устройстве, к которому планируется подключение, например, со смартфона или компьютера.

В режиме master (ведущий) устройство, напротив, является инициатором соединения и может подключиться к slave модулю. Для создания связи между двумя Ардуино посредством Bluetooth потребуются два модуля, один из которых сконфигурирован на работу в режиме master, другой - slave.

Вот теперь, пожалуй, можно уточнить в чем разница между всеми этими HC-03, -04, -05...

  • HC-03, HC-05 - позволяют изменять режим работы slave/master с помощью AT-команд;
  • HC-04, HC-06 - сконфигурированы заводом-изготовителем для работы в определенном режиме, который в дальнейшем не может быть изменен штатными средствами. Хотя master модули мне не попадались;
  • HC-07- позиционируется как замена HC-06;
  • HC-08 - работает по протоколу Bluetooth v4.0 BLE (Bluetooth Low Energy - Bluetooth с низким энергопотреблением). Позволяет изменять режим работы с помощью AT-команд;
  • HC-09 - позиционируется как замена HC-06 и HC-07, но работает только в slave режиме.
Модули, позволяющие изменять режим работы, по умолчанию сконфигурированы как slave. Также в продаже можно встретить SPP-C Bluetooth модули, которые предлагаются как улучшенная замена HC-05 и HC-06 для работы в режиме slave.

Итак, сегодня речь пойдет о подключении к Ардуино модулей Bluetooth в режиме slave. Причем не "голых", а уже распаянных на интерфейсную плату. Такая плата содержит преобразователь уровней и стабилизатор напряжения, что позволяет подключать ее к Ардуино напрямую и запитывать от 5 вольт. Для общения с модулями используется интерфейс UART (Universal Asynchronus Receiver-Transmitter или универсальный асинхронный приемопередатчик). Все платы Ардуино имеют хотя бы один последовательный порт UART, это означает что для подключения к ним Bluetooth не требуется каких-либо специализированных библиотек или схем. Достаточно соединить контакты Rx, Tx модуля с контактами Tx и Rx Ардуино соответственно. То есть передатчик одного устройства соединяется с приемником другого. Ниже приведена схема подключения Bluetooth модуля к Arduino UNO.


Для обмена данными через последовательный интерфейс в Ардуино используется объект Serial. Попробуем управлять встроенным в Ардуино светодиодом: будем включать его при получении по Bluetooth символа "1" и выключать при получении "0". Для этого загрузим в него приведенный ниже скетч. Обратите внимание: выводы 0 и 1 (RX и TX) используется при программировании Ардуино, поэтому от них необходимо отключить модуль Bluetooth перед загрузкой скетча.

char incomingByte = 0 ; void setup () { Serial .begin (9600 ); Serial .println ("Hello" ); } void loop () { if (Serial .available ()) { incomingByte = Serial .read (); if (incomingByte=="0" ) // и проверяем его на равенство "0" else if (incomingByte=="1" ) // если не равно, то сравниваем с "1" digitalWrite (LED_BUILTIN , HIGH ); } }

Функцией Serial.begin() устанавливаем скорость передачи данных, на которую сконфигурирован наш модуль. Как правило, заводом-изготовителем модули настраиваются на скорость 9600 бит/с. Загружаем код в Ардуино и подключаем Bluetooth. Для управления будем использовать смартфон и Bluetooth терминал - по этому сочетанию можно найти довольно много приложений в маркете. Я пользуюсь Bluetooth Terminal от Alexander Vozjennikov, на ее примере я буду описывать дальнейшие действия, но можно установить и любой другой терминал, это дело вкуса. Владельцам айфонов, думаю, также не составит труда найти подобное приложение. Итак, запускаем терминал, соглашаемся на предложение включить Bluetooth. Если ранее смартфон не связывался с данным модулем, то ищем новое устройство и пробуем подключиться, на запрос PIN-кода вводим 1234 или 0000.

Если соединение установилось, то можем посылать данные на Ардуино. Попробуем отправить 1, светодиод должен зажечься; при отправке 0 он потухнет. Если мы теперь нажмем кнопку сброса на Ардуино, то в терминале появится строка Hello - это выполнилась функция Serial.println("Hello") в функции setup() .


А что если кроме Bluetooth требуется подключить еще какое-то UART устройство? В случае с Arduino Mega и Mega2560 нам кроме порта Serial доступны еще 3 аппаратных последовательных порта: Serial1 (RX-19 и TX-18), Serial2 (RX-17 и TX-16), Serial3 (RX-15 и TX-14), а значит можно использовать их вместо Serial, соответственно, нам уже не придется отключать модуль перед прошивкой Ардуино. Для других плат можно воспользоваться библиотекой SoftwareSerial. Данная библиотека позволяет реализовать последовательный интерфейс на любых цифровых выводах Ардуино с помощью программных средств, дублирующих функциональность UART (отсюда и название "SoftwareSerial"). Библиотека позволяет программно создавать несколько последовательных портов, работающих на скорости до 115200 бит/с. Давайте немного изменим предыдущий скетч, чтобы использовался не аппаратный, а программный последовательный порт.

#include SoftwareSerial mySerial(2 , 3 ); // RX, TX char incomingByte = 0 ; void setup () { // Задаем режим работы вывода к которому подключен встроенный светодиод pinMode (LED_BUILTIN , OUTPUT ); // Устанавливаем скорость передачи данных по последовательному интерфейсу mySerial.begin (9600 ); mySerial.println ("Hello" ); } void loop () { if (mySerial.available ()) { // Если последовательным портом приняты данные incomingByte = mySerial.read (); // то считываем из буфера один байт if (incomingByte=="0" ) // и проверяем его на равенство "0" и "1" digitalWrite (LED_BUILTIN , LOW ); // если принят "0", то гасим светодиод else if (incomingByte=="1" ) digitalWrite (LED_BUILTIN , HIGH ); // если принят "1", то зажигаем светодиод } }
Здесь для работы с Bluetooth создается программный последовательный порт на выводах 2 и 3. Можно использовать и другие выводы, но необходимо учитывать следующие ограничения: не все выводы Arduino Mega и Mega2560 поддерживают прерывания, возникающие при изменении уровня сигнала, поэтому на данных платах в качестве вывода Rx могут использоваться только следующие выводы: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). Аналогичное ограничение для платы Leonardo оставляет нам для использования в качестве Rx выводы: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Итак, давайте загрузим данный скетч в Ардуино, подключим наш модуль к выводам 2 (Rx) и 3 (Tx) и попробуем управлять светодиодом со смартфона. Всё работает! Как видите, нет ничего сложного в управлении устройством на базе Ардуино по Bluetooth.

Остается только подумать о более удобном интерфейсе для управления конечным устройством. Если для этих целей планируется использовать смартфон, то в маркете можно найти большое количество Bluetooth контроллеров. Я же советую обратить внимание на приложение RemoteXY. Оно позволяет создать свой собственный интерфейс управления, заточенный под конкретный проект. На сайте разработчика можно найти подробную документацию и примеры. В общем, рекомендую!

В следующих публикациях обязательно рассмотрим конфигурирование модулей HC-0x при помощи AT-команд и работу в режиме master. А пока этой информации для быстрого старта, я думаю, достаточно.

Пока готовится небольшой, но довольно сложный обзор, я решил немного отвлечься и написать про Bluetooth-UART модуль.
Относительно недавно я делал серию обзоров, посвященную одному из основных приборов радиолюбителя, лабораторному блоку питания. Когда уже писался обзор USB-RS232 адаптера, то я уже собирался на этом и закончить. Но потом подумал, а зачем в 21 веке использовать провода для управления блоком питания. Продолжение об этом эксперименте читайте под катом.

Как я выше написал, во время работы над последним обзором из серии посвященной лабораторному блоку питания



И косвенно
я решил было уже закрыть эту тему, но потом подумал, а зачем мне лишний кабель на рабочем столе. Нет, если устройство установлено стационарно, то кабель куда лучше, дешевле, надежнее и т.п. но если блок питания я использую относительно редко (по крайней мере гораздо реже паяльника, например), то лишний кабель, который к тому же может попасть под тот же паяльник, мне совсем будет неудобен.
Подумал и заказал платку Bluetooth адаптера.

Но будем последовательны.
Платка была заказана 26 июня, 28 числа пришло уведомление, что продавец отправил мою посылку, а уже 29 она начала отслеживаться, на мой взгляд очень оперативно. 11 июля я получил свою посылку на почте, на мой взгляд довольно оперативно. Правда после этого она месяц лежала у меня нетронутой, не было времени ею заниматься, но вот недавно у меня наконец то дошли руки поэкспериментировать с ней.
Пришла она в беленьком конвертике (уже так привык к желтым, что было даже непривычно).

Внутри был только сам модуль и небольшой кабель, запакованные в антистатический пакетик.
В принципе там ничего другого и не должно быть, что тоже не может не радовать.

Сам модуль представляет собой небольшую платку, которая по сути является переходником, на который установлена плата именно Bluetooth приемо-передатчика. На обратной стороне есть маркировка назначения контактов. Все так же в минималистическом стиле, Питание, общий, прием, передача.

С лицевой стороны видно сам Bluetooth и плату-адаптер, на которую он установлен. На этой плате установлен стабилизатор питания (сам Bluetooth модуль питается от 3.3 Вольта) и светодиод индикации установки связи (при установленной связи светит непрерывно, при отсутствии моргает). В принципе ничего не мешает использовать Bluetooth модуль отдельно от платы-адаптера (есть в продаже и в таком исполнении), но мне так было удобнее.

Дальше надо было этот модуль как то запустить, подал питание, включил в BlueSoleil поиск устройств, почти сразу увидел новое устройство в окружении, кликнул, ввел стандартный для этого модуля код 1234, на плате непрерывно засветился светодиод, а в BlueSoleil стала активной кнопка последовательных портов.
После клика по этой кнопке, меня радостно уведомили, что у меня теперь есть COM5.
Первым делом решил проверить ток, потребляемый данным устройством.

У устройства есть 2 режима, активный и спящий, с низким потреблением.
В спящий режим устройство автоматически переходит через 5 секунд неактивности, просыпается при поступлении любой команды.
В рабочем режиме потребление от 5 Вольт чуть больше, чем 20мА.

В спящем режиме чуть больше чем 4мА. Думаю, что в этом режиме, больше половины это светодиод и стабилизатор 3.3, если их исключить, то ток будет еще меньше.

После этого я соединил контакты RX и TX модуля между собой и проверил наличие эха в терминале (я использую Putty). Связь проходит без проблем, Проверил дальность, в пределах комнаты работает, если для кого то важно, то могу проверить на большей дистанции, но проверка не будет объективной, так как дальность зависит и от Bluetooth адаптера в компьютере.

На этом мои познания закончились и я полез в инет за инструкциями по работе с этими модулями.
Полазив по инету, я узнал, что есть много модификаций таких модулей, покупая, я просто прочел на Али, что модуль может работать только как клиент, существуют модули, которые могут работать как мастер, но мне такие не были нужны.
я нашел часть информации по модулям, немного скопирую сюда.
Какие бывают модули -

Система команд модулей (не всех, так как система команд зависит от прошивки, есть HC-05 и Linor), У прошивки HC-05 (модули HC-03/HC-05) одни команды (их много), у прошивки Linvor (модули HC-04/HC-06) другие команды (всего три AT-команды). Также, различна методика работы с AT-командами.

Кстати, при отправке команды модулю, надо ее отсылать целиком, т.е. сначала набрать всю команду, потом отослать, иначе модуль команду не воспримет. Я сначала попробовал это делать при помощи терминала от Bray, получилось без проблем, но было не очень удобно.

Полазив по инету еще, вылез на с довольно удобной программой конфигурирования этих модулей.
Подключил модуль через .
Все завелось без проблем, кстати по умолчанию настройки модуля стандартные для многих устройств - 9600,n,8,1
Из программы я узнал, что модуль мой с версией прошивки 1.8, хорошо это или плохо я не знаю, пишу просто для информирования, вдруг кому-то будет полезно.

Сразу переименовал мой модуль, назвав его по имени , в который я собирался его устанавливать.
В общем открыл блок питания, отключил уже установленный адаптер COM-USB, подключил четыре проводка, запустил программу работы с блоком питания, и тут ОБЛОМ. :((((
Программа не видит мой блок питания, при том, что эхо проходит без проблем.
Потыкавшись и так и эдак я выяснил, что команда от программы в блок питания приходит, мало того, даже блок питания отвечает, но родная программа в упор не видит ответа от БП.
Расстроился я сильно, и решил использовать такой бонус как Звонок другу.
Мой товарищ работает программистом, и мы иногда делаем некоторые проекты в паре, я аппаратную часть, он программную.
И здесь он меня удивил, так как оказалось, что он, почитав мой обзор блока питания, решил сам написать программу для управления этим БП, но как полагается, с блэкджеком и «девушками», а точнее с графиками, большими индикаторами, возможностью добавления режимов заряда аккумуляторов с корректным окончанием заряда, ведением логов и т.п…
А самое интересное было то, что дла того, что бы легче было писать программу для работы с БП, он написал Эмулятор этого БП.
Т.е. он почитав систему команд БП, сделал виртуальный БП. Типичный подход программиста, напомнило - CPU not found! Press any key to emulation. :)))
Но самым удивительным было то, что с этой программой Bluetooth заработал без проблем.
Т.е. так случайно получилось, что программа, написанная в процессе работы с эмулятором БП, работает лучше, чем родная от производителя.
Ниже скриншоты программы, это пока тестовые версии, еще без довесков, но уже подающие признаки жизни, а самое главное, корректно работающие с Bluetooth адаптером (с ЮСБ так же работает без проблем).
По скриншотам видно, что программа еще сыровата. График автомасштабируется, потому при 12 Вольт он показывает максимум.



Здесь я попытался показать, что программа работает через Bluetooth, уж извините, как смог. :)

Программа будет дорабатываться. Скорее всего будет добавлена в этот обзор или в один из последующих, если он будет связан с этой темой (не дает мне моя жажда улучшать разные вещи, остановиться на том, что уже имею).

Резюме.
Адаптер работает без проблем, нареканий или замечаний нет, пробовал оставить на сутки, ничего не виснет, не греется. Не могу судить насчет потребляемого тока, меня более чем устроило, как и дальность работы. Цена вполне адекватная.
Минусов пока не обнаружил.

В дальнейших планах допиливание ПО (хотя это скорее в планах программиста), а я хочу доработать плату адаптера COM-USB так, что бы можно было использовать оба варианта подключения (естественно не одновременно) и что бы это переключение переходило автоматически. Теоретически, сигналы от модулей можно развязать банальными диодными развязками, но руки до этого еще не дошли.

На всякий случай для конфигурирования этих модулей.

P.S. Кто-то скажет, что лабораторный блок питания с управлением по Bluetooth это блажь, по своему он будет прав. Но блоком питания я пользуюсь не часто и он не всегда стоит на столе, а лишний провод только мешает, а так можно вообще поставить его в другом углу комнаты, включить например зарядку аккумулятора и периодически поглядывать на состояние процесса не вставая из-за рабочего стола. На мой взгляд довольно удобно.

Надеюсь мой обзор будет кому нибудь полезен.

Вместо котика.

Планирую купить +56 Добавить в избранное Обзор понравился +78 +144

Введение

Bluetooth - популярная технология передачи данных, которую знают все, еще недавно мы передавали свои фотографии и видео ролики с телефона на телефон, но сейчас с приходом глобальной паутины и облачных технологий почти в каждый дом, необходимость в этом сошла на-нет. Популярность же bluetooth технологии тем не менее не закончилась, ее простота и надежность нашла себе новое применение. В данный момент ее используют сотни различных устройств, от беспроводных клавиатур до наушников, от колонок до весов, от пультов до дронов. Именно по этой причине найти современный телефон без поддержки технологии Bluetooth почти невозможно. Естественно данная технология не обошла себя и в области робототехники и конструирования, за небольшой промежуток времени друзья из Поднебесной выпустили несколько копеечных модулей для подключения их к различным микроконтроллерам, в том числе и к микроконтроллерам линейке Arduino. В данной же статье мы поговорим об одном из таких модулей, а именно о Bluetooth модуле ZS-040.

Описание

Bluetooth модуль ZS-040 состоит из двух печатных плат спаянных вместе:

  • Универсальный заводской bluetooth модуль на микросхеме CSR BC417.
  • Адаптер упрощающий подключение заводского модуля к различным микроконтроллерам.

Заводской модуль с микросхемой CSR BC417.

Адаптер ZS-040.

  1. Основная плата это стандартный заводской модуль который используется в тысячах разных устройств. Основой заводского модуля служит микросхема BC417 (BC417143B) [datasheet ] компании CSR (Cambridge Silicon Radio). Модуль с завода прошит и имеет базовый функционал для работы с ним. Модуль поддерживает технологию Bluetooth версии 2.0 со скоростью передачи данных до 3 Мбит/сек.
  2. Вторая же плата это простой адаптер для более удобного подключения основного модуля к различным микроконтроллерам типа Arduino, Raspberry PI и так далее. Второй модуль содержит в себе стабилизатор напряжения на 3.3В, защиту от переполюсовки и в некоторых случаях кнопку. Именно этот адаптер и называется ZS-040. Как правило все в месте имеет название HC-05 или HC-06 в зависимости от конфигурации и режима работы.

Подключение

Подключается модуль к Arduino довольно просто (смотри таблицу или схему подключения снизу) . Питание модуля осуществляется от 5В линии Arduino (Так как адаптер содержит стабилизатор напряжения на 3.3В подключать модуль от линии 3.3В - нельзя) . Линия передачи (TXD) подключается напрямую к одному из портов Arduino, а вот линию приема (RXD) необходимо подключать через делитель напряжения, так как нам надо преобразовать 5В сигналы от Arduino в 3.3В для модуля. Выполняется это двумя резисторами в 1 и 2 кОм-а. На самом деле модуль стерпит и не выйдет из строя и от сигналов в 5В. Тем не менее это скажется на его сроке службы. По этому использовать делитель напряжения строго рекомендуется.

Пример

// Подключаем библиотеку SoftwareSerial #include "SoftwareSerial.h" // Создаем класс BTserial для работы с bluetooth модулем. SoftwareSerial BTserial(8, 9); // порт RX, порт TX void setup() { // Настраиваем скорость передачи данных. Serial.begin(9600); BTserial.begin(9600); // По умолчанию 9600 бот. } void loop() { // Получаем данные от bluetooth модуля и передаем их в монитор порта. if (BTserial.available()) { Serial.write(BTserial.read()); } // Получаем данные от монитора порта и передаем их в bluetooth модуль. if (Serial.available()) { BTserial.write(Serial.read()); } }

В данном примере мы передаем данные из монитора порта в bluetooth модуль и обратно.

Проверка связи

Для проверки нашего скетча мы воспользуемся телефоном и установленным на него приложением. Лично я использую Android телефон и приложение "Serial Bluetooth Terminal ". Скачать приложение вы можете в Play Маркете .

Если по какой либо причине у вас данное приложение не заработает или у вас телефон с другой операционной системой не растраивайтесь, подобных приложений десятки на всех платформах, воспользуйтесь любым из них, для этого в поиске напишите следующий запрос "Bluetooth Terminal " и магазин предложит вам с десяток других приложений.

Теперь нам надо перейти в настройки телефона и найти там пункт для работы с Bluetooth устройствами. Включить Bluetooth если он был выключен и подождать пока ваш телефон найдет новое устройство. У меня Bluetooth модуль появился под названием HC-06. Выбираем его и вводим пароль. По умолчанию пароль 1234 или 0000. Если по какой либо причине пароли не подходят попробуйте другие простейшие пароли вроде 1111, 5555 и тд.

Теперь запускаем наше приложение Serial Bluetooth Terminal. Открываем выпадающий список и переходим в меню "Devices". В списке выбираем наш модуль HC-06 и возвращаемся на главное окно (Тап по выпадающему списку и далее по меню Terminal). В верхнем правом углу нажимаем на кнопку соединиться (Значок двух коннекторов) . Все. передаем данные из приложения в монитор порта и обратно. Ниже я сделал несколько скриншотов для наглядности.

AT команды

Как я упомянул ранее наш bluetooth модуль имеет базовую прошивку, а это значит что его настройки можно менять. Для этого существуют AT команды, ввод которых изменяет наименование bluetooth модуля, пароль к нему и скорость передачи данных. К сожалению модуль отказывается принимать АТ команды через приложение на телефоне или из монитора порта в режиме передачи данных. Но есть небольшая хитрость. Для этого нам надо подключить bluetooth модуль напрямую к ПК. Для этого необходимо подключить контакты модуля RXD и TXD непосредственно к контактам Arduino (RX и TX), а саму Arduino отключить установив перемычку между портами RST и GND. При этом не важно какой скетч залит в Arduino ведь оно будет отключено нашей перемычкой.

Далее открываем Arduino IDE, запускаем монитор порта и отправляем AT команды в наш модуль. Если по какой либо причине ваш модуль не отвечает на команды, в выпадающих списках снизу необходимо выбрать "Нет конца строки" и скорость передачи данных 9600 бод.

Список АТ команд

Команда

Ответ
Комментарий
AT

OK
Проверка связи.
AT+VERSION

hc01.comV2.0
Версия прошивки bluetooth модуля.
AT+NAMEnewName

OKsetname
Задать новое имя bluetooth модулю (newName).
AT+PIN6789

OKsetPIN
Задать новый пароль (6789).
AT+BAUD1

OK1200
Установить скорость передачи данных 1200 бод.
AT+BAUD2

OK2400
Установить скорость передачи данных 2400 бод.
AT+BAUD3

OK4800
Установить скорость передачи данных 4800 бод.
AT+BAUD4

OK9600
Установить скорость передачи данных 9600 бод.
AT+BAUD5

OK19200
Установить скорость передачи данных 19200 бод.
AT+BAUD6

OK38400
Установить скорость передачи данных 38400 бод.
AT+BAUD7

OK57600
Установить скорость передачи данных 57600 бод.
AT+BAUD8

OK115200
Установить скорость передачи данных 115200 бод.
AT+BAUD9

OK230400
Установить скорость передачи данных 230400 бод.
AT+BAUDA

OK460800
Установить скорость передачи данных 460800 бод.
AT+BAUDB

OK921600
Установить скорость передачи данных 921600 бод.
AT+BAUDC

OK1382400
Установить скорость передачи данных 1382400 бод.

Заключение

Это первая вводная статья посвященная bluetooth модулям. Оставляйте свои комментарии и задавайте ваши вопросы. Ну а у меня на этом все, успех вам и удачи.

Пожалуйста, включите javascript для работы комментариев.