Bluetooth-UART модуль JDY-23 BLE 5.0
Действительно интересный блютуз-приёмопередатчик, который имеет широкий диапазон применения, ведь энергопотребление его сверхнизкое (BLE - Bluetooth Low Energy) и размеры малы. В статье приведены основные параметры модуля JDY-23, схема подключения, описание основных команд управления, способы использования и испытания в бою (замеры тока и дальности передачи).
Основные параметры
Приобрести на Aliexpress
?️ JDY-23 JDY-23A BLE 5.0 Module BLE5.0 (0.83?): https://ali.ski/FuEXar
?️ JDY-23 Bluetooth 5.0 module (1.12?): https://ali.ski/JegQ8
?️ 10pcs JDY-23 Bluetooth 5.0 (11.2?/10pcs): https://ali.ski/b0Lxm
Что может эта штука
Обмен данными между двумя модулями(JDY-23 не может, а вот JDY-19 может!)- Обмен данными между модулем (ведомым) и другим Bluetooth-устройством (ведущим)
- Обмен данными между модулем и телефоном
Элементная база
Подключение
Связь между модулем и телефоном через блютуз-соединение
Рекомендуемое программное обеспечение
- Для компьютера: YAT
- Для телефона: Bluetooth USB Terminal
Открываем терминал на ПК. Проверяем некоторые AT-команды:
Модуль отвечает, а это уже хорошо (но команда выбора мощности AT+POWR не сработала, ну и и ладно).
Заходим в приложение на моб.. Меню слева -> Devices -> BLUETOOTH LE -> SCAN
- обязательно дать все разрешения и включить геолокацию (GPS)!
- не пытайтесь добавить модуль в настройках Bluetooth (создать пару) - это сделать не получится (да и не нужно)
Тыкаем по названию (также можно сверить MAC-адрес) и начинается подключение (еще есть кнопка вверху).
Всё! Теперь создана связь между устройствами, отправленное с ПК видно на телефоне, и наоборот ( AT-команды больше не принимаются, чтобы отправить нужно прижать к минусу вывод PWRC).
Связь с телефоном через приложение
В App Invertor 2 можно создавать приложения, которые могут что-то делать используя как раз Bluetooth (нужно загрузить дополнение BluetoothLE) с версией не ниже 20181124.
Осуществив получение данных на телефон и отправку с него с использованием такого модуля можно делать классные штуки.
Пример сделанного приложения (скачать можно внизу):
- Включить Bluetooth и GPS.
- Дать разрешение на геолокацию самостоятельно.
- По нажатию на кнопки ON и OFF отправляются числа 48 и 49, что соответствует символам 1 и 0 в кодировке ASCII.
- Также осуществляется прием байта (0-255) и его отображение на экране.
*это немного измененное приложение на основе:
Список основных команд
Команда | Ответ | Параметр | |
Версия | AT+VER |
+VER:JDY-23-V1.2 |
- |
Имя | AT+NAME |
+NAME:JDY-23 |
Имя
(до 24 байт) |
Отключится | AT+DISC | +OK | - |
Текущий
статус подключения |
AT+STAT |
+STAT:00 |
00: не подключен
01: подключен |
MAC-адрес | AT+MAC |
+MAC:19093010061F |
MAC-адрес
(пример: AT+MAC11223344566) |
Скорость UART | AT+BAUD |
+BAUD:4 |
Параметр: (1-9)
0——*115200 1——57600 2——38400 3——19200 4——9600 5——4800 6——2400 По умолчанию: 4 *исправлено |
Сон | AT+SLEEP | +SLEEP:OK |
1: Легкий сон (вещание)
2: Глубокий сон (нет вещания) |
Режим работы | AT+STARTEN |
+STARTEN:1 |
1: Проснутся, управление сном
через AT+SLEEP 0 (*исправлено): Начать спать, проснутся при подключении, при отключении опять спать |
Интервал
вещания |
AT+ADVIN |
+ADVIN:1 |
Параметр: (0-9)
0——100 мс 1——200 мс 2——300 мс 3——500 мс 4——500 мс 5——600 мс 6——700 мс 7——800 мс 8——900 мс 9——1000 мс По умолчанию: 0 |
Вкл./Выкл. светодиод | AT+ALED |
Параметр: (0-1)
0: выключить 1: включить |
|
Сброс настроек | AT+RST | +OK | - |
Остальные команды нас не интересуют, т.к. предназначены для бекона (их можно найти в документации, которая прикреплена ниже).
Управление выводами GPIO
У модуля есть выводы OUT1-OUT7, которыми можно управлять.
Уровень напряжения на них можно выставлять с помощью кодов-команд.
П р и м е р:
Установка высокого уровня на OUT1: 0xE7F101
Установка низкого уровня на OUT1: 0xE7F100
Важно! Characteristic UUID должен быть при отправке команд 0xFFE2
1) Сделать это можно с помощью NRF Connection:
После подключения нажать на стрелку вверх (отправка) характеристики UUID: 0000ffe2-.... и ввести шестнадцатеричное число-код-команду и выбрать тип массив байтов BYTE ARRAY (выбрано по умолчанию).
2) Также с помощью Serial Bluetooth: сначала отключить любые добавочные символы при отправке (Settings -> Send -> Newline -> None) и можно врубить режим HEX (Settings -> Send -> Edit Mode -> HEX). Здесь сначала во вкладке Devices -> Bluetooth LE нужно зажать на названии JDY-23 (если не изменено), далее Edit и установить пользовательский профиль (Custom), при этом характеристика при записи (Write characteristic UUID) должна быть: 0000ffe2-...
3) В App Invertor 2 при отправке с помощью WriteBytes нужно установить опять же characteristicUUID: 0000ffe2-0000-1000-8000-00805f9b34fb
Далее создать список (make a list) из трех элементов (нажать на шестерню для увеличения количества item) и запихнуть туда команду: E7 F1 01 (то есть она разбивается на три части - три байта).
В итоге все прекрасно работает, теперь можно управлять какой либо нагрузкой с телефона посредством ручной отправки команд или замутить простое приложение с кнопками в конструкторе.
Как быть с паролем (совет от китайцев)
JDY-23 не имеет пароля для подключения через Bluetooth, если вам нужно, чтобы другие не могли подключиться, вы можете настроить отправку пароля с подключаемого по блютуз устройства (через приложение) и его дальнейшую проверку средствами микроконтроллера.
Потребляемая мощность
ОБНОВЛЕНИЕ ОТ 14.01.2023:
🧲 Обратите внимание на измерения от пользователя:
https://cxemka.com/33-bluetooth-uart-modul-jdy-23-...
Они выполнены специализированным прибором, поэтому ориентируйтесь на них!
.
Ток во время простоя (не подключено): | 1 мА |
Ток в подключенном состоянии: | 2.2 мА |
Ток в подключенном состоянии (глубокий сон, нет вещания): | 60-200 мкА |
Ток при передачи данных через UART: | 2-3 мА |
Проверка дальности передачи
Рассчитывать от синезуба огромного расстояния передачи никто не будет, да и не нужно, заявлено до 60 м (ну эт. на открытой местности), на деле же пару стен пробивает, чего вполне достаточно.
Техническая документация и полезные файлы
![]() |
JDY-23-V2.1_BLE_5.0_Datasheet.pdf |
Полный документ на
модуль JDY-23 на китайским языке. |
|
JDY-23-PCB.pcb |
Файл печатной платы
контактных площадок для модуля. |
|
BLE_(2019-3-28).apk |
Приложение для связи.
(Я так и не смог подключиться) |
![]() |
JDY-23_Terminal.zip |
Универсальное ПО для настройки.
Выдает ошибки, но ранее я запускал его (нужны дрова какие-то) |
|
byte_rxtx_JDY23.aia |
Проект в среде App Invertor 2
Можно посмотреть как все устроено и сделать под себя |
|
byte_rxtx_JDY23.apk |
Приложение, работающее
с JDY-23. (Прием и отправка байта) |
Видеообзор
Итого
Штука очень полезная, стоит не дорого, но при этом дает возможность делать устройства, которые будут взаимодействовать с телефоном, что отлично подойдет для многих применений (прием данных от каких-то датчиков, управление светом/воротами...).
По сравнению с известными модулями HC-0xx этот стоит дешевле (в два-три раза!) и при этом имеет меньшие размеры и (возможно) энергопотребление.
Спасибо за обзор! Подскажи а можно соединить между собой два JDY-23 для передачи информации от одного устройства другому, или что ещё может быть ведущим устройством (master) JDY-23 кроме смартфона и компьютера?
Нет, JDY-23 может выступать только ведомым.
Существует также JDY-18 (может выступать как ведомым, так и ведущим), с ним такое возможно провернуть.
Мб. подойдет JDY-40 для связи двух устройств, но это не блютуз.
Планшет, другой МК с блютузом может.
Спасибо, очень полезная инфа. А получится эту игрушку использовать для передачи звукового сигнала с телефона или ПК (на усилитель к примеру) ? Если да то не подскажите как подключить ?
В теории это возможно, но не нужно, оно не предназначено для этого совсем никак.
Вам подойдет вот такая платка VHM-314 (есть разные, эта нафарширована почти по максимуму):
Выход аудиосигнала с разъема 3,5мм можно кинуть хоть на наушники, хоть на усилок.
Также есть куча готовых приемников уже в корпусе, искать на али по запросу: bluetooth audio receiver
Большое спасибо
На странице товара пишут, что используется
микроконтроллерCC2541(здесь вроде как блютуз 4.0), на некоторых фото можно увидеть JY01S512E G101S-32P, но самой плате маркировка уничтожена.Контроллер явно другой. CC2541 нет 32р, только 40р., и 32МГц кварц.
Убил 3 дня так и ничего толкового не нашел. Нарыл документацию на англ.(толку от нее почти что 0) но могу поделиться, кому надо.
Итог: девайс бесполезный, так как даташитов нет.
Все, что удалось… АТ-команды, но смысл от них???
в даташите судя по всему допущена ошибка - AT+BAUD(0) — скорость 115200, а не 11520
Да, скорее всего 115200, китайцы ошиблись, статью подправил.
Странно, но на некоторых платах стоит кварц на 40 МГц.
Тоже заметил, но даже не упоминал об этом, т.к. работают оба хорошо.
Мб. просто разные партии.
Подскажите, а как всё таки его усыпить в режим
2: Начать спать, проснутся
при подключении, при
отключении опять спать
, чтобы он просыпался только при подключении? Сейчас получается его разбудить только замыканием контакта PWR+Gnd. Не бегать же к нему каждый раз
был косяк, уже исправил, должно быть не 2, а 0:
AT+STARTEN0
проверьте
Подскажите, как из Win10 подключиться по Bluetooth к этой штуке? На андроиде Bluetooth USB Terminal работает, но для винды не могу ничего рабочего найти :-(
У меня также не вышло найти программу, которая работала бы как терминал с BLE.
Может вам подойдет обычный блютуз JDY-32, этот точно подключиться.
А с JDY-32 какая программа будет работать?
Любой терминал (например, YAT удобная), модуль в диспетчере отображается как COM-порт после привязки.
Посмотрите видос:
Понял, спасибо
В window маркете есть терминал, который соединяется с BLE по COM порту. Себе буду делать usb-uart-bluetooth для мультиметра.
как называется?
Это или это
Подскажите, какими AT командами работать с выводами (OUT1-7) и вводами (INT/EINT)?
Уровни пробовал менять по это видосу — работает. Состояние не считывал, но также должно работать.
Можете попробовать отправлять код команды вручную, но нужно не забыть убрать перенос строки \r\n (CR+LF) и отправлять именно число, а не текст.
Спасибо, с выводом разобрался. Оправил 0хE7F101 включил сигнал на первом выводе, отправил 0хE7F100 — выключил. А вот с вводом не получается. В даташите как-то непонятно это описано. Я даже не поянл, чем EINT от INT отличаются
А можно же его использовать для управления драйвером нагрузки? без дополнительных мк
Да, в недавно появившейся главе Управление выводами GPIO это как раз описано.
Просто нужно смотреть что за драйвер, мб. его просто нужно будет согласовать с логикой 3.3В (питание модуля).
А по поводу вводов не изучали?
нет
Случайно запитал от 5V и все работало(кроме, возможно STAT)
ну стмки у меня тоже переживали 5В, но постоянно питать в любом случаи не стоит
С режимами экономии осторожнее. Я по ходу залочил JDY-19: при подключенном телефоне отвечает только на AT+STAT, на другие команды совсем не реагирует. Как настроить мастера, не понял
Несколько более совершенный модуль чем JDY-08. Побольше АТ команд. Возможно управлять выводами. Немного лучше по дальности. И самое главное дешевле. JDY-08 пару лет стоили меньше, теперь подросли.
При управлении с терминала для JDY-23 требуется обязательно наличие CR, CL. И при смене скорости обмена командой BAUD, последняя изменяется только после перезагрузки модуля. т.е. на лету не изменишь.
на картинке (схема подключения к USB-UART) jdy23_connection.svg — ошибка. Нужно RX->TX и TX->RX
спасибо! исправил
Dear friend, Nice tutorial.
I didn't find in my JDY-23 the characteristic 0xFFE2, it only shows the 0xFFE1 and battery service. I also checked and i have different firmware when send AT+VER:
+VER:JDY-23-V81-02
Do you think if possible to update firmware? Do you know the manufacturer website?
Any tip? 'id like to use the IOs using commands E7F101, etc.
Best Regards,
No, maybe it's possible, but there is no firmware, no programmer and on the some modules the marking on the chip is erased.
Try to buy module from another seller)
Режим 1000мс AT+STARTEN0
Режим 1000мс AT+STARTEN1 (добавляет примерно 900мкА)
Режим 100мс AT+STARTEN0
Режим 100мс AT+STARTEN1
DeepSleep
При подаче питания ДО выхода в режим работы «advertising»
PS advertising интервал применяется только через ресет модуля или передергивание питания. По крайней мере пока так… сильно не ковырял.
+VER:JDY-23-V1.221
спасибо, вот это классные измерения, указал в статье
Наверно стоит пояснить для читателей...
Смотреть нужно на самое левое значение Averange — это среднее потребление (за час), кроме последней картинки.
В последней картинке можно игнорировать значение Averange, т.к. там показан бросок тока при старте модуля, при подаче питания. Имеет значение продолжительность и уровень потребления тока. Может пригодится для тех кто выбирает между сном и периодическим включением модуля для обмена.
Выборка 1000 семплов в секунду. Точность до 1ма — 20%, выше 1ма — 10%.
Добрый день! Почему то Ваш проект в App Inevntor, собранный заново, не видит ни одно устройство. BT и GPS включены. В то же время Ваш же APK работает. В чем может быть прикол?
Да и огромное спасибо за посадочное место на плату!