最近在做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);
//------------------------------------------------
就可以了
方法二:直接连接路由
虽说是解决了,但不清楚原因是什么