李宣達,張丹妮,薛 亮,王 林
(1.蘇州城市學院 計算科學與人工智能學院,江蘇 蘇州 215104;2.蘇州大學文正學院,江蘇 蘇州 215104;3.蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
隨著智能家居的發展,各種智能設備進入人們的日常生活,為人們的生活提供了極大便利。然而,目前智能窗的發展卻非常緩慢[1]。在國外,大多數建筑物的窗戶仍然是手動控制,這種方法已無法滿足現代人的日常需要。因此,本文針對窗戶開關設計了一種新型開窗系統,并且通過引入異常點檢測、智能開關算法實現智能控制。
本文設計的智能窗戶控制系統在硬件上由Arduino UNO、ESP8266MCU等組成,由煙霧傳感器、雨滴傳感器、溫濕度傳感器將數據傳輸到智能開窗裝置。此裝置一旦監測到異常情況,可以使有源蜂鳴器發出報警聲響。在軟件設計上,通過全棧開發技術將數據可視化。在獲取傳感器數據之后,云平臺將會根據設計的智能開關算法對數據進行處理,從而達到穩定控制開窗系統的目的。
本文設計的智能窗戶控制系統由硬件模塊、傳動機構、軟件應用組成,具有雨滴監測功能、煙霧監測功能、防夾功能、溫濕度監測功能、E-charts數據分析、環境異常報警功能等。
智能窗戶的數據傳輸主要依靠ESP8266MCU與云服務器進行HTTP通信,服務器接收到JSON數據后,將進行異常點檢測,以便于排除異常控制數據,提高系統的準確性。在得到可靠的數據后,對數據按時間段、種類進行分類,并儲存在數據庫中。本文同時設計了微信小程序來讀取數據庫中的數據,使用戶能夠通過微信小程序更改窗戶開關狀態,當狀態發生變化時,服務器通過ESP8266MCU模塊發送對應指令來控制開窗工作。系統設計如圖1所示。

圖1 系統設計
硬件部分主要包含Arduino UNO開發板、ESP8266MCU、傳感器。該模塊能夠實現對環境的監測,以及將相關信息傳輸到服務器。
Arduino UNO是一款基于微控制器ATmega328P的開發板,擁有14個數字輸入/輸出引腳(其中有6個引腳可以作為PWM輸出引腳),6個模擬輸入引腳,16 MHz石英晶振,USB接口,電源接口,支持在線串行編程以及復位按鍵。用戶只需將開發板與電腦通過USB接口連接即可使用[2]。
ESP8266是一款高性能的UART-WiFi模塊,兼容3.3 V和5 V單片機系統,采用串口與MCU通信,內置TCP/IP 協議棧,能夠實現串口與WiFi之間的轉換[3]。其工作模式有3種,分別為:WiFi STA、串口轉AP和WiFi STA+WiFi AP,本文所使用的工作模式為WiFi STA。ESP8266MCU通過手機熱點連接互聯網,在HTTP協議下完成對數據的傳輸。
雨滴傳感器能夠監測是否下雨,其連接UNO板模擬信號的引腳,可設置其靈敏閾值。模擬信號的范圍為0~1 024,設閾值為α,測量值為x,若x≥α代表監測到雨滴,此時會將Arduino對應的引腳設置為高電平,供后續數據傳輸使用;若x<α則代表未監測到雨滴或雨量較小,未達到關窗條件,此時會將Arduino對應的引腳設置為低電平,具體流程如圖2所示。

圖2 雨滴傳感器流程
煙霧傳感器MQ-2具有響應時間快、抗干擾能力強等特點[4]。一旦監測到煙霧、液化氣、酒精等有毒、可燃氣體,其傳導率將上升并發送低電平信號。
DHT21傳感器通過內部電容式感濕元件,將電容值轉化為濕度值,其測濕范圍為0~100%RH、濕度精度為±2%RH[5]。
Q89碰撞傳感器屬于微型快動開關,其工作電壓為3~12 V,通過數據開關輸出0或1。當觸發傳感器時,DO引腳將輸出0,板載的LED指示燈亮。
隨著數字電子技術的迅猛發展,步進電機及其脈沖控制和高精度的特點已被廣泛應用于運動控制系統,功能也得到了升級豐富[6]。傳動機構主要由42步進電機17HS4401和碰撞傳感器組成,42步進電機17HS4401的工作電壓為6~12 V,有較大的扭矩,能夠配合滑臺帶動窗戶滑動。窗戶左側和右側裝有碰撞傳感器,一旦有物體阻礙窗戶運行,窗戶將立刻停止,具有防夾功能。具體模型如圖3所示。

圖3 傳動機構設計示意圖
如圖4所示,智能窗戶的工作流程主要分為窗體控制和數據分析兩部分。

圖4 工作流程示意圖
用戶不僅能夠通過窗體控制頁面實現對窗戶、傳感器的控制,還能夠設置智能開關算法中的溫濕度閾值。在用戶點擊開關修改窗戶狀態或修改溫濕度期望值后,微信小程序會攜帶數據并發送POST請求到云服務器,實現數據傳輸。同理,微信小程序能夠發送請求,查詢窗戶當前窗臺并渲染控制頁面。此系統將控制權限最大程度交給用戶,以達到提高用戶體驗感的目的。
數據分析部分包含異常值處理與智能開關算法兩部分,排除異常值干擾能夠提高智能開關的成功率,從而達到提高用戶體驗感的目的。當計算完成后,云服務器一方面會向微信小程序提供數據并應用到E-Charts圖標中,直觀展示給用戶;另一方面會向硬件模塊發送計算的結果,達到智能開關的目的。
本文的數據集為室內環境下手機的數據,使用Arduino UNO、DHT21傳感器采集數據,通過ESP8266MCU上傳數據庫獲得。
作為一種經典的數據挖掘方法,聚類分析[15]在模式識別、機器學習、人工智能等領域得到了廣泛應用。在沒有先驗信息的情況下,聚類分析具備找到目標數據集內在結構的優勢[7]。本文使用k-means聚類算法對數據進行聚類處理,將相似程度高的數據進行進一步聚攏,以排除一部分相似程度不足的數據,然后使用異常點檢測算法(LOF)對異常數據進行偵測并排除,最終將檢驗過的數據的平均值賦值給實際測量值。
3.1.1 k-means聚類算法
本文的k-means聚類算法參考文獻[8],其基本原理是將給定數據集劃分為k個不同的類,并找出每個類的聚類中心,使各類之間的非相似性特征(如距離)達到最小[8]。k-means聚類算法的核心思想是根據待聚類點至中心點的距離來判斷待聚類點的類別[9]。此算法需要提前給出一個合理的k值,將數據歸為k類,最后評價輪廓系數,選出一個最合理的k值。由于DHT21傳感器探測的反應時間比ESP8266通信模塊的發送時間長,系統獲得的溫濕度重復數據較多,因此,本文對k-means聚類算法進行改進,其步驟如下:
(1)輸入數據集D={p1, p2, ..., pj}。
(2)選取給定的k值作為k個類質心,O={o1, o2, ..., ok},可用式(1)表示:

(3)計算每個樣本到k個質心的距離,并將此樣本分配到距離最小的類質心所對應的類中,可用式(2)表示:

(4)若pm=pm-1,即下一個樣本與上一個樣本相同時,直接將此樣本分配到與上一樣本相同的類中,不再重新計算距離。
(5)重新計算屬于該類的所有樣本的質心,可用式(3)表示:

式中:Cn表示為第n個類中對象個數;m=1, 2, ..., i;n=1, 2, ..., k。
(6)重復步驟(2)~步驟(5),直到新的質心與原質心相等或小于指定閾值。
(7)評價輪廓系數。
根據以上步驟,本文設計了算法1,算法1中的變量見表1所列。

表1 變量和函數含義
算法設計如下:
算法1:k-means聚類算法


本文使用輪廓系數s對聚類結果進行評估。s的取值范圍為-1~1,越接近1說明分類越優秀。本文將使用循環依次對k賦值于2~10,從而獲得輪廓系數s,并對s進行排序,選取當s最接近于1時的k值。在此之后,本文將舍去其中一個最偏遠的簇,以初步達到增強準確性的目的,然后將剩余數據用異常點檢測LOF算法處理。
3.1.2 異常數據處理
LOF算法是基于密度的經典異常值算法,對于數據分布不均勻、密度不同的情況,采取數據點與周圍近鄰點的相對密度來定義局部異常因子[10]。LOF算法只著重針對局部異常點,通過比較樣本點與其鄰域點的平均可達密度來判斷樣本是否為異常點[11]。本文使用一種基于距離的異常點檢驗算法,具體定義如下(k為用戶定義的值):
(1)p,o兩點間的距離:d(p,o)。
(2)定義點p的第k距離,可用式(5)表示:

同時還需滿足以下條件:
A)在集合中至少有不包括p在內的k個點,可用式(6)表示:

B)在集合中最多有不包括p在內的k-1個點,可用式(7)表示:

(3)第k距離鄰域Nk(p):點p的第k距離內的所有點。
(4)p,o兩點間的第k可達距離RDk(p, o)可用式(8)表示:

(5)局部可達密度ρ,可用式(9)表示:

(6)局部離群因子LOFk(p),可用式(10)表示:

如果LOFk(p)值趨向1,說明p與其領域點的密度相近,p與該領域屬于同一簇的可能性大。LOFk(p)值小于1,說明p的密度高于其領域點密度,即p為密集點;相反,LOFk(p)值大于1,則p越可能是異常點,本文的LOF算法參考此文獻,具有思路簡單、易于實現且聚類速度快的優點[12]。而k值的大小會影響判定異常點的閾值。LOF的優勢在于它可以識別局部密度并確定局部異常值,它的缺點是運行所需時間較長。
3.1.3 智能開關功能處理方案
此功能需考慮到雨滴傳感器與煙霧傳感器的影響。智能開關流程如圖5所示。

圖5 智能開關流程
考慮到用戶的安全與系統的穩定性,本文在設計程序時,已為各模塊設置優先級,等級為0~3級,其中0級的優先級最高。優先級見表2所列。

表2 優先級關系表
由于不同的用戶所期望的室內環境不同,我們為用戶提供可更改的溫度期望值T以及濕度期望值R,后續算法將會受以上2個參數的影響。如果用戶不進行設置,我們將聯網獲取當前季節、地理位置等信息,自動為T、R兩個參數賦值。
在室外空氣質量良好、室內外環境相似的情況下,盡可能長時間開窗通風,保持充足的氧氣。開窗還能使室內外溫度、濕度差減小,因此,在一定情況下可通過開窗達到用戶期望的溫濕度。本文定義室內外環境相似為:室內溫度與室外溫度之差的絕對值小于等于2 ℃,并且室內濕度與室外濕度之差的絕對值小于等于10%。
如果室內外環境較為相似,窗戶將自動打開通風。如果室內外環境不相似,但開窗期望值介于室內測試值與室外環境值之間,可通過開窗的方法使室內環境達到期望值,窗戶將自動打開通風。如果室內外環境不相似,期望值也不介于室內測試值與室外測試值之間,窗戶將自動關閉。此時系統會通過微信小程序向用戶發出指令,需要得到人為干預才能使室內環境達到期望值。
基于上述分析,本文設計了智能開關算法和智能開關算法流程(圖6),算法與圖中的變量見表3所列。

圖6 智能開關算法流程

表3 變量含義
算法設計如下:
算法2:智能開關算法


本節主要通過仿真結果對此控制系統的智能性、準確性進行驗證。具體方案:人體握住溫濕度傳感器,同時在其附近使用加濕器加濕10 s,來模擬出現異常值的情景。在異常值處理后,控制系統取平均值作為智能開關算法中的實測值。其對照實驗方案為:直接使用原數據的平均值作為智能開關算法中的實測值。
微信小程序具有便捷、維護方便、成本低等優點,方便用戶實現對窗戶系統進行控制。微信小程序采用vue框架,通過HTML+CSS+JS實現前端,借助PHP實現后端,數據庫使用MySQL,利用E-Charts圖表庫在前端實現評估數據的可視化分析[13],具體可分為首頁和統計兩個頁面,如圖7所示。

圖7 程序界面設計
值得指出的是,系統上傳數據所需時間小于分析數據所需時間,本文必須將數據處理設置為一個定時任務。為了能夠在不影響用戶體驗的情況下提高數據的準確性,在完成大量測試后,最終選擇60 s為間隔對數據進行處理,在此間隔下能夠獲取220~250個數據點。本文將選取其中一次實驗進行分析,共獲取242個樣本,具體分布情況如圖8所示。其中,X軸為時間,Y軸為溫度,Z軸為相對濕度。由圖8可知,數據相對集中分布在相對濕度為52%RH~55%RH范圍內,溫度在30.5~31.0 ℃范圍內,而超出此范圍的數據很有可能為異常值點。

圖8 數據樣本分布情況
使用k-means聚類算法對數據進行聚類,初步篩選出異常值。本文對2~10之間的整數依次賦值給k后,計算得出當k為2時輪廓系數最接近1,此時s=0.89。因此本文將k值設置為2,此時將舍去密度最小的一類,共有23個異常值,將其排除后,初步達到提高準確性的目的。本文使用改進后的k-means算法的運行時間為0.85 s,而未使用改進后的k-means算法運行時間為0.94 s,因此改進后的k-means算法運行效率更高,當數據更為龐大時,改進后的算法優勢將更加明顯。初步篩選過后的數據樣本分布如圖9所示,其中橫坐標為相對濕度,縱坐標為溫度。相對濕度大于55%RH,溫度大于31.0 ℃的數據樣本明顯減少,由此可見,k-means聚類算法能夠初步篩選出異常值。

圖9 數據處理后分布示意
剩余的226個數據樣本將用于局部異常因子(LOF)算法中,經過多次實驗,本文選取LOF算法中的k為20,k值過大或過小將影響異常點的檢測效果。LOFk(p)值如果大于1,將會被判定為異常值。異常點的LOFk(p)值以及該點的坐標見表4所列,共有15個數據樣本。

表4 異常點匯總表
文中使用k-means算法和異常點檢測算法之后,共去除31個異常點。根據有關研究,人體在室內溫度18~28 ℃,相對濕度50%RH~60%RH的環境下工作效率最高[14]。若用戶所填寫的期望值不在此范圍內,我們將根據用戶的期望值擴大適宜環境的范圍。假設現在用戶期待的溫度T為31 ℃,期待的濕度R為55%RH,根據上述說明,此時的適宜溫度范圍將被規劃為18~31 ℃,適宜濕度范圍將被規劃為50%RH~60%RH,如圖10所示。本文根據適宜溫濕度規劃了范圍,綠色長方體內的數據樣本是人體適宜的溫濕度,為藍點;非適宜溫濕度已用紅點標出。

圖10 適宜溫濕度范圍
在此情況下,假設室外溫度TO為31 ℃,室外濕度RO為70%RH。根據智能開關算法,使用異常值處理的智能控制系統與未使用異常值處理的對比如圖11所示,本文選取窗戶狀態改變前后3 s內的情景進行分析。可見使用異常值處理的智能控制系統能夠比未使用異常值處理快0.25 s判斷出開窗情況。

圖11 夏季開窗情況對比
以上為夏季開窗情況對比。此外,本文還對冬季開窗情況進行了對比,對比圖如圖12所示。可見,使用異常值處理的智能控制系統能夠比未使用異常值處理快0.5 s判斷出開窗情況。

圖12 冬季開窗情況對比
根據上述對比,使用文中智能控制系統能夠過濾異常值。系統能夠更加準確靈敏的判斷開窗情況。相比于直接控制開窗系統情況,提高了開窗可靠性。
本文主要設計了一種新型智能開窗系統,該系統采用了ESP8266模塊與Arduino UNO開發板等部件,設計了智能開窗系統。該系統能夠監測有毒氣體、雨滴等情況,并且用戶可以通過微信小程序平臺控制窗體,自定義所期望的溫濕度。在采集開窗系統數據后通過引入改進的k-means聚類算法與異常點檢測算法,以增強控制數據的準確性。經過測試,該方法能夠降低干擾,相比其他窗戶控制系統具有一定優勢,提高了可靠性。