單立軍, 孔永華
(東華大學 機械工程學院, 上海 201620)
隨著生活水平的提高,人們對生活便利性的要求也越來越高,各種智能化產品逐漸進入人們的日常生活,如智能垃圾桶、智能鎖、智能窗等,但智能窗的發展卻非常緩慢。目前市場上存在一些以自動開窗器為主的智能窗戶,但其功能較為單一,只能實現簡單的自動開窗[1],缺乏一套可以使其與其他傳感器相結合的控制系統,因而也就無法實現雨水感應、人體感應以及遠程控制等功能。
國內許多學者對智能窗進行了研究。陳亞雙[2]設計了可以根據室外環境參數自動開窗的智能窗系統,但缺乏后續的佐證,實用性不強。王鴻建等[3]設計了基于MSP430單片機的樓宇自動開窗系統,該系統具備風雨及煙霧的檢測功能,解決了建筑自然通風和消防通風排煙的問題。楊錦輝等[4]設計了基于物聯網技術的智能窗戶系統,該系統可通過自動判斷當前環境的溫濕度、紅外強度以及有害氣體濃度等信息來實現窗戶的自動開關。龍軍等[5]研發了智能窗感測報警器,其能夠采集危險信號并且經單片機處理后可觸發報警。國內一些家居公司也開始涉足智能家居領域。海爾旗下的智能家居品牌U+,提供了智慧廚房、智慧臥室、智慧浴室、智慧客廳4大系統解決方案,但其未將窗戶作為一個獨立的系統進行研究,僅僅提供了與窗簾相關的服務,這在一定程度上阻礙了智能窗的發展;成都易慧家科技有限公司是一家專業從事家用電動智能門窗的物聯網研發企業,其在電動智能窗領域研究多年并開發了幾種智能窗樣機,但仍處于實驗室研究階段;深圳歐瑞博科技股份有限公司為用戶提供了智能照明系統、遮陽窗簾系統、音影娛樂系統、暖通舒適系統以及門鎖安防系統[6-7]。
綜上所述,雖然許多智能家居公司對整個房屋的控制系統有了成熟的方案,但很少涉及智能窗,并且國內學者對智能窗的研究還處于起步階段。為使高端窗戶能夠實現多重智能化,開發了一套智能窗控制系統,通過將LoRa通信模塊與雨水感應器相結合,設計了無線雨水感應器,使得雨水感應器的信號能夠實現遠距離傳輸。還對智能窗控制系統的關窗策略和硬軟件進行設計,增加了中斷程序并為各功能的運行劃分了優先級,特別是在人為控制與雨水感應控制相沖突時,使人為控制優先級最高。通過對軟硬件的設計并與多種傳感器進行結合,實現了對窗戶的智能化控制并提供了多種功能,可滿足用戶的多樣化需求,有望推動智能窗的發展。
基于STM32單片機設計了多功能智能窗控制系統,創新性地將傳感器技術、無線網絡通信技術、計算機軟件開發技術運用到智能窗的系統設計中。智能窗控制系統的總體設計方案如圖1所示。

圖1 智能窗控制系統的總體設計方案Fig.1 Overall design scheme of intelligent window control system
該系統主要由終端、網關、服務器及移動端組成。終端分為控制終端和感應終端。控制終端的主要功能是控制智能窗的開/關,包括人體紅外感應開窗、煙霧感應開窗、雨水感應關窗。雨水感應終端將雨水感應模塊設置為一個獨立的終端,放棄了傳統的有線連接通信,改用終端間組建的無線通信網絡進行信息傳輸。無線雨水感應終端通過LoRa網絡控制家庭或同一個小區內多個窗戶的控制終端。網關主要為終端組建一個無線通信網絡,從而實現各終端間的信息交互,同時在終端與服務器之間組建通信網絡,使終端與服務器之間可以進行信息交流。利用LoRa無線技術在終端與網關之間組建通信網絡,采用WiFi技術在終端與服務器之間、終端與終端之間組建無線通信網絡。服務器接收所有來自移動端和終端的數據,再按照設定好的方式發送給移動端和終端,同時對數據進行統一管理,并對重要的數據進行存儲,主要用于確保移動端與終端之間的正常通信。用戶可以通過移動端軟件對窗戶的開合狀態進行遠程控制[8-9]。
智能窗的關窗策略對于實現智能關窗而言是一項非常重要的內容。智能窗戶要想保證打開/關閉過程中的安全性和穩定性,就需要對直流電機的轉速進行控制。直流電機的轉速(n)可根據式(1)進行計算。
n=(U-IR)/Kφ
(1)
式中:U為電機輸入電壓;I為電機輸入電流;R為電路總電阻;K為電動機結構參數;φ為磁通量。
由式(1)可知,控制直流電機轉速的方法有兩種:一是控制勵磁磁通大小的勵磁控制法;二是控制直流電機輸入電壓的電壓控制法。本研究控制勵磁磁通不變,通過改變電機輸入電壓來調節直流電機的轉速[10]。
大部分直流電機采用開關控制電機的啟停,電機的控制開關可使半導體在開/關狀態下工作,其通過脈寬調制(pulse width modulation,PWM)技術控制電機端的電壓,從而控制電機的轉速[11]。電機兩端電壓(U0)可根據式(2)進行計算。
U0=t1Us/T=αUs
(2)
式中:Us為電源電壓;T為電壓的脈沖周期;t1為導通時間;α為占空比,是直流電機的通電時間與電壓脈沖周期的比值。控制Us不變,通過改變占空比的大小來調節電壓,從而控制電機的轉速。
基于STM32單片機對電機的轉速進行控制編程,并對電機的轉動圈數進行設定,以使電機轉動圈數達到一定值后,電機的轉速可直接降至零,從而確保智能窗打開/關閉過程中的安全性和穩定性。
為實現高端窗戶的智能化,應用了集中式管理分析和分散控制等理念。為進一步提高控制系統的精準度與效率,基于分布式控制結構體系,構建了由管理層、監控層、執行層等3層結構組成的智能窗控制系統硬件體系,如圖2所示。系統的硬件設計主要是針對執行層而言的。該智能窗控制系統以單片機為基礎,結合無線通信技術,使窗戶的智能化成為了可能。

圖2 智能窗控制系統硬件結構的示意圖Fig.2 Diagram of the hardware structure of intelligent window control system
以服務器為主的管理層通過LoRa無線網絡連接控制系統的監控層,接收從監控層傳來的數據和信息,并對產生的數據進行儲存、備份以及綜合分析等。管理層也可通過與其他網絡或系統連接從而實現設備的遠程管理。
為提高智能窗的響應速度和響應準確性,需要對窗戶所處的狀態進行實時監控。監控層通過LoRa無線網絡監視所有單元的信息,從而對窗戶的打開/關閉狀態以及整個過程進行監控,此外還對各個模塊的工作過程進行監控[12]。監控層通過LoRa無線網絡與管理層和執行層進行連接,窗戶狀態監控程序在傳送監控層信息的同時,電腦也可獲取執行層的實時數據,從而實現對各控制單元的控制與狀態監控以及歷史數據的存儲。
執行層是智能窗戶控制系統的基礎,由電源電路、電機驅動模塊、煙霧感應模塊、人體紅外感應模塊、無線雨水感應模塊、LoRa通信模塊部成。無線雨水感應模塊由雨水感應模塊與LoRa通信模塊組合而成;人體紅外感應模塊用于窗戶感應到人時實現手動模式的切換,從而提高人手動控制窗戶的優先級[13-14];煙霧感應模塊在感應到室內的可燃氣體或煙霧濃度達到限定值時,及時通過網關向控制終端發送信號,從而打開窗戶使室內具有良好的通風環境,以達到降低室內煙霧濃度的目的。上述控制終端與網關共同組建無線射頻LoRa網絡,采用星形組網的方式,實現終端與網關之間的信息交互。
使用MDK軟件對STM32 單片機進行一系列的編譯與調試。系統的軟件設計主要包括主程序、中斷程序和LoRa通信程序等3方面。
根據智能窗需要實現下雨關窗、煙霧開窗以及人體紅外感應開窗等功能的設計要求對主程序進行設計,流程圖如圖3所示。主程序具體工作過程:通電后先對I/O接口、串口、LoRa模塊進行初始化,為保證中斷任務的順利進行,設置中斷任務的優先級分組,并初始化外部中斷。初始化完成后程序進入主循環,此時程序會創建中斷任務、LoRa數據接收任務。上述步驟完成后,進入等待任務調度的程序。

圖3 主程序流程圖Fig.3 Flow diagram of main program
中斷程序即設置各功能的運行流程并劃分各功能運行時的優先等級。根據第3.3節硬件設計的要求,設定APP控制功能、煙霧感應功能、人體紅外感應功能、雨滴感應功能的優先級別。中斷功能的等級分為0~3級,其中零級的優先級最高,隨后依次遞減[15]。中斷任務的設置是為了保證系統運行的穩定性與安全性。中斷線及搶占優先級如表1所示。

表1 中斷線及搶占優先級Table 1 Interrupt line and preemption priority
由表1可知,APP控制中斷的搶占優先級最高,雨滴感應中斷的搶占優先級最低。中斷程序的運行是在主程序初始化之后,當接收到外部中斷信號時,程序先進入優先級最高的外部中斷函數并進行判斷,根據判斷結果選擇是否繼續執行后續的操作[16-18]。中斷程序的運行流程如圖4所示。

圖4 中斷程序運行流程圖Fig.4 Flow diagram of interrupt program operation
在設計通信程序之前,先設計LoRa 通信協議。通信協議即通信雙方可以進行數據傳輸的方式,在這種方式下數據中的每個字符都代表固定的含義,而通信雙方在這種協議方式下進行數據傳輸,可以快速、準確地知道數據的含義。LoRa通信協議的核心內容是數據域,其結構如表2所示。

表2 數據域結構Table 2 Data field structure
由表2可知,在該數據域中:主/從機目標地址和目標信道表示的是設備在LoRa網絡中的網絡標識,其中網關用0XFFB表示,控制終端用0X000-0XFFD表示;命令碼是指終端或者網關下達的命令,終端或網關在接收到命令碼時需要作出相應的響應;設備碼是設備出廠時就已經設置好的,是對硬件設備進行溯源的標識;數據類別表示的是數據的類型和數據的傳輸來源;有效數據是數據域中的核心數據,特別是Data數據段,其定義了相互傳輸的信息內容。
在通信協議設計后進行通信程序的設計,以終端向網關進行數據查詢的過程為例對LoRa通信程序進行介紹。當用戶在移動端手機APP上查詢窗戶的狀態時,網關會生成相應的申請報文,然后終端會將查詢的數據上傳至網關。終端向網關傳輸數據查詢流程如圖5所示。

圖5 數據查詢流程圖Fig.5 Data query flowchart
終端向網關傳輸查詢數據的相關核心代碼如下:
1:→if(Q_ flag=1) //檢驗發送標志位是否為1(網關查詢數據申請)
2:→end if
3:→fs_sj[i++]=(obj_dst>>8)&0xff;fs_sj[i++]=obj_dst&0xff;fs_sj[i++]=obj_dch;fs_sj[i++]=(src_dst)&0xff;fs_sj[i++]=src_dst&0xff;fs_sj[i]=src_dch;
3:→for(i=0;i<8;i++)
4:→fs_sj[6+i]=add[i]; //將目標/源地址、信道、設備號插入發送數據前
5:→i=i+8; //移位
6:→fs_sj[i++]=0x0f; fs_sj[i++]= 0x0f;fs_sj[i]=sen_data_len; //將數據類別和有效數據長度插入發送數據前
7:→for(i=0;i< sen_data_len;i++)
8:→fs_sj[i+20]= sen_data [i]; //補充需要查詢的窗體狀態數據
9:→for(i=0;i< sen_data_len+20;i++)
10:→usart_sd(fs_sj[i]); //將數據發送出去
11:→ end for
12:→ end for
13:→end for
14:Return Q_ flag
針對智能窗產品大多存在系統不完善、功能單一的問題,設計了基于STM32單片機的智能窗控制系統,主要對系統的軟硬件進行設計,還對智能窗的關窗策略進行了研究,為智能窗平穩、安全的開窗打下了基礎。從功能上看,所設計的智能窗控制系統,可實現下雨時自動關窗、室內煙霧濃度超標時自動開窗通風、人為控制窗戶的優先級高于感應控制的功能。將雨水感應器與LoRa通信模塊相結合,并與控制終端共同組建LoRa無線網絡。通過WiFi無線傳輸技術,實現無線雨水感應終端通過LoRa網絡控制一定區域內的多個終端,大幅降低了安裝成本和維修成本。從現有產品來看,與安裝開窗器的窗戶相比,智能窗戶控制系統實現了對窗戶的多重智能化控制,可滿足用戶對窗戶智能化的要求,提高智能窗戶的安全性和運行系統的穩定性。該系統控制靈活、數據傳輸穩定且實時性較好,具有廣泛的應用場景。