Arduino и bluetooth

Связываем Arduino и Android через Bluetooth

В данной статье будет подробно расписано создание небольшого приложения для мобильной операционной системы Android и скетча для Arduino. На Arduino Uno будет стоять Wireless Shield с Bluetooth-модулем. Приложение будет подключаться к Bluetooth-модулю и посылать некую команду. В свою очередь скетч по этой команде будет зажигать или гасить один из подключенных к Arduino светодиодов.

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

Создание приложения для Android

Заготовка

Разработка для ОС Android ведется в среде разработки ADT, Android Development Tools. Которую можно скачать с портала Google для разработчиков. После скачивания и установке ADT, смело его запускаем. Однако, еще рано приступать к разработке приложения. Надо еще скачать Android SDK нужной версии. Для этого необходимо открыть Android SDK Manager «Window → Android SDK Manager». В списке необходимо выбрать нужный нам SDK, в нашем случае Android 2.3.3 (API 10). Если телефона нет, то выбирайте 2.3.3 или выше; а если есть — версию, совпадающую с версией ОС телефона. Затем нажимаем на кнопку «Install Packages», чтобы запустить процесс установки.

После завершения скачивания и установки мы начинаем создавать приложение. Выбираем «File → New → Android Application Project». Заполним содержимое окна так, как показано на рисунке.

В выпадающих списках «Minimum Required SDK», «Target SDK», «Compile With» выбираем ту версию, которую мы скачали ранее. Более новые версии SDK поддерживают графические темы для приложений, а старые нет. Поэтому в поле «Theme» выбираем «None». Нажимаем «Next».

Снимаем галочку с «Create custom launcher icon»: в рамках данной статьи не будем заострять внимание на создании иконки приложения. Нажимаем «Next».

В появившемся окне можно выбрать вид «Activity»: вид того, что будет на экране, когда будет запущено приложение. Выбираем «Blank activity», что означает, что мы хотим начать всё с чистого листа. Нажимаем «Next».

В нашем приложении будет всего одно Activity, поэтому в появившемся окне можно ничего не менять. Поэтому просто жмем на «Finish».

Все, наше приложение создано.

Настройка эмулятора

Отладка приложений для Android производится на реальном устройстве или, если такового нет, то на эмуляторе. Сконфигурируем свой.

Для этого запустим «Window → Android Virtual Device Manager». В появившемся окне нажмем «New». Заполняем поля появившейся формы. От них зависит сколько и каких ресурсов будет предоставлять эмулятор «телефону». Выберите разумные значения и нажимайте «ОК».

В окне Android Virtual Device Manager нажимаем кнопку «Start». Это запустит эмулятор. Запуск занимает несколько минут. Так что наберитесь терпения.

В результате вы увидите окно эмулятора подобное этому:

Заполнение Activity

Activity — это то, что отображается на экране телефона после запуска приложения. На нем у нас будет две кнопки «Зажечь красный светодиод» и «Зажечь синий светодиод». Добавим их. В панели «Package Explorer» открываем res/layout/activity_main.xml . Его вид будет примерно таким же, как на скриншоте.

Перетаскиваем 2 кнопки «ToggleButton» на экранную форму. Переключаемся во вкладку «activity_main.xml» и видим следующий код:

Это ни что иное, как наша Activity, которая отображается не в виде графики, а описанная в формате XML.

Сделаем имена компонентов более понятными. Изменим поля android:id следующим образом.

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

Эти же изменения можно сделать и в графическом режиме, воспользовавшись вкладкой «Outline/Properties».

Пробный запуск

Мы можем запустить только что созданное приложение на эмуляторе. Идем в настройки запуска «Run» → Run Configurations», в левой части нажимаем на «Android Application». Появляется новая конфигурация «New_configuration». В правой части окна выбираем вкладку «Target» и выбираем опцию «Launch on all compatible devices/AVD».

Нажимаем «Apply», а затем «Run». Приложение запустится в эмуляторе.

Можно понажимать кнопки. Но ничего происходить не будет, поскольку обработчики нажатий еще нами не написаны.

Чтобы запустить приложение на реальном устройстве, необходимо включить в его настройках опцию «Отладка USB» и подключить его к компьютеру.

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

Написание кода для Android

Правка манифеста

Каждое Android-приложение должно сообщить системе о том, какие права необходимо ему предоставить. Перечисление прав идет в так называемом файле манифеста AndroidManifest.xml . В нем мы должны указать тот факт, что хотим использовать Bluetooth в своем приложении. Для этого достаточно добавить буквально пару строк:

Добавляем основной код

Пришла пора вдохнуть жизнь в наше приложение. Открываем файл MainActivity.java (src → ru.amperka.arduinobtled). Изначально он содержит следующий код:

Дополним код в соответствии с тем, что нам нужно:

Передавать на Arduino мы будем один байт с двузначным числом. Первая цифра числа — номер пина, к которому подключен тот или иной светодиод, вторая — состояние светодиода: 1 — включен, 0 — выключен.

Число-команда, рассчитывается очень просто: Если нажата красная кнопка, то берется число 60 (для красного светодиода мы выбрали 6-й пин Arduino) и к нему прибавляется 1 или 0 в зависимости от того, должен ли сейчас гореть светодиод или нет. Для зеленой кнопки всё аналогично, только вместо 60 берется 70 (поскольку зеленый светодиод подключен к 7 пину). В итоге, в нашем случае, возможны 4 команды: 60, 61, 70, 71.

Напишем код, который реализует всё сказанное.

Написание скетча

Данные, которые принимает Bluetooth-модуль, приходят через UART (он же Serial-соединение) на скорости 9600 бит/с. Настраивать Bluetooth-модуль нет никакой необходимости: он сразу готов к работе. Поэтому скетч должен уметь следующее:

Особенности заливки скетча

Для связи Bluetooth-Bee с контроллером используются те же пины (0 и 1), что и для прошивки. Поэтому при программировании контроллера переключатель «SERIAL SELECT» на «Wireless Shield» должен быть установлен в положение «USB», а после прошивки его надо вернуть в положение «MICRO».

Результат

Заключение

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

Вы можете развить мысль и сделать более дружественный интерфейс на Android, управлять с его помощью гораздо более сложными устройствами, публиковать классные приложения в Android Market и ещё много-много всего интересного!

Arduino и Bluetooth

В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных 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

Далее напишем простенький скетч для отправки сообщений из Bluetooth модуля в компьютер.

Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной 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 порт можно использовать любую терминал программу. Я использовал бесплатную Tera Term. При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4.

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

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

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

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

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

Подключаем к Android

Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего.

В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем «Connect a device — Secure» и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала.

Подключение Arduino Bluetooth модулей HC 05 HC06

Bluetooth в Arduino позволяет объединять различные устройства по беспроводному каналу связи. Вы можете передавать сообщения от датчиков и контроллеров Arduino на Android устройства и наоборот, получать команды со смартфонов по bluetooth. В этой статье мы узнаем, как с помощью популярных и не очень недорогих bluetooth модулей HC05 и HC06 организовать беспроводную работу своего ардуино проекта. Вы не поверите, но подключение и программирование Bluetooth модулей совсем не сложное занятие и доступно даже начинающим. Давайте убедимся в этом.

Bluetooth в Arduino проектах

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

Теперь нужно настроить соединение телефона и модуля. Для установки соединения нужно зайти в настройки телефона и включить 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;
  • GND;
  • 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 со смартфона. Будем надеяться, что вы сможете сделать свой первый проект после прочтения этой статьи.

FAMAT › Блог › ROBOTяга ARDUINO — 5. БЛЮТУЗ управление.

И так работяга стал послушней – уже умеет слушаться пульт от телевизора 🙂 www.drive2.ru/b/2818339/
А давайте его научим слушаться телефон!
И поможет нам в этом Блютуз.

Необходимо:
— Блютуз модуль — HC-06 wireless Bluetooth (либо другой).
— Провода.
— Двухсторонний скотч.
— Софт — Bluetooth RC Controller.

В комплекте с роботом шел Блютуз модуль — HC-06.
Подойдут модули типа HC-04 или 05.

Но забегу вперед – если вы все же захотите когда-нибудь загружать работягу через Блютуз рекомендую именно НС-05 – о его достоинствах рассказал здесь:
www.drive2.ru/c/2749401/

Подключение:
Все, что нужно подключить — это Блютуз модуль.
Подключение простое – смотрите таблицу ниже.

ПРИМЕЧАНИЕ: Заодно я указал подключения Моторов – я буду в каждом примере указывать необходимые подключения.

Обратите внимание, что поскольку разъем TXD Блютуз подключен к разъему RХ Arduino, то пока включении Блютуз Arduino никого будет слушать — только Блютуз.
ВНИМАНИЕ! На время когда вы хотите работать с Arduino по USB – Блютуз нужно выключать. Я для этого поставил выключатель на питание «+» Блютуз.

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

Программирование.
Сначала немного теории.
Мы уже научили работягу слушать ИК волны…
Блютуз – это то же волны – только радио.
А в остальном принцип тот же – управляющее устройство будет передавать коды по блютуз, которые РОБОТяга будет выполнять.
Только предварительно нам считывать коды с устройства не нужно – мы их сами зададим.
Кодами для команд будут буквы:
F – вперед;
B – назад;
R – вправо;
L – влево;
S – стоп.

Посылать их может любое устройство:
— которое может подключиться по Блютуз к РОБОТяге;
— имеющее программу, которая может посылать через Блютуз сигналы — терминал RS232.

Сначала устанавливаем соединение между блютузами РОБОТяги и «устройства» — через настройки Блютуз «устройства» — пароль по умолчанию для модуля робота — 1234.

Что касается софта – для компьютера можно использовать, например ARDUINO IDE или Termite 3.2. Пример здесь: lesson.iarduino.ru/page/b…-ustroystvami-s-telefona/
Установив соединение и запустив программу мы через нее можем отправлять на робот коды и робот будет выполнять команды.
Но согласитесь, это не очень удобно… удобнее нажимать на кнопки – для этого можно написать программку, например для Android – что бы кнопкам соответствовали кодовые буквы.
Но мы даже этого делать не будем – поскольку уже есть готовая программа!
А для чего же, спросите вы, я все это писал?
Для того что бы развеять «магию» Блютуза и показать как на самом деле все банально

Для Android устройств будем использовать Bluetooth RC Controller – готовую к использованию программу, позволяющую управлять не только направлением движения, но и скоростью и даже фарами!

Управление скоростью и фарами в моем скетче нет – это домашнее задание для пытливых умов 🙂
geekelectronics.org/ardui…dklyuchaem-bluetooth.html
А вот еще одной функцией программки – управление движением робота с помощью наклона «телефона/планшета» мы обязательно воспользуемся.
Bluetooth RC Controller можно скачать на Play Market.
play.google.com/store/app…uetoothRCcontroller&hl=ru
Работа с программой интуитивно понятна.

Первое, что она попросит – включить Bluetooth.
Затем нужно подключиться к РОБОТяге – нажимаем на «шестереночку» — далее «Connect» выбрать его из перечня устройств нашего РОБОТягу и соединяемся…
Дальше жмем на кнопки и едем…

Все посылаемые данной программой коды-команды указаны в настройках Bluetooth RC Controller («шестереночка» — «Settings»).

ВНИМАНИЕ! Поступили замечания, что Bluetooth RC Controller у некоторых «работяг» реагирует с задержкой — около 10 секунд! Есть информация, что это лечится в настройках — пункте «Please select data stream frequency:» нужно выбрать режим «On change/touch».

Для того чтобы перевести в режим управления акселерометром «устройства» – через наклон, нужно нажать «шестереночку» и нажать закладку «Accelerometer».
Но предупреждаю! Данный режим работает с задержкой – управлять нужно осторожней. Пример на видео 🙂

СКЕТЧ:
[code]//Управляем роботом с помощью BLUETOOTH.
//В качестве управляющего устройства используем ANDROID устройство с программой Bluetooth RC Controller.

// *********************** Установка выводов моторов ************************
int MotorLeftSpeed = 5; // Левый (А) мотор СКОРОСТЬ — ENA
int MotorLeftForward = 4; // Левый (А) мотор ВПЕРЕД — IN1
int MotorLeftBack = 2; // Левый (А) мотор НАЗАД — IN2
int MotorRightForward = 8; // Правый (В) мотор ВПЕРЕД — IN3
int MotorRightBack = 7; // Правый (В) мотор НАЗАД — IN4
int MotorRightSpeed = 6; // Правый (В) мотор СКОРОСТЬ — ENB

// ********************** Для управления по блютуз ****************************
char btCommand = ‘S’;// Задаем переменную BLUETOOTH команда — по умолчанию «S» — СТОП

//****************** Настраиваем параметры выводов ARDUINO ******************
pinMode (MotorLeftForward, OUTPUT);
pinMode (MotorLeftBack, OUTPUT);
pinMode (MotorLeftSpeed, OUTPUT);

Модули bluetooth HC-05 и HC-06 для Arduino

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

Arduino bluetooth будет удобен для удалённого управления вашим устройством на базе микроконтроллера, но давайте разберём, что это такое и какие характеристики у bluetooth модулей hc 05 и hc 06.

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

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

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

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

Модуль HC-06

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

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

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

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

Распиновка HC-05 и HC-06

Выводы на платах отвечают за:

Вывод Значение
EN включение/выключение модуля
VCC питание +5В
GND земля
TXD, RXD UART интерфейс для общения с контроллером
STATE индикатор состояния
KEY нога для входа в режим AT-команд

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

Давайте подробнее разберёмся, какие характеристики имеет такой bluetooth модуль для ПК и различных проектов. Сами разработчики заявляют, что выдержали коммерческий стандарт в hc 05. Соответственно, для управления устройством будет достаточно специальной программы на смартфоне или компьютере, которая позволит отправлять и получать данные с датчика. Однако существует ограничение в области применения, ведь устойчивый сигнал, без использования усилителей, можно поймать лишь на 9 метрах от чипа. Учитывайте, что это сырые цифры, в которых во внимание не берутся преграды на пути волн.

Сами hc чипы полностью совместимы с любыми адаптерами, что поддерживают SPP. На самой плате устройства размещается небольшая антенна, припаянная к верхнему слою в виде дорожки, похожей на змею. Характеристики девайса заявлены следующие:

  1. Активные частоты радиосвязи находятся в диапазоне 2.4-2.48 ГГц.
  2. Канал приспособлен к адаптивному переключению.
  3. Условная дальность связи – 10 метров, но в этой цифре не учитываются преграды и помехи.
  4. Максимальная скорость при обмене информацией – 115300 бод.
  5. Хранить чип можно в температурном диапазоне от — 40 до +85 градусов, а вот использовать – от -20 до +70.
  6. Для работы необходимо будет напряжение в 3.3 В, что мы рассмотрим чуть ниже.

Подключение

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

Устанавливать модуль необходимо достаточно плотно, для чего подойдёт стандартный МК или специальные платы, в которых применяются вилки-соединители. Но вы можете приобрести и отдельную плату под девайсы серии hc, или же сделать их самостоятельно, если у вас есть навыки по проектированию и созданию электронных плат.

В подобном девайсе обязательно должен быть соединительный разъемспециальные отверстия для монтажа проводки, а также светодиоды, которые помогут определить, идёт ли ток и работает ли устройство. Помимо прочего, необходимы стабилизаторы, специальный переключатель для reset’а прошивки и преобразователи интерфейсов, по вашему желанию.

При первом подключении важно проверить работоспособность, для этого подойдёт смартфон или ПК. Просто подайте ток на модуль и просканируйте его соответствующими устройствами.

Настройка

Для настройки чипа потребуется установить сопряжение по USART-bluetooth, где 34 контакт будет подсоединён к общему проводу. После этого вы можете подавать стандартные АТ команды или перепрошить микрочип, по вашему желанию.

Из «коробки» же пароль для подключения интерфейса – 1234, а вот скорость обмена данными ограничивается до 38400 бод. Готовых библиотек на HC 05 не много, но и направление его применения достаточно узкое, что позволяет адаптировать любой уже имеющийся софт под ваши потребности.

Загрузка скетчей в Arduino через Bluetooth

Программируя Arduino, иногда желательно обойтись без физического соединения через USB к компьютеру, например:

  • Силовые цепи — коммутирование 220В. Одна ошибка в соединении и прощай USB-контроллер любимого ситемного блока.
  • Радиочастотные цепи — много наводок по питанию.
  • Собранные и где-то закрепленные устройства, которые желательно перепрошивать, но неудобно к ним подлезать.

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

Я использовал наиболее дешёвые Bluetooth-модули с незамысловатым названием «Bluetooth-модуль HC-05(HC-06)». На ebay их можно найти от 200 руб. за штуку, в отечественных магазинах — от 500 руб. Советую брать модуль уже распаянный на переходнике «для Arduino», разница в деньгах минимальная, а экономит время на сборке схемы сопряжения.

Нам нужен именно HC-05, но так как визуально отличить их крайне сложно, велик шанс, что в руках окажется HC-06, даже если на упаковке написано «HC-05», как это произошло со мной:

Можно попробовать отличить по внешнему виду, если не все ножки Bluetooth-модуля запаяны или есть под рукой мультиметр. У HC-05 к светодиоду, распаянному на самом модуле, идет проводник от ноги 31, а у НС-06 от ноги 24.

На фото видно, что на всём ряду запаяна единственная 24-я нога, это стопроцентно модуль HC-06.

К счастью, HC-06 можно перепрошить в HC-05, но придётся найти компьютер с LPT-портом и потратить несколько часов. Инструкцию по перепрошивке можно прочесть здесь. От себя хочу добавить, что под Windows7 прошивка не состоялась, пришлось устанавливать Windows XP, а также в BIOS сменить режим порта LPT на EPP 1.7.

Особенно утомило переключение режимов LPT-порта и настроек в диспетчере утройств, поэтому сразу приведу правильные скриншоты. BIOS:

В диспетчере:

Итак, имеем на руках модуль HC-05. Теперь нужно задать ему параметры работы. Для перевода в режим установки параметров нужно подпаять последнюю, 34-ю ногу к питанию 3.3в.

Затем подключаем к компьютеру через любой переходник USB-UART-TTL и в терминале даём следующую последовательность команд:

AT
AT+RESET
AT+ORGL
AT+ROLE=0
AT+POLAR=1,0
AT+UART=57600,0,0
AT+INIT
AT+INQ

Если есть желание поменять стандартный пароль на спаривание, то дополнительно:
AT+PSWD=5678

Если есть желание поменять название устройства, то дополнительно:
AT+NAME=RemoteArduino

После этого модуль отключаем, перемычку с 34 ноги убираем и приступаем финальной доработке модуля. Это можно сделать прямо на плате HC-05, мне же показалось удобнее сделать это в виде платы-переходника для прямого подключения к Mini Pro.

Для автоматического сброса Arduino при установке соединения необходимо вывести 32-ю ногу на разъём, для этого я отрезал ненужный мне вывод «WAKE-UP» и обозначил его как «RESET». Схема переходника получилась такой:

Зажигание светодиода будет показывать установленное соединение.

На этом с пайкой всё, но заливка всё равно пока не заработает. Дело в том, что Arduino IDE при каждой попытке заливки скетчка делает очистку буферов COM-порта, что приводит к закрытию BlueTooth соединения и отмене загрузки.

Чтобы избежать этого, нужно поправить конфигурацию Arduino IDE, который находится в файле C:arduinohardwarearduinoboards.txt. Отрываем этот файл в текстовом редакторе, ищем секцию, соответствующую плате, с которой работаем (у меня это Pro Mini 5V) и добавляем следующую строку:

pro5v328.upload.disable_flushing=true

Не забываем менять первое слово в строке, например, для Arduino Uno это будет:

uno.upload.disable_flushing=true

Теперь заливка должна заработать. Осталось маленькая досаждающая деталь — когда заходим в меню Arduino IDE и выбираем пункт «Tools», программа «морозится» на несколько секунд. Дело в том, что при каждом обращении к данному пункту меню, программа перебирает все доступные в системе, COM-порты, но, неоптимальным способом, что приводит к большим задержкам. Чтобы убрать эту задержку, нужно заменить библиотеку rxtxSerial.dll на доработанную версию, которую можно взять здесь. Кому интересны подробности проблемы, могут ознакомиться с веткой на форуме ардуино.

Вот другой вариант с кнопкой отключения питания и вывода TX от Arduino:

Схема второго варианта (Bluetooth-модуль другой, поэтому пины расположены по другому и Pro Mini не оригинальный, а «Deek-Robot», распиновка зеркальная):

Схема занимает минимум места, подключается быстро, настройки не требует. Также остаётся работоспособной возможность в Arduino IDE включить Serial Monitor и получать данные от устройства как при соединении через USB.