Web-сервер на esp8266. Ошибка ответа

Тема в разделе "ESP8266, ESP32", создана пользователем KoKaiN, 22 апр 2019.

  1. KoKaiN

    KoKaiN Нерд

    Добрый день! Помогите диагностировать ошибку.
    Хардверная часть - Arduino Uno + WiFi ESP8266 на тройка модуле (http://wiki.amperka.ru/продукты:troyka-wi-fi)
    Модуль подключен через SoftwareSerial на 4 и 5 пины.
    Софтверная часть
    АТ командами модуль настроен на подключение к роутеру, Выставлены одинаковые скорости на 9600.
    Далее в скетче (коих сотни в интернете) поднимается сервер, который ждет запросы на 80 порт.
    Код (C++):
    #define DEBUG true
    #include <SoftwareSerial.h>

    SoftwareSerial mySerial(4, 5);

    void setup()
    {
      Serial.begin(9600);
      mySerial.begin(9600);
      sendData("AT+RST\r\n", 2000, DEBUG);
      Serial.println("set mode 1");
      sendData("AT+CWMODE=1\r\n", 5000, DEBUG);
      Serial.println("Testing CIFSR");
      sendData("AT+CIFSR\r\n", 7000, DEBUG);
      Serial.println("setting for multiple connection");
      sendData("AT+CIPMUX=1\r\n", 2000, DEBUG);
      Serial.println("print MAC address");
      sendData("AT+CIPSTAMAC?\r\n", 2000, DEBUG);
      Serial.println("set port 80 for server");
      sendData("AT+CIPSERVER=1,80\r\n", 2000, DEBUG);
      Serial.println("ending setup");
    }

    void loop()
    {
      if (mySerial.available())
      {
        if (mySerial.find("+IPD,"))
        {
          delay(4000);
          sendData("<!DOCTYPE html> <html> <head></head><body>Hello!!!</body></html>\r\n", 3000, DEBUG);
          int connectionId = mySerial.read() - 48;
          String closeCommand = "AT+CIPCLOSE=";
          closeCommand += connectionId;
          closeCommand += "\r\n";
          sendData(closeCommand, 3000, DEBUG);
        }
      }
    }


    void sendData(String command, const int timeout, boolean debug)
    {
      String response = "";
      mySerial.print(command);
      long int time = millis();
      while ( (time + timeout) > millis())
      {
        while (mySerial.available())
        {
          char c = mySerial.read();
          response += c;
        }
      }

      if (debug)
      {
        Serial.print(response);
      }
    }
    Кусок лога из монитора порта на этап инициализации:
    Код (Text):
    AT+RST
    OK
    WIFI DISCONNECT
    Ai-Thinker Technology Co. Ltd.
    ready
    set mode 1
    AT+CWMODE=1
    OK
    WIFI DISCONNECT
    WIFI CONNECTED
    WIFI GOT IP
    Testing CIFSR
    AT+CIFSR
    +CIFSR:STAIP,"10.0.0.101"
    +CIFSR:STAMAC,"84:f3:eb:be:61:b7"
    OK
    setting for multiple connection
    AT+CIPMUX=1
    OK
    print MAC address
    AT+CIPSTAMAC?
    +CIPSTAMAC:"84:f3:eb:be:61:b7"
    OK
    set port 80 for server
    AT+CIPSERVER=1,80
    OK
    ending setup
     
    При обращении по IP с мобильного (подключенного к тому же роутеру) в мониторе порта видно что приходит запрос, идет попытка отдать ответ, с выкидыванием в ERROR. Как диагностировать ошибку?
    Код (Text):

    0,365:GET / HTTP/1.1
    Host: 10.0.0.101
    Upgrade-Insecure-Reques<!DOCTYPE html> <html> <head></head><body>Hello!!!</body></html>
    ERROR
    AT+CIPCLOSE=-49
    UNLINK
    ERROR
    Если обращаюсь из Хрома под Виндой, то в лог идет такая строка:
    Код (Text):
    0,432:GET / HTTP/1.1
    Host: 10.0.0.101
    Connection: keep-alive
    <!DOCTYPE html> <html> <head></head><body>Hello!!!</body></html>
    ERROR
    AT+CIPCLOSE=-49
    UNLINK
     
     
    Последнее редактирование: 22 апр 2019