Управление по bluetooth. Уроки Arduino: управление устройствами со смартфона для чайников Bluetooth модуль hc 06 управление

Обзор модуля 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.

      1 Описание модуля bluetooth HC-06

      Существует большое количество реализаций модулей Bluetooth. Каждая имеет свои особенности, но в общем и целом они все очень похожи. Рассмотрим представителя bluetooth модуля семейства HC-06 , который можно приобрести по отличной цене на этом сайте .

      Данный модуль работает на частоте от 2,40 ГГц до 2,48 ГГц и поддерживает спецификацию bluetooth версии 2.1+EDR: пониженное потребление энергии, повышенный уровень защиты данных и лёгкое соединение Bluetooth-устройств. Устойчивый приём с модулем гарантирован в пределах 10 метров.

      Назначение выводов bluetooth-модуля такое:

      Последние два вывода могут быть не задействованы; часто можно встретить модули вообще без этих выводов.

      2 Схема подключения bluetooth-модуля к Arduino

      Подключим bluetooth модуль к Arduino по приведённой схеме. Обратите внимание, что передатчик (Tx) Ардуино подключается к приёмнику (Rx) модуля, и наоборот.


      На выводе Status появляется высокий уровень, когда модуль сопряжён с другим bluetooth устройством, и низкий - когда не сопряжён. Можно считывать его значение, подключив к пину Arduino и назначив ему режим работы pinMode(pinStatus, INPUT) и таким образом узнавать состояние модуля. Но не на всех модулях индикатор статуса работает корректно, поэтому мы не будем его использовать в данном примере.

      В результате должно получиться примерно как на фотографии.


      3 Скетч для Arduino для работы по bluetooth

      Напишем такой скетч и загрузим в память Arduino:

      Const int ledPin = 13; // вывод встроенного светодиода char incomingbyte; // переменная для данных Bluetooth void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { // если порт доступен incomingbyte = Serial.read(); // считываем с порта данные switch(incomingbyte) { case "1": // если приходит "1" digitalWrite(ledPin, HIGH); // break; case "0": // если приходит "0" digitalWrite(ledPin, LOW); // break; } } }

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

      4 Сопряжение с bluetooth-устройством

      Теперь нужно добавить bluetooth-устройство в список доверенных устройств. Включаем Bluetooth на компьютере, идём в Параметры Устройства Bluetooth .

      Если в области уведомлений при включении bluetooth на компьютере появилась иконка bluetooth, то можно кликнуть по ней правой кнопкой мыши и выбрать пункт :

      Убеждаемся, что наш bluetooth-модуль виден компьютеру. Выбираем его из списка и нажимаем кнопку Связать . В диалоговое окно вводим пароль по умолчанию 1234 . При успешном добавлении устройство появится в списке с пометкой Сопряжено .


      Пароль по умолчанию для конкретного модуля может отличаться от "1234". Эту информацию должен предоставить изготовитель (продавец) модуля.

      Если вы хотите подключиться к вашему модулю bluetooth со смартфона, то порядок действий аналогичный: включить bluetooth на смартфоне, обнаружить модуль, подключённый к Arduino, выполнить сопряжение с ним.

      5 Подключаемся к bluetooth-модулю по bluetooth с компьютера

      Для подключения к bluetooth модулю можно использовать различные программы, которые могут подключаться к COM-порту. Например, такие как HyperTerminal, PuTTY, Tera Term, Termite и другие. Они все бесплатные и свободно распространяются в интернете.

      Удобство программы TeraTerm в том, что она автоматически выводит список COM-портов, которые назначены модулю bluetooth вашего компьютера. Запускаем программу, выбираем подключение Serial, из списка выбираем соответствующий bluetooth COM-порт, нажимаем OK.


      Программа PuTTY при запуске также спрашивает номер порта (COM4, у вас будет свой), скорость подключения (9600), тип соединения (Serial). Затем нажимаем кнопку Соединиться .


      В случае ошибки при подключении программа выведет соответствующее оповещение. Если соединение вашего компьютера с bluetooth-модулем произошло успешно, то вы увидите перед собой поле терминала. Введите с клавиатуры в это поле число 1 - и светодиод на 13 выводе Arduino загорится, введите 0 - погаснет.

      6 Подключение со смартфона с помощью Bluetooth Terminal

      Аналогично можно подключиться к модулю bluetooth со смартфона. Скачайте приложение для работы с bluetooth по терминалу, например Bluetooth Terminal . Подключайтесь к модулю и вводите команды 0 или 1.

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

      В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль (с учетом бесплатной доставки в любую страну). Их легко можно найти на широко известной площадке AliExpress введя в поисковую строку одно из словосочетаний: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06 или нажать на эту ссылку .

      В большинстве модулей используется чип BC417, плюс Flash-память. Чип поддерживает спецификацию Bluetooth v2.0 + EDR, AT-команды, может работать в режиме Master или Slave (модули HC-03/HC-5, может устанавливаться AT-командой), поддерживает скорость обмена от 2400 до 1382400.
      Напряжение питание модуля составляет 3.3В, ток потребления ~50мА.
      Модули HC-03/HC-05 более функциональные, чем HC-04/HC-06.

      Основные выводы модулей HC-04/HC-06:
      UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) - пины UART.
      3,3V (pin 12) - питание 3.3В.
      GND (pin 13) - общий.
      PIO1 (pin 24) - индикатор рабочего режима. Если соединение не установлено - то светодиод мигает, если установлено, то постоянно горит.

      Для модулей HC-03/HC-05 есть некоторые отличия. Линии UART и питания те же самые, но:
      PIO8 (pin 31) - индикатор рабочего режима.
      PIO9 (pin 32) - статус соединения, если соединение установлено, то на выходе будет высокий уровень.
      PIO11 (pin 34) - вход включения режима AT-команд (необходимо подать лог. 1).

      За более подробной документацией обращайтесь к PDF .

      Итак, соберем простую схему для подключения Bluetooth модуля HC-06 к плате Arduino Nano V3.

      Обратите внимание, что выводы TX и RX в плате Arduino Nano поменяны местами в отличии от Ardunio UNO и др. Поэтому внимательно смотрите распиновку своей Arduino платы.

      Шаг между выводами в модуле составляет всего 1.5мм, поэтому придется взяться за паяльник и припаять провода к модулю. Всего необходимо припаять 5 проводов, однако светодиод подключать необязательно, он служит для индикации состояния.

      Итак припаиваем провода и подключаем Bluetooth модуль следующим образом:
      вывод Arduino 3.3В - к 12 пину модуля
      вывод Arduino GND - к 13 пину модуля
      вывод Arduino TX - к 2 пину модуля RX
      вывод Arduino RX - к 1 пину модуля TX

      Передача данных из Arduino по Bluetooth

      Int cnt = 0; // счетчик void setup() { Serial.begin(9600); // инициализация порта } void loop() { cnt++; Serial.print("Hello BB from Arduino! Counter:"); // выводим надпись Serial.println(cnt); // выводим значение счетчика и переводим на новую строку delay(1000); // ждем 1 секунду }

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

      Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение.

      Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля.

      На компьютере, в качестве Bluetooth модуля использовался самый дешевый китайский Bluetooth USB адаптер, стоимостью около 200 руб. После того, как адаптер подключается к компьютеру, установите необходимые драйвера (в Windows 7 x64 у меня все драйвера поставились автоматом).
      Затем щелкаем в трее по иконке Bluetooth модуля и выбираем "Добавить устройство":

      Имя моего модуля BOLUTEK, у вас оно скорее всего будет другим. Нажимаем "Далее" и переходим к окну, где необходимо ввести пароль для устройства:

      Выбираем второй пункт: "Введите код образования пары устройства". С завода, код установлен 1234. Его и вводим. Программа настроит и пропишет в системе виртуальные COM-порты (у меня прописало 2 шт, но может быть и один):

      В дальнейшем, можно посмотреть на какой COM-порт назначилось и его параметры. Для этого щелкаем правой кнопкой мыши по устройству и выбираем "Свойства" и вкладку "Оборудование". Там можно посмотреть и изменить параметры виртуального COM-порта:

      Теперь, для приема и передачи данных на виртуальный COM порт можно использовать любую терминал программу. Я использовал бесплатную . При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4.

      В терминале мы видим данные счетчика с платы Arduino:

      Как видим, данные успешно передаются по Bluetooth соединению. Ниже в статье вы можете посмотреть видео.

      Двунаправленный обмен данными по Bluetooth

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

      Char incomingByte; // входящие данные int LED = 12; // LED подключен к 12 пину void setup() { Serial.begin(9600); // инициализация порта pinMode(LED, OUTPUT); Serial.println("Press 1 to LED ON or 0 to LED OFF..."); } void loop() { if (Serial.available() > 0) { //если пришли данные incomingByte = Serial.read(); // считываем байт if(incomingByte == "0") { digitalWrite(LED, LOW); // если 1, то выключаем LED Serial.println("LED OFF. Press 1 to LED ON!"); // и выводим обратно сообщение } if(incomingByte == "1") { digitalWrite(LED, HIGH); // если 0, то включаем LED Serial.println("LED ON. Press 0 to LED OFF!"); } } }

      Программа работает очень просто. После запуска или сброса устройства, в последовательный порт выводится сообщение с предложением нажать 1 или 0. В зависимости от нажатой цифры светодиод будет загораться или гаснуть. А также, от Arduino будет выводиться сообщение загорелся светодиод, или погас.

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

      Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.

      Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.

      Нам понадобится:

      • Набор проводов ПАПА-МАМА
      • HC-06 Bluetooth

      Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА .

      Arduino Bluetooth
      Pin 1 (TX) RXD
      Pin 0 (RX) TXD
      GND GND
      5V VCC

      Будьте внимательны, подключать подключать нужно TX -> RXD ,RX -> TXD .

      Теперь необходимо записать пробный код программы:

      Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.

      Int val; int LED = 13; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); } void loop() { if (Serial.available()) { val = Serial.read(); // При символе "1" включаем светодиод if (val == "1") { digitalWrite(LED, HIGH); } // При символе "0" выключаем светодиод if (val == "0") { digitalWrite(LED, LOW); } } }

      После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.

      Подключение Bluetooth к телефону

      Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.

      1. Включаем Bluetooth на телефоне и ищем новые устройства
      2. Находим в списке расстройств "HC-06" и подключаемся к нему.
      3. Телефон спросит пин-код. необходимо ввести "1234 " или "0000 "
      4. Ура. Устройство подключено.

      Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.



      Вы можете установить разные bluetooth терминалы, как правило они отличаются только разными дизайнами, функционал от этого не меняется. Так же можно найти и терминал и для продуктов ios.

      После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.

      Пришло время попробовать проект в деле. Пишем в терминале цифру "0" и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру "1" и светодиод L должен зажечься.

      Демонстрация работы:


      Домашняя работа:

      • Изменить скетч так, что бы светодиод зажигался и потухал с помощью одной и той же команды например "G".
      • Дописать скетч и научить его преобразовывать текстовые данные приходящие через блютус в цифровые и реализовать димер, зажигать светодиод с помощью ШИМ, на заданную яркость от 0 до 254 приходящую через bluetooth.

      Введение

      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 для работы комментариев.