ARDUINO+RS485 данные от двух устрйств (SoftwareSerial)

Подключаю к arduino nano два RS485(TTL to RS485), с помощью библиотеки SoftwareSerial считываю данные. Мне необходимо получать данные от двух устройств, но код работает только тогда, когда присутствует либо RS485, либо RS485_2 (по очереди коментировал блоки кода: начиная с *.listen()). Данные приходят только с одного устройства.

Ожидаемый результат, например:
11:01 - Устройство 1: Какие-то данные.
11:02 - Устройство 2: Какие-то данные.
11:03 - Устройство 1: Какие-то данные.
11:04 - Устройство 2: Какие-то данные.

#include <ArduinoSTL.h>
#include <SoftwareSerial.h>

SoftwareSerial RS485(10, 11); // RX, TX
SoftwareSerial RS485_2(0, 1); // RX, TX

#include <ArduinoJson.h>

#define SerialTxControl 2
#define SerialTxControl2 7

#define RS485Transmit HIGH
#define RS485Receive LOW

char buffer[100];
byte state = 0;

char *dev[12];

StaticJsonDocument<200> doc;

void setup(void)
{
  RS485.begin(9600);
  RS485_2.begin(9600);
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(SerialTxControl, OUTPUT);
  pinMode(SerialTxControl2, OUTPUT);

  digitalWrite(SerialTxControl, RS485Receive);
  digitalWrite(SerialTxControl2, RS485Receive);

  while (!Serial)
    continue;
}

void loop(void)
{
  RS485.listen();

  if (RS485.isListening()) {
    if (RS485.available())
    {
      if (RS485.available())
      {
        String response = RS485.readString();
        DeserializationError error = deserializeJson(doc, response);

        if (error)
        {
          Serial.print(F("deserializeJson() failed: "));
          Serial.println(error.c_str());
          return;
        }

        const char *device = doc["device"];
        String temperature = doc["temperature"];
        int is_locked = doc["is_locked"];

        Serial.print("Device: " + String(device) + " | ");
        Serial.print("Temperature: " + temperature + " | ");
        Serial.print("Is locked: " + String(is_locked) + " | ");
        Serial.println();
      }
    }
  }

  RS485_2.listen();
  if (RS485_2.available())
  {
    if (RS485_2.available())
    {
      String response = RS485_2.readString();
      DeserializationError error = deserializeJson(doc, response);

      if (error)
      {
        Serial.print(F("deserializeJson() failed: "));
        Serial.println(error.c_str());
        return;
      }

      const char *device = doc["device"];
      String temperature = doc["temperature"];
      int is_locked = doc["is_locked"];

      Serial.print("Device: " + String(device) + " | ");
      Serial.print("Temperature: " + temperature + " | ");
      Serial.print("Is locked: " + String(is_locked) + " | ");
      Serial.println();
    }
  }

  delay(1000);
}

Ответы (0 шт):