孫玉霞,王軍敏
(平頂山學(xué)院信息工程學(xué)院,河南平頂山,467000)
對(duì)室內(nèi)環(huán)境的實(shí)時(shí)監(jiān)測(cè)對(duì)提高家居的安全性和舒適性具有重要意義,但現(xiàn)有的室內(nèi)環(huán)境監(jiān)測(cè)系統(tǒng)存在一些不足,例如監(jiān)測(cè)數(shù)據(jù)不全面,不能及時(shí)有效地進(jìn)行數(shù)據(jù)推送,組網(wǎng)形式復(fù)雜等[1,2]。為了解決上述問(wèn)題,本文設(shè)計(jì)一種監(jiān)測(cè)數(shù)據(jù)全面、檢測(cè)精度高、傳輸穩(wěn)定的無(wú)線室內(nèi)環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng)。
基于MQTT通信協(xié)議的無(wú)線室內(nèi)環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng)主要包含硬件和軟件兩部分。一方面控制硬件利用傳感器采集信息到TFT屏幕監(jiān)測(cè)并且將采集到的信息推送到MQTT服務(wù)器,當(dāng)有害氣體超過(guò)閾值則發(fā)出警報(bào);另一方面用戶(hù)先注冊(cè)再登錄系統(tǒng),小程序端便會(huì)訂閱硬件主題下推送的消息,從而渲染到頁(yè)面上進(jìn)行實(shí)時(shí)更新,達(dá)到遠(yuǎn)程實(shí)時(shí)查看的功能。
在該系統(tǒng)中主要實(shí)現(xiàn)光照度監(jiān)測(cè)、溫濕度監(jiān)測(cè)、煙霧濃度監(jiān)測(cè)和一氧化碳濃度監(jiān)測(cè)。無(wú)線室內(nèi)環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的STM32主控單元負(fù)責(zé)接收數(shù)據(jù),當(dāng)讀取到一氧化碳濃度超過(guò)閾值時(shí),蜂鳴器會(huì)發(fā)出警報(bào)提醒用戶(hù)及時(shí)開(kāi)窗通風(fēng),當(dāng)讀取到室內(nèi)溫濕度時(shí),提醒用戶(hù)通過(guò)空氣加濕器等一些家用電器來(lái)及時(shí)調(diào)整室內(nèi)溫濕度。此外,主控將數(shù)據(jù)讀取后,可以通過(guò)ESP-12F WiFi模塊利用MQTT協(xié)議[3]上傳到MQTT服務(wù)器,在此過(guò)程中ESP-12F WiFi模塊聯(lián)網(wǎng),通過(guò)網(wǎng)絡(luò)設(shè)備獲取ID并接入Broker之后,往/iot/445/xyz推送消息,微信小程序再去訂閱這個(gè)消息便可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)顯示,微信小程序控制燈的開(kāi)關(guān)是通過(guò)推送關(guān)燈指令給MQTT服務(wù)器,ESP-12F模塊訂閱到開(kāi)關(guān)燈指令實(shí)現(xiàn)燈的開(kāi)關(guān)。
圖1展示了該系統(tǒng)的原理圖,設(shè)備側(cè)通過(guò)最小核心采集傳感器信息,ESP-12F模塊把數(shù)據(jù)通過(guò)路由器推送到MQTT服務(wù)器,用戶(hù)側(cè)通過(guò)調(diào)用合適的API發(fā)起請(qǐng)求,并訂閱MQTT推送過(guò)來(lái)的消息,微信小程序也可以發(fā)送AT指令反向控制設(shè)備側(cè)燈的開(kāi)關(guān)來(lái)調(diào)節(jié)光照度。

圖1 基于MQTT通信協(xié)議的無(wú)線室內(nèi)環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng)原理圖
本系統(tǒng)采用DHT11溫濕度傳感器對(duì)室內(nèi)溫濕度進(jìn)行檢測(cè),其溫度測(cè)量范圍為0到50度,濕度測(cè)量范圍為20%到95%,工作電壓為3.3V到5V。圖2為DHT11溫濕度檢測(cè)模塊電路圖。

圖2 DHT11溫濕度檢測(cè)模塊電路圖
采用MQ-2煙霧傳感器檢測(cè)室內(nèi)煙霧濃度,采用MQ-7氣體傳感器檢測(cè)一氧化碳濃度。圖3為空氣檢測(cè)模塊的電路圖,采用模擬量對(duì)煙霧和一氧化碳濃度進(jìn)行監(jiān)測(cè),VCC接5V電源,GND接地。

圖3 煙霧和一氧化碳濃度檢測(cè)模塊電路圖
ESP-12F模塊支持標(biāo)準(zhǔn)的IEEE8 02.11 b/g/n協(xié)議,完整的TCP/IP協(xié)議棧,方便用戶(hù)使用此模塊為設(shè)備添加聯(lián)網(wǎng)功能。ESP8266共包含22個(gè)引腳,其中GPIO6-11被用于連接開(kāi)發(fā)板的閃存,因此不適合用戶(hù)自定義使用,可以使用其他的GPIO來(lái)對(duì)PWM進(jìn)行接口控制。ESP8266負(fù)責(zé)無(wú)線上網(wǎng)接入承擔(dān)WiFi適配器的任務(wù)時(shí),可以將其添加到基于微控制器的設(shè)計(jì)中,連接簡(jiǎn)單易行。圖4為ESP-12F WIFI模塊電路圖,只需通過(guò)SPI/SDIO接口或I2C/UART口、ESP-12F的RX引腳連接STM32VET6的PB10引腳、TX接PA11引腳、RST接PB9引腳即可。

圖4 ESP-12F WiFi模塊電路圖
當(dāng)無(wú)線室內(nèi)環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng)程序開(kāi)啟時(shí),首先進(jìn)行程序端的初始化,然后各硬件元件根據(jù)程序預(yù)設(shè)的狀態(tài)進(jìn)行硬件元件的初始化,硬件初始化會(huì)有略微的時(shí)延。硬件初始化結(jié)束后將WiFi模塊配置為STA模式,通過(guò)對(duì)ESP-12F進(jìn)行設(shè)置,COM的數(shù)據(jù)與WiFi的網(wǎng)絡(luò)數(shù)據(jù)相互轉(zhuǎn)換。若配置未完成則繼續(xù)配置,配置完成后連接到MQTT服務(wù)器,采集端通過(guò)MQTT主題發(fā)布消息到服務(wù)器,微信小程序通過(guò)訂閱此主題便可接收到消息,最后通過(guò)小程序的API渲染到頁(yè)面上。圖5為采集端主程序的工作流程圖。

圖5 采集端主程序的工作流程圖
無(wú)線室內(nèi)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的移動(dòng)終端是開(kāi)發(fā)的一款用完即走的微信小程序[4],通過(guò)平臺(tái)中提供的組件對(duì)移動(dòng)終端的功能與界面進(jìn)行設(shè)計(jì),首先選擇布局方案,主頁(yè)包含頭部、主體內(nèi)容、Echarts圖表、導(dǎo)航欄四個(gè)模塊,采用wxml語(yǔ)言進(jìn)行模塊化布局,wxss語(yǔ)言進(jìn)行樣式美化。主體內(nèi)容展示實(shí)時(shí)檢測(cè)到的數(shù)據(jù),為了到達(dá)響應(yīng)式效果,本系統(tǒng)采用flex伸縮布局,通過(guò)設(shè)置主軸的方向和子元素的排列方式來(lái)實(shí)現(xiàn)。Echarts圖表部分結(jié)合數(shù)據(jù)可視化知識(shí),引入了Echarts柱狀圖,利用控制臺(tái)訂閱到的數(shù)據(jù)對(duì)Echarts中data數(shù)組的賦值便可實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)變化。
本系統(tǒng)的移動(dòng)終端可以在主界面對(duì)室內(nèi)的溫濕度數(shù)據(jù)、煙霧濃度數(shù)據(jù)、一氧化碳濃度數(shù)據(jù)和光照強(qiáng)度數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示,同時(shí)可以通過(guò)ECharts圖表明顯地展示數(shù)據(jù)的實(shí)時(shí)變化情況,如圖6所示。

圖6 移動(dòng)終端主界面
本文采用STM32單片機(jī)、多種傳感器和WiFi模塊設(shè)計(jì)了一個(gè)無(wú)線室內(nèi)環(huán)境實(shí)時(shí)監(jiān)測(cè)系統(tǒng),該系統(tǒng)以STM32單片機(jī)為控制核心,使用DHT11、MQ-7等多種類(lèi)型的傳感器采集室內(nèi)的多種環(huán)境數(shù)據(jù),并利用無(wú)線WiFi模塊通過(guò)MQTT通信協(xié)議將數(shù)據(jù)傳送至微信小程序,用戶(hù)可通過(guò)微信小程序遠(yuǎn)程實(shí)時(shí)查看室內(nèi)的環(huán)境狀況,具有重要的應(yīng)用價(jià)值。