Проблемы Arduino nano и Bluetooth JDY-31

Доброе утро, день или вечер.
Суть проблемы следующая:

  • модуль Bluetooth JDY-31 не хочет работать в паре с Arduino nano, кстати пробовал на Mega 2560 и тоже не заработал JDY-31.

А теперь описание.

Программа в Arduino стандартная Serial (). 100% правильная, взята из учебников. Задача получить данные через JDY-31 и вернуть обратно то что получили. Долго мучился, не заработала процедура. После начинаем искать корень проблем. С чем работал - модуль USB>UART, Arduino nano, Bluetooth JDY-31 и телефон с приложением терминал.

Итак что выяснил:

  • связка ноутбук с приложением терминал + USB>UART + Bluetooth JDY-31 + телефон с приложением терминал. Работает всё отлично при питании как от 3,3В так и от 5В.
  • связка ноутбук с приложением терминал + USB>UART + Arduino nano. Работает всё отлично при питании как от 3,3В так и от 5В.
  • связка Arduino nano + Bluetooth JDY-31 + телефон с приложением терминал. Не работает как при питании от 3,3В так и от 5В.
    После психанул и решил запилить программный Serial (). И о чудо, работает связка Arduino nano + Bluetooth JDY-31 + телефон с приложением терминал. Т.е. проблема с тем что сигнал куда-то теряется, изучив схему и выпаяв 2 резистора по 1К от встроенного USB>UART аппаратный Serial () заработал и что интересно как от 3,3В так и от 5В.

Может кто знает в чём причина и сможет подсказать? Не охота гемороиться с программным Serial () или с программированием через ICSP. Конечно можно поставить согласование уровней UART, но не должно так сложно быть.

Вообще-то без схемы и скетча здесь отвечать не принято, т.к. скорее всего, ответ получится “не в кассу”.
Отмечу лишь, что аппаратный Serial используется для связи с компьютером - как для прошивки, так и для отладки через терминал.

Запаял резисторы 4,7к вместо 1к на TX и RX. Прошивается нормально, Bluetooth JDY-31 так-же работает отлично.
Не хотелось лесть с паяльником, думал плата отработана и ошибок нет и косяк был у меня где-то в настройках регистров.

Со схемой совсем просто.
Два устройства. 1 Arduino nano. 2 Bluetooth JDY-31. Питание JDY-31 от nano. От RX nano до TX JDY-31. От TX nano до RX JDY-31.
С кодом ещё проще.
Код:

void setup() {
  Serial.begin(9600);
  Serial.setTimeout(100);
}
void loop() {
  if (Serial.available()) {
    Serial.write(Serial.read());
  }
}

а если на модуле соединить перемычкой RX-TX работает?

Отлично работает. И АТ команды выполняет.

В общем принцип проблемы выяснил. Один приёмник и два передатчика UART (встроенный ch340 и подключённый JDY-3), принцип один ко многим. Так работать не будет, должно быть один к одному. Я почему-то был уверен что ch340 работает только во время отладки и прошивки, но я сильно ошибся - работает постоянно. И тем самым вроде у нас и есть UART но на самом деле его нет.
Резисторы 4,7к конечно спасли и значительно снизили влияние ch340 при подключённом JDY-3 и позволили ему нормально работать, но стоит помнить что для прошивки нужно физически отключать модуль UART.

P.S.Странно как-то, это если сказать что руль в машине нужен только при заезде и выезде с парковки.

При неправильном выборе контроллера еще и не такое бывает.
Никто же не заставлял Вас использовать именно Atmega328. Да еще и в варианте Arduino Nano.

jdy-31 хороший модуль, нет с ним никаких проблем, хорош для воздушной прошивки ардуин.

CH-340 можно и отцепить, там через резисторы 1 ком на ардуино подаётся, но лучше использовать 328PB - там два Serial

выяснили, но не поняли.
Источник проблемы в том, что Сериал у Нано один, а вы пытаетесь подключить к нему два устройства

Как раз таки и поменял на 4,7к. Что дало возможность использовать Bluetooth JDY-31 на аппаратном UART. При необходимости прошивки отключать Bluetooth JDY-31.