我使用此代码并尝试连接我的esp8266,以便将温度上传到thingspeak.com
#include <SoftwareSerial.h>
#include <stdlib.h>
// LED
int ledPin = 13;
// LM35 analog input
int lm35Pin = A0;
// replace with your channel's thingspeak API key
String apiKey = "xxxxxx";
// connect 10 to TX of Serial USB
// connect 11 to RX of serial USB
SoftwareSerial ser(10, 11); // RX, TX
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
ser.begin(115200);
ser.println("AT+RST");
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
int val = 0;
for(int i = 0; i < 10; i++) {
val += analogRead(lm35Pin);
delay(500);
}
float temp = val*50.0f/1023.0f;
char buf[16];
String strTemp = dtostrf(temp, 4, 1, buf);
Serial.println(strTemp);
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += "184.106.153.149"; // api.thingspeak.com
cmd += "\",80";
ser.println(cmd);
if(ser.find("Error")){
Serial.println("AT+CIPSTART error");
return;
}
String getStr = "GET /update?api_key=";
getStr += apiKey;
getStr +="&field1=";
getStr += String(strTemp);
getStr += "\r\n\r\n";
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
ser.println(cmd);
if(ser.find(">")){
ser.print(getStr);
}
else{
ser.println("AT+CIPCLOSE");
Serial.println("AT+CIPCLOSE");
}
delay(16000);
}
运行代码时,我在串口监视器中得到它:
21
AT+CIPCLOSE
21
AT+CIPCLOSE
21
AT+CIPCLOSE
21将是温度
答案 0 :(得分:0)
在我使用的固件版本上,AT + CIPSTART上的故障返回是&#34; ERROR&#34;而不是&#34;错误&#34;这可能就是你从未发现连接失败的原因。通过连接到ESP8266的串行终端尝试以上操作,并检查返回值。
此外,您需要学会远离AVR编程中的字符串。而是使用char数组。