Arduino Uno + ESP8266 читает ответ сервера

Я отправляю запрос GET от Arduino Uno, используя ESP8266. Запрос отправлен, но я не могу распечатать полученный ответ.

Я использую код из https://elementztechblog.wordpress.com/2015/05/13/esp8266-based-temperature-data-logger-using-arduino/

Я изменил код для подключения к моему серверу, и я вижу, что запрос GET получен в журнале моего сервера.

я пытался поставить

 while (ser.available())
 {
     Serial.write(ser.read());
 }

после оператора Serial.println("AT+CIPCLOSE");.

НО я ничего не получаю на последовательном мониторе после "AT+CIPCLOSE"

EDIT: Вот весь мой код:

// connect 10 to TX of Serial USB
// connect 11 to RX of serial USB
SoftwareSerial ser(10, 11); // TX, RX

// this runs once
void setup()
{

    // enable debug serial
    Serial.begin(9600);
    // enable software serial
    ser.begin(9600);

    // reset ESP8266
    ser.println("AT+RST");
}
// the loop
void loop()
{

    // TCP connection
    String cmd = "AT+CIPSTART=\"TCP\",\"";
    cmd += "192.168.0.25"; 
    cmd += "\",3000";
    ser.println(cmd);

    if(ser.find("Error"))
    {
        Serial.println("AT+CIPSTART error");
        return;
    }

    // prepare GET string
    String getStr = "GET /api/myservice";

    getStr += "\r\n\r\n";

    // send data length
    cmd = "AT+CIPSEND=";
    cmd += String(getStr.length());
    ser.println(cmd);

    if(ser.find(">")){
    ser.print(getStr);
}
else
{ 
    ser.println("AT+CIPCLOSE");
    // alert user
    Serial.println("AT+CIPCLOSE");

    // CODE I FOUND FOR READING THE REPLY FROM SERVER:
    while (ser.available())
    {
         // char c = ser.read();
         Serial.write(ser.read());
         // if (c == '\r') Serial.print('\n');
    }
}

delay(1000);
}

Подробности ESP:

ЭСП-01

АТ-версия: 0.40.0.0

введите здесь описание изображения


person Dushyant Bangal    schedule 29.01.2016    source источник
comment
Я не могу помочь вам с вашим точным вопросом (потратил много часов, пытаясь подключить ESP8266 к моему arduino Nano, но безуспешно), но вы могли бы рассмотреть возможность использования автономного модуля ESP, это не только модуль Wi-Fi, но и микропроцессор. Вы даже можете запрограммировать его с помощью Arduino IDE. Посмотрите здесь: arduinesp.com/wifiwebserver   -  person ErikL    schedule 29.01.2016
comment
Пожалуйста, включите свой код, чтобы мы могли увидеть, что вы уже пробовали.   -  person Blurry Sterk    schedule 29.01.2016
comment
@ErikL - Не по теме: вы все еще хотите использовать ESP8266? В настоящее время работаю с ним без проблем.   -  person Blurry Sterk    schedule 31.01.2016
comment
@blurry, мне все еще интересно. Автономная работа с ESP8266 — это здорово, но мне не хватает нескольких аналоговых входов.   -  person ErikL    schedule 01.02.2016
comment
@BlurrySterk, я добавил код, пожалуйста, взгляните на него. Когда я пытаюсь прочитать ответ, он печатает AT+CIPSEND=‹LENGTH› ERROR   -  person Dushyant Bangal    schedule 01.02.2016
comment
@ErikL - я не хочу начинать обсуждение чужого поста, так почему бы вам не опубликовать вопрос, объясняющий, с чем вы боретесь. Попробуйте добавить некоторый код, чтобы сделать этот вопрос более законным, чтобы никто не захотел попытаться закрыть его и, возможно, добавить изображение ESP8266, с которым вы боретесь, и я постараюсь помочь вам и, возможно, объяснить подключение, которое вы делаете к ESP8266. Кроме того, ответьте здесь, если вы собираетесь это сделать, чтобы я знал.   -  person Blurry Sterk    schedule 01.02.2016
comment
@Dushyant - я проверю.   -  person Blurry Sterk    schedule 01.02.2016
comment
@Dushyant - Прежде всего, мне нужно, чтобы вы сказали нам, какую версию прошивки вы используете. Также, если можете, включите в вопрос изображение вашего ESP8266.   -  person Blurry Sterk    schedule 01.02.2016
comment
@BlurrySterk, обновил вопрос с подробностями ESP.   -  person Dushyant Bangal    schedule 01.02.2016
comment
@Dushyant - у меня есть, похоже, тот же модуль.   -  person Blurry Sterk    schedule 01.02.2016
comment
Мне удалось отправить данные на сервер с помощью GET и POST. Но я не могу прочитать ответ.   -  person Dushyant Bangal    schedule 01.02.2016
comment
Так ваша рассылка работает?   -  person Blurry Sterk    schedule 01.02.2016
comment
Давайте продолжим обсуждение в чате.   -  person Dushyant Bangal    schedule 01.02.2016


Ответы (1)


Если вы только пытаетесь прочитать ответ, то ответ прост;

Вы закрываете TCP-соединение, прежде чем пытаться прочитать:

ser.println("AT+CIPCLOSE");
// alert user
Serial.println("AT+CIPCLOSE");

// CODE I FOUND FOR READING THE REPLY FROM SERVER:
while (ser.available())
{

Переместите показания while в указанный выше блок сразу под ser.print(getStr);, но также добавьте задержку между ними.

person Blurry Sterk    schedule 01.02.2016