Arduino-ESP8266 GET 请求虽然 ThingHTTP 没有显示在串行监视器上

问题描述

我是 Arduino 编码的新手。我正在尝试使用 ESP8266 和 thingspeak.com (ThingHTTP) 从网站获取天气状况。我已经编写了 Arduino 代码来将 AT 命令发送到 ESP8266 并在串行监视器上显示其响应。这是我的代码。

#include <SoftwareSerial.h>

#define ESP8266_rxPin 2
#define ESP8266_txPin 3

// URL
const char URL_current_temp= "GET https://api.thingspeak.com/apps/thinghttp/send_request?api_key=A6QD2DQTCSIMUETK HTTP/1.0\r\n\r\n";

SoftwareSerial ESP8266(ESP8266_rxPin,ESP8266_txPin);// rx tx

char espBuffer[1024] = {0};
int readCount = 0;
long startTime = millis();

void setup() {
  //Pin Modes for ESP TX/RX
  pinMode(ESP8266_rxPin,INPUT);
  pinMode(ESP8266_txPin,OUTPUT);
  ESP8266.begin(9600);
  ESP8266.listen();//not needed unless using other software serial instances
  Serial.begin(9600);
  delay(5000);//delay before kicking things off
  
  //Setup ESP8266

  //AT
  Serial.println("Sending an AT command...");
  ESP8266.print("AT\r\n");
  delay(3000);
  while (ESP8266.available()){
  String inData1 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData1);
  }
  //AT+RST
  Serial.println("");
  Serial.println("Reseting ESP8266...");
  ESP8266.print("AT+RST\r\n");
  delay(8000);
  while (ESP8266.available()){
  String inData2 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData2);
  }
  //AT+CWMODE
  Serial.println("");
  Serial.println("Setting CWMODE...");
  ESP8266.print("AT+CWMODE=1\r\n");
  delay(3000);
  while (ESP8266.available()){
  String inData3 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData3);
  }
  //AT+CWJAP
  Serial.println("");
  Serial.println("Connecting to WiFi...");
  ESP8266.print("AT+CWJAP=\"ARTEM\",\"ARTEM123\"\r\n");
  delay(8000);
  while (ESP8266.available()){
  String inData4 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData4);
  }
  //AT+CIPMUX
  Serial.println("");
  Serial.println("Setting CIPMUX...");
  ESP8266.print("AT+CIPMUX=1\r\n");
  delay(3000);
  while (ESP8266.available()){
  String inData5 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData5);
  }
  
}//void setup()

void loop() {
  //Connecting to thingspeak
  Serial.println("");
  Serial.println("Connecting to host...");
  ESP8266.print("AT+CIPSTART=0,\"TCP\",\"api.thingspeak.com\",80\r\n");
delay(6000);
  while (ESP8266.available()){
  String inData6 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData6);
  }

  //AT+CIPSEND
  Serial.println("");
  Serial.println("Setting message length...");
  ESP8266.print("AT+CIPSEND=0,100\r\n");
delay(4000);
  while (ESP8266.available()){
  String inData7 = ESP8266.readStringUntil('\n');
  Serial.println("Got reponse from ESP8266: " + inData7);
  }
  
  //Sending request
  Serial.println("");
  Serial.println("Sending request...");
  ESP8266.print("GET https://api.thingspeak.com/apps/thinghttp/send_request?api_key=A6QD2DQTCSIMUETK HTTP/1.0\r\n\r\n");

  while (millis() - startTime < 8000) { // Run for at least 8 seconds 
  // Check to make sure we don't exceed espBuffer's boundaries
  if (ESP8266.available() > readCount + sizeof espBuffer - 1) 
    break;
  readCount += ESP8266.readBytes(espBuffer + readCount,ESP8266.available());
}

Serial.println(espBuffer); 

delay(15000); 
}//void loop()

当我尝试直接通过 ESP8266(绕过 Arduino)获取天气数据时,我在串行监视器上得到了所需的响应,但是当我使用 Arduino 发送命令时,除了 GET 请求之外,我从 ESP8266 收到了来自 ESP8266 的所有响应。这是我的串行监视器响应。有人可以帮我弄清楚出了什么问题吗? Arduino Serial monitor response from ESP8266

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...