ESP8266

Тема в разделе "Arduino & Shields", создана пользователем Кириллstrelok, 8 апр 2017.

  1. Здравствуйте, подключил esp8266 v7 к arduino. Пытаюсь реализовать отправку GET запроса на сайт. Но после выполнения кода, результат не получаю. Вот мой код:
    Код (C++):
    #include <SoftwareSerial.h>
    SoftwareSerial wifiSerial(2, 3); // RX, TX

    void setup() {
      wifiSerial.begin(115200);
      wifiSerial.setTimeout(5000);
      Serial.begin(9600);
     
      boolean connected = false;//подключение к сети
      for(int i=0; i<5; i++) {
        if(connectWiFi()) {
          connected = true;
          break;
        }
      }
      while (!connected);
      delay(5000);

      //устанавливаем режим соединения SINGLE
      wifiCmd("AT+CIPMUX=0", 1000, "OK");
    }
    void loop() {
      wifiRqst();
      while(1) {
        wifiSerial.listen();
        if(wifiSerial.available()){
          Serial.print((char)wifiSerial.read());
        }
       
        if(Serial.available()){
          wifiSerial.print((char)Serial.read());
        }
      }
    }

    boolean connectWiFi() {
      wifiCmd("AT+CWMODE=1",1000,"OK");
      wifiCmd("AT+CWJAP=\"DIR-615\",\"6Zg73Qlm46@ng01W@x\"",2000,"OK");
      return true;
    }

    boolean  wifiCmd(char cmd[], int timeout, char answer[]) {
      Serial.print(cmd);
      Serial.println();
      wifiSerial.print(cmd);
      wifiSerial.println();
      delay(timeout);
      if(wifiSerial.find(answer)) {
        Serial.println(answer);
        return true;
      } else {
        Serial.print("errCmd:|");
        Serial.print(answer);
        Serial.println("|");
        return false;
      }
    }

    boolean  wifiRqst() {
      wifiCmd("AT+CIPSTART=\"TCP\",\"economics.zzz.com.ua\",80",1000,"OK");
      if(wifiSerial.find("Error"))
        return false;
      Serial.print("AT+CIPSEND=");
      Serial.println("81");
      wifiSerial.print("AT+CIPSEND=");
      wifiSerial.println("81");
      delay(1000);
      if(wifiSerial.find(">")) {
        Serial.print(">");
      } else {
        wifiSerial.println("AT+CIPCLOSE");
        delay(1000);
        return false;
      }
      wifiSerial.println("GET /termometr.php?t=20.8 HTTP/1.1");
      wifiSerial.println("Host:economics.zzz.com.ua");
      wifiSerial.println("Connection: close");
      delay(1000);
      //wifiSerial.find("+IPD");
      while (wifiSerial.available()) {
        /*char c = wifiSerial.read();
        Serial.write(c);*/

        Serial.write(wifiSerial.read());
      }
      return true;
    }
     
    На все команды отвечает OK. Но при этом запрос не отправляется. Ооочень рассчитываю на Вашу помощь!
     
  2. zealot01

    zealot01 Нерд

    На первый взгляд, в конце HTTP запроса должен быть двойной \r\n, а у вас, вроде, один.
     
  3. Спасибо за ответ, уже разобрался!