Компьютерный мастер - Allcorp66

Сегодня мы познакомимся с недорогим модулем для беспроводной пердачи данных по Bluetooth .

Bluetooth — производственная спецификация беспроводных персональных сетей, которая обеспечивает передачу данных без проводов между многими устройствами.

Наш модуль именуется HC-05 . Это один из представителей линейки подобных модулей HC-03 — HC-09.

Данные модули позволяют передавать данные без проводов, не задумываясь о том, как вообще устроен протокол Bluetooth, о его полях и прочих тонкостях. Эти модули при правильных настройках обеспечивают передачу данных таким образом, что программист, сочиняющий код, пишет алгоритм так, будто он работает с проводным интерфейсом UART. Поэтому писать код становится максимально удобно и поэтому данная линейка модулей снискала такую огромную популярность среди начинающих программистов и не только.

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

Модули имеют следующие основные характеристики:

  • чип Bluetooth – BC417143 производства CSR company ,
  • протокол передачи данных — Bluetooth 2.0 + EDR ,
  • класс 2, что соответствует передаче данных в радиусе до 10 м,
  • поддержка Serial Port Profile (SPP ), что обеспечивает совместимость со всеми устройствами, поддерживающими данный профиль,
  • энергонезависимая память flash объёмом 8 мб,
  • радиоканал частотой 2.4 — 2.4835 MHz,
  • интерфейс USB Host 1.1/2.0,
  • интерфейс 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 «. Настройки должны будут сброситься к следующим параметрам:

  • Device type: 0
  • Inquire code: 0x009e8b33
  • Module work mode: Slave Mode
  • Connection mode: Connect to the Bluetooth device specified
  • Serial parameter: Baud rate: 38400 bits/s; Stop bit: 1 bit; Parity bit: None.
  • Passkey: “1234”
  • Device name: “H-C-2010-06-01”

Только настройки сразу не применятся. Надо перезагрузить модуль. Удобно сделать это, введя команду «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») и согласиться, нажав кнопку «ОК»

Обзор модуля Bluetooth HC-05

Контроллер Arduino не поддерживают беспроводную связь, а часто это просто необходимо. Например, удаленное управление роботом на Arduino, отправка данных с метеостанции на арудино в Интернет или на домашний сервер, связь нескольких устройств между собой. Здесь в помощь разработчикам устройств множество внешних модулей для организации различных технологий беспроводной связи: модули WiFi, GSM/GPRS, IR, Bluetooth, радиомодули для работы в различных частотных диапазонах.

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

Одно из лучших решений для организации двусторонней связь по Bluetooth вашего Arduino-устройства с планшетом, ноутбуком или другим Bluetooth-устройством – Bluetooth-модуль HC-05 , который может работать как master (осуществлять поиск Bluetooth-устройств и инициировать установку связи), так и slave (ведомое устройство).

Технические характеристики модуля HC05

  • Чип Bluetooth: HC-05(BC417143)
  • Диапазон частот радиосвязи: 2,4–2,48 ГГц
  • Мощность передачи: 0,25–2,5 мВт
  • Чувствительность: –80 dBм
  • Напряжение питания: 3,3–5 В
  • Потребляемый ток: 50 мА
  • Радиус действия: до 10 метров
  • Интерфейс: последовательный порт
  • Режимы: master, slave
  • Температура хранения: –40…85 °C
  • Рабочий диапазон температур: –25…75 °C
  • Габариты: 27 x 13 x 2,2 мм

Подключение

Датчик имеет 6 выводов стандарта 2,54 мм:

  • VCC - (питание 3,6 – 6 В);
  • GND - (земля).
  • TXD, RXD - UART интерфейс;
  • STATE - индикатор состояния;
  • KEY - контакт для входа в режим программирования.

Настройка модуля осуществляется в режиме программирования отправкой AT-команд по последовательному порту. Для входа в режим программирования необходимо подать на контакт KEY сигнал высокого уровня. На некоторых модулях контакт KEY отсутствует, и вместо него контакт EN:

  • EN - включение/выключение модуля;


В этом случае для входа в режим программирования необходимо подать сигнал высокого уровня на контакт 34:


Для модуля к плате Arduino по последовательному порту будем использовать со сторону Arduino программный UART. Схема подключения на рисунке:


Получить должны примерно следующие:


Программирование модуля Bluetooth HC05

Настройка модуля осуществляется в режиме программирования отправкой AT-команд по последовательному порту. Подключим модуль HC05 к плате Arduino по схеме соединений на рисунке 5. На контакт KEY модуля (или вывод 34 платы) подадим 3.3В. AT-команды будем отправлять из монитора последовательного порта Arduino IDE. Загрузим в Arduino скетч из листинга 1. Нам понадобится Arduino-библиотека SoftwareSerial. Скорость UART модуля в режиме программирования 38400 бод, но может и отличаться, в этом случае следует подобрать.

Include SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно void setup() { pinMode(2,INPUT); pinMode(3,OUTPUT); Serial.begin(9600); mySerial.begin(38400); Serial.println("start prg"); } void loop() { if (mySerial.available()) { char c = mySerial.read(); // читаем из software-порта Serial.print(c); // пишем в hardware-порт } if (Serial.available()) { char c = Serial.read(); // читаем из hardware-порта mySerial.write(c); // пишем в software-порт } }

После загрузки скетча откроем монитор последовательного порта Arduino IDE и начнем отправлять AT-команды:


Список основных AT-команд:

  • AT - тестовая команда.

Параметров нет.

Ответ модуля: OK

  • AT+VERSION? - получить версию прошивки модуля.

Параметров нет.

Ответ модуля: +VERSION:

где Версия прошивки Bluetooth-модуля.

  • AT+RESET - сброс настроек.

Параметров нет.

Ответ модуля: OK

  • AT+ORGL - установка пользовательских настроек модуля.

Параметров нет.

Ответ модуля: OK

  • AT+ADDR? - получить адрес модуля.

Параметров нет.

Ответ модуля: +ADDR:

где Адрес Bluetooth-модуля NAP: UAP: LAP.

  • AT+NAME? - получить имя модуля.

Параметров нет.

Ответ модуля: +NAME:

где Имя Bluetooth-модуля.

  • AT+NAME=Установить новое имя модуля.

Параметр: Имя Bluetooth-модуля.

Ответ модуля: +NAME:

OK (или FAIL)

  • AT+PSWD? - получить пин-код доступа к Bluetooth-модулю.

Параметров нет.

Ответ модуля: + PSWD:

где Пин-код. По умолчанию 1234.

  • AT+PSWD=Установить код доступа к Bluetooth-модулю.

Параметр: Код доступа к модулю.

Ответ модуля: OK (или FAIL)

  • AT+CLASS=Установить режим работы модуля Bluetooth-модуля.

Параметр: Класс. В документации модуля не приведены возможные значения данного параметра. По умолчанию он установлен в 0. Если предполагается использовать модуль в режиме master, значение не надо изменять. Если использовать модуль в режиме slave, при значении параметра, равном 0, он невидим для устройств с операционной системой Android. Для видимости необходимо установить значение параметра равным 7936.

Ответ модуля: OK

  • AT+CLASS? - получить класс модуля.

Параметров нет.

Ответ модуля: +CLASS:

где Класс модуля.

  • AT+IAC - получить код доступа к запросу GIAC (General Inquire Access Code).

Различным физическим каналам связи, исполь­зуемым в процессе установления соединения, соответствуют различные коды доступа к каналам. В каналах опроса, за исключением выделенных, используется одинаковый для всех устройств общий код доступа к запросу.

Параметров нет.

Ответ модуля: + IAC:

где Код доступа к запросу.

  • AT+IAC=Установить код доступа к запросу.

Параметр: Код доступа к запросу. Значение по умолчанию 9e8b33.

Ответ модуля: OK (или FAIL)

  • AT+ROLE? - получить режим работы модуля.

Параметров нет.

Ответ модуля: +ROLE:

где Режим работы модуля Bluetooth-модуля:

  • 0 - slave. В этом режиме другой мастер может подключиться к модулю;
  • 1 - master. В этом режиме модуль может сам подключиться к какому-нибудь Bluetooth-устройству;
  • 2 - slave-loop. Модуль отправляет обратно все байты, которые ему прислали.
  • AT+ROLE=Установить режим работы Bluetooth-модуля.

Параметр: Режим работы Bluetooth-модуля:

  • 0 - slave;
  • 1 - master;
  • 2 - slave-

Ответ модуля: OK

  • AT+UART=,,Установить модуль для последовательного порта.

Параметры:

  • Стоп-бит:
  • 0 - нет;
  • 1 - есть;
  • Бит паритета:
  • 0 - нет;
  • 1 - есть.

Ответ модуля: OK (или FAIL).

  • AT+UART? - получить параметры обмена модуля.

Параметров нет.

Ответ модуля: +UART:,,

  • Скорость обмена (9600,19200,38400,57600,115200);
  • Стоп-бит;
  • Бит паритета.
  • AT+CMODE=Установить режим подключения Bluetooth-модуля.

Параметр:

  • 2 - режим slave-loop.

Ответ модуля: OK

  • AT+CMODE? - получить режим подключения модуля.

Параметров нет.

Ответ модуля: +CMODE:

где Режим подключения Bluetooth-модуля:

  • 0 - модуль может подключаться только к определенному командой AT+BIND Bluetooth-устройству;
  • 1 - модуль может подключаться к любому Bluetooth-устройству;
  • 2 - режим slave-loop.
  • AT+INQM=,,Установить параметры для запроса поиска Bluetooth-устройств.

Параметры:

  • :
  • 0 - стандартный режим запроса;
  • 1 - запрос в режиме RSSI;
  • Максимальное количество устройств, отвечающих на запрос;
  • Таймаут ожидания (1–48: от 1,28 сек до 61,44 сек).

Ответ модуля: OK (или FAIL).

  • AT+INQM? - получить параметры для запроса поиска Bluetooth-устройств.

Параметров нет.

Ответ модуля: +UART:,,

  • AT+INQ - запуск поиска Bluetooth-устройств.

Параметров нет.

Ответ модуля - список найденных устройств.

  • AT+BIND=Привязать Bluetooth-модуль к другому модулю.

Ответ модуля: OK (или FAIL).

  • AT+BIND? - получить адрес устройства, привязанного к Bluetooth-модулю.

Параметров нет.

Ответ модуля: Адрес устройства, привязанного к Bluetooth-модулю.

  • AT+FSAD=

    Ответ модуля: OK (или FAIL).

    • AT+RMSAD=

      Ответ модуля: OK (или FAIL).

      • AT+RMAAD - очистить список авторизированных устройств для нашего Bluetooth-модуля.

      Ответ модуля: OK (или FAIL).

      • AT+LINK=Соединиться с Bluetooth-устройством.

      Параметр: Адрес Bluetooth-устройства.

      Ответ модуля: OK (или FAIL).

      Полный список AT-команд можно найти .

      Пример использования

      Рассмотрим пример получения на Android-устройстве (телефон, смартфон, планшет) данных влажности воздуха и температуры с датчика DHT11, подключенного к Arduino. Arduino каждые 10 секунд получает данные с датчика DHT11 и отправляет их через модуль HC05 на Android-устройство.

      Нам понадобятся следующие детали:

      • плата Arduino
      • плата прототипирования
      • датчик DHT11
      • модуль Bluetooth 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 SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно void setup() { Serial.begin(9600); // запуск последовательного порта mySerial.begin(9600); dht.begin(); // запуск DHT Serial.println("start prg"); } void loop() { if(millis()-millis_int1 >= INTERVAL_GET_DATA) { pos=1-pos; if(pos==0) { // получение данных влажности c DHT11 int humidity = dht.readHumidity(); // вывод в монитор последовательного порта Serial.print("humidity=");Serial.println(humidity); mySerial.print("H=");mySerial.println(humidity); } else { // получение данных влажности c DHT11 int temp = dht.readTemperature(); // вывод в монитор последовательного порта Serial.print("temperature=");Serial.println(temp); mySerial.print("T=");mySerial.println(temp); } // старт интервала отсчета millis_int1=millis(); } }

      Проверим на Android-устройстве получение данных, отправляемых Arduino через bluetooth-модуль HC05. На Android-устройчстве установим программу Bluetooth Terminal. В программе установим соединение с модулем HC05:


      И наблюдаем прием данных, поступающих из Arduino через модуль HC05:


      И выдача данных в монитор последовательного порта Arduino IDE:


      Часто задаваемые вопросы FAQ

      1. На AT-команды нет ответа модуля
      • Проверьте правильность подключения модуля;
      • Проверьте подключения контакта KEY модуля (или вывода 34) к 3,3В;
      • Проверьте установленные параметры для последовательного порта (скорость 38400 бод, может у модулей разных производителей отключаться).
      2. Android-устройство не может подключиться к bluetooth-модулю HC05
      • Проверьте подключение модуля к питанию, должно быть быстрое мигание светодиода на модуле (поиск сети);
      • Проверьте отключение контакта KEY модуля (или вывода 34) от 3,3В;
      • Установите AT-командами роль slave (AT+ROLE=0).
      3. Не передаются данные на Android-устройство
      • Проверьте правильность подключения bluetooth-модулю HC05 к плате Arduino;
      • Скорость обмена данными Arduino и HC05 должна соответствовать установленной с помощью AT-команды AT+UART.

      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 HC 06

      Все существующие типы модулей Bluetooth имеют свои особенности, но по функциям и действию они похожи. Одним из видов модулей является Bluetooth HC 06. Со стороны Ардуино модуль выглядит как обычный последовательный интерфейс, поэтому можно сразу наладить взаимодействие с устройством на компьютере.

      Основные характеристики модуля:

      • Питание 3,3В – 6 В;
      • Максимальное входное напряжение 5 В;
      • Максимальный ток 45 мА;
      • Скорость передачи данных 1200–1382400 бод;
      • Рабочие частоты 2,40 ГГц – 2,48ГГц;
      • Поддержка спецификации bluetooth версии 2.1;
      • Малое потребление энергии;
      • Высокий уровень защиты данных;
      • Дальность связи 30 м;
      • Для подключения к смартфону используются следующие данные – пароль «1234», скорость передачи данных 9600, имя модуля HС-06.

      Модуль имеет следующие контакты:

      • VCC , GND – плюс и минус питания;
      • RX и TX – приемник и передатчик;
      • MCU-INT – выводит статус;
      • Clear (Reset) – сбрасывание и перезагрузка модуля. Последние два вывода обычно не задействованы в работе, поэтому сейчас производятся модули без этих контактов.

      Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth. Все настройки для подключения «пароль, скорость передачи данных» можно изменить при помощи АТ-команд.

      В комплектацию модуля не входят соединительные провода.

      Сравнение модулей Bluetooth HC 05 и HC 06

      Модули HC 05 и HC 06 являются наиболее используемыми, их чаще остальных можно найти в продаже. Принцип действия этих модулей схож, оба модуля основаны на одинаковом чипе, но есть и важные отличия. В первую очередь, модуль HC 05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).

      Оба модуля представляют собой две спаянные платы. Одна из них – заводская с микросхемой, другая нужна для самодельных устройств, она оснащена ножками GPIO со стандартным шагом 2,54 мм и стабилизатором напряжения.

      Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций.

      Распиновка модуля HC-05:

      • EN – управление питанием;
      • Питание VCC;
      • RX, TX;
      • STATE – индикация;
      • KEY – активирует режим управления при помощи АТ-команд. При KEY=0 – передача данных, при KEY=1 – АТ-команды.

      Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.

      Основные характеристики HC-05:

      • Рабочие частоты 2,4 – 2,48 ГГц;
      • Мощность передачи 0,25 – 2,5мВт;
      • Дальность 10 м;
      • Максимальная скорость обмена данными 115200 бод;
      • Питание 3,3В;
      • Ток 30-40 мА;
      • Рабочие температуры от -25С до 75С.

      Подключение обоих модулей к плате Ардуино одинаково.

      Вариант подключение модуля с использованием делителя.Представлен вариант для Arduino Nano, но он подойдет и к плате Uno.

      Заключение

      В этой статье мы рассмотрели варианты подключения и работы с одними из самых распространенных Ардуино модулей Bluetooth HC05, HC06 . Никаких особенных сложностей с этими модулями у вас быть не должно – просто подключайте его к пинам с аппаратным или программным UART, после чего используйте традиционные библиотеки (Serial для модуля, подключенного к 0, 1 пинам, SoftwareSerial в случае присоединения к другим).

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


      Как правило в заголовках к подобным статьям указывается конкретная модель модуля, например, 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. А пока этой информации для быстрого старта, я думаю, достаточно.

      Блютуз свисток для компьютера: 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. Так вот один из них служит для отправки данных, а другой для приема. Поэтому ненужно пугаться и просто попробовать подключиться к одному если ничего не произойдет то подключитесь к другому.

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

      Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ: