arduino+esp8026上传数据到yeeklink(上传不了)

最近在做arduino+esp8026,想把超声波测得的距离上传到yeelink上面,但总是上传不了,所以让大家帮我看看。

下面是我的设备api



arduino+esp8026上传数据到yeeklink(上传不了)_第1张图片


代码如下:

// 设定SR04连接的Arduino引脚
const int TrigPin1 = 4;
const int EchoPin1 = 5;
unsigned long distance,distance1;
char open='0';
void setup()
{  
  Serial.begin(115200);
  pinMode(TrigPin1, OUTPUT);
  // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态
  pinMode(EchoPin1, INPUT);
  Serial.println("Ultrasonic sensor:");
}
void loop()
{
    // 产生一个10us的高脉冲去触发TrigPin
    digitalWrite(TrigPin1, LOW);
    delayMicroseconds(2);
    digitalWrite(TrigPin1, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin1, LOW);
    // 检测脉冲宽度,并计算出距离
    distance1 = pulseIn(EchoPin1, HIGH) / 58.00;
    Serial.print("length:");
    Serial.println(distance1);
    Serial.println("POST /v1.1/device/358319/sensor/407515/datapoints HTTP/1.1"); 
    Serial.println("Host: api.yeelink.net");
    Serial.print("Accept: *");
    Serial.print("/"); 
    Serial.println("*"); 
    Serial.print("U-ApiKey: "); 
    Serial.println("e913eda05c973e8132b2c512113227ed");   // 此处用你的APIKEY替代
    Serial.print("Content-Length: "); 
    int thisLength = 10 + getLength(distance1);
    Serial.println(thisLength);   
    Serial.println("Content-Type: application/x-www-form-urlencoded");
    Serial.println("Connection: close"); 
    Serial.println(); 
    Serial.print("{\"value\":");
    Serial.print(distance1); 
    Serial.println("}");
    delay(10001);
}
int getLength(int someValue) {
   int digits = 1;
   int dividend = someValue /10;
  while (dividend > 0) {
    dividend = dividend /10;
    digits++;
  }
  return digits;
}


代码烧入arduino后,串口出现以下内容:

arduino+esp8026上传数据到yeeklink(上传不了)_第2张图片

但是数据线一点波动都没有

arduino+esp8026上传数据到yeeklink(上传不了)_第3张图片

我怀疑是不是WiFi没配好,所以试了下在yeelink平台上控制LED开关的实验,结果发现没有问题。搞了好久还是没能解决,希望有人能指导一下。


问题已经解决了:改变ESP的连接方式
方法一:原来我连的是手机的WIFI,之后改成连接电脑的wifi,并且添加代码
//-------------------------------------------
  delay(6000);                          //注意延时的时间
  Serial.println("");
  Serial.println("AT+CIPMODE=1");       //打开透传模式
  delay(1000);                         //注意延时的时间 
  Serial.println("AT+CIPSTART=\"TCP\",\"118.190.25.51\",80");
                           //yeelink   118.190.25.51 : 80
  delay(1000);
  Serial.println("AT+CIPSEND");     
  delay(3000);
//------------------------------------------------   
就可以了
方法二:直接连接路由


虽说是解决了,但不清楚原因是什么

你可能感兴趣的:(arduino+esp8026上传数据到yeeklink(上传不了))