尝试连接到互联网时esp8266问题

时间:2016-01-28 22:13:17

标签: http arduino arduino-uno esp8266

我使用此代码并尝试连接我的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将是温度

1 个答案:

答案 0 :(得分:0)

在我使用的固件版本上,AT + CIPSTART上的故障返回是&#34; ERROR&#34;而不是&#34;错误&#34;这可能就是你从未发现连接失败的原因。通过连接到ESP8266的串行终端尝试以上操作,并检查返回值。

此外,您需要学会远离AVR编程中的字符串。而是使用char数组。