Беспроводной модуль 2.4 ГГц JDY-40 (UART/дистанционное управление)
Модули JDY-40 завоевывают популярность благодаря своей низкой стоимости и простоте использования. Штуковина очень полезная, ведь по сравнению теме же платками на 433 МГц стоит дешевле, но является готовым устройством, которое можно использовать как для передачи данных, так и для управления в различных режимах. В статье приведены схемы подключения и основные команды, сделаны замеры потребляемой мощности и испытания на дальность работы.
Содержание
1 Основные параметры
2 Что это такое
3 Элементная база
4 Как подключить
4.1 Рекомендуемое программное обеспечение
5 Передача данных между двумя модулями
6 Передача данных с МК
7 Дистанционное управление нагрузками
8 Попытка передать сигнал
9 Потребляемая мощность
10 Проверка дальности передачи данных
Основные параметры
Купить на Aliexpress
DY-40 2.4G wireless serial port transmission transceiver
Цена: 0.6$ + 0.15$ = 0.75$
JDY-40 2.4G Wireless Serial Port
Цена: 0.78$
JDY-40 module
Цена: 0.56$
Что это такое?
Это приемопередатчик (может как передавать, так и принимать информацию) через УАПП (Универсальный Асинхронный Приёмопередатчик), то есть с помощью него можно обмениваться данными через UART без проводов на расстояние до 120 м (далее проверка дальности) между двумя такими штуками.
Бонусом к этому идет возможность настройки на режим управления нагрузками (восемь штук), ну то есть одна плата будет передатчиком с кнопками, а вторая приемником с нагрузками (светодиоды, двигатели, нагреватели, разбрызгиватели)...
Элементная база
МК: BK2461
ЭСППЗУ: 24C02B
Здесь дикий китайский микроконтроллер со встроенным передатчиком и микросхемка последовательной электрически стираемой памяти (хотя на первый взгляд кажется, что это стабилизатор). Короче китайцы написали один раз прошивку и теперь клепают такие вот модули - молодцы.
Как подключить
Питать от ОТДЕЛЬНОГО источника 3.3В, а не от преобразователя!
Наиболее просто пока что не использовать МК, а просто подключить один модуль в качестве приемника к ПК/телефону через преобразователь и проверить АТ-команды.
Рекомендуемое программное обеспечение
- Для компьютера: YAT
- Для телефона: Serial USB Terminal
Настройки ПО
Скорость: | 9600 бод/с |
Данные: | 8 бит |
Парность | нет |
Стоп-бит | 1 |
Также включить
при передаче |
CR+LF (Перевод каретки + Возврат строки) |
После успешного присоединения отправляем команду и получаем ответ. Можно что-то изменить, но пока что не нужно.
AT+BAUD +BAUD=4 |
Скорость обмена |
1: 1200 бод/с
2: 2400 бод/с 3: 4800 бод/с 4: 9600 бод/с 5: 14400 бод/с 6: 19200 бод/с |
AT+RFID +RFID=8899 |
Идентификатор сети |
(0000-FFFF)
(0-65535) |
AT+DVID +DVID=1122 |
Идентификатор устройства |
(0000-FFFF)
(0-65535) |
AT+RFC +TFC=001 |
Канал | (1-128) |
AT+POWE +POWE=9 |
Мощность |
0: - 25 дБ
1: -15 дБ 2: -5 дБ 3: 0 дБ 4: +3 дБ 5: +6 дБ 6: +9 дБ 7: +10 дБ 8: +10 дБ 9: + 12 дБ |
AT+CLSS +CLSS=A0 |
Режим работы |
A0: Передача данных через УАПП между модулями C0: Управление (со светодиодной индикацией) C1: Управление (без светодиодной индикацией) C2: При нажатии кнопки создается импульс длительностью 30 мс (переход от низкого уровня в высокий) C3: При нажатии кнопки создается импульс длительностью 30 мс (переход из высокого уровня в низкий) C4: Высокий уровень при нажатой кнопке, низкий при отпущенной C5: Переключение уровня при нажатия |
Кстати, если отключить вывод CS от минуса, то модуль переходит в спящий режим (пониженное энергопотребление), а когда просыпается, то отправляет слово:
Wake |
Обновление 2021.07.12
Некоторые версии могут присылать START:
Всё прекрасно, модуль послушно отвечает. Менять пока что ничего не будем.
Передача данных между двумя модулями
Теперь можно задействовать и второй экземпляр, на его входы возможно кидать данные с МК или опять же через переходник с телефона/ПК из-под программы-терминала.
Подключение для работы в качестве передатчика естественно немного отличается.
Питать от ОТДЕЛЬНОГО источника 3.3В, а не от преобразователя!
Теперь переданные данные от первого модуля-передатчика, введенные на одном устройстве успешно пересылаются на второй модуль-приемник и отображаются на экране телефона.
Причем связь осуществлена полудуплексная, ведь информацию можно передавать только от передающего.
Передача данных с МК
Также дополнительно по-быстрому осуществлена передача данных (температура с датчика HTU21D по I2C) от STM32 и отображена в видео графика (ПО: SerialPrint):
В целом все ништяк, но всё же находясь даже на близком расстоянии маленькая часть данных умудряется теряться/искажаться, при увеличении же расстояния потери еще больше.
А вот еще данные, полученные через этот модуль, записанные в текстовый файл и потом построенные в Гугл Таблицы (при сжатии пальцами микродатчика быстренько температура растет, далее держу и отпускаю микросхемку - температура постепенно падает):
Понятное дело, что для качественной перегонки инфы нужно будет делать проверку целостности данных. В случае с таким датчиком как у меня это просто сделать благодаря CRC.
Дистанционное управление нагрузками
Для проверки выбран самый нужный режим, когда кнопка нажата на соответствующем выходе высокий уровень, когда не нажата - низкий. Работает очень хорошо и стабильно, можно найти много применений.
Кем выступает | Пульт управления (модуль 1) | Приемник команд (модуль 1) |
Режим: | C1 | C4 |
Доп. | выводы CS и SET не используются | выводы CS и SET не используются |
Настройка путем
отправки команд (замкнуть CS и SET на минус!) |
|
|
Выводы | GPIO7, GPIO8 | GPIO7, GPIO8 |
Что подключено | Кнопки (при нажатии замыкают вывод на минус) | Светодиоды (анод к выводу, катод к минусу) |
Попытка передать сигнал
Есть восемь выводов, то есть по сути восемь каналов. Можно ли их использовать для передачи ШИМ-сигнала? Подаем на вход пульта сигнал f = 100 Гц, D = 50%
А на приемники получаем сигнальчик с частотой 7-8 Гц, так что идея с управлением сервоприовдами (нужна
f = 50 Гц) и безщеточными двигателями (нужна f = 400 Гц) провалилась (скорее всего из-за программы подавления влияния дребезга контактов).
В статье ? Дистанционное управление на модуле JDY-40 сделана платка для удобного монтажа модуля вместе с обвязкой, а также проверена дальность работы в поле:
Потребляемая мощность
Режим A0
Ток при передачи: | 26 мА |
Ток при приеме: | 22 мА |
Ток покоя (спящий режим): | 9-12 мкА |
*режим A0; напряжение питания 3.3В
Режим C1 (пульт управления)
Ток в режиме ожидания: | 1.66 мА |
Ток в режиме управления (один канал): | 4.8 мА |
Спящий режим: | отсутствует |
Режим C4 (приемник команд)
Ток в режиме ожидания: | 24.7 мА |
Ток во время приема команды (один канал, с учетом СИДа): | 25.7 мА |
Спящий режим: | отсутствует |
Видеообзор
Модель
Запили по-бырому модельку :
![]() | ![]() | ![]() |
Проверка дальности передачи данных (без внешней антены)
В довольно непростых условиях (кругом здания) получились неплохие результаты:
15 м | уверенный прием, незначительные потери |
20 м | уверенный прием, незначительные потери |
80 м | плохой прием, много потерь (здесь были небольшие заграждения) |
113 м | прием неплохой (нашел хорошее положение) |
150 м | также прием есть, но зависимость от положение огромная |
*температура от датчика (число с плавающей точкой) преобразовывалась в строку и передавалось в УАПП каждые 250 мс
Конечно же качество принимаемых символов (и вообще их наличие) сильно зависит от положения приемника, крутя-верча даже на расстоянии больше заявленного будет прием.
Что значит: (НЕ ПИТАТЬ ОТ Li-Po/Li-ion-аккумулятора напрямую!) ?
ну если Uпит = 1.9-3.6 В
А у Li-ion банки (обычной) напряжение от 3.7 (заряд 0%) до 4.2 (заряд 100%), то это очевидно выходит за разрешенный диапазон питающего напряжения.
А я подключил этот модуль к литиевой батарейке CR2477 и он не заработал.
Вот я и подумал, что из-за этого типа питания.
Но раз дело в диапазоне, значит причина неработы какая-то другая(так как U=2.98v)
Вообще к таким литиевым таблеткам лучше не подключать мощную нагрузку (более 1 мА).
Это вы в терминале смотрите? У меня ничего не отправляет просто так, только что еще раз подключил через USB-TTL преобразователь.
Подключите через стабилизатор 3.3В, чтобы точно удостовериться в отсутствии проблем с питанием, ведь тут около 20 мА ток. Скорость 9600 бод/с проверьте.
Кое что прояснилось!
Кое что прояснилось!
Про START при подключении забыл уже.
У меня модули работают отлично, один из них убил случайно, но он очевидно вышел из строя и не шлет ничего и греется. Поэтому так, гадая, пока не знаю что не так с вашими. Вижу вы не новичек, но пришлите фотку, мало ли что-то будет заметно.
Но опять же проблемы с ним возникали обычно только из-за плохого питания.
походу не включен перенос каретки и переход на новую строку (CR + LF), проверьте
Поставьте ближе к плате JDY-40 конденсатор электролит 10 мкф и будет счастье. Также мучался, стартовый бит и сброс.
Здравия тебе, автор. Жду из поднебесной свои модули. Интересует такой вопрос: режим пульта, будет ли работать 1 приёмник с 2мя передатчиками (3 «кнопки» от одного передатчика и 3 (на других входах) от другого. одновременно одни и те же «кноки» на разных передатчиках не нажмуться физически)? Или надо 2 приёмника на разных каналах (RFC)?
Хочу использовать в качестве пульта.Планирую на приемник ставить аку LI-PO 3,7в 100 Mah.Обязательно ли стабилизировать напряжение? Расстояние 20-70 м открытой местности
Что оптимально ставить на передатчик? В идеале всё запихнуть в корпус от селфи кнопки и ли авто д.у.Нужно пользоваться только одной кнопкой.
Да, без него выйдет из строя, у вашего аккумулятора напряжение при 100% заряде 4.2В.
Проработает около 100mAh/22mA = 4.5 часов
Можно литиевый элемент поставить: CR2032 или что-то побольше, тогда без стабилизатора, в таком случае можно подавать питание только при нажатии, а в простое питание будет полностью отключено.
Вот это еще посмотрите по этому модулю, если не видели: https://cxemka.com/122-distancionnoe-upravlenie-na-module-jdy-40-proverka-dalnosti.html
… в таком случае можно подавать питание только при нажатии, а в простое питание будет полностью отключено.
Объсните пож. Я использую режим С-4.Кнопка передатчика автоматически при нажатии включает питание — или этого можно добиться путем нужной распайки контактов кнопки? По логике, при отключении питания на передатчике, контакт на приемнике остается замкнутым.Чтобы разомкнуть контакт — нужно выключить приемник.
То есть пропаиваю перемычку между одним контактом передачи сигнала и паралелю с питанием? Кнопка стоит на разрыв цепи GND ?
И если всё таки использовать на передатчике CR2032 (230 mAh) не отключая питания- то она продержится пару лет ( режим сна), если не сильно интенсивно давить на кнопку.
Можно поставить на передатчик просто две кнопки: одна для управления питанием а вторая для передачи.
Да, или подать питание на передатчик с нежатой (не замкнутой) кнопкой управления каналом.
Кнопка стоит на замыкание на минус, как на схеме, для любого из каналов:
Добрый день! Столкнулся с такой проблемой: режим приемника С2, С5 работает, а режим С4 (кнопка) — нет! С первым сигналом по данному каналу возникает высокий уровень и пропадает только сбросом питания. Перепробывал 5 модулей, везде одно и тоже! Кто сталкивался, подскажите, пожалуйста, в чем дело?
Разобрался! Нельзя упрощать! Нельзя совмещать кнопку выбора канала с выключателем общего питания.
При попытке установки c4 / c5 режимов рестартует и возвращается в А0, при попытке установки любого другого режима рестартует и отрабатывает нормально. Проверил все чипы — одно и тоже поведение. Подозреваю питания не хватает, но может еще что посоветуете?
У многих почему-то такая проблема возникает, возможно, новые партии кривые.
Закажу, проверю, но будет это не скоро.
Проверил на новых – работает
Запитайте от отдельного надежного источника, питание от самого преобразователя была не лучшая идея(
Поймал у себя такое. Нужно выставить режим C3 и тогда режим C4 заработает, но C5 так и не заработал нормально.
Прошивка кривая(
Еще раз такое было на одном из модулей, не выбирался ни C1 ни C4, оставался A0. Выставил C2, он выбрался, далее успешно установил C4.
Решил на литиевый аку 3,7в 80Mah вот такой преобразователь ставить.
https://de.aliexpress.com/item/33051755361.html?sp...
Этот жрет многовато, но падение напряжение маленькое может быть, так что для одной банки Li-ion/Li-Po подойдет.
Для несколько последовательно подключенных уже не прокатит из-за входного напряжения до 5В, тогда возьмете самый простой AMS1117.
Ток покоя 5мка, тут же в режиме передатчика он так много ест? 1.5мА постоянно? Или только при нажатии? Странно, что он не умеет спать, когда на выводах ничего ен меняется (
Вобщем померил сам. В итоге модуль в режиме C1 ест 0.007mA, это хорошо, но при нажатии кнопки поднимает до 3mA, и пока не отпустишь — так и жрёт, т.е. с нажатой кнопкой спать он не может (
Покопал ещё, при нажатии на кнопку передатчика в UART приёмника передаётся код, типа такого: [03]Є[02][01][03]Є[02][01] при отпускании[03]Є[02][00][03]Є[02][00]. Посылка с повтором, последний байт — состояние входа, предпоследний — номер ввода передатчика. Перед ним не знаю что, код 0xAA и 0x03, DVID у меня 1, так что видимо не его он передаёт, будет время ещё помучаю, наверное.
При подаче питания на модуль с замкнутой кнопкой передаёт её код.
Но тк у меня попался тот самый странный образец, в режим C4 он входит, но не выводах ничего нет, получать можно только по uart.
Здравия тебе, автор. Жду из поднебесной свои модули. Интересует такой вопрос: режим пульта, будет ли работать 1 приёмник с 2мя передатчиками (3 «кнопки» от одного передатчика и 3 (на других входах) от другого. одновременно одни и те же «кноки» на разных передатчиках не нажмуться физически)? Или надо 2 приёмника на разных каналах (RFC)?
Привет! Нет информации, сколько нужно времени на пробуждение модуля из режима покоя после подачи 0 на CS? Т.е. через сколько мс можно начинать передачу. Режим А0.
Скорее всего не найдёте, проснуться он может быстро, а вот сколько займёт установление связи это вопрос. Остаётся только самому выяснить, как и большинство мелочей в китайских поделках.
Почему-то режим C5 работает как C3. Вместо того, чтобы переключать, просто мигает.
Я поставил BAUD 1 и заработало. пробуй...
Удивительно, но это сработало! Софт кривой, похоже...
Добрый день! Есть проблема с программированием модуля. Подключаю его через USB-TTL к компу по первой схеме (Vcc модуля к 3v3 конвертера) — и посылаю команды в терминале Yat, ответы приходят. Когда подключаю модуль в качестве передатчика — ответы не приходят. Но конвертер у меня без пина Vcc, либо 3v3 либо 5v. Я подключаю к 3v3 пину. В чем может быть дело?