Bluetooth-UART модуль JDY-23 BLE 5.0

Действительно интересный блютуз-приёмопередатчик, который имеет широкий диапазон применения, ведь энергопотребление его сверхнизкое (BLE - Bluetooth Low Energy) и размеры малы. В статье приведены основные параметры модуля JDY-23, схема подключения, описание основных команд управления, способы использования и испытания в бою (замеры тока и дальности передачи).

Основные параметры

Рабочая частота: 2,4 ГГц
Мощность передатчика: 4 дБ
Чувствительность приёма: -97 дБ
Версия Bluetooth: 5.0 (совместим с BLE 4.0, BLE 4.2)
Дальность: до 60 м
Ток при передачи/приеме данных через UART: <5 мА
Ток при вещании: 800 мкА
Ток покоя (легкий сон): <50 мА
Ток покоя (глубокий сон): 9 мкА
Модуляция: GFSK
Питание: 1.8-3.6 В
Размеры: 19.6 x 14.94 x 1.8 мм
Цена: 1$/шт

Приобрести на 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-19 (может работать как ведущее!, то есть есть возможность передачи данных между двумя модулями):

Цена: 1.05$ + 0.74$ = 1.79$

Что может эта штука

  • Обмен данными между двумя модулями (JDY-23 не может, а вот JDY-19 может!)
  • Обмен данными между модулем (ведомым) и другим Bluetooth-устройством (ведущим)
  • Обмен данными между модулем и телефоном

Элементная база

На странице товара пишут, что используется микроконтроллер CC2541 (здесь вроде как блютуз 4.0), на некоторых фото можно увидеть JY01S512E G101S-32P, но самой плате маркировка уничтожена.

Подключение

Связь между модулем и телефоном через блютуз-соединение

Установим связь между ПК и телефоном. Согласно схеме подключаем USB-TTL преобразователь к модулю, желательно также подключить светодиод к выводу ALED - он будет показывать текущий статус подключения (во время простоя - мигает, в подключенном состоянии - просто светится).
Кроме этого может понадобится задействовать вывод PWRC. Когда связь установлена, то команды не работают, для отправки нужно подключить этот вывод к минусу, отправить АТ-команды и отпустить.

Рекомендуемое программное обеспечение

  • Для компьютера: 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, если вам нужно, чтобы другие не могли подключиться, вы можете настроить отправку пароля с подключаемого по блютуз устройства (через приложение) и его дальнейшую проверку средствами микроконтроллера.

Если пароль не получен/неправильный в течение n секунд после подключения, МК должен прижать вывод PWRC к минусу и отправить команду AT+DISC, модуль сразу же отключится.

Потребляемая мощность

ОБНОВЛЕНИЕ ОТ 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 этот стоит дешевле (в два-три раза!) и при этом имеет меньшие размеры и (возможно) энергопотребление.

22233
RSS
Гавриил
18:18

Спасибо за обзор! Подскажи а можно соединить между собой два JDY-23 для передачи информации от одного устройства другому, или что ещё может быть ведущим устройством (master) JDY-23 кроме смартфона и компьютера?

22:10

Нет, JDY-23 может выступать только ведомым.
Существует также JDY-18 (может выступать как ведомым, так и ведущим), с ним такое возможно провернуть.
Мб. подойдет JDY-40 для связи двух устройств, но это не блютуз.
Планшет, другой МК с блютузом может.

Ares666
00:10

Спасибо, очень полезная инфа. А получится эту игрушку использовать для передачи звукового сигнала с телефона или ПК (на усилитель к примеру)  ? Если да то не подскажите как подключить ?

10:33

В теории это возможно, но не нужно, оно не предназначено для этого совсем никак.

Вам подойдет вот такая платка VHM-314 (есть разные, эта нафарширована почти по максимуму):

Выход аудиосигнала с разъема 3,5мм можно кинуть хоть на наушники, хоть на усилок.

Также есть куча готовых приемников уже в корпусе, искать на али по запросу: bluetooth audio receiver

Ares666
00:25

Большое спасибо

Роман
11:57

На странице товара пишут, что используется микроконтроллер CC2541 (здесь вроде как блютуз 4.0), на некоторых фото можно увидеть JY01S512E G101S-32P, но самой плате маркировка уничтожена.

Контроллер явно другой. CC2541 нет 32р, только 40р., и 32МГц кварц.

Убил 3 дня так и ничего толкового не нашел. Нарыл документацию на англ.(толку от нее почти что 0) но могу поделиться, кому надо.

Итог: девайс бесполезный, так как даташитов нет.

Все, что удалось… АТ-команды, но смысл от них???

Евгений
08:47

в даташите судя по всему допущена ошибка  -  AT+BAUD(0) — скорость 115200, а не 11520

11:22

Да, скорее всего 115200, китайцы ошиблись, статью подправил.

Гость
09:06

Странно, но на некоторых платах стоит кварц на 40 МГц.

12:42

Тоже заметил, но даже не упоминал об этом, т.к. работают оба хорошо.

Мб. просто разные партии.

Alex
11:53

Подскажите, а как всё таки его усыпить в режим

2: Начать спать, проснутся
при подключении, при
отключении опять спать

, чтобы он просыпался только при подключении? Сейчас получается его разбудить только замыканием контакта PWR+Gnd. Не бегать же к нему каждый раз

14:38

был косяк, уже исправил, должно быть не 2, а 0:

AT+STARTEN0

проверьте

Иван
20:25

Подскажите, как из Win10 подключиться по Bluetooth к этой штуке? На андроиде Bluetooth USB Terminal работает, но для винды не могу ничего рабочего найти :-(

21:14

У меня также не вышло найти программу, которая работала бы как терминал с BLE.

Может вам подойдет обычный блютуз JDY-32, этот точно подключиться.

Иван
02:05

А с JDY-32 какая программа будет работать?

12:49

Любой терминал (например, YAT удобная), модуль в диспетчере отображается как COM-порт после привязки.

Посмотрите видос:

Иван
14:13

Понял, спасибо

15:16

В window маркете есть терминал, который соединяется с BLE по COM порту. Себе буду делать usb-uart-bluetooth для мультиметра.

17:57

как называется?

20:59
Иван
14:16

Подскажите, какими AT командами работать с выводами (OUT1-7) и вводами (INT/EINT)?

17:14

Уровни пробовал менять по это видосу — работает. Состояние не считывал, но также должно работать.

Можете попробовать отправлять код команды вручную, но нужно не забыть убрать перенос строки \r\n (CR+LF) и отправлять именно число, а не текст.

Иван
19:52

Спасибо, с выводом разобрался. Оправил 0хE7F101 включил сигнал на первом выводе, отправил 0хE7F100 — выключил. А вот с вводом не получается. В даташите как-то непонятно это описано. Я даже не поянл, чем EINT от INT отличаются

Psyho
00:22

А можно же его использовать для управления драйвером нагрузки? без дополнительных мк

10:24

Да, в недавно появившейся главе Управление выводами GPIO это как раз описано.

Просто нужно смотреть что за драйвер, мб. его просто нужно будет согласовать с логикой 3.3В (питание модуля).

Иван
16:49

А по поводу вводов не изучали?

14:15
15:17

Случайно запитал от 5V и все работало(кроме, возможно STAT)

22:22

ну стмки у меня тоже переживали 5В, но постоянно питать в любом случаи не стоит

20:57

С режимами экономии осторожнее. Я по ходу залочил JDY-19: при подключенном телефоне отвечает только на AT+STAT, на другие команды совсем не реагирует. Как настроить мастера, не понял

msl
17:08

Несколько более совершенный модуль чем JDY-08. Побольше АТ команд. Возможно управлять выводами. Немного лучше по дальности. И самое главное дешевле. JDY-08 пару лет стоили меньше, теперь подросли.
При управлении с терминала для JDY-23 требуется обязательно наличие CR, CL. И при смене скорости обмена командой BAUD, последняя изменяется только после перезагрузки модуля. т.е. на лету не изменишь.

Semen
01:24

на картинке (схема подключения к USB-UART) jdy23_connection.svg — ошибка. Нужно RX->TX и TX->RX

17:39

спасибо! исправил

Fernando
21:32

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,

23:01

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)

Ant
16:42
+1

Режим 1000мс AT+STARTEN0

Режим 1000мс AT+STARTEN1 (добавляет примерно 900мкА)


Режим 100мс AT+STARTEN0



Режим 100мс AT+STARTEN1


DeepSleep

При подаче питания ДО выхода в режим работы «advertising»



PS advertising интервал применяется только через ресет модуля или передергивание питания. По крайней мере пока так… сильно не ковырял.

Ant
16:46

+VER:JDY-23-V1.221

21:51

спасибо, вот это классные измерения, указал в статье

Ant
07:34

Наверно стоит пояснить для читателей...
Смотреть нужно на самое левое значение Averange — это среднее потребление (за час), кроме последней картинки. 
В последней картинке можно игнорировать значение Averange, т.к. там показан бросок тока при старте модуля, при подаче питания. Имеет значение продолжительность и уровень потребления тока. Может пригодится для тех кто выбирает между сном и периодическим включением модуля для обмена.

Выборка 1000 семплов в секунду. Точность до 1ма — 20%, выше 1ма — 10%.

Mike
20:47

Добрый день! Почему то Ваш проект в App Inevntor, собранный заново, не видит ни одно устройство. BT и GPS включены. В то же время Ваш же APK работает. В чем может быть прикол?

Mike
20:52

Да и огромное спасибо за посадочное место на плату!

Загрузка...