#include "ESP8266.h"
#include <SPI.h>
#include "SoftwareSerial.h"
#define SSID "" //WiFi名字
#define PASSWORD " "//password of WiFi
#define HOST_NAME "api.heclouds.com"
#define DEVICE_ID "654340613"
#define HOST_PORT (80)
String APIKey = " ";
#define INTERVAL_SENSOR 5000
float cm;
const int TrigPin=5;
const int EchoPin=9;
const int BeePin=6;
SoftwareSerial mySerial(3, 2);// 3-Tx 2-Rx
ESP8266 wifi(mySerial);
void setup()
{
mySerial.begin(115200);
Serial.begin(9600);
pinMode(TrigPin,OUTPUT);
pinMode(EchoPin,INPUT);
pinMode(BeePin,OUTPUT);
Serial.print("setup begin\r\n");
Serial.print("FW Version: ");
Serial.println(wifi.getVersion().c_str());
if (wifi.setOprToStation()) {
Serial.print("to station ok\r\n");
} else {
Serial.print("to station err\r\n");
}
if (wifi.joinAP(SSID, PASSWORD)) {
Serial.print("Join AP success\r\n");
Serial.print("IP: ");
Serial.println(wifi.getLocalIP().c_str());
} else {
Serial.print("Join AP failure\r\n");
}
mySerial.println("AT+UART_CUR=9600,8,1,0,0");
mySerial.begin(9600);
Serial.println("setup end\r\n");
SPI.begin();
}
unsigned long net_time1 = millis();
void loop(){
if (net_time1 > millis())
net_time1 = millis();
if (millis() - net_time1 > INTERVAL_SENSOR)
{
// put your main code here, to run repeatedly:
//产生10微秒的高电平波触发TrigPin
digitalWrite(TrigPin,LOW);
delayMicroseconds(2);
digitalWrite(TrigPin,HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin,LOW);
//检测脉冲宽度并算出距离
cm=pulseIn(EchoPin,HIGH)/58.3;
Serial.print("Distance:");
Serial.println(cm);
if(cm<20)
{
tone(6,392);
delay(80);
}else if(cm<50)
{
tone(6,440);
delay(40);
}else if(cm<100)
{
tone(6,494);
delay(20);
}else
{
noTone(6);
}
if (wifi.createTCP(HOST_NAME, HOST_PORT)) {
Serial.print("create tcp ok\r\n");
String jsonToSend = "{\"distance\":";
jsonToSend += "\"" + String(cm) + "\"";
jsonToSend += "}";
String postString = "POST /devices/";
postString += DEVICE_ID;
postString += "/datapoints?type=3 HTTP/1.1";
postString += "\r\n";
postString += "api-key:";
postString += APIKey;
postString += "\r\n";
postString += "Host:api.heclouds.com\r\n";
postString += "Connection:close\r\n";
postString += "Content-Length:";
postString += jsonToSend.length();
postString += "\r\n";
postString += "\r\n";
postString += jsonToSend;
postString += "\r\n";
postString += "\r\n";
postString += "\r\n";
const char *postArray = postString.c_str();
Serial.println(postArray);
wifi.send((const uint8_t *)postArray, strlen(postArray));
Serial.println("send success");
if (wifi.releaseTCP()) {
Serial.print("release tcp ok\r\n");
} else {
Serial.print("release tcp err\r\n");
}
postArray = NULL;
} else {
Serial.print("create tcp err\r\n");
}
Serial.println("");
net_time1 = millis();
}
}
实现效果: