Как подключить блютуз модуль
- Рабочая частота: 2.4 GHz
- Интерфейс: UART
- Напряжение питания: 3.6.. 6V
- Ток потребления: 5 мА в режиме поиска,
Официальную документацию на JDY-31 можно открыть по ссылке .
Индикация состояния подключения:
- Ожидание
- Светодиод мигает
- Пин STATE: LOW
- Светодиод горит постоянно
- Пин STATE: HIGH
Подключение
Модуль подключается к питанию и цифровым пинам МК:
- JDY-31 > Arduino
- GND > GND
- VCC > 5V
- RX > Serial TX
- TX > Serial RX
- Опционально можно подключить EN на любой цифровой пин для отслеживания состояния подключения.
При таком подключении:
- Модуль будет мешать загрузке прошивки (она загружается по RX TX), на момент загрузки нужно отключить провода от пинов RX и TX Arduino
- С модулем можно общаться при помощи штатного Serial, фактически он будет дублировать монитор COM порта
На следующих двух схемах я подключил модуль к любым двум цифровым пинам Arduino:
Подключение к 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 (эхо):
SoftwareSerial
В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):
Откроем терминал и монитор порта и можем общаться с компьютером, 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
Какие ещё есть команды? Полный список есть в документации, давайте разберём:
Необходимо:
— Блютуз модуль — HC-06 wireless Bluetooth (либо другой).
— Провода.
— Двухсторонний скотч.
— Софт — Bluetooth RC Controller.В комплекте с роботом шел Блютуз модуль — HC-06.
Подойдут модули типа HC-04 или 05.Подключение:
Все, что нужно подключить — это Блютуз модуль.
Подключение простое – смотрите таблицу ниже.ПРИМЕЧАНИЕ: Заодно я указал подключения Моторов – я буду в каждом примере указывать необходимые подключения.
Обратите внимание, что поскольку разъем TXD Блютуз подключен к разъему RХ Arduino, то пока включении Блютуз Arduino никого будет слушать — только Блютуз.
ВНИМАНИЕ! На время когда вы хотите работать с Arduino по USB – Блютуз нужно выключать. Я для этого поставил выключатель на питание «+» Блютуз.Прикрепляем Блютуз к роботу – можно использовать двухсторонний скотч и место в «корме» робота.
Программирование.
Сначала немного теории.
Мы уже научили работягу слушать ИК волны…
Блютуз – это то же волны – только радио.
А в остальном принцип тот же – управляющее устройство будет передавать коды по блютуз, которые РОБОТяга будет выполнять.
Только предварительно нам считывать коды с устройства не нужно – мы их сами зададим.
Кодами для команд будут буквы:
F – вперед;
B – назад;
R – вправо;
L – влево;
S – стоп.Посылать их может любое устройство:
— которое может подключиться по Блютуз к РОБОТяге;
— имеющее программу, которая может посылать через Блютуз сигналы — терминал RS232.Сначала устанавливаем соединение между блютузами РОБОТяги и «устройства» — через настройки Блютуз «устройства» — пароль по умолчанию для модуля робота — 1234.
Для Android устройств будем использовать Bluetooth RC Controller – готовую к использованию программу, позволяющую управлять не только направлением движения, но и скоростью и даже фарами!
Первое, что она попросит – включить 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 в 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.
Модуль имеет следующие контакты:
Модуль 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 к вашему 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
Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной 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 пин).
Подключаем к Android
Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего.
В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем "Connect a device - Secure" и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала.
Читайте также: