Skip to content Skip to main navigation Skip to footer

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 для сопряжения:

Примечание для 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

Домашнее задание


  • Скачать примеры программ и прошивок из видеоуроков выше и попробовать завести их по Bluetooth
Связанные уроки

Полезный пример?

Похожие примеры
Подписаться
Уведомить о
3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии