///'//////引入ESP8266.h头文件,建议使用教程中修改后的文件//n#include ///'ESP8266.h///'//n#include ///'dht11.h///'//n#include ///'SoftwareSerial.h///'//n//n//////配置ESP8266WIFI设置//n#define SSID ///'HONOR Play4T///' //////填写2.4GHz的WIFI名称,不要使用校园网//n#define PASSWORD ///'12345678///'//////填写自己的WIFI密码//n#define HOST_NAME ///'api.heclouds.com///' //////API主机名称,连接到OneNET平台,无需修改//n#define DEVICE_ID ///'1099655073///' //////填写自己的OneNet设备ID//n#define HOST_PORT (80) //////API端口,连接到OneNET平台,无需修改//nString APIKey = ///'IiJSs17atNND2C77wumz03w63hw=///' ; //////与设备绑定的APIKey//n//n#define INTERVAL_SENSOR 5000 //////定义传感器采样及发送时间间隔//n//n//////创建dht11示例//n//ndht11 DHT11;//n//n//////定义DHT11接入Arduino的管脚//n#define DHT11PIN 4//n//n//////定义ESP8266所连接的软串口//n///*********************//n * 该实验需要使用软串口//n * Arduino上的软串口RX定义为D3,//n * 接ESP8266上的TX口,//n * Arduino上的软串口TX定义为D2,//n * 接ESP8266上的RX口.//n * D3和D2可以自定义,//n * 但接ESP8266时必须恰好相反//n *********************///nSoftwareSerial mySerial(3, 2);//nESP8266 wifi(mySerial);//n//nvoid setup()//n{//n mySerial.begin(115200); //////初始化软串口//n Serial.begin(9600); //////初始化串口//n Serial.print(///'setup begin//r//n///');//n//n //////以下为ESP8266初始化的代码//n Serial.print(///'FW Version: ///');//n Serial.println(wifi.getVersion().c_str());//n//n if (wifi.setOprToStation()) {//n Serial.print(///'to station ok//r//n///');//n } else {//n Serial.print(///'to station err//r//n///');//n }//n//n //////ESP8266接入WIFI//n if (wifi.joinAP(SSID, PASSWORD)) {//n Serial.print(///'Join AP success//r//n///');//n Serial.print(///'IP: ///');//n Serial.println(wifi.getLocalIP().c_str());//n } else {//n Serial.print(///'Join AP failure//r//n///');//n }//n//n Serial.println(///'/');//n Serial.print(///'DHT11 LIBRARY VERSION: ///');//n Serial.println(DHT11LIB_VERSION);//n//n mySerial.println(///'AT+UART_CUR=9600,8,1,0,0///');//n mySerial.begin(9600);//n Serial.println(///'setup end//r//n///');//n}//n//nunsigned long net_time1 = millis(); //////数据上传服务器时间//nvoid loop(){//n//n if (net_time1 > millis())//n net_time1 = millis();//n//n if (millis() - net_time1 > INTERVAL_SENSOR) //////发送数据时间间隔//n {//n//n int chk = DHT11.read(DHT11PIN);//n//n Serial.print(///'Read sensor: ///');//n switch (chk) {//n case DHTLIB_OK://n Serial.println(///'OK///');//n break;//n case DHTLIB_ERROR_CHECKSUM://n Serial.println(///'Checksum error///');//n break;//n case DHTLIB_ERROR_TIMEOUT://n Serial.println(///'Time out error///');//n break;//n default://n Serial.println(///'Unknown error///');//n break;//n }//n//n float sensor_hum = (float)DHT11.humidity;//n float sensor_tem = (float)DHT11.temperature;//n Serial.print(///'Humidity (%): ///');//n Serial.println(sensor_hum, 2);//n//n Serial.print(///'Temperature (oC): ///');//n Serial.println(sensor_tem, 2);//n Serial.println(///'/');//n//n if (wifi.createTCP(HOST_NAME, HOST_PORT)) { //////建立TCP连接,如果失败,不能发送该数据//n Serial.print(///'create tcp ok//r//n///');//n char buf[10];//n //////拼接发送data字段字符串//n String jsonToSend = ///'{///'Temperature///':///';//n dtostrf(sensor_tem, 1, 2, buf);//n jsonToSend += ///'///' + String(buf) + ///'///';//n jsonToSend += ///',///'Humidity///':///';//n dtostrf(sensor_hum, 1, 2, buf);//n jsonToSend += ///'///' + String(buf) + ///'///';//n jsonToSend += ///'}///';//n//n //////拼接POST请求字符串//n String postString = ///'POST ///devices//////';//n postString += DEVICE_ID;//n postString += ///'///datapoints?type=3 HTTP///1.1///';//n postString += ///'//r//n///';//n postString += ///'api-key:///';//n postString += APIKey;//n postString += ///'//r//n///';//n postString += ///'Host:api.heclouds.com//r//n///';//n postString += ///'Connection:close//r//n///';//n postString += ///'Content-Length:///';//n postString += jsonToSend.length();//n postString += ///'//r//n///';//n postString += ///'//r//n///';//n postString += jsonToSend;//n postString += ///'//r//n///';//n postString += ///'//r//n///';//n postString += ///'//r//n///';//n//n const char *postArray = postString.c_str(); //////将str转化为char数组//n//n Serial.println(postArray);//n wifi.send((const uint8_t )postArray, strlen(postArray)); //////send发送命令,参数必须是这两种格式,尤其是(const uint8_t)//n Serial.println(///'send success///');//n if (wifi.releaseTCP()) { //////释放TCP连接//n Serial.print(///'release tcp ok//r//n///');//n } else {//n Serial.print(///'release tcp err//r//n///');//n }//n postArray = NULL; //////清空数组,等待下次传输数据//n } else {//n Serial.print(///'create tcp err//r//n///');//n }//n//n Serial.println(///'/');//n//n net_time1 = millis();//n }//n}//n使用client,进而实现舵机的开关,修改这个代码//n内容:抱歉,这个代码和控制舵机的功能没有直接关系,需要更多的信息和代码才能进行修改。请提供更多详细的信息和代码。//n/

ESP8266 DHT11 传感器数据上传到 OneNET 平台代码优化

原文地址: https://www.cveoy.top/t/topic/oJSa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录