日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(超简单)ESP8266深度睡眠模式下远程采集温湿度信息

發布時間:2023/12/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (超简单)ESP8266深度睡眠模式下远程采集温湿度信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(超簡單)ESP8266深度睡眠模式下遠程采集溫濕度信息

    • 項目背景
    • 相關技術
      • ESP8266深度睡眠模式
      • DHT11溫濕度采集
      • MQTT數據收發
      • Node.js前后端實現
        • 后端
        • 前端

項目背景

自己用收納箱做了一個用于存放3D打印耗材的干燥箱,想用閑置的ESP8266開發板和DHT11溫濕度傳感器做一個遠程溫濕度監測的小項目。
因為溫濕度信息的采集并不需要太過頻繁,另一方面為了降低整體的功耗,所以打算使用ESP8266的深度睡眠模式來每隔半個小時或一個小時上傳一次溫濕度的信息,這樣能大大降低整個項目的功耗,延長使用時間。

相關技術

ESP8266深度睡眠模式

esp8266的三個睡眠模式包括調制解調器睡眠、輕度睡眠和深度睡眠(具體信息可以參考文章-ESP8266睡眠模式)。深度睡眠模式是8266三個主要睡眠模式中功耗最低的一種,在該模式下esp8266的所有應用程序數據都不會執行,相當于8266處于關機狀態,只有8266的RST引腳接收到低電平信號后8266才會被喚醒(開機)。這里可以將8266的GPIO16(D0)引腳與RST引腳相連,通過GPIO16號引腳向RST引腳發送低電平將8266喚醒。

esp8266進入深度睡眠模式可以通過調用函數 ESP.deepSleep(30e6); (單位us,30e6表示睡眠30秒)來實現,深度睡眠模式下最多睡眠時長4,294,967,295 μs 也就是大概71分鐘。

esp8266進入深度睡眠模式的示例代碼如下:

void setup() {Serial.begin(115200);Serial.setTimeout(2000);// Wait for serial to initialize.while(!Serial) { }//Serial.println("即將進入深度睡眠模式,睡眠時長為30秒");//ESP.deepSleep(30e6); Serial.println("即將進入深度睡眠模式,將一直處于深度睡眠狀態,直到RST接收到低電平信號才被喚醒");ESP.deepSleep(0); }void loop() {Serial.println("深度睡眠模式下,loop函數中的代碼將不會被執行"); }

注意: 深度睡眠模式下,esp8266只會執行setup函數中位于deepSleep()函數之前的代碼程序,loop中的代碼將永遠不會被執行。

DHT11溫濕度采集

溫濕度信息的采集主要由DHT11傳感器來完成,傳感器的data引腳接8266的GPIO4(D2)引腳,使用SimpleDHT庫來實現溫濕度信息的采集,主要代碼如下:

void getHumChk() {int err = SimpleDHTErrSuccess;if ((err = dht11.read(&temp_read, &humi_read, NULL)) != SimpleDHTErrSuccess){Serial.print("Read DHT11 failed, err=");Serial.println(err);delay(1500);return;}Serial.print("hum:");Serial.print(humi_read);Serial.print("%");Serial.print("tem:");Serial.print(temp_read);Serial.println("*C"); }

MQTT數據收發

項目中數據的收發主要通過部署在阿里云服務器上的MQTT服務端來完成,我的阿里云服務器是windows系統(操作簡單些,代碼可以隨時修改運行,主要也用于跑其他軟件),也可以在自己的電腦上搭建,搭建非常簡單,具體的搭建流程可以參考MQTT環境搭建。

MQTT信息收發的測試使用MQTT.fx軟件,非常方便。
ESP8266開發板通過MQTT發送信息的代碼如下:

//發布MQTT信息 void pubMQTTmsg(String state) {//建立發布主題。主題名稱為“topic”String topic = "Mymqtt/module2/led";char publishTopic[topic.length() + 1];strcpy(publishTopic, topic.c_str());//建立發布信息。String sendMessage = state;char publishMsg[sendMessage.length() + 1];strcpy(publishMsg, sendMessage.c_str());//實現8266向主題發布信息if (mqttClient.publish(publishTopic, publishMsg)){Serial.print("Publish Topic:");Serial.println(publishTopic);Serial.print("Publish Message:");Serial.println(publishMsg);}else{Serial.println("Message Publish Failed.");} }

其他完整代碼可以點擊文章末尾github鏈接查看。

Node.js前后端實現

后端

這次上位機及數據的顯示使用Node.js來實現,后端用Node.js來接收MQTT消息,接收到溫濕度消息后將相關數據存入到阿里云服務器上的MySql數據庫,并通過前端網頁來展示,前后端數據的交互使用socket來實現。

MySql配置信息如下:

var mysql = require('mysql') var connection = mysql.createConnection({host: '你的服務器IP',user: '用戶名',password: '密碼',port: '端口,一般是3306',database: '數據庫名稱', }) connection.connect()

MQTT配置信息如下:

var mqttUrl = 'mqtt://服務器IP:61613' var option = {username: 'MQTT服務器用戶名',password: 'MQTT服務器密碼',clientId: '客戶端ID', }

訂閱MQTT主題的代碼如下:

//訂閱的MQTT主題 client.subscribe('Mymqtt/module1/willMessage', { qos: 0 }) //設備一的狀態信息 client.subscribe('Mymqtt/module1/DHT11', { qos: 0 }) //溫濕度 client.subscribe('Mymqtt/module1/light', { qos: 0 }) //光照 client.subscribe('Mymqtt/module2/willMessage', { qos: 0 }) //設備二的狀態信息 client.subscribe('Mymqtt/module2/led', { qos: 2 }) //燈的狀態信息 console.log('訂閱成功')

主題名稱根據自己的需要改,不能與其他主題名稱重復。(module2是我遠程控制燈的項目)

接收MQTT消息并發送前端的部分代碼如下:

//監聽MQTT消息client.on("message", function (topic, message) {if (topic == "Mymqtt/module1/willMessage") {nowtime = new Date().getTime();t = nowtime - lasttime;if (t > 3000) {willMessage1 = message.toString();time = new Date().toLocaleString("chinese", { hour12: false });console.log(time);console.log("主題:" + topic + " 消息:" + willMessage1);socket.emit("module1", { msg: willMessage1 });socket.emit("time", { msg: time });}lasttime = nowtime;} else if (topic == "Mymqtt/module2/willMessage") {willMessage2 = message.toString();console.log("主題:" + topic + " 消息:" + willMessage2);socket.emit("module2", { msg: willMessage2 });} else if (topic == "Mymqtt/module1/light") {light = message.toString();console.log("主題:" + topic + " 消息:" + light);socket.emit("light", { msg: light });

這里用到nowtime、lasttime、t是因為接收MQTT消息時有可能會同時接收多條相同的消息,所以3秒內只接收一條同一主題的消息。

溫濕度信息插入數據庫的代碼如下:

//將溫濕度信息插入到數據庫中 var json = JSON.parse(message.toString()); var addDht11 = "INSERT INTO dht11(temperature,humidity) VALUES(?,?)"; var temperature = parseInt(json.temperature); var humidity = parseInt(json.humidity); var addSqlParams = [temperature, humidity];connection.query(addDht11, addSqlParams, function (err, result) {if (err) {console.log("[INSERT ERROR] - ", err.message);return;}console.log("Insert successfully"); });

其他完整代碼見文章末尾鏈接。

前端

前端的效果如圖:

頁面上面可以顯示設備的狀態,即“離線”還是“在線”,也可以顯示設備上次離線時的時間。下面可以顯示傳感器最近一次上報的溫濕度信息,圖表顯示最近10次的溫濕度信息,當有新的信息到來時也會動態更新。

這里的圖表使用的是ECzharts的圖表插件,可以根據數據的變化動態顯示曲線,也可以在折線圖和條形圖之間進行切換,還可以放大某一區域或將當前數據畫面下載。他們網站上有著各式各樣的圖表插件,可以很簡單、方便地把自己的數據通過插件動態顯示出來,這是他們的官網-ECharts官網

成果演示:

注: 本項目中開發板每10分鐘上報一次溫濕度信息,即8266上報一次溫濕度信息后會進入深度睡眠模式,10分鐘后被喚醒再次上報后進入深度睡眠,如此循環。

B站視頻演示:視頻演示
github地址:https://github.com/Fishghost98/TemHumProject

總結

以上是生活随笔為你收集整理的(超简单)ESP8266深度睡眠模式下远程采集温湿度信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线123 | 成人av免费在线看 | 韩国一级片在线观看 | 无码人妻精品一区二区三区夜夜嗨 | 国产在线观看99 | 亚洲男人天堂 | 欧美中文网 | www.199麻豆| 男人操女人的免费视频 | 免费看操片 | 精品乱码久久久久久中文字幕 | 婷婷tv| 国产一区二区三区视频免费在线观看 | 天天操女人 | 久久久久久无码精品大片 | 欧美贵妇videos办公室 | 精品久久无码视频 | 久久精品亚洲天堂 | 一二区精品 | av福利站 | 亚洲色图 一区二区 | 亚洲中文字幕第一区 | 国产在线伊人 | 欧美人和黑人牲交网站上线 | 一区二区日韩 | 在线免费观看视频黄 | 日韩国产欧美视频 | 日本激情影院 | 黄色网址视频在线观看 | 肉丝超薄少妇一区二区三区 | 91干视频 | 国产无遮挡裸体免费视频 | 日韩精品视频中文字幕 | 黄色在线观看av | 色91| 欧美特黄一级 | 国产日本在线播放 | 欧美黄网在线观看 | 日韩不卡在线视频 | 99国产精品久久 | 国产又粗又猛又色又 | 亚洲欧美日本另类 | 午夜在线影院 | 国产麻豆电影在线观看 | 免费无码又爽又黄又刺激网站 | 欧美做爰全过程免费看 | 色播五月婷婷 | 18av在线播放 | www.狠狠干| 好吊操视频这里只有精品 | 精品国产自在精品国产精小说 | 在线亚洲成人 | 国产麻豆一精品一男同 | 91沈先生在线 | 成人在线一区二区 | 综合色网站 | 色视频一区二区 | 亚洲精品一区中文字幕乱码 | 五月涩 | 婷婷深爱 | 欧洲一区二区三区四区 | 国产美女又黄又爽又色视频免费 | 91精品国产高清一区二区三密臀 | jizzjizz黄大片 | 色干网 | 凹凸日日摸日日碰夜夜 | 操你啦在线视频 | 亚洲综合网在线观看 | 91xxx在线观看 | 懂色av,蜜臀av粉嫩av | 国产主播精品在线 | 美女三区 | 日韩精品一区二区亚洲av观看 | 人人人插 | 日本免费精品 | 成人国产免费观看 | 成人福利免费视频 | 绝顶高潮合集videos | 蜜臀久久99精品久久久久宅男 | 狠狠天天 | 久久久99精品 | 风韵少妇spa私密视频 | 久久久不卡 | 久久成人高清 | 天天噜夜夜噜 | 日日摸日日碰夜夜爽无码 | 亚洲欧美激情在线观看 | 欧美xxxx在线 | 日本中文在线 | 欧美大片在线看免费观看 | 久久综合一本 | 国产二区精品 | 成年人的天堂 | 亚洲毛片网| 欧美在线看片 | 国产在线导航 | 国产一级片网站 | 久久精品2019中文字幕 | 午夜两性网 |