Arduino-ESP8266传感器获取温度湿度[联网版]

基础配置 数据库:Mysql服务器:Linux后端:php前端:html,css,echar开发板:传感器:温湿度传感器,型号不会看 成品演示
【Arduino-ESP8266传感器获取温度湿度[联网版]】把传感器的数据上传到服务器,
手机上访问网址就能看到当前的温度湿度 。
流程图
流程图应该挺详细了 。
接口设计
简单安全考虑,增加一个密钥验证,
防止被恶意写入乱七八糟数据;
接口:http://zxyoyo.com/sky/iot123.php传输方式:GET参数:token:"123abc" //安全参数,随意设置temp: 22.6 //温度,浮点数humi: 46.9 //湿度,浮点数maker: 123 // 程序的id,随意设置,用于区分不同设备
php接口代码

程序设计
主要是用到wifi库,http网络请求库

Arduino-ESP8266传感器获取温度湿度[联网版]

文章插图
// 导入dht库,用于传感器的库#include //连接多个wifi#include #include //网络请求#include // 定义一个dht对象,5是GPIO5,具体看开发板DHT dht(5, DHT11);ESP8266WiFiMulti wifiMulti; //创建一个ESP8266WiFiMulti对象//创建 HTTPClient 对象HTTPClient httpClient;WiFiClient wifiClient;//上传数据的接口String api = "http://zxyoyo.com/sky/iot123.php";void setup() {// put your setup code here, to run once://开启串口监视器Serial.begin(9600);//初始化dht传感器dht.begin();//设置ESP8266工作模式为无线终端模式WiFi.mode(WIFI_STA);// 通过 addAP函数存储wifi 名称,wifi密码wifiMulti.addAP("00QAQ", "00QAQ123!");wifiMulti.addAP("00qaq", "00qaq123!");Serial.println("Please wait, Connecting");int i = 0;while (wifiMulti.run() != WL_CONNECTED) {delay(1000);Serial.print(".");if(i>10) Serial.println("\n");//print(i++);}//连接wifi成功后,输出连接成功信息Serial.println("\n");Serial.print("connected to ");Serial.println(WiFi.SSID());Serial.print("IP address: \t");Serial.println(WiFi.localIP());//添加api的校验信息api += "?token=123abc";//添加api的设备信息api += "&maker=esp8266";}void loop() {// put your main code here, to run repeatedly://延迟10s 打印delay(10000);// 获取摄氏温度float temp = dht.readTemperature();// 获取空气湿度float humi = dht.readHumidity();// 判断读取到的数据if(isnan(temp)){//没有读取到摄氏温度Serial.println("failed to read temp");temp = 8266.0;}else {//读取到摄氏温度,打印Serial.print("Read temp = ");Serial.println(temp);}if(isnan(humi)){//没有读取空气湿度Serial.println("failed to read humi");humi = 8266.0;}else {//读取空气湿度,打印Serial.print("Read humi = ");Serial.println(humi);}//如果温度或者湿度有一个有读数,上传数据if(temp != 8266.0 || humi != 8266.0){uploadData(temp,humi);}else{Serial.println("read data failed");}}//上传数据到服务器void uploadData(float temp, float humi){String tempUrl = api +"&temp=";tempUrl += temp;tempUrl += "&humi=";tempUrl += humi;httpClient.begin(wifiClient,tempUrl);//启动连接并发送http请求int code = httpClient.GET();if(code == HTTP_CODE_OK){String resp = httpClient.getString();Serial.print("Server resp: ");Serial.println(resp); }else{Serial.println("request server error");Serial.print("code=");Serial.println(code);Serial.println(tempUrl);Serial.println(httpClient.errorToString(code).c_str());}}