Модуль bluetooth hc-05(06)

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

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

Назначение выводов bluetooth-модуля HC-06

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

Вывод Назначение
VCC и GND «плюс» и «минус» питания модуля, поддерживаются напряжения от 3,6 до 6 вольт;
TX и RX передатчик и приёмник модуля;
MCU-INT (Status, State) вывод статуса;
Clear (Reset) сброс и перезапуск модуля, в данном случае осуществляется низким логическим уровнем.

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

Немного теории

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

Bluetooth

Стандарт беспроводной радиосвязи, связывающий на коротком расстоянии различные типы устройств. Для управления железками через Web Bluetooth API нам потребуется Bluetooth v4.0.

Сервисы

Внутри bluetooth-устройства есть сервисы. Сам по себе сервис — это коллекция характеристик и связей с другими сервисами. У каждого сервиса есть свои UID и имя. Зачастую будут попадаться “Unknown services”. Это связано с тем, что количество устройств и вариантов их использования велико.

Характеристики

Внутри каждого сервиса есть характеристики, в которые можно писать, считывать их, а также подписаться на них. Характеристика также имеет свой UID.

Что такое bluetooth модуль и его назначение

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

Таким образом, первичное и главное назначение Ардуино блютуз – связь с вашим ПК и\или Андроидом по соответствующему протоколу. Это позволяет не только управлять разнообразными датчиками на микроконтроллере, но и, в случае необходимости, обновлять прошивку.

Полностью перепрошить устройство с его помощью не получится. Помимо этого, Android Arduino bluetooth может обеспечить связь между несколькими МК и приборами. Естественно, для этого на каждом из них должен быть установлен независимый модуль. HC-05 позволяет проложить несколько мостов по типу USAR-bluetooth-USART. При этом само устройство будет восприниматься в качестве ответного на USART. А организовывать связь уже будет аппаратная часть вашего проекта.

Модуль HC-06

У блютуз модуля под Ардуино, есть несколько преимуществ, перед стандартными дополнениями под другие МК:

  1. Инженеру нет необходимости изучать технологию протокола блютуз, чтобы написать софт или начать использовать уже готовые библиотеки.
  2. Простота использования в целом. Вам не нужно будет паять отдельную плату под распределение мощностей, просто подсоедините устройство к уже готовому МК через пины.
  3. Обширный выбор библиотек. Так как Ардуино имеет низкий порог вхождения, под все его модули можно найти большое количество библиотек, разного назначения. Но стоит отметить, что весомая их часть – бесполезны, ибо не работают или работают крайне плохо. Ведь пишет их сообщество, которое не изучало основы алгоритмизации и, в большинстве своём, в принципе, плохо разбирается в программировании. Из-за этого, во многих ситуациях, просто модифицировать чужой софт – не лучшее решение, и значительно проще написать свой.

Сфера же применения RC car Arduino bluetooth – огромна и ограничена лишь вашей фантазией. Например, вы можете купить обычную китайскую гарнитуру, припаять к ней пару модулей под Ардуино, так как они могут функционировать и без МК, и загрузить одну из готовых библиотек. После таких манипуляций наушники можно будет использовать в беспроводном режиме и исчезнет проблема с запутывающимися или гнущимися проводами. Это одна из банальных проблем реализации данного протокола в проекте, на деле их тысячи.

Предназначается bluetooth аудио модуль для бытового и коммерческого применения, чему способствуют его характеристики. Также стоит учитывать, что если вы собираетесь в дальнейшем связываться по одноимённому протоколу с ПК, то на большинстве современных устройств необходимо будет докупить блютуз по USB. Но вы можете также спаять его из МК, создав собственный bluetooth модуль для компьютера. Естественно, это не относится к ноутбукам, где поголовно устанавливаются одноимённые передатчики, и никак модифицировать их уже не требуется.

Скетч для управления роботом на Arduino по Bluetooth через смартфон на Android

В своём скетче я реализовал следующие функции:

  • Движение вперед
  • Движение назад
  • Разворот влево
  • Разворот вправо
  • Плавный поворот влево при движении вперед
  • Плавный поворот вправо при движении вперед
  • Плавный поворот влево при движении назад
  • Плавный поворот вправо при движении назад
  • Остановка

Установка скорости 0%

Установка скорости 10%

Установка скорости 20%

Установка скорости 30%

Установка скорости 40%

Установка скорости 50%

Установка скорости 60%

Установка скорости 70%

Установка скорости 80%

Установка скорости 90%

Установка скорости 100%

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

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

Подключение Bluetooth JY-MCU к Arduino Mega 2560

Подключение довольно простое.

Официальная схема подключения:

  • TXT на JY-MCU подключаем к RX (0) на Arduino
  • RXD на JY-MCU подключаем к TX (1) на Arduino

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

Меня такой вариант не устраивает, поэтому я решил использовать дискретные порты с поддержкой Serial.

Неофициальная схема подключения:

  • VCC на JY-MCU подключаем к +5В Arduino
  • GND на JY-MCU подключаем к GND Arduino
  • TXT на JY-MCU подключаем к дискретному PIN 50 на Arduino
  • RXD на JY-MCU подключаем к дискретному PIN 51 на Arduino

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

Чтобы закрепить Bluetooth, я решил использовать плату Proto Shield и миниатюрную беспаечную макетную плату. К ней в будущем и буду подключать остальное оборудование, элементы управления и индикации.

Характеристики Bluetooth модуля HC-06 / HC-05

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


HC-05/06 Bluetooth модуль распиновка

Оба устройства построены на чипе CSR BC417, который поддерживает радиосигнал по протоколу Bluetooth со скоростью до 3 Мбит/сек. На самой плате находится антенна из дорожки в виде змейки, обеспечивающая дальность связи до 10 метров. Главным преимуществом можно назвать устойчивость к широкополосным помехам, а значит несколько устройств могут общаться между собой, не мешая друг другу.

Скетч для управления Ардуино через блютуз со смартфона на Android ничем не отличается от скетча, который применяется для управления Ардуино с компьютера. Так как в обоих случаях микроконтроллер будет получать данные по протоколу UART (универсальный асинхронный приемопередатчик) — самый первый и наиболее распространенный сегодня физический протокол передачи данных.

Установка приложения Bluino Loader

Далее нам нужно установить приложение Bluino Loader из Google Play Store.

Первое приложение, которое вам нужно знать — это «Bluino Loader» для Andorid 4.0 или выше с доступным соединением Bluetooth. Вы можете скачать или установить его из магазина Google Play:

Bluino Loader — версия для Arduino IDE

или

Pro-версия для поддержки разработчика Bluino Loader Pro для Arduino IDE

Это приложение предназначено для работы с Arduino Uno, вы можете писать, редактировать и загружать эскизы в Arduino uno по bluetooth HC-05. Приложение легкое для понимания, как Arduino IDE, есть много примеров эскиза, а также вы можете добавить некоторые библиотеки, просто скопируйте папку библиотеки в папку BluinoLoader / libraries.

Вы можете изменить тему цвета редактора, размера текста и многих функций. Если вы хотите получить функцию Serial Monitor, удалить рекламу и иметь возможность сканировать любое имя bluetooth (не только Bluino # …), вы можете купить PRO-версию.

Загрузка эскиза работает очень хорошо по Bluetooth. Так что можно поставить этому приложению оценку 4 из 5.

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

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

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

Добавление устройства Bluetooth

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

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

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

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

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

Bluetooth в Arduino проектах

Нередко в проектах возникает необходимость дистанционного управления или передачи данных с телефона или другого устройства. Одним из самых популярных и удобных способов является обмен данных через Bluetooth. Для связи платы Arduino и компьютера используется интерфейс UART (Serial). Так как любая плата Ардуино имеет хотя бы 1 последовательный порт UART, для подключения Bluetooth модуля не требуются специализированные библиотеки и схемы.


Модуль Bluetooth HC-05 для Arduino

Самыми популярными модулями являются устройства на основе чипа BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть и сервером соединения, и клиентом, они обладают широким набором АТ команд. Для подключения к ПК потребуются модуль Bluetooth, плата Arduino, соединительные провода и компьютер. Скетч для управления платой Ардуино через смартфон и компьютер будет одинаковым, так как в обоих случаях данные в микроконтроллер буду поступать по протоколу UART. Схема подключения Bluetooth-модуля к плате представлена на рисунке. Пин RX на ардуино подключается к TDX, TX – к RDX, GND – к GND, 5V – к VCC.При загрузке скетча нужно отключить Bluetooth-модуль, иначе будет появляться ошибка доступа к Ардуино.  Также нужно установить на смартфон или планшет, поддерживающий ОС Android, приложение для отправки данных на модуль.  После установки приложения нужно загрузить скетч и подключить модуль к плате Ардуино.  Пример кода мигания светодиода:

Arduino

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 выключается светодиод

}

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

intval;

voidsetup()

{

Serial.begin(9600);

pinMode(13,OUTPUT);// 13 пин – светодиод, объявляется как выход

}

voidloop()

{

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

Часть 1. Соединение с компьютером (WIN7)

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

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

.
Действие 1

Идем в панель управления, щелкаем на иконку блютуза и выбираем «Показать устройства Bluetooth»

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

Выбираем второй вариант — «Введите код образования пары устройства»

Для HC-06 этот код 1234

Завершается все такой картиной.

А за ним еще одно

Первый этап настройки завершен

В случае, если вы забудете каким COM портом у вас определился блютуз, это всегда можно посмотреть выполнив следующие действия:

Действия

P.S. Или посмотреть в диспетчере устройств

. Действие 2

Для передачи данных можно использовать любой терминал. Я использовал простой и бесплатный «Termite «.

В качестве примера мы будем изменять состояние встроенного на плату Arduino светодиода «LED 13». Включаться он будет при приеме символа «W», а отключаться при «S». Приведенный ниже скетч нужно залить в плату Arduino. При заливке в плату необходимо отсоединить питание от блютуз модуля
, после заливки снова подсоединить.

пример программного кода:

setup
Serial
loop
Serial
Serial
// При символе «W» включаем светодиод
// При символе «S» выключаем светодиод
Termite

В настройках выбираем наш порт, скорость (9600).

Также модуль можно проверить и без Arduino просто замкнув выводы TX и RX. Termite отправляемые символы отмечает синим цветом, полученные зелеными. Т.е. если при закороченных выводах мы отправили и нам пришло тоже самое — значит что модуль работает исправно. На фото ниже это и продемонстрировано.

Схема и распиновка Bluetooth модуля


HC05/06 Bluetooth модуль распиновка, схема

Для настройки модуля необходимо подключить к нему питание от 3,3 Вольт, кроме того необходимо подать 3,3 Вольта на порт 34 (см. фото выше). Прошивка осуществляется по последовательному порту, так как аппаратный последовательный порт у Ардуино (порты TX и RX) будет занят для отправки AT-команд с компьютера, то мы используем программный последовательный порт с помощью библиотеки SoftwareSerial.h.

Данная библиотека позволяет реализовать программный последовательный порт на любых цифровых выходах Ардуино. Для настройки Bluetooth модуля его следует перевести в режим отладки — необходимо подключить вывод 34 к 3,3 Вольтам, питание модуля при прошивке тоже идет от 3,3 Вольт. В качестве контактов программного последовательного порта будем использовать цифровые выводы 2 и 3 на Arduino UNO.

Принципы работы модуля nRF24L01

Модули nRF24L01 являются приемопередающими модулями, то есть каждый модуль может как передавать, так и принимать информацию. Но они могут работать только в режиме полудуплекса – то есть в конкретный момент времени модуль может либо передавать, либо принимать информацию. Основой модуля является универсальная микросхема nRF24L01 от компании Nordic semi-conductors, которая осуществляет прием и передачу данных в модуле. Эта микросхема взаимодействует с другими устройствами по интерфейсу SPI, поэтому ее легко подключить к большинству современных микроконтроллеров, в том числе и к плате Arduino, для которой разработаны специальные библиотеки для работы с подобными модулями. Ранее мы использовали модули nRF24L01 для создания приватной комнаты чата на основе плат Arduino.

Назначение контактов (распиновка) модуля nRF24L01 приведена на следующем рисунке.

Модуль может работать с напряжениями от 1.9V до 3.6V (обычно используется 3.3V) и потребляет во время своей работы сравнительно небольшой ток – всего 12mA, что позволяет его использовать в устройствах с низким потреблением энергии, работающих от маленьких батареек типа «таблетка» (coin cells). Несмотря на то, что стандартное рабочее напряжение модуля составляет 3.3V, большинство его контактов устойчивы и к напряжению 5V, что позволяет непосредственно его подключать к контактам платы Arduino.

Другим достоинством модуля nRF24L01 является наличие у него возможности работать по 6 каналам связи. Это значит, что он может взаимодействовать с другими 6 подобными модулями и передавать им или принимать от них информацию. Данная особенность модуля позволяет строить на его основе сети связи с топологией типа «звезда» или Mesh сети (самоорганизующиеся сети связи, в которых каждое устройство может выполнять роль ретранслятора/маршрутизатора), поэтому данные модули очень удобны для реализации различных проектов в сфере интернета вещей (IoT – Internet of Things). Также модули nRF24L01 поддерживают до 125 уникальных идентификаторов (ID), то есть в ограниченной области мы можем использовать до 125 таких модулей чтобы они не мешали при работе друг другу.

Şimdi Daha Kolay Şekilde Android Telefon Üzerinden Bluetooth Modülü İle RGB LED Kontrolü Uygulamasını Yapalım

Arduino ile Bluetooth protokolünün nasıl çalıştığını öğrendik. Şimdi de HC06 modülünü kullanarak RGB LED kontrolü uygulaması yapacağız.

Gerekli Malzemeler:

  • Arduino UNO
  • Breadboard
  • HC06 Bluetooth Modülü
  • RGB LED
  • 3 adet 330Ω Direnç
  • 40 Pin Ayrılabilen Erkek-Erkek Jumper Kablo

Hadi HC06 ile RGB LED kontrol ettiğimiz devremizi kuralım:

Arduino Bluetooth RGB Devresi

Arduino kodumuzu aşağıdaki gibi yazalım:

#include <softwareserial.h>

int veri; //Bluetooth üzerinden okuduğumuz değişken.
int kirmiziPin = 9; //RGB Ledin kırmızı bacağının takılacağı pin
int yesilPin = 10; //RGB Ledin yeşil bacağının takılacağı pin       
int maviPin = 11; //RGB Ledin mavi bacağının takılacağı pin
void setup() {
  Serial.begin(9600); //Seri haberleşmeyi başlatıyoruz.
  pinMode(kirmiziPin, OUTPUT); //Kırmızı pinini OUTPUT olarak ayarlıyoruz.
  pinMode(yesilPin, OUTPUT); //Yeşl pinini OUTPUT olarak ayarlıyoruz.
  pinMode(maviPin, OUTPUT); //Mavi pinini OUTPUT olarak ayarlıyoruz.
}
void loop() {
  if (Serial.available() & gt; 0) { //Seri haberleşmeden veri gelmesini bekliyoruz.
    veri = Serial.read(); //Seri haberleşmeden gelen veriyi okuyoruz.
  }
  if (veri == 'k') { //Seri haberleşmeden k harfi geldiğinde bu kısım çalışır.
    digitalWrite(kirmiziPin, LOW);
    digitalWrite(yesilPin, HIGH);
    digitalWrite(maviPin, HIGH);
  } else if (veri == 'y') { //Seri haberleşmeden y harfi geldiğinde bu kısım çalışır.
    digitalWrite(kirmiziPin, HIGH);
    digitalWrite(yesilPin, LOW);
    digitalWrite(maviPin, HIGH);
  } else if (veri == 'm') { //Seri haberleşmeden m harfi geldiğinde bu kısım çalışır.
    digitalWrite(kirmiziPin, HIGH);
    digitalWrite(yesilPin, HIGH);
    digitalWrite(maviPin, LOW);
  } else { //Seri haberleşmeden tanımlanmayan veri geldiğinde bu kısım çalışır.
    digitalWrite(kirmiziPin, HIGH);
    digitalWrite(yesilPin, HIGH);
    digitalWrite(maviPin, HIGH);
  }
}

Belki de artık arduino ile araba yapabilecek seviyeye gelmişsindir, ne dersin? Denemek ister misin?

Часть 2. Соединение с телефоном (Android)

В качестве подопытного будет взят телефон Samsung Galaxy Ace 2 на операционке Android.

Соединяем с телефоном

. Действие 2

В качестве терминала выберем опять-таки простой и бесплатный, но уже «Bluetooth Terminal «

P.S. В случае если не удается подключиться, отключайте питание от блютуза и подключайте заново.

Bluetooth
— это пожалуй самый распространенный тип связи для коротких дистанций, которым пользуются большинство современных электронных устройств. Телефонные гарнитуры, наушники, клавиатуры и мышки, принтеры и бог знает какие еще гаджеты. Некоторое время назад bluetooth был распространен как средство передачи файлов между телефонами.
Главными достоинствами BT можно назвать хорошую устойчивость к широкополосным помехам и простоту реализации. Первое значит, что куча устройств, находящихся в одном месте, могут одновременно общаться между собой, не мешая друг другу. Второе же помогло широкому распространению Bluetooth в среде DIY, и вообще во всех средах.
Лично я использую BT для управления роботами со смартфона. В Google play уже есть несколько приложений с удобным интерфейсом именно для этих целей. Участники нашего хакспейса MakeItLab с помощью Bluetooth управляют удаленно светом и собирают телеметрию с борта квадрокоптеров.
Самыми доступными на сегодня Bluetooth модулями можно назвать HC-05 и HC-06. Они в изобилии присутствуют в Китайских онлайн-магазинах и на ebay. Отличия между ними в том, что первый может работать как в режиме ведущего (slave), так и в режиме ведомого (master). Второй же является чисто ведомым устройством (но это поправимо!). Другими словами, HC-06 не может сам обнаружить парное устройство и наладить с ним связь, он может лишь подчиниться ведущему.
Оба устройства базируются на чипе CSR BC417 , который поддерживает Bluetooth версии 2.0 со скоростью до 3 Мбит/сек. Именно об этих модулях далее и пойдет речь.

Подключение модуля HC-06

Для соединения модуля HC-06 или подобного с Ардуино достаточно подключить его к питанию 5 V и GND, а выводы RXD и TXD соединить крест накрест с соответствующими выводами Ардуино. То есть RXD -> Tx, а TXD -> Rx.

Выводы модуля HC-06

Важный момент! Базовые версии Ардуино имеют один UART и он используется для связи по USB (для программирования), поэтому при включенном Bluetooth модуле общаться по USB не удастся! Для программирования Ардуино предусмотрите возможность отключения питания Bluetooth модуля, например отключения линии 5 V. После загрузки прошивки и отключения от USB, питание модуля можно включить, а к Ардуино подключить питание от батареи.

Схема соединения Bluetooth модуля с Ардуино

Программа Bluetooth RC Car — управление роботом-машинкой со смартфона на Android

В свой смартфон я установил программу Bluetooth RC Car. На мой взгляд  — это лучшая софтинка для управления роботом-машинкой.

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

Для работы программы требуется Android версии 2.3.3 или выше. Размер программы 3 мегабайта.

Список команд:

  • F – вперед
  • B – назад
  • L – влево
  • R – вправо
  • G – прямо и влево
  • I – прямо и вправо
  • H – назад и влево
  • J – назад и вправо
  • S – стоп
  • W – передняя фара включена
  • w – передняя фара выключена
  • U – задняя фара включена
  • u – задняя фара выключена
  • V – звуковой сигнал включен
  • v – звуковой сигнал выключен
  • X – сигнал “аварийка” включен
  • x — сигнал “аварийка” выключен
  • 0 – скорость движения 0%
  • 1 – скорость движения 10%
  • 2 – скорость движения 20%
  • 3 – скорость движения 30%
  • 4 – скорость движения 40%
  • 5 – скорость движения 50%
  • 6 – скорость движения 60%
  • 7 – скорость движения 70%
  • 8 – скорость движения 80%
  • 9 – скорость движения 90%
  • q – скорость движения 100%

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

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

Принцип передачи команд: при нажатии на кнопку в программе, команда передается по Bluetooth один раз, а при отпускании кнопки сразу передается команда S-остановка.

Комплектующие

  1. Arduino Uno — https://bit.ly/2P3rCI5​
  2. драйвер моторов L298N — https://bit.ly/3dvbDMg​
  3. Bluetooth модуль HC-06 или HC-05 или подобный — https://bit.ly/3x4nhFX​
  4. моторы постоянного тока с редуктором и с колёсами — 4 шт — https://bit.ly/2P4e9Qr​
  5. провода папа-папа, мама-мама, папа-мама 10-30 см — https://bit.ly/3n3z0jl​
  6. аккумулятор 9В, я использовал с разъёмом micro-USB для зарядки — https://bit.ly/2QeFbF6​
  7. зажим для аккумулятора 9В — https://bit.ly/32rmwZi​
  8. тумблер — 1 шт — https://bit.ly/3artZfr

Для изготовления рамы машинки можно использовать разнообразные материалы:

  • листовой лёгкий материал, который легко обрабатывать — оргстекло, фанера, текстолит, оргалит и т.п.
  • третье колесо, которое будет опорным — оно должно уметь ехать во всех стороны (хорошо подходят мебельные колёсики);
  • крепёжные элементы — болты, гайки, шурупы.

Serial Bluetooth Terminal

Теперь нам понадобиться клиент для Android, который сможет подключиться к последовательному порту через bluetooth. Найдем такое приложение в Play Market.

Найдем наш модуль в меню devices. И попробуем к нему подключиться.

Наше устройство на экране поиска в Serial Bluetooth Terminal

Попробуем подключиться, и если все правильно, то увидим сообщение Connected.

Подключились к нашему модулю

И наконец, отправим на наш модуль команды. На которые должна среагировать программа в Ардуино и изменить цвет rgb светодиода.

Задаем белый цвет rgb светодиода через приложение

Каждая введенная цифра отвечает за свой цвет на rgb светодиоде. Как вы помните, цвета переключаются в цикле. Если на два цвета отправить 0, а на последний 250, то гореть должен только один цвет.

Цвет изменяется по bluetooth

Элементы платы

Bluetooth модуль HC-05

Сердцем модуля является чип BC417 от компании Cambridge Silicon Radio, который обеспечивает аппаратную поддержку стека Bluetooth 2.0 + EDR (Enhaced Data Rate), а также флэш-память ES29LV800DB-70WGI от Excel Semiconductor на 8 Мбит (1 МБ), хранящая прошивку и настройки.

Troyka контакты

1 группа

  • Земля (G) — соедините с землёй микроконтроллера.
  • Питание (V) — соедините с питанием микроконтроллера.
  • Сигнальный (TX) — Подключите к пину микроконтроллера.

2 группа

  • Сигнальный (K) — Подключите к сигнальному пину микроконтроллера.
  • Не используется.
  • Сигнальный (RX) — Подключите к пину микроконтроллера.

Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Bluetooth и управляющим устройством.
PAIR Горит, если модуль сопряжён с другим устройством
MODE Мигает в зависимости от режима работы (горит/не горит):
64 мс/300 — нет сопряжения;
64 мс/2000 мс — сопряжён с другим устройством;
2000 мс/2000 мс — режим AT-команд.

Обвязка для согласования уровней напряжения

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

Подключение Bluetooth-модуля к Arduino

Так теперь нам нужно подключить нашу Arduino с Bluetooth. Если на Arduino нет вывода с 3.3В, а только 5В то нужен будет поставить стабилизатор чтобы снизить питание. Назначение выводов HC-05 легко найти в интернете. Для использования рекомендуем вам сделать плату с выведенными линиями питания, Rx и Tx. Подключение к Arduino необходимо производить в следующем порядке:

  • вывод Arduino 3.3В или (5В через стабилизатор!) — к 12 пину модуля Bluetooth
  • вывод Arduino GND — к 13 пину модуля Bluetooth
  • вывод Arduino TX — к 2 пину модуля RX Bluetooth
  • вывод Arduino RX — к 1 пину модуля TX Bluetooth

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

Char incomingByte; // входящие данные
int LED = 12; // LED подключен к 12 пину
void setup() {
Serial.begin(9600); // инициализация порта
pinMode(LED, OUTPUT); //Устанавливаем 12 вывод как выход
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!»);
}
}
}

Объяснение программы для Arduino

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

Сначала в программе необходимо определить контакты Arduino, на которых мы будем использовать последовательную связь (Rx и Tx).

Arduino

int TxD = 11;
int RxD = 10;

1
2

intTxD=11;

intRxD=10;

Затем установим 2-й и 3-й контакты платы Arduino (к ним подключены светодиоды) в режим вывода данных.

Arduino

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);

1
2

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

Далее, в функции loop плата Arduino будет непрерывно проверять поступление данных от Bluetooth модуля (который, в свою очередь управляется с помощью голосовых команд) и в соответствии с ними управлять включением/выключением светодиодов. Все принимаемые команды мы будем сохранять в переменной “Value”.

Если значение этой переменной равно «all LED turn on», то мы будем включать оба светодиода. Аналогично этому при поступлении других голосовых команд мы будем соответствующим образом включать и выключать светодиоды в нашей схеме. Более подробно все эти процессы показаны на видео, приведенном в конце статьи.

Arduino

if (bluetooth.available())
{
value = bluetooth.readString();

if (value == «all LED turn on»){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

if (value == «all LED turn off»){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}

if (value == «turn on Red LED»){
digitalWrite(2, HIGH);
}

if (value == «turn on green LED»){
digitalWrite(3, HIGH);
}

if (value == «turn off red LED»){
digitalWrite(2, LOW);
}

if (value == «turn off green LED»){
digitalWrite(3, LOW);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

if(bluetooth.available())

{

value=bluetooth.readString();

if(value==»all LED turn on»){

digitalWrite(2,HIGH);

digitalWrite(3,HIGH);

}

if(value==»all LED turn off»){

digitalWrite(2,LOW);

digitalWrite(3,LOW);

}

if(value==»turn on Red LED»){

digitalWrite(2,HIGH);

}

if(value==»turn on green LED»){

digitalWrite(3,HIGH);

}

if(value==»turn off red LED»){

digitalWrite(2,LOW);

}

if(value==»turn off green LED»){

digitalWrite(3,LOW);

}

}

Программа Bluetooth RC Car — управление роботом-машинкой со смартфона на Android

В свой смартфон я установил программу Bluetooth RC Car . На мой взгляд — это лучшая софтинка для управления роботом-машинкой.

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

Для работы программы требуется Android версии 2.3.3 или выше. Размер программы 3 мегабайта.

Список команд:

  • F – вперед
  • B – назад
  • L – влево
  • R – вправо
  • G – прямо и влево
  • I – прямо и вправо
  • H – назад и влево
  • J – назад и вправо
  • S – стоп
  • W – передняя фара включена
  • w – передняя фара выключена
  • U – задняя фара включена
  • u – задняя фара выключена
  • V – звуковой сигнал включен
  • v – звуковой сигнал выключен
  • X – сигнал “аварийка” включен
  • x — сигнал “аварийка” выключен
  • 0 – скорость движения 0%
  • 1 – скорость движения 10%
  • 2 – скорость движения 20%
  • 3 – скорость движения 30%
  • 4 – скорость движения 40%
  • 5 – скорость движения 50%
  • 6 – скорость движения 60%
  • 7 – скорость движения 70%
  • 8 – скорость движения 80%
  • 9 – скорость движения 90%
  • q – скорость движения 100%

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

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

Принцип передачи команд: при нажатии на кнопку в программе, команда передается по Bluetooth один раз, а при отпускании кнопки сразу передается команда S-остановка.

Характеристики Bluetooth модуля HC-05 / HC-05

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

Оба устройства построены на чипе CSR BC417, который поддерживает радиосигнал по протоколу Bluetooth со скоростью до 3 Мбит/сек. На самой плате находится антенна из дорожки в виде змейки, обеспечивающая дальность связи до 10 метров. Главным преимуществом можно назвать устойчивость к широкополосным помехам, а значит несколько устройств могут общаться между собой, не мешая друг другу.

Скетч для управления Ардуино через блютуз со смартфона на Android ничем не отличается от скетча, который применяется для управления Ардуино с компьютера. Так как в обоих случаях микроконтроллер будет получать данные по протоколу UART (универсальный асинхронный приемопередатчик) — самый первый и наиболее распространенный сегодня физический протокол передачи данных.

Заключение

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

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

Оригинал статьи на сайте ArduinoMaster.Ru.