Arduino: использование Serial и Software Serial с модулем Bluetooth

Моя цель - использовать Arduino для настройки связи между ПК и устройством Android с помощью модуля Bluetooth HC-05.

Я использую USB-соединение между ПК и Arduino (Serial Monitor) и SoftwareSerial для подключения к HC-05.

Моя проблема в том, что связь между BT и ПК работает хорошо, но не работает, как ожидалось, в другом случае. При отправке с ПК на BT все отправленные символы принимаются устройством BT только тогда, когда я закрываю Serial Monitor на ПК или сбрасываю Arduino.

Я исключил проблему с BT Module или приложением Android, потому что если в Arduino я реализую код «ECHO» (запись в Android и отправка в Android), то все работает нормально.

С кодом Arduino, размещенным ниже, ожидаемое поведение: сброс Arduino -> Привет, слово отправлено, Serial monitor открыт -> ничего не происходит, символ, написанный на последовательном мониторе -> символ, полученный на BT, символ, написанный на BT-> символ, полученный на Serial Monitor , Последовательный монитор закрыт -> ничего не происходит.

Реальное поведение таково: сброс Arduino-> Hello word отправлено, Serial monitor Открыт-> 2 Hello Word на BT и 1 ("спокойной ночи") на ПК, символ написан на последовательном мониторе-> ничего, символ написан на BT-> получен символ на последовательном мониторе последовательный монитор закрыт-> предыдущие записанные символы в последовательном мониторе получены + Hello Word.

Как я могу решить эту проблему?

Код:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int a=0;
char c;
char d;
void setup() {
  Serial.begin(9600);
  Serial.println("Goodnight moon!");
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}
void loop() {
  delay(10);
  if (Serial.available()) {
    c=Serial.read();
    delay(10);
    Serial.write(c);
  }
  delay(10);
  if (mySerial.available()) {
    d=mySerial.read();
    delay(10);
    mySerial.write(d);

  }
}

Ответы на вопрос(6)

Ваш ответ на вопрос