Bluetooth модуль JDY-31 (аналог популярного HC-06) обеспечивает беспроводную связь UART – COM порт, что позволяет использовать его для удобного обмена данными между Arduino и приложением на смартфоне или программой на компьютере.
![]() |
В наборе GyverKIT | START | IOT | EXTRA |
---|---|---|---|---|
Bluetooth JDY-31 | ✔ |
Основные характеристики:
- Рабочая частота: 2.4 GHz
- Интерфейс: UART
- Напряжение питания: 3.6.. 6V
- Ток потребления: 5 мА в режиме поиска, ~8 мА в режиме передачи
- Логический уровень: 3.3V, но вроде как не боится 5V
- Дальность связи: 30м
- Версия Bluetooth: 3.0 SPP
- Чувствительность антенны: -97dbm
- Скорость UART: 9600.. 128000
Индикация состояния подключения:
- Ожидание
- Светодиод мигает
- Пин 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
для сопряжения:
Примечание для Windows 11: для работы с любыми Bluetooth-UART модулями (HC-06, HC-05, JDY-31 и проч.) нужно выбрать дополнительно в пункте меню обнаружение устройств Bluetooth в настройках Bluetooth
После этого в Arduino IDE появится ещё один COM порт. Загрузим следующий пример, который просто выводит в порт строчку со счётчиком. Модуль подключен к аппаратному UART.
void setup() {
Serial.begin(9600);
}
void loop() {
static byte count = 0;
Serial.print("Hello, World! #");
Serial.println(count++);
delay(500);
}
Откроем Bluetooth порт и увидим вывод:
Точно таким же образом можно подключиться к Arduino из своей программы, написанной например на Processing или Python. У меня есть уроки по этой теме:
Android #
Для теста на Android я использую приложение Serial Bluetooth Terminal. Сопрягаемся с паролем 1234
, заходим в программу, открываем настройки слева, Devices, выбираем JDY-31 и подключаемся (кнопка со штекером в левом правом углу экрана. Модуль подключен к аппаратному Serial, на Arduino прошит код, отправляющий принятые данные обратно в Serial (эхо):
void setup() {
Serial.begin(9600);
Serial.setTimeout(100);
}
void loop() {
if (Serial.available()) {
Serial.write(Serial.read());
}
}
Пишем в терминал – модуль нам отвечает. Своё приложение с Bluetooth можно сделать в MIT App Inventor, этим мы займёмся в будущих уроках.
SoftwareSerial #
В качестве примера подключим модуль по второй схеме (на пины D2 и D3) и загрузим простую программу, которая будет пересылать данные с программного Serial (на пинах D2 и D3, Bluetooth) на аппаратный (который мы можем смотреть через монитор порта в Arduino IDE):
#include <SoftwareSerial.h>
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
Какие ещё есть команды? Полный список есть в документации, давайте разберём:
Команда | Описание | Ответ |
---|---|---|
AT+VERSION |
Информация о версии | +VERSION=JDY-31-V1.35,Bluetooth V3.0 |
AT+RESET |
Перезагрузить | +OK |
AT+DISC |
Отключиться | +OK |
AT+LADDR |
Запрос MAC адреса | +LADDR=5C7B00006378 |
AT+BAUD |
Запрос текущей скорости порта. Код: 4:9600 5:19200 6:38400 7:57600 8:115200 9:128000 | +BAUD=4 |
AT+BAUDx |
Установить скорость порта, где x – код (см. выше). Пример установки скорости 115200: AT+BAUD8 Примечание: после перезагрузки модуль будет работать с АТ командами на новой скорости! |
+OK |
AT+PIN |
Запрос текущего ПИН-кода | +PIN=1234 |
AT+PINx |
Установка пина. Пример: AT+PIN1234 |
+OK |
AT+NAME |
Запрос текущего имени модуля | +NAME=JDY-31-SPP |
AT+NAMEx |
Установка имени модуля. Пример: AT+NAMEMyBT |
+OK |
AT+DEFAULT |
Сброс настроек | +OK |
Связанные уроки:
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками