JDY-31 — Bluetooth 3.0 SPP модуль

JDY-31 — довольно простой Bluetooth 3.0 SPP модуль, который можно использовать как замену HC-06. Следует отметить, что это не прямая замена, так как AT-команды не идентичны.

Bluetooth 3.0 — это по-прежнему классический Bluetooth, но с увеличенной теоретической скоростью передачи до 24 Мбит/с.

JDY-31 доступны с платой расширения и без неё.

SMD-платы работают только от 3.3В, будьте осторожны. Плата расширения добавляет совместимость с 5В на входе VCC, но пины RX и TX по-прежнему работают только на 3.3В. Так что всё равно будьте осторожны!

У меня есть SMD-модули без выводов. Я купил их для прямой пайки на печатную плату.

JDY-31 SMD модуль

JDY-31 SMD модуль

JDY-31 на плате расширения

JDY-31 на плате расширения

Основные характеристики JDY-31

  • Только Slave-устройство

  • Bluetooth 3.0 SPP / совместим с Bluetooth Classic

  • Надёжная работа до 30 метров (у HC-06 — 10 метров)

  • Настраивается через AT-команды по проводному UART

  • PIN-код по умолчанию: 1234

  • SMD-модуль имеет 5 пинов. Версия с платой расширения — 6 пинов

Slave-устройства не могут инициировать соединение. Другое устройство (например, Android-телефон) должно установить подключение.

Даташит JDY-31 V1.3 на английском (PDF)

Пины SMD-модуля JDY-31

Пины JDY-31 SMD
  • STATE — Статус подключения. LOW = не подключён. HIGH = подключён

  • TXD — Выход UART

  • RXD — Вход UART

  • VCC — Питание (помните: 3.3В)*

  • GND — Земля

* SMD-модуль JDY-31 также может работать от 1.8В

Пины платы расширения JDY-31

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

Пины платы расширения JDY-31
  • STATE — Статус подключения. LOW = не подключён. HIGH = подключён

  • TXD — Выход UART (3.3В)

  • RXD — Вход UART (3.3В)

  • VCC — Питание (от 3.6В до 5В)

  • GND — Земля

  • EN — обычно не подключён

Плата расширения обычно включает статусный светодиод.

AT-команды JDY-31

Хотя у JDY-31 больше AT-команд, чем у HC-06, список команд всё ещё довольно ограничен. Базовой команды AT нет, но можно запросить имя модуля через UART, что является бонусом.

Поскольку нет команды AT для проверки работы UART-соединения, используйте вместо неё команду AT+VERSION.

Скорость по умолчанию — 9600, и JDY-31 требует (НЕТ, НАСТАИВАЕТ!), чтобы команды были в верхнем регистре и содержали символы окончания строки (\r\n).

Команда

Описание

Значение по умолчанию

AT+VERSION

Проверка версии прошивки

JDY-31-V1.2*

AT+RESET

Программный сброс модуля

AT+DISC

Разрыв текущего соединения. Можно использовать при активном беспроводном подключении.

AT+LADDR

Запрос MAC-адреса модуля

AT+PIN

Запрос / установка PIN-кода. PIN используется для сопряжения устройств.

1234

AT+BAUD

Запрос / установка скорости UART

9600

AT+NAME

Запрос / установка имени модуля

JDY-31-SPP

AT+DEFAULT

Сброс модуля к заводским настройкам

AT_ENLOG

Включение вывода статуса последовательного порта

1

* JDY-31-V1.2 — последняя версия. Более ранние версии всё ещё можно найти.

Подключение к JDY-31

Сначала нужно подключить модуль. Я использую SMD-модули, которые работают от 3.3В и не имеют выводов. Поэтому у меня немного запутанная схема с пого-пинами (подпружиненные контакты).

Схема 1. Использование USB-UART адаптера

Я использую макетный блок питания для получения необходимых 3.3В для модуля JDY-31.

USB-UART адаптер переключаемый между 5В и 3.3В, выбран режим 3.3В.

  • JDY-31 RX → TX пин USB-UART адаптера (установлен на 3.3В)

  • JDY-31 TX → RX пин USB-UART адаптера

  • JDY-31 VCC → 3.3В

  • GND соединены

  • JDY-31 STATE — не подключён

С модулями на платах расширения будет проще. Просто помните, что пин RX JDY-31 работает на 3.3В.

JDY-31 на макетной плате Схема подключения JDY-31 через USB-UART

Схема 2. Использование Arduino с скетчем последовательной ретрансляции

  • JDY-31 RX → Arduino D2

  • JDY-31 TX → Arduino D3 через делитель напряжения (5В → 3.3В)

  • JDY-31 VCC → Arduino 3.3V

  • GND → GND

Arduino воспринимает 3.3В как HIGH, поэтому пин TX JDY-31 (который работает на 3.3В) можно подключить напрямую к пину RX Arduino без необходимости повышения напряжения до 5В.

JDY-31 подключение к Arduino на макетной плате Схема подключения JDY-31 к Arduino

Скетч Arduino для последовательной ретрансляции

Скетч Arduino использует библиотеку SoftwareSerial с D2 как Arduino TX и D3 как Arduino RX.

/*
 *  sketch: SerialPassThrough_SoftwareSerial_Basic
 *  martyncurrey.com
 *
 *  Использование программного Serial для связи с устройством через UART
 *  Всё, что вводится в Serial Monitor, отправляется на подключённое устройство
 *  Всё полученное от устройства копируется в Serial Monitor
 *
 *  Пины
 *  BT VCC к Arduino 5V или Arduino 3.3V.
 *  BT GND к GND
 *  Arduino D2 (Arduino RX) к модулю TX
 *  Arduino D3 (Arduino TX) к модулю RX. Может потребоваться делитель напряжения.
 *
 *  Предполагается использование 5В Arduino
 *  Если устройство 3.3В — добавьте делитель напряжения (5В→3.3В) между Arduino TX и RX устройства
 *  Arduino RX к TX устройства не требует делителя. Arduino распознаёт 3.3В как HIGH
 *
 */

#include <SoftwareSerial.h>
SoftwareSerial softSerial(2, 3); // RX, TX

char c=' ';

void setup()
{

    Serial.begin(9600,SERIAL_8N1 );
    while (!Serial) { ; }

    Serial.print("Sketch:   ");   Serial.println(__FILE__);
    Serial.print("Uploaded: ");   Serial.println(__DATE__);

    softSerial.begin(9600);
    Serial.println("softSerial started at 9600");
    Serial.println("Ready");
}


void loop()
{
    // Чтение из Serial Monitor и отправка на UART-модуль
    if (Serial.available())
    {
        c = Serial.read();
         softSerial.write(c);
    }

    // Чтение из UART-модуля и отправка в Serial Monitor
    if (softSerial.available())
    {
        c = softSerial.read();
        Serial.write(c);
    }

} // void loop()

Проверка имени JDY-31 в эфире

Перед попыткой AT-команд проверим, что модуль включён и транслирует имя. Подключите JDY-31 к питанию и используйте Android-устройство для сканирования Bluetooth-устройств.

На моём телефоне это Настройки → Подключения → Bluetooth. У вас может быть иначе.

Выполните сканирование, и если планеты выстроились в ряд, JDY-31-SPP появится в списке.

Bluetooth сканирование JDY-31 JDY-31-SPP в списке устройств

Использование AT-команд

Для общения с JDY-31 я использую Simple Serial Monitor (замена Serial Monitor в Arduino IDE). Если у вас нет Simple Serial Monitor и вы не хотите его устанавливать, Arduino IDE будет почти так же хороша :-)

Откройте Simple Serial Monitor (или Serial Monitor Arduino IDE).

Выберите скорость 9600.

Установите символы окончания строки NL and CR (\r\n).

Выберите правильный COM-порт (USB-UART адаптер или Arduino) и нажмите Connect.

Simple Serial Monitor настройки

Если вы используете Arduino с ретрансляцией, вы увидите стартовое сообщение.

Стартовое сообщение в Serial Monitor

Если вы используете USB-UART адаптер, ничего не будет.

Далее в руководстве я буду использовать схему с Arduino.

AT+VERSION

Поскольку базовой команды AT нет, начнём с AT+VERSION.

Введите AT+VERSION и нажмите SEND.

Отправка AT+VERSION

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

Ответ AT+VERSION

AT+NAME

Для подтверждения имени модуля используйте AT+NAME.

Отправка AT+NAME Ответ AT+NAME

Для смены имени используйте AT+NAME снова. На этот раз добавьте новое имя к команде.

Введите AT+NAMEMySuperSecretSensor и нажмите SEND. Обратите внимание — без знака =.

Смена имени JDY-31

Если JDY-31 одобрит новое имя, он ответит +OK.

Подтверждение смены имени

Можно перепроверить, что новое имя принято, повторив команду AT+NAME.

Проверка нового имени Новое имя подтверждено

Для сброса имени используйте AT+NAMEJDY-31-SPP или, если вы не меняли другие настройки, AT+DEFAULT.

AT+DEFAULT

AT+DEFAULT сбрасывает все настройки к заводским.

Похоже, AT+DEFAULT нарушает работу команды AT+NAME.

AT+DEFAULT Результат AT+DEFAULT

Используйте AT+NAME снова для подтверждения сброса имени к исходному.

Вы заметите, что модуль теперь включает сообщение PIN=0000. Это сделано, чтобы запутать вас — PIN-код на самом деле 1234.

PIN=0000 сообщение Подтверждение сброса имени

AT+PIN

Для проверки текущего PIN-кода используйте AT+PIN.

Отправка AT+PIN

Вы, возможно, удивитесь, узнав, что он 1234.

PIN = 1234

Проверить PIN можно, сопрягая JDY-31 с Android-устройством. Откройте Настройки → Подключения → Bluetooth.

Bluetooth настройки

Дождитесь, пока JDY-31 появится в списке.

JDY-31 в списке устройств

Нажмите на запись JDY-31. Вам предложат ввести PIN-код. Сначала попробуйте 0000 и нажмите OK.

Ввод PIN 0000 Попытка сопряжения

Android-устройство не может подключиться.

ХА ХА! JDY-31 вас обманул!

Ошибка сопряжения

Попробуйте снова с 1234.

Ввод PIN 1234

Успех! JDY-31 теперь сопряжён.

Успешное сопряжение

Android-телефон и JDY-31

Раз уж у нас открыто Android-устройство с сопряжённым JDY-31, давайте используем его для отправки сообщений на Arduino. Для этого нам нужно приложение Bluetooth-терминала. Я использую Serial Bluetooth Terminal от Kai Morich.

Откройте приложение и нажмите иконку меню.

Serial Bluetooth Terminal Меню Serial Bluetooth Terminal

Откройте Devices.

Список устройств

Нажмите на запись JDY-31-SPP.

Выбор JDY-31-SPP

Приложение попытается подключиться.

Подключение к JDY-31

Если подключение успешно, введите Hello и нажмите Send.

Отправка Hello

И будьте поражены, Поражены!, когда Hello появится в Serial Monitor.

Hello в Serial Monitor

В Serial Monitor введите and hello back, нажмите SEND.

Отправка ответа Ответ в Serial Monitor

И вот оно — сообщение появляется перед вами. Волнующие времена.

Сообщение в Bluetooth Terminal

При активном беспроводном соединении отправка AT+DISC через UART-канал разрывает соединение.

Отправка AT+DISC Результат AT+DISC

Соединение потеряно.

Соединение разорвано

Для проверки текущей скорости используйте AT+BAUD. Чтобы использовать эту команду, нужно сначала подключиться к JDY-31 с правильной скоростью — так что команда просто подтверждает то, что вы уже знаете!

Отправка AT+BAUD Ответ AT+BAUD

JDY-31 имеет ограниченный набор скоростей:

  • 4: 9600

  • 5: 19200

  • 6: 38400

  • 7: 57600

  • 8: 115200

  • 9: 128000

Для установки другой скорости используйте AT+BAUD номер_индекса, где номер — от 4 до 9.

AT+BAUD4 устанавливает скорость 9600.

Установка AT+BAUD4 Подтверждение скорости

Оригинал статьи: Martyn Currey — martyncurrey.com