李紅
(福建省華廈能源設(shè)計研究院有限公司 福建福州 350001)
隨著科技水平的不斷進步,不僅僅是工業(yè)上開始推行智能化,智能化的“云家居”逐漸走入人們的家中,“云家居”這個概念也逐漸被人們所了解。“云家居”運用的物聯(lián)網(wǎng)(IOT)技術(shù),即物物相連技術(shù),是通過各種傳感器支撐起來的一種新興技術(shù)。隨著社會的發(fā)展,這一技術(shù)對于人們的日常生活愈發(fā)的重要起來,越來越多的互聯(lián)網(wǎng)廠商開發(fā)出了自己的物聯(lián)網(wǎng)“云家居”產(chǎn)品,實現(xiàn)了遠程讀取數(shù)據(jù)、遠程控制,為客戶提供個性化服務(wù)。小米公司積極發(fā)展生態(tài)鏈企業(yè),組成了一個比較完整的“云家居”生態(tài)鏈。溫濕度檢測[1]在工業(yè)、生活中均有著重要的應(yīng)用,在很多情況下需要對較大的空間進行多個點的測量,這給溫濕度傳感器的可分布式、低功耗提出了一定的要求。傳統(tǒng)的溫濕度傳感器主要有水銀式和電子式。水銀式溫濕度計精度比較高,但是需要人工到溫度計前進行讀取,采集數(shù)據(jù)后人工錄入系統(tǒng)。電子式溫濕度傳感器實現(xiàn)自動讀取,但是電子式溫濕度遠程監(jiān)測系統(tǒng)有布線復(fù)雜、采集速度慢等缺點[2],或者需要插在220 V 市電插座上,影響布放傳感器的靈活性,極大限制了應(yīng)用場景和應(yīng)用范圍。市面上便攜式以及采用低功耗設(shè)計的遠程溫濕度傳感器少。同時單片機和大規(guī)模集成電路的應(yīng)用,出現(xiàn)了高性能、高可靠性的單片機數(shù)據(jù)采集系統(tǒng)[3]。近年來,WiFi 技術(shù)[4]已經(jīng)走進了千家萬戶,所以出現(xiàn)一款低功耗、模塊化、基于物聯(lián)網(wǎng)技術(shù)的溫濕度傳感器有著非常重要意義。
根據(jù)實際需求,本系統(tǒng)擬采用STM32F103C8T6[5]單片機做為主控芯片,其較豐富的STM32 固件庫[6]可以方便我們開發(fā),特別是低功耗模式可以很方便地實現(xiàn)低功耗功能。數(shù)據(jù)采集模塊采用DHT11 溫濕度傳感器[7]模塊,外部通訊模塊采用成本較低的ESP8266-01S WIFI 模塊[8]實現(xiàn),云服務(wù)器采用了百度智能云服務(wù)器,UI 界面采用比MFC 優(yōu)化更好的QT5 來繪制[9]。STM32F103 的低功耗模式采用停止模式[10]來降低系統(tǒng)的功耗。
本設(shè)計的總體框圖如圖1 所示,由圖可知系統(tǒng)整體結(jié)構(gòu)分為3 個部分:①下位機部分,以STM32F103C8T6 為控制核心,由溫濕度傳感器ESP8266-01S WIFI 模塊組成;②云服務(wù)器,下位機數(shù)據(jù)傳送給云服務(wù)器再傳給上位機;③上位機有多個平臺的顯示,有PC 端和手機端,均可以顯示消息記錄、數(shù)據(jù)庫信息以及畫出數(shù)據(jù)的折線圖。系統(tǒng)是一個比較完整的物聯(lián)網(wǎng)系統(tǒng),模塊性強,可以后期接入到更大更全的物聯(lián)網(wǎng)系統(tǒng)中,實用性強。
圖1 系統(tǒng)總體框圖
(1)下位機軟件整體結(jié)構(gòu)。該系統(tǒng)使用STM32F103C8T6進行下位機的開發(fā)。系統(tǒng)首先進行復(fù)位初始化,初始化系統(tǒng)時鐘以及系統(tǒng)I/O、中斷和RTC 實時鐘。而后進行ESP8266 的初始化,WIFI 模塊由MCU 通過串口通信發(fā)送AT 指令進行控制,初始會設(shè)置為站模式,連接上當(dāng)前環(huán)境的WIFI 熱點,并且設(shè)置為透傳模式。以上步驟完成后發(fā)送命令連接云服務(wù)器,連接完成后發(fā)送命令訂閱主題,訂閱完成后LED 燈閃爍提示完成。初始化完成的外部中斷負(fù)責(zé)切換停止模式。如果不進入停止模式,則3 s 獲取并且發(fā)送一次數(shù)據(jù);如果是進入停止模式,則2 min 30 s 獲取并且發(fā)送一次數(shù)據(jù),LED 燈亮暗來提示當(dāng)前狀態(tài)。溫濕度傳感器則由傳感器通信協(xié)議獲取溫濕度的實時數(shù)據(jù)。整個下位機軟件結(jié)構(gòu)如圖2 所示。
圖2 單片機軟件的結(jié)構(gòu)體圖
(2)系統(tǒng)的總體程序流程圖如圖3 所示。
圖3 系統(tǒng)流程圖
STM32F103C8T6 單片機主要是工作在單線程中,所以在初始化中有一個循環(huán)來保持單片機的持續(xù)工作。為了處理時鐘和外部摁鍵等信息,運用了中斷這個重要的處理機制。在停止模式時,需要RTC 中斷和外部中斷來喚醒停止模式,使單片機繼續(xù)運行接下去的代碼。
(1)低功耗模式以及RTC 時鐘喚醒程序設(shè)計。該系統(tǒng)選擇了低功耗模式中的停止模式來減小系統(tǒng)的功耗,接下來結(jié)合代碼來實現(xiàn)停止模式。
在STM32 程序的函數(shù)中加入stm32f10x_pwr.c 這個系統(tǒng)庫,以及加入#include “stm32f10x_pwr.h”,調(diào)用其中的void PWR_EnterSTOPMode(uint32_t PWR_Regulator,uint8_t PWR_STOPEntry)函數(shù)來進入停止模式:第一個參數(shù)填寫PWR_Regulator_LowPower,設(shè)置為低功率模式下帶有調(diào)節(jié)器的停止模式,第二個參數(shù)填寫PWR_STOPEntry_WFI,設(shè)定為任意一個中斷就可以喚醒停止模式。所以最后的代碼如下:
RTC 時鐘[14]是STM32 系統(tǒng)內(nèi)部的時鐘[15],可以進行倒計時。倒計時結(jié)束后可以產(chǎn)生中斷,這個中斷用來“喚醒”停止模式,繼續(xù)執(zhí)行主函數(shù)里的代碼,具體實現(xiàn)如下:
調(diào)用庫函數(shù)來初始化RTC 時鐘,并且初始化RTC 時鐘中斷響應(yīng)函數(shù)。在RTC 時鐘進入中斷后,清除中斷標(biāo)志位和中斷源[16],RTC 中斷源為EXTI_LINE17,重新開啟系統(tǒng)時鐘以及之前被關(guān)閉的外設(shè),系統(tǒng)恢復(fù)正常,繼續(xù)執(zhí)行代碼。
在停止?fàn)顟B(tài)時,顯示狀態(tài)的LED 燈會熄滅。在每3 s 發(fā)送一次的狀態(tài)時,LED 會亮起。
(2)ESP8266 程序設(shè)計。本系統(tǒng)使用的是ESP8266-01 WIFI 模塊,是市場上較為常用的WIFI 模塊之一。本系統(tǒng)利用串口通信與改模塊進行通信(UATR2),采用AT 指令庫進行操作。在下位機控制系統(tǒng)中,需要將獲取到的溫濕度數(shù)據(jù)發(fā)送到ESP8266 模塊,首先就要初始化,設(shè)置ESP8266 模塊,并且利用Mqtt 協(xié)議連接上百度智能云服務(wù)器。
下位機硬件系統(tǒng)的設(shè)計如圖4 所示?;谖锫?lián)網(wǎng)的低功耗溫濕度傳感系統(tǒng)的下位機,是以STM32F103C8T6 為主控核心,由ESP8266-01S 作為WIFI 傳輸模塊,兩路的SHT30 溫濕度傳感器作為溫濕度采集模塊,6*6*5 輕觸開關(guān)作為外部中斷輸入。系統(tǒng)實時獲取溫濕度傳感器的數(shù)據(jù),進行數(shù)學(xué)解算后打包由串口通信發(fā)送至WIFI 模塊。WIFI 模塊連接上百度智能云服務(wù)器后再由上位機接收。
圖4 下位機系統(tǒng)總體框圖
下位機控制核心采用STM32F103C8T6 芯片。主控芯片是一款基于ARM Cortex-M3 內(nèi)核的32 位微控制器。芯體尺寸為32 位,程序存儲器容量為64 KB,具有72 MHz 的芯片主頻。內(nèi)部集成了ADC 以及I2C 硬件接口,通用I/O 個數(shù)達到37 個,工作電壓為2 V~3.6 V。
(1)Qt 程序設(shè)計思路。本UI 界面設(shè)計要求具有能夠獲取百度智能云服務(wù)器透傳的溫濕度數(shù)據(jù)、顯示數(shù)據(jù)、將數(shù)據(jù)存放入數(shù)據(jù)庫后顯示數(shù)據(jù)庫數(shù)據(jù)以及將數(shù)據(jù)繪制成數(shù)據(jù)曲線的功能。程序設(shè)計的思路是通過Qt 的Mqtt 庫進行操作,連接上百度智能云服務(wù)器,訂閱相應(yīng)的主題,而后利用CONNECT 函數(shù)接收服務(wù)器所發(fā)送的信息。通過解包來獲取設(shè)備編號、環(huán)境的溫濕度數(shù)據(jù)。采用QChart 類來繪制數(shù)據(jù)的折線圖,方便用戶觀察環(huán)境變化的趨勢。
(2)Qt 程序整體設(shè)計框架。本系統(tǒng)使用Qt 編寫UI 界面,軟件的整體框架圖如圖5 所示,總共有4 個界面,分別為連接界面、數(shù)據(jù)庫數(shù)據(jù)顯示界面、數(shù)據(jù)庫查找界面和折線圖界面。
圖5 Qt 軟件設(shè)計框架圖
(3)Qt 顯示界面的優(yōu)化。Qt 在PC 端的控件更加兼容,容易實現(xiàn)更多的功能,所以在PC 端增加了背景圖片標(biāo)題以及圖標(biāo),增大了QLable 的字號,讓提示更加的清晰。優(yōu)化后的界面如圖6 所示。
圖6 PC 端界面圖
測量了3 組溫濕度與實際對比表格如表1 和表2 所示,表1 為SHT30 通道1,表2 為SHT30 通道2。
表1 SHT30 通道1 測量溫濕度與實際對比
表2 SHT30 通道2 測量溫濕度與實際對比
測試方法與結(jié)論:實際溫濕度采用市面上采購的溫濕度計進行監(jiān)測,由表1 和表2 數(shù)據(jù)可得溫濕度誤差較小,測量精度較高。
測量了7 組工作在停止模式下工作電流、3 s 一發(fā)送模式下工作電流和低功耗模式使用10 000 mah 充電寶供電使用的時間如表3 所示。
表3 測量低功耗電流與正常工作電流
測試方法與結(jié)論:測試采用5 V 10 000 mah 充電寶供電,將萬用表串聯(lián)至供電系統(tǒng)中,測得以上數(shù)據(jù)。由表3 中數(shù)據(jù)可得:當(dāng)工作在停止模式下時,電流比3 s 一發(fā)送的工作模式減小一半,功耗減小一半,可以實現(xiàn)系統(tǒng)的低功耗功能。
減小了功耗之后,采用充電寶供電的本系統(tǒng)可以達到14 d以上的使用時間,基本能夠滿足市場的要求。
市面上雖然有功耗比較低的溫濕度采集系統(tǒng),能夠做到4 mA 級別[10],但是只有采集的功能,沒有通過WIFI 傳輸至服務(wù)器,缺乏主要的功能。本系統(tǒng)如果只有采集功能時,低功耗能達到2 mA 級別,比市面上明顯小。
本系統(tǒng)主要特色為:①使用百度智能云服務(wù)器,將數(shù)據(jù)組包發(fā)送至服務(wù)器后使用手機和PC 端進行遠程接收;②實現(xiàn)單片機進入停止功能,有效降低了系統(tǒng)的功耗。
本系統(tǒng)比較完整的實現(xiàn)了以上功能,數(shù)據(jù)傳輸正確,功耗明顯降低。
市面上的低功耗溫濕度傳感器系統(tǒng)比較少,而且缺乏主要功能,本系統(tǒng)填補了市場上的空白。同時該系統(tǒng)目前在性能和功能上還有很大的提高空間,如云平臺只能采用百度智能云服務(wù)器,對其他的云平臺兼容性較差,上位機軟件界面優(yōu)化仍然不足,后期可以增加web 界面,使系統(tǒng)更加完善。