您的位置:首页 > 产品设计 > UI/UE

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

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

下面是我的设备api





代码如下:

// 设定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后,串口出现以下内容:



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



我怀疑是不是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 wifi yeelink