Доброго времени суток! Такая проблема. Организую обмен данными между Arduino Nano и ESP8266 с использованием Lora E32-TTL-100. Данные из Ардуино в ESP8266-12Е (NodeMCU) идут нормально. Меняю местами приемник и передатчик - ничего не приходит. В чем может быть проблема? Сначала хотел передавать структуры, потом строку. Результат одинаковый. Код передатчика: Код (C++): #include <SoftwareSerial.h> #define pinM0 15 // на пин M0 Lora #define pinM1 13 // на пин M1 Lora #define pinRx 12 // пин Rx(UNO) -> Tx(Lora) #define pinTx 14 // пин Tx(UNO) <- Rx(Lora) #define pinAUX 2 // пин AUX Lora SoftwareSerial LoraUART(pinRx, pinTx); // RX, TX UART к Lora E32 char testStr[] = "123"; byte inConf, inVers; void setup() { // настройка модуля pinMode( pinM0, OUTPUT); // пин управления режимом работы модуля pinMode( pinM1, OUTPUT); // пин управления режимом работы модуля pinMode( pinAUX, INPUT); // контрольный пин AUX c Lora Serial.begin( 9600); LoraUART.begin(9600); // UART Lora 9600 bps digitalWrite(pinM0, HIGH); // перевод в режим sleep для настройки digitalWrite(pinM1, HIGH); // ... Serial.println( "Config: "); while (!digitalRead(pinAUX)); // ожидание готовности Lora LoraUART.write(byte (0xC1)); // запрос параметров LoraUART.write(byte (0xC1)); LoraUART.write(byte (0xC1)); while (!digitalRead( pinAUX)); // ожидание готовности Lora while (LoraUART.available()) { inConf = byte (LoraUART.read()); Serial.print( inConf, HEX); // вывод на экран конфигурации модуля } Serial.println("."); delay (1000); Serial.println("Version number: "); while ( !digitalRead( pinAUX)); // ожидание готовности Lora LoraUART.write(byte (0xC3)); // запрос параметров LoraUART.write(byte (0xC3)); LoraUART.write(byte (0xC3)); while ( !digitalRead( pinAUX)); // ожидание готовности Lora while ( LoraUART.available()) { inVers = byte (LoraUART.read()); Serial.print( inVers, HEX); // вывод на экран конфигурации модуля } Serial.println("."); delay( 2000); } void loop() { digitalWrite(pinM0, LOW); // перевод в режим normal digitalWrite(pinM1, LOW); // .. while (!digitalRead( pinAUX)); // ожидание готовности Lora Serial.println("Lora ready Ok"); Serial.println("Lora send testing string"); LoraUART.print("123"); // отправка тестовой строки digitalWrite( pinM0, HIGH); // перевод в режим сна digitalWrite( pinM1, HIGH); // .. delay(5000); } Код приемника: Код (C++): #include <SoftwareSerial.h> #define pinM0 6 // на пин M0 Lora #define pinM1 5 // на пин M1 Lora #define pinRx 3 // пин Rx(UNO) -> Tx(Lora) #define pinTx 4 // пин Tx(UNO) <- Rx(Lora) #define pinAUX 2 // на пин AUX Lora SoftwareSerial LoraUART(pinRx, pinTx); // RX, TX UART к Lora E32 char testStr[] = "123"; byte inConf, inVers; uint16_t nPacket = 0, // принято пакетов nBroken = 0; // битых пакетов byte i; bool fComplete; void setup() { // настройка модуля pinMode( pinM0, OUTPUT); // пин управления режимом работы модуля pinMode( pinM1, OUTPUT); // пин управления режимом работы модуля pinMode( pinAUX, INPUT); // контрольный пин AUX c Lora Serial.begin( 9600); LoraUART.begin(9600); // UART Lora 9600 bps digitalWrite( pinM0, HIGH); // перевод в режим sleep для настройки digitalWrite( pinM1, HIGH); // ... Serial.println( "Config: "); while (!digitalRead(pinAUX)); // ожидание готовности Lora LoraUART.write(byte (0xC1)); // запрос параметров LoraUART.write(byte (0xC1)); LoraUART.write(byte (0xC1)); while (!digitalRead( pinAUX)); // ожидание готовности Lora while (LoraUART.available()) { inConf = byte (LoraUART.read()); Serial.print( inConf, HEX); // вывод на экран конфигурации модуля } Serial.println("."); delay (1000); Serial.println("Version number: "); while ( !digitalRead( pinAUX)); // ожидание готовности Lora LoraUART.write(byte (0xC3)); // запрос параметров LoraUART.write(byte (0xC3)); LoraUART.write(byte (0xC3)); while ( !digitalRead( pinAUX)); // ожидание готовности Lora while ( LoraUART.available()) { inVers = byte (LoraUART.read()); Serial.print( inVers, HEX); // вывод на экран конфигурации модуля } Serial.println("."); delay( 2000); digitalWrite( pinM0, LOW); // перевод Lora в нормальный режим digitalWrite( pinM1, LOW); } void loop() { fComplete = true; while ( !digitalRead( pinAUX)); // ожидание готовности Lora if ( LoraUART.available()) { nPacket++; Serial.println(); Serial.print("Принято пакетов: "); Serial.println( nPacket); i = 0; } while ( LoraUART.available()) { char inByte = char (LoraUART.read()); Serial.print( inByte); // вывод на экран принятого if ( testStr[i++] != inByte) // проверка целостности пакета fComplete = false; } if ( !fComplete) { // битый пакет nBroken++; Serial.print("Принято сбойных пакетов: "); Serial.println(nBroken); } } Пробовал и физически менять модули местами, чтобы исключить проблему брака "железа", результат такой же - от Ардуино в ESP8266 всё идет нормально, в обратном порядке - ничего не принимается. В чем может быть проблема?