Как подключить 2 модуля по программному UART на Arduino nano?

Объясни в какой сериал ты посылаешь команды в строках 20-22?
Почему строка 97 стоит после того как уже пообщался с модемом?

1 лайк

20-22 активирует gprs.
sendATCommand это функция для отправки at команд.

Вроде явных ошибок нет. (в части переключения serial)
Наверное что то скетч выводит в монитор порта?

Ещё раз. В какой сериал (у тебя их три) отправляются команды?

Присоединюсь к выше написанному совету “выбирай контроллер под задачу”
Я тоже недавно долго бился со связью ESP-01 и Ардуино Нано по софту. Была куча странных проблем. И это только с одним SoftwareSerial. Большая часть решилась выбором других библиотек.
Но второе устройство я собрал на ESP-32. Да, у меня есть кучка Нанок и Esp-01, но нервы дороже.

Всем спасибо, кто участвовал в данном вопросе. Скетч с применением listen() удалось запустить.
В функцию sendATCommand добавил переменную String answer, куда записывал ответы от модема, а потом через переменную выводил в монитор порт и о чудо - заработало.
По правде не совсем понял, почему его не устроило прямой вывод ответа на монитор порт…
Вот обновленная функция:

String sendATCommand(String cmd) {

  String answer;
  
  if (!sim.isListening()) {
    Serial.println("--- Listen 'Sim' ---");
    sim.listen();
  }
  
  sim.println(cmd);

  while (!sim.available()) {};
  
  if (sim.available()) {
    answer = sim.readString();
  }

  Serial.println(answer);
}

Кажется все же дело было в return в конце sendATCommand. Без return зависает. Т.е. вот рабочая функция:

String sendATCommand(String cmd) {

  String answer;
  
  if (!sim.isListening()) {
    Serial.println("--- Listen 'Sim' ---");
    sim.listen();
  }
  
  sim.println(cmd);

  while (!sim.available()) {};
  
  if (sim.available()) {
    answer = sim.readString();
  }

  Serial.println(answer);

  return answer;
}