- Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона.
- Bluetooth HC-05 (Troyka-модуль)
- Видеообзор
- Подключение и настройка
- SoftwareSerial
- Режим AT-команд
- Элементы платы
- Bluetooth модуль HC-05
- Troyka контакты
- Светодиодная индикация
- Обвязка для согласования уровней напряжения
- Arduino и Bluetooth JDY-31
- Подключение
- Подключение к Bluetooth
- Windows
- Android
- SoftwareSerial
- Настройка JDY-31, AT команды
- Домашнее задание
Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона.
ГЛАВНАЯ / Уроки и проекты / Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона.
Очень часто в ваших проектах возникает необходимость в дистанционном управлении или передачи данных с ваших телефонных гаджетов.
Один из самых популярных и распространенных методов обмена данными посредством Bluetooth.
Сегодня мы разберем простые примеры как можно подключить Bluetooth модуль к Arduino и настроить дистанционное управление с телефона.
Нам понадобится:
Схема подключения Bluetooth к Arduino:
Подключать Bluetooth модуль к микроконтроллеру Arduino удобнее всего с помощью проводков ПАПА-МАМА.
Arduino | Bluetooth |
---|---|
Pin 1 (TX) | RXD |
Pin 0 (RX) | TXD |
GND | GND |
5V | VCC |
Будьте внимательны, подключать подключать нужно TX -> RXD ,RX -> TXD.
Теперь необходимо записать пробный код программы:
Во время загрузки скетча необходимо что бы Bluetooth модуль был отключен от микроконтроллера arduino. В противном случае скетч не запишется, потому что связь с Bluetooth модулем происходит по одному и томуже порту RX и TX, что и USB.
int val; int LED = 13; void setup() < Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); >void loop() < if (Serial.available()) < val = Serial.read(); // При символе "1" включаем светодиод if (val == '1') < digitalWrite(LED, HIGH); >// При символе "0" выключаем светодиод if ( val == '0') < digitalWrite(LED, LOW); >> >
После того как скетч записан и Bluetooth модуль подключен к Arduino, можно перейти к следующему шагу.
Подключение Bluetooth к телефону
Желательно в качестве источника питания для arduino использовать не USB, а внешний Блок питания на 9 В.
- Включаем Bluetooth на телефоне и ищем новые устройства
- Находим в списке расстройств «HC-06″ и подключаемся к нему.
- Телефон спросит пин-код. необходимо ввести «1234» или «0000«
- Ура. Устройство подключено.
Теперь нужно скачать bluetooth terminal на ваш телефон. Мы рассмотрим на примере платформы Android.
Вы можете установить разные bluetooth терминалы, как правило они отличаются только разными дизайнами, функционал от этого не меняется. Так же можно найти и терминал и для продуктов ios.
После того как мы установили терминал, запускаем его выбираем наш bluetooth модуль HC-06 и подключаемся к нему.
Пришло время попробовать проект в деле. Пишем в терминале цифру «0» и отправляем. Светодиод L который находится на плате arduino рядом с pin 13, должен погаснуть. Теперь отправим через терминал цифру «1» и светодиод L должен зажечься.
Демонстрация работы:
Домашняя работа:
- Изменить скетч так, что бы светодиод зажигался и потухал с помощью одной и той же команды например «G».
- Дописать скетч и научить его преобразовывать текстовые данные приходящие через блютус в цифровые и реализовать димер, зажигать светодиод с помощью ШИМ, на заданную яркость от 0 до 254 приходящую через bluetooth.
Bluetooth HC-05 (Troyka-модуль)
Возьмите Bluetooth (Troyka-модуль) и создайте целую сеть беспроводных устройств, каждое из которых сможет принимать и отправлять данные.
Видеообзор
Подключение и настройка
Bluetooth-модуль общается с управляющей платой по протоколу UART. Дополнительный сигнальный пин K служит для перевода модуля в режим AT-команд.
Для работы с модулем удобно использовать Troyka Shield. Если хотите избавиться от проводов — возьмите Troyka Slot Shield.
SoftwareSerial
Некоторые платы Arduino прошиваются через пины 0 и 1 (Uno, Mega 2560, ADK и Iskra Mini). Перед прошивкой таких плат отключите Bluetooth-модуль от пинов RX и TX. Если необходимо одновременно работать с Bluetooth и подключать контроллер к компьютеру, подключите пины TX и RX к другим контактам управляющей платы.
Для примера подключим управляющие пины Bluetooth-модуля RX и TX — на 8 и 9 пин Arduino через Troyka Shield. После включения Bluetooth HС-05 на нём замигает светодиод MODE .
Bluetooth-модуль работает в двух режимах: «прозрачного UART» и управления AT-командами. В первом случае всё предельно просто — включаете модуль, подключаетесь к нему с компьютера или иного устройства и шлёте на этот порт данные. Второй режим предназначен для настройки модуля.
Режим AT-команд
Чтобы получить доступ к настройке модуля, его необходимо перевести в режим приёма AT-команд. Для входа в этот режим можно воспользоваться двумя методами:
В этом варианте скорость обмена с модулем устанавливается в 38400 бод.
В этом случае скорость обмена с модулем будет равна скорости, установленной настройками. По умолчанию — 9600 бод.
После успешного перехода в режим AT-команд, светодиод MODE начнет мигать раз в две секунды.
Bluetooth-модуль может работать в 3-х режимах:
Master — в этом режиме модуль сам инициирует подключение к какому-нибудь Bluetooth-девайсу.
Slave — самый распространённый режим. С ним мы можем подключиться к модулю сами. Например с телефона.
Элементы платы
Bluetooth модуль HC-05
Сердцем модуля является чип BC417 от компании Cambridge Silicon Radio, который обеспечивает аппаратную поддержку стека Bluetooth 2.0 + EDR (Enhaced Data Rate), а также флэш-память ES29LV800DB-70WGI от Excel Semiconductor на 8 Мбит (1 МБ), хранящая прошивку и настройки.
Troyka контакты
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
RX и TX | Мигают при обмене данными между Bluetooth и управляющим устройством. |
PAIR | Горит, если модуль сопряжён с другим устройством |
MODE | Мигает в зависимости от режима работы (горит/не горит): 64 мс/300 — нет сопряжения; 64 мс/2000 мс — сопряжён с другим устройством; 2000 мс/2000 мс — режим AT-команд. |
Обвязка для согласования уровней напряжения
Необходима для сопряжения устройств с разными питающими напряжениями. В нашем случае это может быть управляющее устройство Arduino с 5 вольтовой логикой и Bluetooth модуль HC-05 с 3,3 вольтовой логикой.
Arduino и Bluetooth JDY-31
В наборе GyverKIT обеих комплектаций есть Bluetooth модуль JDY-31 (аналог популярного HC-06). Данный модуль обеспечивает беспроводную связь UART – COM порт, что позволяет использовать его для удобного обмена данными между Arduino и приложением на смартфоне или программой на компьютере. Основные характеристики:
- Рабочая частота: 2.4 GHz
- Интерфейс: UART
- Напряжение питания: 3.6.. 6V
- Ток потребления: 5 мА в режиме поиска, ~8 мА в режиме передачи
- Логический уровень: 3.3V, но вроде как не боится 5V
- Дальность связи: 30м
- Версия Bluetooth: 3.0 SPP
- Чувствительность антенны: -97dbm
- Скорость UART: 9600.. 128000
Официальную документацию на JDY-31 можно открыть по ссылке .
Индикация состояния подключения:
- Ожидание
- Светодиод мигает
- Пин STATE: LOW
- Светодиод горит постоянно
- Пин STATE: HIGH
Подключение
Модуль подключается к питанию и цифровым пинам МК:
- JDY-31 > Arduino
- GND > GND
- VCC > 5V
- RX > Serial TX
- TX > Serial RX
- Опционально можно подключить EN на любой цифровой пин для отслеживания состояния подключения.
На левой схеме я подключил JDY-31 к аппаратным выводам UART напрямую, на правой – через делитель напряжения, образованный тремя резисторами по 10 кОм (есть в наборе GyverKIT). Такой делитель 2:1 обеспечит около 3.1V на вход RX модуля. Правая схема предпочтительнее, но от прямого подключения модуль ещё ни у кого не выходил из строя, насколько я знаю.
- Модуль будет мешать загрузке прошивки (она загружается по RX TX), на момент загрузки нужно отключить провода от пинов RX и TX Arduino
- С модулем можно общаться при помощи штатного Serial, фактически он будет дублировать монитор COM порта
На следующих двух схемах я подключил модуль к любым двум цифровым пинам Arduino:
При таком подключении модуль ничему не мешает, но для работы с ним придётся использовать стандартную библиотеку программного Serial – SoftwareSerial.
Подключение к Bluetooth
Windows
Для работы на компьютере у вас должен быть Bluetooth адаптер. Заходим в панель управления, добавляем Bluetooth устройство, вводим пин 1234 для сопряжения:
После этого в Arduino IDE появится ещё один COM порт. Загрузим следующий пример, который просто выводит в порт строчку со счётчиком. Модуль подключен к аппаратному UART.
Откроем Bluetooth порт и увидим вывод:
Точно таким же образом можно подключиться к Arduino из своей программы, написанной например на Processing или Python. У меня есть уроки по этой теме:
Android
Для теста на Android я использую приложение Serial Bluetooth Terminal. Сопрягаемся с паролем 1234, заходим в программу, открываем настройки слева, Devices, выбираем JDY-31 и подключаемся (кнопка со штекером в левом правом углу экрана. Модуль подключен к аппаратному Serial, на Arduino прошит код, отправляющий принятые данные обратно в Serial (эхо):
Пишем в терминал – модуль нам отвечает. Своё приложение с Bluetooth можно сделать в MIT App Inventor, этим мы займёмся в будущих уроках.
SoftwareSerial
В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):
#include SoftwareSerial mySerial(3, 2); // RX, TX void setup() < Serial.begin(9600); mySerial.begin(9600); >void loop() < if (mySerial.available()) < Serial.write(mySerial.read()); >if (Serial.available()) < mySerial.write(Serial.read()); >>
Откроем терминал и монитор порта и можем общаться с компьютером, Arduino выступает в роли посредника и перекидывает данные с Bluetooth на USB и наоборот:
Точно так же можно использовать SoftwareSerial для программ и приложений, если аппаратный UART на Arduino нужен для других целей.
Настройка JDY-31, AT команды
Рассмотрим также настройку самого JDY-31, делается это при помощи AT-команд:
- Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает)
- Загружаем в Arduino пустую программу (Файл/Новый). Либо любую другую, в которой не задействован Serial. Либо подключаем пин RST к GND, чтобы микроконтроллер не запустился и нам не мешал
- Подключаем JDY-31 на RX TX Arduino (аппаратный Serial) наоборот: TX > TX, RX > RX
- Открываем монитор порта, ставим текущую скорость модуля (по умолчанию 9600 бод), конец строки NL & CR
Отправляем команду AT+VERSION . Если всё сделано правильно – модуль ответит +VERSION=JDY-31-V1.35,Bluetooth V3.0
Какие ещё есть команды? Полный список есть в документации, давайте разберём:
Домашнее задание