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 на плате расширения
Основные характеристики 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
STATE — Статус подключения. LOW = не подключён. HIGH = подключён
TXD — Выход UART
RXD — Вход UART
VCC — Питание (помните: 3.3В)*
GND — Земля
* SMD-модуль JDY-31 также может работать от 1.8В
Пины платы расширения JDY-31
Платы расширения довольно стандартные и используются для многих разных Bluetooth-модулей.
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В.
Схема 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В.
Скетч 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 появится в списке.
Использование 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.
Если вы используете Arduino с ретрансляцией, вы увидите стартовое сообщение.
Если вы используете USB-UART адаптер, ничего не будет.
Далее в руководстве я буду использовать схему с Arduino.
AT+VERSION
Поскольку базовой команды AT нет, начнём с AT+VERSION.
Введите AT+VERSION и нажмите SEND.
Вы должны увидеть версию прошивки модуля.
AT+NAME
Для подтверждения имени модуля используйте AT+NAME.
Для смены имени используйте AT+NAME снова. На этот раз добавьте новое имя к команде.
Введите AT+NAMEMySuperSecretSensor и нажмите SEND. Обратите внимание — без знака =.
Если JDY-31 одобрит новое имя, он ответит +OK.
Можно перепроверить, что новое имя принято, повторив команду AT+NAME.
Для сброса имени используйте AT+NAMEJDY-31-SPP или, если вы не меняли другие настройки, AT+DEFAULT.
AT+DEFAULT
AT+DEFAULT сбрасывает все настройки к заводским.
Похоже, AT+DEFAULT нарушает работу команды AT+NAME.
Используйте AT+NAME снова для подтверждения сброса имени к исходному.
Вы заметите, что модуль теперь включает сообщение PIN=0000. Это сделано, чтобы запутать вас — PIN-код на самом деле 1234.
AT+PIN
Для проверки текущего PIN-кода используйте AT+PIN.
Вы, возможно, удивитесь, узнав, что он 1234.
Проверить PIN можно, сопрягая JDY-31 с Android-устройством. Откройте Настройки → Подключения → Bluetooth.
Дождитесь, пока JDY-31 появится в списке.
Нажмите на запись JDY-31. Вам предложат ввести PIN-код. Сначала попробуйте 0000 и нажмите OK.
Android-устройство не может подключиться.
ХА ХА! JDY-31 вас обманул!
Попробуйте снова с 1234.
Успех! JDY-31 теперь сопряжён.
Android-телефон и JDY-31
Раз уж у нас открыто Android-устройство с сопряжённым JDY-31, давайте используем его для отправки сообщений на Arduino. Для этого нам нужно приложение Bluetooth-терминала. Я использую Serial Bluetooth Terminal от Kai Morich.
Откройте приложение и нажмите иконку меню.
Откройте Devices.
Нажмите на запись JDY-31-SPP.
Приложение попытается подключиться.
Если подключение успешно, введите Hello и нажмите Send.
И будьте поражены, Поражены!, когда Hello появится в Serial Monitor.
В Serial Monitor введите and hello back, нажмите SEND.
И вот оно — сообщение появляется перед вами. Волнующие времена.
При активном беспроводном соединении отправка AT+DISC через UART-канал разрывает соединение.
Соединение потеряно.
Для проверки текущей скорости используйте AT+BAUD. Чтобы использовать эту команду, нужно сначала подключиться к JDY-31 с правильной скоростью — так что команда просто подтверждает то, что вы уже знаете!
JDY-31 имеет ограниченный набор скоростей:
4: 9600
5: 19200
6: 38400
7: 57600
8: 115200
9: 128000
Для установки другой скорости используйте AT+BAUD номер_индекса, где номер — от 4 до 9.
AT+BAUD4 устанавливает скорость 9600.
Оригинал статьи: Martyn Currey — martyncurrey.com