Serial "Arduino-ESP-Arduino"

Doc
Offline
Зарегистрирован: 01.10.2016

Добрый вечер уважаеммые ардуинщики. Возникла необходимостьв  обмене информацией между Arduino UNO и ESP8266 по UART.  Начал пробоватьс  малого, отправляя текст с ESP8266 на ардуинку и там его выводя через HardwareSerial в IDE. Все прекрасно работало. Но когда усложнил задачу: теперь нужно отправлятьс  ардуинку на ESP там читать запрос и отправлять ответ назад. Возникла проблемка. Ломаются сообщения.

Приведу примеры скетчей: Это скетч на Ардуине, он отправляет сообщение и ждет ответа:

#include <SoftwareSerial.h>
String inString;
bool waitResponse = false;
SoftwareSerial esp8266(3, 4);
void setup() {
  Serial.begin(115200);
  esp8266.begin(115200);
  esp8266.flush();
  Serial.flush();
}

void loop() {
  if (!waitResponse) {
    esp8266.println("Hello ESP!");
    esp8266.flush();
    Serial.println("Hello ESP!");
    waitResponse = true;
  }
  delay(2000);
  if (esp8266.available() > 0) {
    waitResponse = false;
    inString = esp8266.readStringUntil('\r\n');
    Serial.println(inString);
  }

}

Это скетч на ESP: 


void setup() {
 Serial.begin(115200);
}

void loop() {
 
  String inString = "";
  if (Serial.available() > 0) {
    inString = Serial.readStringUntil('\r\n');
    delay(2000);
    if (String(inString) == String('Hello ESP!')) {
      Serial.println("Hello Arduino!");
    } else {
      Serial.println("I`m sorry! I don`t uderstand!");
    }
    Serial.flush();
  }

}

Сдесь мы просто читаем и отправляем назад ответ в зависимости от того правильно ли мы прочитаели его. И вот тут начинаются проблемы. Во превых всегда приходит "I`m sorry! I don`t uderstand!", а во вторых, в мониторе порта я вижу:

Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
I`m sorry! I don`v uderstand!
Hello ESP!
I`m sorry  I don`t udfвstand!
 
Hello ESP!
I`l sorry! I don`t uderst`nd!
 
Hello ESP!
I`m soqry! I don`t uderstand!
Hello ESP!
I`m sorry! R"Ѕ№ЃСЃЄ‘•ЙНС…№‘…j
Hello ESP!
I`m sorry! I don`t uderstand 
 
Hello ESP!
 
т.е. "ломается" ответ от ESP и я так понимаю "ломается" запрос от ардуинки, пробовал разные скорости, эффекта нет. Я понимаю что что-то упускаю, в силу того что не так давно работаю с ардуинкой. А что не могу понять.  Если тема уже была, не пинайти сильно, каюсь... 
Doc
Offline
Зарегистрирован: 01.10.2016

Нашел эту темку: http://arduino.ru/forum/programmirovanie/softwareserial-ne-rabotaet-na-115200 

Проблемку c передачей данных решил перевев все на 9600 бод. Однако по прежнему срабатывает ответ только I`m sorry! I don`t uderstand!

I`m sorry! I don`t uderstand!

 
Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
I`m sorry! I don`t uderstand!
 
Hello ESP!
 
Doc
Offline
Зарегистрирован: 01.10.2016

Вот правильный скетч для ESP: 


void setup() {
 Serial.begin(9600);
}

void loop() {
 
  String inString = "";
  if (Serial.available() > 0) {
    inString = Serial.readStringUntil('\r\n');
    inString.trim();
     delay(2000);
    if (inString.equals("Hello ESP!")) {
      Serial.println("Hello Arduino!");
    } else {
      Serial.println("I`m sorry! I don`t uderstand!");
    }
    Serial.flush();
  }
 

}