Сегодня мы познакомимся с недорогим модулем для беспроводной пердачи данных по Bluetooth .
Bluetooth — производственная спецификация беспроводных персональных сетей, которая обеспечивает передачу данных без проводов между многими устройствами.
Наш модуль именуется HC-05 . Это один из представителей линейки подобных модулей HC-03 — HC-09.
Данные модули позволяют передавать данные без проводов, не задумываясь о том, как вообще устроен протокол Bluetooth, о его полях и прочих тонкостях. Эти модули при правильных настройках обеспечивают передачу данных таким образом, что программист, сочиняющий код, пишет алгоритм так, будто он работает с проводным интерфейсом UART. Поэтому писать код становится максимально удобно и поэтому данная линейка модулей снискала такую огромную популярность среди начинающих программистов и не только.
Вот и мы с вами давайте тоже не будем от них отставать и немного отдохнём от сетевых протоколов и изучим такой модуль. Также было очень много просьб личного характера, а также и в публичных чатах, чтобы я не обошёл стороной такие модули и написал какие-либо уроки с их использованием.
Модули имеют следующие основные характеристики:
Также наряду с данными характеристиками стоит отметить то, что модуль имеет на борту очень много ножек, что позволяет использовать его в более широком спкетре. Давайте посмотрим схему выводов модуля
Мы видим зедесь ножки GPIO, SPI, USB, PCM.
Правда мы пока будем работать только с интерфейсом USART, с помощью которого мы будем не только передавать какие-то полезные данные, а также и настраивать наш модуль.
Мы так поступим во-первых потому, что модули у нас будут одного типа (у меня их аж 4 штуки!), в которых модуль HC-05 напаян ещё на одну плату, на которой наружу разведены только 6 контактов. Вот такие вот они все у меня приблизительно (вид сверху и вид снизу)
Снизу платы нанесено назначение ножек, с ними мы разберёмся, когда будем подключать модуль.
Во-вторых, мы не будем работать с остальными многочисленными контактами потому, что не каждая прошивка этим позволяет заниматься.
Вообще, выбор пал именно на HC-05 ещё потому, что данный модуль прекрасно настраивается для работы как ведущего, так и ведомого устройства.
Настраивается для дальнейшей работы с данными модуль с помощью AT-команд. Мы, я думаю, все в той или иной мере знакомы, что это за команды такие, мы с ними немного знакомились, когда работали с модулем Wi-Fi. Конечно, данные команды у всех устройств разные и поэтому я приложу внизу страницы документ с полным перечнем команд. Также в интернете немудрено найти ресурсы, где описание данных команд переведено на русский язык, и даже есть некоторые примеры их использования. Мы же не будем здесь заниматься полным переводом команд, мы будем изучать только те команды, которыми нам прийдётся воспользоваться. Пока их перечень будет не столь широк, но впоследствии мы к данным модулям ещё вернёмся, надеюсь, и не раз, и тогда мы уже расширим свой кругозор в знании данного модуля. А пока же мы проведём только краткий экскурс по модулю. Конечно, мы попробуем его и в работе, не без этого.
А пока давайте подключим наш модуль к переходнику TTL-USB, который в свою очередь мы подключим к ПК.
Соединим мы по следующей схеме
Переходник TTL-USB Модуль HC-05
VCC VCC
GND GND
TXD RXD
RXD TXD
На практике это будет выглядеть примерно вот так
Подключим переходник к компьютеру, как работать с переходниками такого плана, рассказывать не буду, мы и так с ними постоянно работаем. Запустим терминальную программу, я воспользуюсь программой CoolTerm, так как у неё более гибкие настройки для пердачи данных с клавиатуры, а нам для ввода команд необходимо, чтобы каждая строка при передаче заканчивалась кодом перевода строки и возврата каретки.
Зайдём в настройки программы и настроим сначала порт
Данная скорость 38400 была выбрана потому, что модуль в режиме приёма AT-команд работает именно на такой скорости.
Теперь слева выберем пункт Receive и переключим там одну кнопку, а другую включим
Первая кнопка для окончания переданных команд символами перевода строки и возврата каретки, а вторая для того, чтобы мы свои введённые команды видели также после ввода в терминальном окне приёма.
Сохраним настройки и попробуем соединиться. Если всё удачно, то разъединяеся, так как сейчас у нас модуль находится в режиме передачи данных, и, если он ещё не настраивался, то скорей всего, мы даже не знаем его адреса, его настроек. О нахождении модуля в данном режиме свидетельствует быстрые мигания голубого светодиода Поэтому нам надо как-то перевести модуль в состояние передачи AT-команд.
Для этого мы пока отсоединим переходник от USB-порта и подклюим провод на ножку модуля HC-05 KEY . У кого-то она может иметь другое название, но, думаю, не перепутаете. Провод подключим вот такой и вот таким образом
Соединим данный провод с плюсом питания (с ножкой VCC)
И, не отпуская контакта, соединим перходник с портом USB компьютера и через некоторое время (через секунду или две) разъединим наш контакт KEY с контактом VCC, убрав провод. Модуль должен будет перейти в режим приёма AT-команд, о чём будет свидетельствовать очень медленная скорость мигания светодиода.
Перейдём в терминальную программу, соединимся с портом и попробуем послать команду AT , на которую нам модуль должен ответить «OK»
Модуль ответил, значит всё правильно.
Чтобы не путаться с настройками, которые были кем-то и когда-то внесены, давайте сборсим все настройки, введя команду «AT+ORGL «. Настройки должны будут сброситься к следующим параметрам:
Только настройки сразу не применятся. Надо перезагрузить модуль. Удобно сделать это, введя команду «AT+RESET «, в ответ на которую модуль перезагрузится и перейдёт опять в режим передачи данных и не сможет пока принимать команды. Чтобы он их принимал, проделаем те же действия, что и выше, для того чтобы модуль опять перешёл в режим приёма команд AT. Есть ещё один способ, но пока мы им пользоваться не будем.
Проверим теперь некоторые параметры нашего модуля.
Чтобы узнать версию прошивки, введём команду «AT+VERSION? «, на которую модуль должен будет ответить приблизительно вот так
Если прошивка не ниже данной версии, то мы можем быть уверены, что данный модуль с такой прошивкой способен работать в режиме ведущего устройства (Мастера).
Узнаем адрес устройства с помощью команды «AT+ADDR? «
По данному адресу мы и будем определять наше устройство на ведущем устройстве. В качестве ведущего устройства мы возьмём самый обыкновенный смартфон, но это чуть позже. Надо ещё как следует наиграться с командами.
Давайте запросим ещё и имя устройства с помощью команды «AT+NAME? «, на который многие модули, в том числе и мой реагируют только при наличии высокого уровня на ножке KEY, то есть при подключенном проводе. Так и сделаем
Давайте попробуем ещё это имя изменить, так как оно не очень удобное, для этого введём команду «AT+NAME:Желаемое_имя». Данную команду можно вводить без высокого уровня на ножке KEY
Проверим, что имя изменилось, только не забываем про высокий уровень на ножке KEY
Имя прекрасно применено.
Проверим пароль командой «AT+ PSWD? «
Аналогичным образом, как и имя, можно поменять и пароль.
Теперь узнаем тип устройства (ведомый или ведущий) с помощью команды «AT+ ROLE? «
0 — это значит ведомый. Тип также можно изменить в любой момент. Но нам это пока не нужно, так как мы будем работать с устройством как с ведомым.
Сбросим спаренные устройства командой «AT+RMAAD «
Теперь давайте узнаем настройки интерфейса USART командой «AT+ UART? «
Эти настройки означают: скорость 38400 кбпс, 1 стоповый бит и отсутствие контроля чётности.
В данной таблице находятся возможные варианты настроек USART
Давайте изменим, например, скорость передачи командой «AT+UART=115200,0,0 «
Только данные настройки вступят в силу после перезагрузки модуля и будут актуальны только для режима передачи данных, для режима передачи AT-команд в модуль останутся настройки прежние со скоростью 38400.
Давайте перезагрузим модуль командой «AT+RESET «, после чего модуль перейдёт в режим передачи данных.
Настроим порт в терминальной программе на данную скорость и соединимся с ним
Попробуем ввести команду, на что модуль наш не прореагирует, так как режим не тот
Но не будем отчаиваться. Оказывается, чтобы отправлять команды модулю, необязательно переводить его в этот режим. Можно включить поддержку передачи AT-команд в режиме передачи данных. На короткое время (достаточно менее секунды) коснёмся проводом, который подключен к контакту KEY плюсовой шины модуля и модуль перейдёт в режим поддержки AT-команд. Правда, по характеру мигания светодиода мы это не определим, он будет мигать также быстро. Также в режиме поддержки команд мы с нами не сможет соединиться ведущее устройство. Но тем не менее, нам не потребуется для каких-то настроек постоянно вынимать провод из разъёма USB и перенастраивать порт в терминальной программе. Это уже хорошо. Сделаем данное действие и убедимся в том, что модуль также будет принимать команды, как и в режиме приёма команд
Чтобы убрать данную поддержку и чтобы модуль смог соединяться, достаточно перезагрузить его командой «AT+RESET «. Так и сделаем
Отлично! Мы уже кое-что умеем. В принципе, мы настроили модуль для передачи данных в режиме ведущего устройства.
Теперь смартфон, который у нас сегодня выступит в роли ведущего устройства. Подойдёт любой с андроидом, лишь бы встала какая-нибудь терминальная программа под Bluetooth. Я установил вот такую. Мне она показалась удобной
Во-первых, она бесплатная, не требует создания подключения заранее, а также имеет несколько кнопок с заранее сохранёнными нами строками.
Скачаем и установим программу и запустим её. Нажмём кнопку SCAN и наш модуль должен будет отобразиться в списке найденных устройств
Выберем данное устройство и попадём в диалог создания пары, в котором надо будет ввести пароль (у нас «1234») и согласиться, нажав кнопку «ОК»
Контроллер Arduino не поддерживают беспроводную связь, а часто это просто необходимо. Например, удаленное управление роботом на Arduino, отправка данных с метеостанции на арудино в Интернет или на домашний сервер, связь нескольких устройств между собой. Здесь в помощь разработчикам устройств множество внешних модулей для организации различных технологий беспроводной связи: модули WiFi, GSM/GPRS, IR, Bluetooth, радиомодули для работы в различных частотных диапазонах.
Технология Bluetooth используется для передачи данных между двумя устройствами, которые находятся в непосредственной близости друг с другом, причем необязательна прямая видимость. Технология Bluetooth обеспечивает хорошую устойчивость к широкополосным помехам, что позволяет множеству устройств, находящихся в одном месте, одновременно общаться между собой, не мешая друг другу. Очень широко данная технология используется в телефонах, планшетах, ноутбуках.
Одно из лучших решений для организации двусторонней связь по Bluetooth вашего Arduino-устройства с планшетом, ноутбуком или другим Bluetooth-устройством – Bluetooth-модуль HC-05 , который может работать как master (осуществлять поиск Bluetooth-устройств и инициировать установку связи), так и slave (ведомое устройство).
Датчик имеет 6 выводов стандарта 2,54 мм:
Настройка модуля осуществляется в режиме программирования отправкой AT-команд по последовательному порту. Для входа в режим программирования необходимо подать на контакт KEY сигнал высокого уровня. На некоторых модулях контакт KEY отсутствует, и вместо него контакт EN:
В этом случае для входа в режим программирования необходимо подать сигнал высокого уровня на контакт 34:
Для модуля к плате Arduino по последовательному порту будем использовать со сторону Arduino программный UART. Схема подключения на рисунке:
Получить должны примерно следующие:
Настройка модуля осуществляется в режиме программирования отправкой AT-команд по последовательному порту. Подключим модуль HC05 к плате Arduino по схеме соединений на рисунке 5. На контакт KEY модуля (или вывод 34 платы) подадим 3.3В. AT-команды будем отправлять из монитора последовательного порта Arduino IDE. Загрузим в Arduino скетч из листинга 1. Нам понадобится Arduino-библиотека SoftwareSerial. Скорость UART модуля в режиме программирования 38400 бод, но может и отличаться, в этом случае следует подобрать.
Include
После загрузки скетча откроем монитор последовательного порта Arduino IDE и начнем отправлять AT-команды:
Список основных AT-команд:
Параметров нет.
Ответ модуля: OK
Параметров нет.
Ответ модуля: +VERSION:
где Версия прошивки Bluetooth-модуля.
Параметров нет.
Ответ модуля: OK
Параметров нет.
Ответ модуля: OK
Параметров нет.
Ответ модуля: +ADDR:
где Адрес Bluetooth-модуля NAP: UAP: LAP.
Параметров нет.
Ответ модуля: +NAME:
где Имя Bluetooth-модуля.
Параметр: Имя Bluetooth-модуля.
Ответ модуля: +NAME:
OK (или FAIL)
Параметров нет.
Ответ модуля: + PSWD:
где Пин-код. По умолчанию 1234.
Параметр: Код доступа к модулю.
Ответ модуля: OK (или FAIL)
Параметр: Класс. В документации модуля не приведены возможные значения данного параметра. По умолчанию он установлен в 0. Если предполагается использовать модуль в режиме master, значение не надо изменять. Если использовать модуль в режиме slave, при значении параметра, равном 0, он невидим для устройств с операционной системой Android. Для видимости необходимо установить значение параметра равным 7936.
Ответ модуля: OK
Параметров нет.
Ответ модуля: +CLASS:
где Класс модуля.
Различным физическим каналам связи, используемым в процессе установления соединения, соответствуют различные коды доступа к каналам. В каналах опроса, за исключением выделенных, используется одинаковый для всех устройств общий код доступа к запросу.
Параметров нет.
Ответ модуля: + IAC:
где Код доступа к запросу.
Параметр: Код доступа к запросу. Значение по умолчанию 9e8b33.
Ответ модуля: OK (или FAIL)
Параметров нет.
Ответ модуля: +ROLE:
где Режим работы модуля Bluetooth-модуля:
Параметр: Режим работы Bluetooth-модуля:
Ответ модуля: OK
Параметры:
Ответ модуля: OK (или FAIL).
Параметров нет.
Ответ модуля: +UART: Параметр: Ответ модуля: OK Параметров нет. Ответ модуля: +CMODE:
где Режим подключения Bluetooth-модуля: Параметры: Ответ модуля: OK (или FAIL). Параметров нет. Ответ модуля: +UART: Параметров нет. Ответ модуля - список найденных устройств. Ответ модуля: OK (или FAIL). Параметров нет. Ответ модуля: Адрес устройства, привязанного к Bluetooth-модулю. Ответ модуля: OK (или FAIL). Ответ модуля: OK (или FAIL). Ответ модуля: OK (или FAIL). Параметр: Адрес Bluetooth-устройства. Ответ модуля: OK (или FAIL). Полный список AT-команд можно найти . Рассмотрим пример получения на Android-устройстве (телефон, смартфон, планшет) данных влажности воздуха и температуры с датчика DHT11, подключенного к Arduino. Arduino каждые 10 секунд получает данные с датчика DHT11 и отправляет их через модуль HC05 на Android-устройство. Нам понадобятся следующие детали: Соберем схему, показанную на рисунке: Получаем: Загрузим на плату Arduino скетч (смотрите ниже) – получение данных влажности и температуры с датчика DHT11 и выдача данных в последовательный порт (hardware) через модуль HC05 на Android-устройство. H"
// константы
#define DHTPIN 8 // пин подключения контакта DATA
#define DHTTYPE DHT11 // датчик DHT 11
#define INTERVAL_GET_DATA 2000 // интервала измерений, мс
// создание экземпляра объекта DHT
DHT dht(DHTPIN,DHTTYPE);
// переменная для интервала измерений
unsigned long millis_int1=0;
int pos=0;
// подключение библиотеки SoftwareSerial.h
#include Проверим на Android-устройстве получение данных, отправляемых Arduino через bluetooth-модуль HC05. На Android-устройчстве установим программу Bluetooth Terminal. В программе установим соединение с модулем HC05: И наблюдаем прием данных, поступающих из Arduino через модуль HC05: И выдача данных в монитор последовательного порта Arduino IDE: Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. В этой статье мы узнаем, как с помощью популярных и не очень недорогих bluetooth модулей HC05 и HC06 организовать беспроводную работу своего ардуино проекта. Вы не поверите, но подключение и программирование Bluetooth модулей совсем не сложное занятие и доступно даже начинающим. Давайте убедимся в этом. Нередко в проектах возникает необходимость дистанционного управления или передачи данных с телефона или другого устройства. Одним из самых популярных и удобных способов является обмен данных через Bluetooth. Для связи платы Ардуино и компьютера используется интерфейс UART (Serial). Так как любая плата Ардуино имеет хотя бы 1 последовательный порт UART, для подключения Bluetooth модуля не требуются специализированные библиотеки и схемы. Самыми популярными модулями являются устройства на основе чипа BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть и сервером соединения, и клиентом, они обладают широким набором АТ команд. Для подключения к ПК потребуются модуль Bluetooth, плата Ардуино, соединительные провода и компьютер. Скетч для управления платой Ардуино через смартфон и компьютер будет одинаковым, так как в обоих случаях данные в микроконтроллер буду поступать по протоколу UART. Схема подключения Bluetooth-модуля к плате представлена на рисунке. Пин RX на ардуино подключается к TDX, TX – к RDX, GND – к GND, 5V – к VCC. При загрузке скетча нужно отключить Bluetooth-модуль, иначе будет появляться ошибка доступа к Ардуино. Также нужно установить на смартфон или планшет, поддерживающий ОС Android, приложение для отправки данных на модуль. После установки приложения нужно загрузить скетч и подключить модуль к плате Ардуино. Пример кода мигания светодиода: Int val;
void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход
}
void loop()
{
if (Serial.available()) // проверка поданных команд
{
val = Serial.read();
if (val == "1") {digitalWrite(13, HIGH);} // при 1 включается светодиод
if (val == "0") {digitalWrite(13, LOW);} // при 0 выключается светодиод
}
}
Теперь нужно настроить соединение телефона и модуля. Для установки соединения нужно зайти в настройки телефона и включить Bluetooth. Как только устройство будет найдено, нужно ввести пароль – обычно это «1234» или «0000». После этого нужно зайти в приложение, нажать на кнопку «подключить Bluetooth» и выбрать нужное устройство. При успешном сопряжении на модуле светодиод начнет мигать медленнее, примерно 1 раз в 2 секунды. В скетче светодиод включается и выключается при получении цифр «1» и «0». Кроме цифр также можно использовать буквы латинского алфавита с учетом регистра. Аналогичным образом можно подключаться к модулю при помощи компьютера. Для этого существуют различные программы, которые подключатся к COM-порту. При запуске программы запрашивают номер порта, скорость и тип подключения. При успешном подключении на экране появится поле терминала, в которое нужно ввести с клавиатуры цифры/буквы, включающие светодиод. Все существующие типы модулей Bluetooth имеют свои особенности, но по функциям и действию они похожи. Одним из видов модулей является Bluetooth HC 06. Со стороны Ардуино модуль выглядит как обычный последовательный интерфейс, поэтому можно сразу наладить взаимодействие с устройством на компьютере. Основные характеристики модуля: Модуль имеет следующие контакты: Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи данных» можно изменить при помощи АТ-команд. В комплектацию модуля не входят соединительные провода. Модули HC 05 и HC 06 являются наиболее используемыми, их чаще остальных можно найти в продаже. Принцип действия этих модулей схож, оба модуля основаны на одинаковом чипе, но есть и важные отличия. В первую очередь, модуль HC 05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave). Оба модуля представляют собой две спаянные платы. Одна из них – заводская с микросхемой, другая нужна для самодельных устройств, она оснащена ножками GPIO со стандартным шагом 2,54 мм и стабилизатором напряжения. Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций. Распиновка модуля HC-05: Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF. Основные характеристики HC-05: Подключение обоих модулей к плате Ардуино одинаково. Вариант подключение модуля с использованием делителя.Представлен вариант для Arduino Nano, но он подойдет и к плате Uno. В этой статье мы рассмотрели варианты подключения и работы с одними из самых распространенных Ардуино модулей Bluetooth HC05, HC06
. Никаких особенных сложностей с этими модулями у вас быть не должно – просто подключайте его к пинам с аппаратным или программным UART, после чего используйте традиционные библиотеки (Serial для модуля, подключенного к 0, 1 пинам, SoftwareSerial в случае присоединения к другим). Подключение Bluetooth к вашему Arduino-проекту может существенно увеличить ваши возможности по взаимодействию с другими устройствами. Вы сможете контролировать состояния датчиков и изменять параметры системы без перезагрузки контроллера. И. конечно же, вы сможете без проблем создать роботы и машинки на ардуино, управляемые через bluetooth со смартфона. Будем надеяться, что вы сможете сделать свой первый проект после прочтения этой статьи.
Slave
(ведомый) - наиболее часто встречающийся режим работы, в котором устройство ожидает подключения, само при этом не способно подключиться к другому устройству. В режиме master
(ведущий) устройство, напротив, является инициатором соединения и может подключиться к slave модулю. Для создания связи между двумя Ардуино посредством Bluetooth потребуются два модуля, один из которых сконфигурирован на работу в режиме master, другой - slave. Вот теперь, пожалуй, можно уточнить в чем разница между всеми этими HC-03, -04, -05... Итак, сегодня речь пойдет о подключении к Ардуино модулей 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
перед загрузкой скетча.
Функцией Serial.begin()
устанавливаем скорость передачи данных, на которую сконфигурирован наш модуль. Как правило, заводом-изготовителем модули настраиваются на скорость 9600 бит/с. Загружаем код в Ардуино и подключаем Bluetooth. Для управления будем использовать смартфон и Bluetooth терминал - по этому сочетанию можно найти довольно много приложений в маркете. Я пользуюсь Bluetooth Terminal от Alexander Vozjennikov, на ее примере я буду описывать дальнейшие действия, но можно установить и любой другой терминал, это дело вкуса. Владельцам айфонов, думаю, также не составит труда найти подобное приложение. Итак, запускаем терминал, соглашаемся на предложение включить Bluetooth. Если ранее смартфон не связывался с данным модулем, то ищем новое устройство и пробуем подключиться, на запрос PIN-кода вводим 1234 или 0000. Если соединение установилось, то можем посылать данные на Ардуино. Попробуем отправить 1, светодиод должен зажечься; при отправке 0 он потухнет. Если мы теперь нажмем кнопку сброса на Ардуино, то в терминале появится строка Hello - это выполнилась функция Serial.println("Hello")
в функции setup()
. #include
Итак, давайте загрузим данный скетч в Ардуино, подключим наш модуль к выводам 2 (Rx) и 3 (Tx) и попробуем управлять светодиодом со смартфона. Всё работает! Как видите, нет ничего сложного в управлении устройством на базе Ардуино по Bluetooth. Остается только подумать о более удобном интерфейсе для управления конечным устройством. Если для этих целей планируется использовать смартфон, то в маркете можно найти большое количество Bluetooth контроллеров. Я же советую обратить внимание на приложение RemoteXY. Оно позволяет создать свой собственный интерфейс управления, заточенный под конкретный проект. На сайте разработчика можно найти подробную документацию и примеры. В общем, рекомендую! В следующих публикациях обязательно рассмотрим конфигурирование модулей HC-0x при помощи AT-команд и работу в режиме master. А пока этой информации для быстрого старта, я думаю, достаточно. Блютуз свисток для компьютера: 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-команды для изменения настроек блютуз модуля: После изменения скорости ком порта и установки пин кода для сопряжения. (по умолчанию пин код для сопряжения “1234”, давайте подключим модуль к ардуино. И так как я использую CNC shield v 3.0. То и схему подключения приведу к нему. Я не буду создавать свою схему, а возьму с одной статьи. Да простит меня ее создатель. Схема конечно не очень ровная, но на мой взгляд довольно понятная. Итак для чего в схеме используются резисторы? Ардуино имеет 5 вольтовую логику, это значит, что на все выходы свои ардуино посылает напряжение 5В. Но на модуле написано LEVEL 3.3v это значит что Блютуз требует 3.3В, но никак не 5в. Поэтому и подключаются резисторы, чтобы понизить напряжение и предотвратить выход из строя блютуз модуль. Но я решил использовать напрямую без резисторов, посмотрим насколько долго прослужит модуль, некий краш тест устроим. Для управления CNC (ЧПУ) станком с телефона или планшета я использовал программу “Grbl controller” она бесплатная и довольно многофункциональная. В видео приведенном ниже я мельком показывал как управляется станочек с этой программы. Но если вы будете подключаться с компьютера, то тут есть нюанс, при сопряжении соединения с модулем, в устройствах появится два новых COM порта. У меня это COM6 и COM7. Так вот один из них служит для отправки данных, а другой для приема. Поэтому ненужно пугаться и просто попробовать подключиться к одному если ничего не произойдет то подключитесь к другому. Но если что-то непонятно, но наглядно я это показал в видео:
Пример использования
Часто задаваемые вопросы FAQ
1. На AT-команды нет ответа модуля
2. Android-устройство не может подключиться к bluetooth-модулю
HC05
3. Не передаются данные на
Android-устройство
Описание модуля Bluetooth HC 06
Сравнение модулей Bluetooth HC 05 и HC 06
Заключение
Как правило в заголовках к подобным статьям указывается конкретная модель модуля, например, HC-05 или HC-06. На самом деле все они подключаются одинаково. На что действительно следует обратить внимание, так это на режим работы. Bluetooth модуль может работать в одном из двух режимов: master или slave.
Данный режим может использоваться в роботе, bluetooth розетке, метеостанции и любом другом устройстве, к которому планируется подключение, например, со смартфона или компьютера.
Модули, позволяющие изменять режим работы, по умолчанию сконфигурированы как slave. Также в продаже можно встретить SPP-C Bluetooth модули, которые предлагаются как улучшенная замена HC-05 и HC-06 для работы в режиме slave.
А что если кроме 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 бит/с. Давайте немного изменим предыдущий скетч, чтобы использовался не аппаратный, а программный последовательный порт.
Здесь для работы с 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).АТ-команда
Ответ модуля
Комментарий
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
——–
Возвращает список всех доступных АТ-команд