劉宇耀,劉增力*,湯 輝
(1.昆明理工大學 信息工程與自動化學院,云南 昆明 650500;2.江西省科技基礎(chǔ)條件平臺中心,江西 南昌 330003)
針對智能家居領(lǐng)域,目前市面已出現(xiàn)許多與物聯(lián)網(wǎng)技術(shù)結(jié)合的智能家居設備應用,可以有效監(jiān)測居住環(huán)境的適宜程度和安全情況。吳洋設計的智能家居系統(tǒng)可以通過傳感器檢測室內(nèi)的火災和煤氣泄漏事件,通過NRF2401 無線通信方式通知用戶及時處理[1]。吳允強設計的智能家居系統(tǒng)可通過手機向室內(nèi)WiFi 發(fā)送命令控制智能家具開關(guān),能遠程控制家電運行[2]。岳駿采用STM32 單片機控制監(jiān)測室內(nèi)溫濕度、光照強度及有害氣體,并向用戶發(fā)送相應的報警信息[3]。蔣盼盼設計的智能家居系統(tǒng),可在遠程通過WiFi 發(fā)送命令,協(xié)調(diào)室內(nèi)Zigbee網(wǎng)關(guān)控制智能家居運行[4]。李亞慧設計了一款智能安防系統(tǒng),采用人臉識別、紅外探測技術(shù)以及重力感應技術(shù),在門鎖處監(jiān)測是否有可疑人員并通知用戶[5]。徐雍倡通過Zigbee 組網(wǎng)技術(shù)將傳感器與家庭設備連接在一起,實現(xiàn)一體化管理,能夠直接通過傳感器數(shù)據(jù)控制家庭設備運行[6]。
對于大部分智能家居應用而言,對傳感器監(jiān)測結(jié)果的處理方式過于簡單,不夠完善,只是做最簡單的判斷,只要監(jiān)測數(shù)據(jù)不在所設置的合適范圍內(nèi),就會觸發(fā)報警及相應措施。在此情況下,如果傳感器出現(xiàn)故障或由于其他原因?qū)е卤O(jiān)測數(shù)值出現(xiàn)短暫異常,系統(tǒng)就會根據(jù)監(jiān)測的異常結(jié)果做出錯誤判斷,從而觸發(fā)錯誤決策,造成一些智能家具響應并做出錯誤行為,比如可能在溫度合適的時候開窗或者開風扇,從而產(chǎn)生完全不必要的消耗。本文對各感知設備監(jiān)測的數(shù)據(jù)進行異常值檢測和替換,能夠使智能家居系統(tǒng)正常運行,減少不必要的能耗和錯誤決策。
本文根據(jù)目前較為普遍的智能家居設備應用需求,通過STM32單片機搭載DHT22溫濕度傳感器、HC-SR501 紅外傳感器、BH1750 光照傳感器以及MQ-5 可燃氣體傳感器,監(jiān)測房間居住環(huán)境和安防情況,并通過WiFi 方式將數(shù)據(jù)上傳至阿里云平臺。在云端對傳感器監(jiān)測結(jié)果數(shù)據(jù)進行判決分析,做出相應決策,并通過WiFi 控制繼電器和紅外遙控器連接,開啟和關(guān)閉各項智能設備如空調(diào)、燈具、窗戶、蜂鳴器及報警系統(tǒng)等。
為了減少因傳感器異常所產(chǎn)生的錯誤異常結(jié)果導致的決策誤判,在對傳感器監(jiān)測的數(shù)據(jù)進行決策判決時,先將一定時間內(nèi)的監(jiān)測數(shù)據(jù)進行異常值檢測和整合,得到一個綜合數(shù)據(jù),提高數(shù)據(jù)的可靠性,再根據(jù)得到的綜合數(shù)據(jù)進行結(jié)果判斷并執(zhí)行相應決策。
本文設計的智能家居系統(tǒng),利用STM32 作為主控板搭載DHT22 溫濕度傳感器、MQ-5 可燃氣體傳感器、HC-SR501 紅外傳感器以及BH1750 光照傳感器,對房間里的溫濕度、可燃氣體、光照強度及可疑人員進行監(jiān)測,將監(jiān)測得到的數(shù)據(jù)通過WiFi方式上傳至阿里云平臺,在云端對這些數(shù)據(jù)進行處理判斷。室內(nèi)的一些智能家具可通過WiFi 方式連接云端,接受云端指令控制。云端對傳感器上傳的監(jiān)測數(shù)據(jù)進行判斷,并通過WiFi 方式下發(fā)相應決策命令,控制不同智能家具運行。系統(tǒng)整體框架如圖1 所示。
圖1 系統(tǒng)框圖
DHT22 溫濕度傳感器采用單總線形式連接單片機,可以同時監(jiān)測0~99.9%范圍的濕度以及-40~80 ℃的溫度[7]。DHT22 傳感器輸出40 bit溫濕度數(shù)據(jù),包括16 bit 濕度數(shù)據(jù)、16 bit 溫度數(shù)據(jù)及8 bit 校驗位,其中溫度16 bit 數(shù)據(jù)的最高位代表正負位。
HC-SR501 人體紅外傳感器連接單片機GPIO口,能夠監(jiān)測人體特有的紅外輻射[8];輸出0 或3.3 V的電平信號,經(jīng)過處理得到0 或1 的結(jié)果,0 表示沒有檢測到人,1 表示監(jiān)測到人。
BH1750 光照傳感器通過光敏電阻感知光照強度變化,輸出模擬信號。當受到的光照強度越強,其電阻就越小,輸出就越大。輸出數(shù)據(jù)通過模塊內(nèi)置的模數(shù)轉(zhuǎn)化器(ADC)轉(zhuǎn)化,連接單片機,輸出光照強度的數(shù)字信號。
MQ-5 傳感器以SnO2作為氣敏材料,對空氣中的可燃氣體(液態(tài)氣、天然氣、煤氣)較為敏感[9]。其輸出是根據(jù)傳感器在氣體中電導率變化得到的模擬值,也需要接入單片機的ADC 模塊進行模數(shù)轉(zhuǎn)化。
系統(tǒng)采用WiFi 方式傳輸數(shù)據(jù)。各個傳感器的監(jiān)測數(shù)據(jù)通過WiFi 模塊連接并發(fā)送至阿里云服務器。系統(tǒng)將ESP8266 WiFi 模塊設置工作在STA 模式,連接室內(nèi)的WiFi 路由熱點,將整個系統(tǒng)連接至網(wǎng)絡[10]。系統(tǒng)連接阿里云物聯(lián)網(wǎng)服務器,從而控制系統(tǒng)通過MQTT 訂閱報文方式上傳數(shù)據(jù)至阿里云物聯(lián)網(wǎng)平臺[11]。
對于室內(nèi)居住環(huán)境的控制,系統(tǒng)通過DHT22溫濕度傳感器監(jiān)測室內(nèi)溫濕度,當溫度過高、超過所設定閾值時,云端可通過WiFi 方式向智能風扇下發(fā)指令,開啟風扇降溫直至溫度低于所設閾值后停止。當濕度數(shù)據(jù)高于所設閾值時,云端可下發(fā)開窗命令,控制電機打開窗戶,當室內(nèi)濕度達到合適范圍時,再控制電機關(guān)閉窗戶。
當確認房屋主人不在時,如果紅外傳感器監(jiān)測到異常人員,云端下發(fā)蜂鳴器報警命令,并向用戶發(fā)送提示信息。此時光照傳感器的測量結(jié)果不會產(chǎn)生任何響應,室內(nèi)燈具不會開啟。而當確認房屋主人在家時,云端對紅外傳感器監(jiān)測數(shù)據(jù)不做響應,如果光照傳感器監(jiān)測的光照強度低于所設閾值,云端下發(fā)開燈指令,控制室內(nèi)燈具開啟照明。
對于房間內(nèi)可燃氣體的監(jiān)測,當MQ-5 可燃氣體傳感器監(jiān)測到可燃氣體濃度達到所設的濃度限值時,就會觸發(fā)蜂鳴器報警,并向用戶手機發(fā)送報警信息,通知用戶及時處理。
智能家居系統(tǒng)中的傳感器在監(jiān)測時,短時間內(nèi)監(jiān)測數(shù)據(jù)一般不會出現(xiàn)很大的浮動。而由于傳感器本身的原因或者一些電路的原因,可能會出現(xiàn)少量明顯不符合實際的數(shù)據(jù),或者與大部分相鄰數(shù)據(jù)差別很大的值,可以稱之為異常值。這些異常值不能表現(xiàn)所監(jiān)測的真實信息[12]。
在智能家居系統(tǒng)中,如果不事先對監(jiān)測的數(shù)據(jù)進行處理就直接進行判斷,一旦出現(xiàn)異常值,系統(tǒng)根據(jù)這個異常值進行決策判斷,就會導致智能家具做出錯誤響應。例如,當濕度數(shù)據(jù)異常,突然高于所設閾值,系統(tǒng)就會控制窗戶開啟,但下次監(jiān)測得到的濕度數(shù)據(jù)又恢復正常,窗戶就又會關(guān)閉,這樣就會造成不必要的電力消耗。如果紅外傳感器產(chǎn)生異常監(jiān)測數(shù)據(jù),甚至會導致誤報警操作。
為使數(shù)據(jù)更加有效,系統(tǒng)監(jiān)測結(jié)果更加可靠,需要對異常值進行檢測??紤]到后續(xù)融合算法設計,為保持數(shù)據(jù)維度,在檢測到異常值時,本文并非只將異常值簡單地去除,而是將其進行修正替換。
本文采用的異常值檢測方法為箱線圖法。箱線圖法是取出整個數(shù)據(jù)集中的最大值Xmax、最小值Xmin、上四分位數(shù)Q3、中位數(shù)Q2以及下四分位數(shù)Q1,如圖2 所示[13]。
圖2 數(shù)據(jù)四分位劃分圖
對統(tǒng)計得出的這5 位數(shù)進行計算,定義四分位距IQR為:
將上、下四分位數(shù)分別向上和向下擴展1.5 倍的四分位距,得出上下邊界,并以此構(gòu)成有效數(shù)據(jù)區(qū)間。在這個區(qū)間上的值視為有效值,反之,在區(qū)間外的值就視為異常值。公式如下:
式中:IQRL表示為下邊界,IQRH表示為上邊界。構(gòu)成的有效值區(qū)間為[Q1-1.5IQR,Q3+1.5IQR],如圖3所示。
由圖3 所示,系統(tǒng)監(jiān)測到一系列數(shù)據(jù)結(jié)果后,如果出現(xiàn)異常值,這些異常值自然就會存在于有效區(qū)間外。系統(tǒng)將有效值區(qū)間外的數(shù)據(jù)視為異常值,并對其進行修正。
圖3 有效值區(qū)間
本文采用標準自適應修正算法進行修正。將異常值與除去異常值后的均值進行比較后,視情況進行一系列收斂運算,得到自適應的修正值作為替換值,減少誤判影響。
設xi為所檢測出的異常值,所收集的樣本除去異常值后的均值用xm表示,兩者的差值用Δ 表示,用x(表示修正值。
當xi>xm時,Δ=xi-xm,可以根據(jù)當前監(jiān)測環(huán)境項目數(shù)據(jù)差值的大小設置3 種限值{Δ1,Δ2,Δ3},其中Δ1<Δ2<Δ3,則修正算法如下:
當xi<xm時,Δ=xm-xi,同樣地,數(shù)據(jù)與均值之間的差值的大小設置3 種限值{Δ1,Δ2,Δ3},其中Δ1<Δ2<Δ3,則修正算法如下:
除了上述情況外,如果異常值與均值之間的差值過大,超過了所設的最大限值,即Δ>Δ3時,該異常值就完全沒有了參考價值,直接用均值進行替換即可。
按照上述方法對異常值進行替換,考慮到異常值出現(xiàn)的影響因素,在數(shù)據(jù)量較少的情況,要比直接用均值替換更加符合實際,能夠盡可能地減少異常值所帶來的影響。
本文設計的的智能家居系統(tǒng)的監(jiān)測周期為4 s,系統(tǒng)每2 min 對采集到的監(jiān)測數(shù)據(jù)進行整合處理,因此所處理的監(jiān)測數(shù)據(jù)為30 個。
將各項傳感器監(jiān)測數(shù)據(jù)替換異常值后,得到更加合理準確的數(shù)據(jù),再對2 min 內(nèi)的數(shù)據(jù)進行求平均,得到其平均值作為最終的傳感器的結(jié)果值上傳至阿里云平臺,作為智能家居的評判依據(jù)。這樣就會大大減少智能家居系統(tǒng)誤判的可能,使得整個系統(tǒng)的運行更加穩(wěn)定,避免了不必要的消耗。以濕度數(shù)據(jù)為例,將2 min 內(nèi)監(jiān)測到的濕度數(shù)據(jù)按照上述方法處理,首先進行異常值檢測,通過箱線圖法得到監(jiān)測數(shù)據(jù)的有效值區(qū)間,如果在數(shù)據(jù)向量中存在超出重設區(qū)間的值,就將其視為異常值,并進行替換。對數(shù)據(jù)進行異常值替換后的結(jié)果如圖4 所示。
從圖4 的結(jié)果可以看出,傳感器在2 min 內(nèi)監(jiān)測到的濕度數(shù)據(jù)中出現(xiàn)了一個異常值,與相鄰的值差別很大,不能表現(xiàn)當時真正的濕度情況。如果智能家居設置的閾值為當濕度超過50%系統(tǒng)就會控制電機打開窗戶,那么當監(jiān)測到傳感器出現(xiàn)上述異常值時,系統(tǒng)就會做出錯誤決策,窗戶就會打開。而經(jīng)過處理后得到的數(shù)據(jù)更加平滑,更加合理,提高了整體數(shù)據(jù)的可靠性,降低了誤差。對處理后的數(shù)據(jù)進行求平均,作為最終的結(jié)果,這樣就不會觸發(fā)錯誤的判決,也不會打開窗戶,有效地減少了不必要的操作。
圖4 替換異常值后數(shù)據(jù)對比
針對智能家居系統(tǒng)在運行時出現(xiàn)異常值,導致云端做出錯誤判決并控制相應智能家具做出錯誤響應的問題,本文設置了一種數(shù)據(jù)處理方法。云端在收到傳感器監(jiān)測信息后,收集一定時間內(nèi)的數(shù)據(jù)進行異常值檢測替換,使數(shù)據(jù)更加合理準確。實驗證明,將一定周期內(nèi)的數(shù)據(jù)中的異常值進行修正,能夠大大減少錯誤判斷的產(chǎn)生,使系統(tǒng)做出正確決策,從而能有效避免家具錯誤運行。