Arduino и bluetooth

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

Arduino и bluetooth

Arduino и bluetooth

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

int val; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход } void loop() { if (Serial.available()) // проверка поданных команд { val = Serial.read(); if (val == '1') {digitalWrite(13, HIGH);} // при 1 включается светодиод if (val == '0') {digitalWrite(13, LOW);}  // при 0 выключается светодиод } }

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

Как только устройство будет найдено, нужно ввести пароль – обычно это «1234» или «0000». После этого нужно зайти в приложение, нажать на кнопку «подключить Bluetooth» и выбрать нужное устройство.

При успешном сопряжении на модуле светодиод начнет мигать медленнее,  примерно 1 раз в 2 секунды.

В скетче светодиод включается и выключается при получении цифр «1» и «0». Кроме цифр также можно использовать буквы латинского алфавита с учетом регистра.

Аналогичным образом можно подключаться к модулю при помощи компьютера. Для этого существуют различные программы, которые подключатся к COM-порту. При запуске программы запрашивают номер порта, скорость  и тип подключения. При успешном подключении на экране появится поле терминала, в которое нужно ввести с клавиатуры цифры/буквы, включающие светодиод.

Описание модуля Bluetooth HC 06

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

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

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

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

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

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

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

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

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

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

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

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

  • EN – управление питанием;
  • Питание VCC;
  • 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 со смартфона.

Будем надеяться, что вы сможете сделать свой первый проект после прочтения этой статьи.

Как подключить к Arduino модуль Bluetooth

Arduino и bluetooth

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

  • Arduino;
  • модуль bluetooth;
  • компьютер;
  • соединительные провода.

Существует большое количество реализаций модулей Bluetooth. Каждая имеет свои особенности, но в общем и целом они все очень похожи. Рассмотрим представителя 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)
сброс и перезапуск модуля, в данном случае осуществляется низким логическим уровнем.

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

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

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

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

На выводе Status появляется высокий уровень, когда модуль сопряжён с другим bluetooth устройством, и низкий – когда не сопряжён.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подключение к bluetooth-модулю с помощью программы TeraTerm

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

Подключение к bluetooth-модулю с помощью программы PuTTY

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

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

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

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

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

Arduino и bluetooth

И так работяга стал послушней – уже умеет слушаться пульт от телевизора ? 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.

Управляем светодиодом с помощью Arduino, Bluetooth модуля и Android-смартфона

Arduino и bluetooth

Небольшой проект, в котором вы научитесь управлять светодиодом с помощью Arduino, Bluetooth и Android OS.

Для проекта вам понадобятся:

  • Arduino UNO;
  • 3 резистора на 300Ω;
  • 1 резистор на 150Ω;
  • Светодиод;
  • Коннекторы;
  • Bluetooth модуль (HC-06 или другой);
  • Смартфон на Android;
  • Приложение SPP Bluetooth Apk (в данном примере – unWired Lite);
  • Некоторые навыки программирования на C.

Подключаем HC-06 к Arduino

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

Модуль HC-06 4 подключается к Arduino с помощью 4-х контактов:

RXD

TXD

VCC

GND

RXD служит для приема данных от Arduino; TXD – отправляет данные на плату Arduino; VCC – это контакт для источника питания (3.3 В – 6.6 В); GND – земля.

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

Делитель напряжения с R1 = 300Ω:

Vout = R2/(R2+R1) * Vin

3.3 = R2/(R2+300) * 5

3.3*R2 + 990 = 5*R2

R2 = 990/1.7

R2 ~ 600Ω

Если у вас другой резистор:

R2 = (3.3 * R1)/1.7Ω

Подключаем модуль HC-06 к Arduino (смотрите рисунок):

Arduino————-HC-06

RX——————-TXD

TX——————-RXD

+5V—————–VCC

GND—————-GND

Скетч для Arduino

Скетч для этого проекта очень простой. Все, что он должен сделать – это проверить, есть ли данные на серийном порту.

При использовании android смартфона с соответствующим spp bluetooth apk, команда подается на bluetooth (RX/TX). При этом bluetooth модуль налаживает связь с bluetooth нашего android'а, используя профиль под названием SPP (Serial Port Profile). Он эмулирует подключение по USB порту нашего Arduino и android.

Инициализируем все контакты и переменные.

char command;

String string;

#define led 8

Скорость передачи данных модуля HC-06 по умолчанию равна 9600 baud. Код функции void setup:

void setup()

{

Serial.begin(9600);

pinMode(led, OUTPUT);

}

Void loop:

void loop()

{ if (Serial.available() > 0)

{string = “”;} while(Serial.available() > 0)

{ command = ((byte)Serial.read());

if(command == ':')

{

break;

}

else {

string += command;

}

delay(1);

}

if(string == “LO”)

{

LEDOn();

}

if(string ==”LF”)

{

LEDOff();

}

}

В скетче две функции. Их имена говорят сами за себя.

void LEDOn()

{

digitalWrite(led, HIGH);

}

void LEDOff()

{

digitalWrite(led, LOW);

}

Приложение для android UnWired Lite

unWired – это приложение, которое дает возможность подключаться к bluetooth модулю Arduino. Это не единственное подобное приложение, так что можете пользоваться другим, если хотите.

Перед запуском приложения, подключите bluetooth модуль.

Первый экран приложения показан на рисунке ниже. Выберите пункт ‘Dispositivos Pareados’. Должны появится все подключенные к смартфону устройства. Среди этих устройств выбираем bluetooth модуль, который мы подключили до этого.

На втором экране (рис. 2) вы будете непосредственно вводить команды для отправки через bluetooth. В нашем случае это две команды – LO для того, чтобы включить светодиод и LF – чтобы выключить светодиод.

Готово!

Теперь вы знаете как настроить работу bluetooth модуля и arduino и как дистанционно передавать команды плате.

Вы с тем же успехом можете получать данные от Arduino и отображать их в android приложении. Для этого надо просто немного изменить функции в скетче.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона

Arduino и bluetooth

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

Для этих целей китайской промышленностью выпускаются различные Bluetooth-модули, среди которых широкую популярность получили модели HC-05 и HC-06.

В своё время на Алиэкспресс я приобрёл HC-06, на котором и буду проводить дальнейшие эксперименты, а так же подключать к своему китайскому аналогу Arduino.

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

Модуль имеет 34 вывода, среди которых: выводы для соединения с компьютером по UART, передачи звука по методу PCM (импульсно кодовая модуляция), аналоговый вход и выход, контакты для подключения к USB разъёму, SPI интерфейс, а также порты общего назначения.

На самом деле не все эти выводы доступны к использованию, заблокирован доступ к выводам передачи звука (5-8), аналоговым входу и выходу (9, 10), а так же к группе контактов для подключения к USB (15, 20).

HC-06 построен на чипе BC417 (BlueCore4-External device), спецификация Bluetooth V2.0. На борту так же имеется кварц на 26 МГц и флеш-память на 8 Мб. Питание осуществляется от 3,3В.

Для своих конструкций удобнее всего использовать модуль с макетной платой, на которой выведены необходимые контакты для подключений, а так же имеется стабилизатор напряжения, который позволяет питаться от 5 вольт.
При покупки подобных модулей, можете столкнуться с различными их маркировками. По сути это одно и то же устройство, отличающееся прошивкой, которая определяет режим модуля (master / slave).

Отличие HC-05 от HC-06 состоит в том, что HC-05 можно использовать в качестве ведомого (master) или ведущего (slave). Данные режимы задаются с помощью АТ-команд.

Кнопка на плате модуля переключает его в режим ввода АТ-команд. Режим master даёт возможность модулю самому обнаруживать подобное устройство и организовывать связь с ним.

Модуль HC-06 может работать только в одном фиксированном режиме slave.

Так же существуют модели HC-03 и  HC-04, но они выпускаются для промышленных целей.

Обозначение контактов на плате HC-06.

STATE – проверка состояние модуля. На этом контакте дублируется сигнал, который отображает встроенный на плате светодиод. Если он очень быстро мигает, значит модуль находится в активном состоянии. В режиме установления связи ток составляет 30-40 мА. Когда модуль устанавливает связь с другим устройством, светодиод просто горит. В режиме передачи данных ток составляет 8 мА.

RX – получение данных.
TX – передача данных.
GND – подключается к земле.
+5V – питание +5 Вольт
EN –  включение / выключение модуля. Если на этот контакт подать логическую 1 (5 вольт),  модуль выключится, если подать логический 0 или не подключаться к этому контакту, модуль будет работать.

По-умолчанию HC-06 имеет имя для обнаружения  другими устройствами «HC-06», с пин-кодом «1234».

Для изменения этих данных нужно модуль подключить к компьютеру и с помощью программы-терминала ввести АТ-команды. Это можно сделать с помощью переходника USB to COM с TTL уровнями. Для этих целей подойдёт адаптер на PL2303HX, CH340G, либо другой подобный. На компьютере к этому моменту уже должен быть установлен драйвер для USB адаптера.

Контакты соединяем следующим образом:

HC-06
Переходник USB to COM

+5V
+5V

GND
GND

RX
TX

TX
RX

При подключении этой сборки к компьютеру, красный светодиод на плате  Bluetooth-модуля начнёт быстро мигать. Для ввода АТ-команд можно воспользоваться любой терминальной программой, я использую для этой цели Arduino IDE.

В настройках выбираем номер виртуального COM-порта, на котором подключен USB адаптер, в моём случае это COM44. Откроем окно «Монитора последовательного порта».

Введём заглавными буквами команду «AT», если устройство удачно подключилось, в ответ должно возвратится «ОК». По-умолчанию скорость обмена данными 9600 бод.

Для проверки версии прошивки, введём команду «AT+VERSION», в моём случае ответ возвратился «OKlinvorV1.8».

Командой «AT+NAMEyyy», где ууу — произвольный набор символов на латинице, можем сменить имя, по которому будут находить наш модуль bluetooth-устройства (по-умолчанию HC-06). В своём примере я ввёл «AT+NAMEfox», ответ возвращается OKsetname.

Командой «AT+PINxxxx», где xxxx – произвольный набор цифр,  можно сменить пин-код (по-умолчанию 1234). В ответ возвращается «OKsetPIN».

Командой «AT+BAUDx», где x – значение от 1 до 9, можно изменить скорость в бодах (по-умолчанию 9600).

1 – 12002 – 24003 – 48004 – 96005 – 192006 – 384007 – 576008 – 115200

9 – 230400

Допустим, если ведём команду «AT+BAUD8», где 8 — скорость 115200 бод, в ответ возвратится «OK115200».

Подключение HC-06 к Arduino.

Пример 1. Зальём в Arduino скетч, с помощью которого будем включать и выключать светодиод, распаянный на 13 пине Arduino, через Bluetooth-модуль.

int data;int LED = 13;void setup(){ Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH);}void loop(){ if (Serial.available()) { data = Serial.read(); if (data == '1') { digitalWrite(LED, HIGH); } if ( data == '0') { digitalWrite(LED, LOW); } }}

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

Обесточим Arduino и подключим HC-06. Контакт TX модуля подключаем к контакту RX Ардуино (пин 0 на плате UNO), а контакт RX, к контакту TX (пин 1). Контакты +5V и GND, подключаются к соответствующим пинам Ардуино.

Конструкция в сборе. Подав питание на Ардуино, светодиод на HC-06 должен быстро мигать.

Управление Arduino через HC-06, с помощью компьютера.

Пример буду показывать на Windows XP. К компьютеру должен быть подключен любой USB Bluetooth-адаптер и установленны на него драйвера.

В моём случае использовался вот такой адаптер.

При его подключении к ПК, в трее (возле часов) появляется соответствующая иконка.

Нажимаем правой кнопкой мыши на данной иконке и в контекстном меню выбираем «Добавить устройство Bluetooth».

Ставим переключатель «Устройство установлено и готово к обнаружению» и нажимаем «Далее».

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

В следующем окне вводим пин-код для подключения к модулю, выбрав пункт «Использовать ключ доступа из документации:». По-умолчанию это «1234», но я его сменил на «9999». Нажимаем «Далее».

Bluetooth-модуль успешно связался с компьютером, о чём можно узнать с соответствующего окна.

Следует обратить внимание, при образовании связи между двумя Bluetooth-устройствами, на компьютере создастся два новых виртуальных COM-порта (будут отображаться в диспетчере устройств), один для исходящих данных, другой для входящих. Нам понадобится порт для исходящих данных, в моём случае это COM45.

Вновь открываем какую-нибудь программу-терминал, я воспользуюсь Arduino IDE. В настройках выбираем исходящий порт (у меня  COM45),  открываем «Монитор последовательного порта», вводим переменно команды «1» и «». При команде «1» светодиод загорается, при «0» гаснет.

Управление Arduino через HC-06 с помощью смартфона.

Наверное уже все современные смартфоны имеют в своём составе встроенный Bluetooth. Остаётся только установить программу терминал.

В моём случае использовалась Lumia 640 DS, с установленной Windows mobile 10. В качестве программы терминала использую «BT Terminal».

На Android-смартфонах всё аналогично, в качестве программы можно использовать «Bluetooth Terminal».

Для обладателей смартфонов компании Apple не получится работать с Bluetooth-модулями HC-05 и HC-06 (Bluetooth V2.0), для них придётся использовать адаптеры с технологией BLE (Bluetooth low energy), спецификация Bluetooth 4.0. Ярким представителем является модуль HM-10.

Сопрягаем HC-06 с блютузом смартфона.

1. В «Параметрах» смартфона выбираем пункт «Устройства».
2. Далее «Bluetooth и другие устройства».
3. Включаем ползунком блютуз смартфона и нажимаем на «плюс в квадрате» для поиска и добавления нового Bluetooth-устройства, в нашем случае  HC-06.

4. В разделе «Добавить устройство» выбираем «Bluetooth».
5. Смартфон произведёт поиск Bluetooth-устройств находящихся в округе и отобразит их имена. В моём примере найден модуль HC-06, который я переименовал в «fox».

6. Вводим пин-код устройства, к которому подключаемся, нажимаем кнопку «Подключиться».

Устанавливаем и запускаем терминальную программу «BT Terminal». Подключенный к смартфону модуль HC-06, отображается в списке, выбираем его.

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

Пример 2. Подключим к Arduino три светодиода и попробуем управлять ими через  Bluetooth-модуль HC-06.

Светодиоды подключил к 9, 11 и 13 пину, если будите использовать другие пины, их нужно указать в скетче.

int data;int LED1 = 9;int LED2 = 11;int LED3 = 13;void setup(){Serial.begin(9600);pinMode(LED1, OUTPUT);pinMode(LED2, OUTPUT);pinMode(LED3, OUTPUT);digitalWrite(LED1, HIGH);digitalWrite(LED2, HIGH);digitalWrite(LED3, HIGH);}void loop(){if (Serial.available()){data = Serial.read();if (data == '1'){digitalWrite(LED1, HIGH);}if ( data == '2'){digitalWrite(LED1, LOW);}if (data == '3'){digitalWrite(LED2, HIGH);}if ( data == '4'){digitalWrite(LED2, LOW);}if (data == '5'){digitalWrite(LED3, HIGH);}if ( data == '6'){digitalWrite(LED3, LOW);}}}

При заливке скетча модуль HC-06 нужно отсоединить от Ардуино, потому что и компьютер, и блютуз работают по UART. Ардуина не может на одном UART работать с несколькими устройствами.

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

Команды представляют из себя цифры от 1 до 6 ( 1, 3, 5 – зажечь 1, 2 и 3 светодиоды. 2, 4, 6 – погасить). Цифры можно вводить по одной, либо в виде комбинаций.

Например: 145 – зажечь первый, погасить 2-й, зажечь 3-й.

Пример 3. Подключим к Arduino реле-модуль из статьи «Подключаем мощную нагрузку к Arduino, через реле модуль» и попробуем управлять мощной нагрузкой через Bluetooth. По сути, у нас получится «умная розетка». К реле-модулям можно подключать различные нагрузки (лампочки, насосы, вентиляторы) и управлять ими на расстоянии.

Скетч по этому примеру появится в ближайшее время.

Машинка на arduino и Bluetooth Android

Arduino и bluetooth

Машинка на arduino и Bluetooth без редактирования кода. Мы будем использовать специализированный бесплатный софт для составления скетча. Кроме того не надо покупать шасси для нашей поделки, подойдет практически любая неисправная радиоуправляемая модель автомобиля или танка.

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

Итак, давайте разберем на живом примере как сделать своими руками дистанционно управляемую по bluetooth c android планшета или смартфона машинку. Статья, как ни странно, рассчитана на начальный уровень знаний.

Здесь нет руководства по редактированию кода в Arduino IDE, да и мы использовать его будем только для заливки нашего кода. А составлять алгоритм управления будем в программе под названием FLProg. Программа управления со смартфона — HmiKaskada_free.

Но сначала о железе, которое нам понадобится.

Машинка на arduino и Bluetooth — аппаратная часть

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

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

Вся электронная начинка отправилась на запчасти.

Для управления электродвигателями нашего будущего творения понадобится Н-мост на микросхеме L298N Ссылка на Али, я брал у именно этот. Картинка кликабельна.

Н-мост для arduino

Может управлять двумя двигателями в диапазоне напряжений 5 — 35 вольт. Поддерживает ШИМ, то есть можно регулировать обороты двигателей. На плате есть вывод стабилизированного напряжения 5 вольт для питания ардуино.

Схема подключения проста и незатейлива:

Схема подключения L298N а arduino

Следующей неотъемлемой частью электронной начинки нашего проекта является bluetooth модуль HC-06. Самый обычный модуль для ардуино, настолько популярен что в дополнительном описании не нуждается.

HC-06 bluetooth for arduino

Основным элементом и мозгом в моем случае выступает arduino nano, тут даже фото выкладывать не буду ибо все о ней знают и умеют с ней работать. Кстати подойдет любая плата ардуино, лишь бы в корпус поместилась 

Bluetooth-модуль bolutek для Arduino с UART-интерфейсом и AT-команды к нему

Arduino и bluetooth

Всех с Первомаем и Пасхой! Христос воскрес! А вчера прислали этот Bluetooth-модуль, хочу написать о нём пару строк того, чего не нашёл в Интернет. Дошло за три недели, в конверте с пупырчатыми стенками, упаковано в пакетик с мягкой прокладкой, чтобы не погнулись штыревые контакты.

Это блютуз-модуль, установленный на плату с линейником 3.3В, синим светодиодом и выводами интерфейса:
И прозрачная термоусадочная трубка — куда же без неё?!
В комплекте была бумажка, с надписью «SKU:B16-7BC01T11» — не нагуглилось. Удалось найти на нашем Сайте такие обзоры:
mysku.ru/blog/others/9084.html
mysku.

ru/blog/aliexpress/36726.html
mysku.ru/blog/aliexpress/36528.html в них описаны подобные модули, способы подключения их к Ардуино и примеры написания программ для Андроид.

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

Этот модуль просто подключается к Ардуино по последовательному порту — и Вы передаёте по нему данные так, как бы передавали в окно терминала, когда отлаживаете программу, а в смартфоне или компьютере обрабатываете эти данные.

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

Подключить к компьютеру модуль можно через USB-to-TTL-адаптер, описанный мною ранее или любым удобным для Вас способом по интерфейсу UART: например, вытащить плату из UNO и пробросить TX и RX к модулю.

Штыревые контакты модуля (слева) соединяем с адаптером интерфейса (справа): MCU-INT — (не пригодился) RX — TX TX — RX GND — GND +5V — VCC CLEAR — (не пригодился) на этом изображении — упомянутые контакты расположены снизу вверх:Подключаем адаптер к USB-разъему компьютера, открываем среду разработки Ардуино (или putty, или терминал), выбираем наш виртуальный COM-порт и запускаем «Монитор порта».

Скорость по умолчанию 9600 бод, разделители строк — .

Вводим первую команду:AT+HELPв ответ получаем список доступных команд, которые помогут нам изменить имя адаптера видимое другими Bluetooth-устройствами, код доступа (пароль), скорость работы интерфейса и некоторые другие полезняшки:
Command Description —————————————————————- AT Check if the command terminal work normally AT+RESET Software reboot AT+VERSION Get firmware, bluetooth, HCI and LMP version AT+HELP List all the commands AT+NAME Get/Set local device name AT+PIN Get/Set pin code for pairing AT+BAUD Get/Set baud rate AT+CLEAR Remove the remembered remote address AT+LADDR Get local bluetooth address AT+DEFAULT Restore factory default AT+COD Get/Set local class of device AT+IAC Get/Set inquiry access code AT+ROLE Get/Set master or slave mode AT+STATE Get current state AT+UARTMODE Get/Set uart stop bits and parity AT+ENABLEIND Enable/Disable Indication print AT+LSP List Paired Device List AT+RESETPDL Reset Paired Device List AT+REMOVEPDL Remove one entry from Paired Device List —————————————————————– Note: (M) = The command support master mode only, other commands support both master and slave mode. For more information, please visit http://www.bolutek.cn Copyright@2012 www.bolutek.cn. All rights reserved.

Пример моего взаимодействия с устройством

знаками >> обозначены команды, отправленные устройству, без них — полученные строки
>> AT+VERSION +VERSION=+BOLUTEK Firmware V2.2, Bluetooth V2.

1 >> AT+NAMESO-NO-ME +NAME=SO-NO-ME OK >> AT+NAME +NAME=SO-NO-ME >> AT+PIN +PIN=1234 >> AT+PIN0987 +PIN=0987 OK >> AT+BAUD +BAUD=4 >> AT+LADDR +LADDR=00:**:**:**:**:** >> AT+STATE +STATE=3 Чтобы установить пин-код для подключений в значение 0000, достаточно отправить «AT+PIN0000
» — и всё, не нужно никаких дополнительных манипуляций, менять его можно из ардуино «на лету», и не запоминать пароль каждый раз, а прописвать его в скетче.Более полное описание команд изложено в этом документе. Надеюсь, не сильно отвлек от празднований и эта инфа поможет Вам в труде и обороне)… Хотя, на Пасху о труде думается не особо. Что-то не особо большой обзор получился. Добавлю информацию о том, как настроить USB Bluetooth-dongle на компьютере, чтобы подключиться с него к нашему модулю как к COM-порту.
Подключаем USB-свисток к компьютеру. У меня он выглядит как в этом обзоре. Устанавливаем драйвера, — в трее появляется иконка; кликаем по ней и выбираем «Открыть параметры»:
При этом Ардуино с модулем уже должна работаь и Вы должны помнить пин-код доступа к ней (по умолчанию — 1234). Переходим на вкладку «COM-порты», если Вы не добавляли их ранее, список будет пуст:Нажимаем «Добавить…» — откроется окно, выбираем «Исходящий»:
Если Вы ранее там мусолили, то в списке будут устройства, если их нет, нажимаем «Обзор…» и выбираем устройство по имени модуля (имя, как мы помним, устанавливается AT-командой AT+NAME):
Далее пройдёт какое-то время и в списке портов появится новый, нужно запомнить его номер, в моём случае — 13:
Готово! Теперь мы можем из любого приложения соединяться по этому порту — с Ардуино и обмениваться данными. Для примера, я использоВал клиент putty:
Выбираем «Serial», вводим имя порта и баудрейт (9600), затем жмём «Open» и быстро…
Быстро кликаем по этому балон-попапу… Дааа, ну не могу я называть tray balloon pop up иначе, уж извините, это запомнилось мне давно, программировании таких уведомлений, всплывающих из системной области… Если не успели — кликайте по значку в трее — откроется окно для ввода пин-кода доступа к Ардуниевскому модулю и вводим туда наш пин (он устанавливается командой AT+PIN в том модуле):
Если пин-«пароль» введён корректно, открывается окно терминала, а в это время модуль отправляет Ардуино такое информационное сообщение:
«Окно ардуино» у меня эмулируется «Монитором порта» сверху, putty — снизу. В любом случае, нам, как программистам Ардуино полезно знать, что из модуля мы вычитываем не только то, что в него пишет клиент, но еще и такие информационные сообщения, их нужно фильтровать ну или опознавать и обрабатывать. Чтобы отправить сообщение из ардуино, достаточно написать в модуль:

так как это окно «Монитора порта», сообщения отправляются только после нажатия на кнопку.

Далее напечатаем что-то в окне putty:как и следовало ожидать, после каждого нажатия клавиши в окне putty, в «Мониторе порта» появляются символы. Так же, когда мы будем писать в этот порт данные, на стороне Ардуино они будут считываться.

Далее, я ошибся и ввёл «а» в другой раскладке, ну да ладно, закроем окно putty:
Оно предупреждает — жмём «OK». При отключении, на стороне Ардуино появляется информация об этом:
Жуть какая-то с этими сообщениями, может, есть AT-команда для их отключения? Да! Есть такая команда!!! Это как раз Indication print — просто введите на стороне «Монитора порта» код:
AT+ENABLEIND0(ноль на конце) — и лишние сообщения не будут засорять Вам трафик на Ардуино… Хотя, возможно, кому-то эти сообщения будут полезными. С помощью такого PHP-скрипта произвёл пару тестов скорости (под Винду):

Записки программиста

Arduino и bluetooth

Ранее в заметке Мой первый радиоуправляемый робот на Arduino мы управляли гусеничным роботом при помощи пары устройств NRF24L01. Если помните, для этого приходилось использовать дополнительную Arduino с Joystick Shield.

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

Поэтому сегодня мы рассмотрим альтернативный подход, заключающийся в использовании Bluetooth-модуля HC-05.

Примечание: Существует похожий модуль HC-06. В отличие от HC-05, который может быть как ведущим (мастером), так и ведомым устройством, HC-06 может быть только ведомым.

В остальном HC-05 и HC-06 практически не отличаются. Также существуют модули HC-07, HC-08 и HC-09. Прочитать про различия между ними можно здесь.

HC-05 имеет шесть пинов, но из них нам понадобится только четыре: VCC, GND, RX и TX.

Кроме того, мы временно припаяем дополнительный провод к пину 34 непосредственно используемого в HC-05 Bluetooth-модуля EGBT-045MS, чтобы сменить имя, под которым будет видно устройство.

Если вас устраивает имя по умолчанию, «HC-05», то можете ничего и не припаивать. Итак, VCC и GND пины подключаем к пинам 5V и GND Ардуины, TX пин HC-05 — к пину 2, а RX пин — к пину 3, и, наконец, пин 34 EGBT-045MS — к пину 4 Ардуины.

Получившаяся конструкция:

Ответ на вопрос где искать этот 34-ый пин у EGBT-045MS, содержится в EGBT-045MS / EGBT-046S Bluetooth Module Manual [PDF]:

Пример кода прошивки:

#include
#include

/* Connect HC-05 TX to Arduino RX and HC-05 RX to Arduino TX */

SoftwareSerial Bluetooth(2, 3); /* RX, TX */

const int pin34 = 4;

bool newline_printed = false;

void setup()

{  
  Serial.begin(9600);
  Serial.println(“Arduino is ready”);  

  Bluetooth.begin(9600);  

  Serial.println(“Bluetooth is ready”);

  pinMode(pin34, OUTPUT);

  digitalWrite(pin34, HIGH);
  Bluetooth.println(“AT+NAME=ARDUINO-BLUETOOTH”);
  digitalWrite(pin34, LOW);
}

void loop()

{
  if(Bluetooth.available())
  {  
    char c = Bluetooth.read();
    if(c == '#')
    {
      if(!newline_printed)
      {
        Serial.println(“”);
        newline_printed = true;
      }
    }
    else
    {
      Serial.print(c);
      newline_printed = false;
    }
  }  

  if(Serial.available())

  {
    char c = Serial.read();
    Serial.write(c);
    Bluetooth.write(c);  
  }
}

Взаимодействие с модулем происходит по UART. Так как мы не хотим потерять возможность обмена данными с компьютером, используется класс SoftwareSerial. Он работает точно так же, как уже знакомый нам Serial, но, в отличие от него, может использовать произвольные пины Arduino.

Подавая высокое напряжение на 34-ый пин EGBT-045MS, мы переводим его в режим выполнения AT-команд. Полный список доступных команд можно найти в уже упомянутом EGBT-045MS / EGBT-046S Bluetooth Module Manual [PDF]. В приведенном примере просто меняется имя модуля. Сменив его один раз, лишний провод можно смело отпаивать, так как модуль запомнить свое новое имя в энергонезависимой памяти.

Можно найти великое множество готовых Android-приложений, подходящих для передачи команд модулю HC-05. Мне, к примеру, очень понравилось приложение Arduino BT Joystick. У него есть как платная, так и бесплатная версия с рекламой. Интерфейс приложения выглядит как-то так:

Жмем Connect, находим в списке наше устройство, вводим пин 1234, и можно отправлять команды при помощи кнопок, а также встроенного в телефон акселерометра. Другими словами, приложение позволяет, помимо прочего, управлять Arduino, просто вращая телефон в руках.

Важно! Насколько я смог выяснить, устройства от Apple вообще не работают с HC-05 / HC-06. Для решения этой проблемы предлагается использовать BLE модули, например HM-10 или HM-11.

Судя по видео на YouTube, HC-08 тоже подойдет. Опыта использования данных модулей на момент написания этих строк у меня, к сожалению, нет. В России их довольно сложно достать, видел только в одном интернет-магазине.

А так нужно ждать доставки из Китая.

Разные приложения посылают данные в разных форматах. В случае Arduino BT Joystick используется формат вроде:

… где ## — это разделитель, b= указывает на то, что далее содержится код кнопки, 0, 1 и так далее — это коды кнопок. Учтите, что если пользователь ничего не нажимает, то приложение непрерывно шлет ##b=0##b=0##…. Если в приложении вы разрешили использование акселерометра, то помимо значений b также будут передаваться значения x, y и z.

Преимущество использования Bluetooth заключается в том, что не нужно делать отдельный джойстик. Подойдет любой смартфон или планшет под управлением Android. Кроме того, EGBT-045MS производит впечатление модуля, который легко выпаять из HC-05 и затем использовать в самодельный платах.

Полную версию исходников к этой заметке вы найдете на GitHub. Вопросы и дополнения, как всегда, горячо приветствуются!

Оцените статью
Просто о технологиях
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: