问题描述
我是 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 (将#修改为@)