李 俊 峰
(安陽師范學院軟件學院 河南 安陽 455000)
在冬季,中南部沒有集中供暖的屋內非常寒冷。為了取暖,人們想了各種辦法。其中,利用燃氣壁掛爐取暖,受到了很多家庭的青睞[1]。燃氣壁掛爐可以單戶安裝,能對本戶進行冬季供暖和熱水洗浴。使用燃氣壁掛爐供暖具有方便、快捷、舒適性比較高、節能環保等優點[2-3]。為了實現對室溫的控制,需要遠程控制壁掛爐的開關和能隨時查看室內的溫度;由于燃氣壁掛爐在冬季經常開著,需要監控天然氣是否會出現泄露和燃燒不完全的一氧化碳氣體會否倒灌到室內。現階段對于智能監控系統研究的很多,文獻[3-4]等都研究了遠程監控系統,但是與燃氣壁掛爐相結合的遠程監控系統卻很難找到。
為了解決這些問題,本文把遠程監控系統和燃氣壁掛爐結合起來,開發了基于Android的燃氣壁掛爐監控系統。該系統功能有:遠程打開或關閉燃氣壁掛爐;隨時查看室內的溫度;隨時查看室內的危險氣體是否超標;當室內危險氣體超標時會自動關閉燃氣壁掛爐。
本系統由硬件系統和軟件系統兩部分組成。硬件部分是由協調器、控制燃氣壁掛爐電源的智能開關、溫濕度傳感器和空氣傳感器組成的ZigBee無線傳感網絡[4-5];軟件系統由用來存儲監控數據的Yeelink云平臺和Android手機端APP組成。系統總體設計如圖1所示。傳感器節點和智能開關加入ZigBee無線網絡,溫濕度和空氣質量等參數通過ZigBee無線網絡匯集到協調器。由于需要把數據上傳到網絡Yeelink云平臺,需要實現協調器的聯網,于是在協調器上額外接了一個W5500模塊,這樣,協調器就成為TCP客戶端連接以太網內的主機,將終端節點發來的數據通過W5500上傳給Yeelink云平臺。Android手機上的APP就可以隨時通過云平臺遠程監控和操作燃氣壁掛爐。

圖1 總體設計圖
本系統的協調器是由TI公司ZigBee SOC CC2530芯片為核心進行設計的。它結合了領先的RF收發器、業界標準的增強型8051 CPU內核,并集成了ZigBee射頻發射系統,TI公司為其制定了完備的軟件協議棧z-stack。由于本系統的傳感器節點比較少,并且距離不遠,因此ZigBee網絡采用星型網絡進行布局。
在對燃氣壁掛爐設置完成后,只要接通燃氣和電源就會自動開啟加熱,而關閉電源就會自動關閉壁掛爐。因此,為了實現對燃氣壁掛爐進行控制,需要設置一個智能電源開關,通過智能開關接收到的信息,來打開燃氣壁掛爐或者關閉燃氣壁掛爐。
智能開關主要通過一個繼電器控制電路來實現控制交流電回路的連通或者斷開。繼電器型號采用HRS3FNH-S-DC 5 V,最大可承受AC 250 V的電壓,額定電流最大為10 A,能滿足家用燃氣壁掛爐的功率要求。用三極管驅動繼電器的吸合與關閉,并聯在線圈兩端的二極管能為感性線圈提供泄放回路,提高電路安全性,延長繼電器使用壽命,其輸入端接CC2530的P0.1引腳。
本系統主要監控室內的溫度,防止燃氣泄漏以及防止燃燒后排出的氣體倒灌回室內,因此需要溫度傳感器和空氣傳感器。
溫度傳感器選用精度較高的DHT22溫濕度傳感器,可以通過單總線直接和CC2530相連接。
空氣傳感器采用TGS2600空氣傳感器,該傳感器是由日本FIGARO公司開發生產的一種新型半導體氣體傳感器,能夠非常靈敏地檢測到空氣中的低濃度污染物,對H2、CO和CH4等有較高的檢測敏感度。TGS2600與CC2530的A/D轉換接口P0.6相連接。
空氣傳感器和溫濕度傳感器信號的采集、處理和對繼電器開關的控制都是由CC2530內部集成的8051控制器來完成的,而ZigBee網絡之間數據的傳輸由CC2530內部集成的RF收發器來完成的。
協調器主要負責ZigBee網絡的發起、配置參數的設定、網絡信息的管理及維護功能[6]。協調器部件主要由CC2530芯片作為主控芯片,RF前端芯片選用TI公司的集成度很高的射頻前端芯片CC2591。通過協調器,可以主動和其他終端結點組成一個ZigBee網絡。協調器能收集這些終端結點的刷新數據,也可以將執行命令通過ZigBee網絡傳遞給相應終端。
由于需要將協調器收集到的數據傳遞到云端,而CC2530芯片無法實現對互聯網的連接,只能通過串口將收集到的數據傳出去。這樣就需要一個聯網設備。W5500是WIZnet公司推出的一款在硬件上實現了TCP/IP協議的以太網芯片,通過該芯片無需其他設備進行數據轉換就可以作為網關直接連接互聯網。CC2530實質上是一款MCU(微控制單元),而W5500可以通過SPI接口與MCU進行通信。CC2530片上有兩個SPI接口,我們可以選擇其中一個作為W5500的控制接口。
本系統通過Android手機APP發送命令給Yeelink云服務器;云服務器將接收到的命令發送給室內的網關W5500;W5500對接收到的控制命令進行解析和處理,然后將處理的結果發送給協調器模塊;協調器通過ZigBee網絡將命令發送給相應的終端結點;終端結點接到命令后進行響應,從而實現Android手機監控室內環境并實現對燃氣壁掛爐的開關控制。數據傳輸如下:各個傳感節點將數據通過ZigBee網絡傳輸給協調器,協調器對數據進行處理,若超出,就將控制信息傳遞給智能開關終端,從而控制控制開關的閉合或者打開。在判斷數據的同時,協調器把數據通過網關W5500,上傳到互聯網上的云服務器存儲起來,最后在Android手機請求數據時,將數據傳遞給APP。終端結點的控制圖和數據流圖如圖2所示。

圖2 終端結點的控制圖和數據流圖
系統的軟件設置主要包括ZigBee終端節點設置、協調器設置、網關設置、云端設置和Android手機客戶端設置幾部分。
協調器模塊是ZigBee網絡的主要控制器,主要負責網絡的建立、維護和數據的中轉[7]。還可以通過公司為CC2530提供的ZStack協議棧控制ZigBee網絡。
(1) 對網關W5500的處理 在該協議棧中,需要先將W5500的驅動程序包添加到CC2530的例程中,去掉“LCD_SUPPORTED”,并添加“HAL_LCD=FALSE”,這樣能避免與LCD驅動發生沖突,導致SPI不可用。將W5500的初始化和相關配置函數放在應用層的任務里面執行,當系統運行起來后,系統會每隔一段時間就要對W5500的網絡狀態進行一次輪詢處理,該處理放在應用層sapi.c文件中的ZB_USER_EVENTS函數中。Sapi.c文件中定義了節點組網和入網的應用函數。該文件里初始化了SAPI 任務,在這個任務中定義了ZB_ENTRY_EVENT和ZB_USER_EVENTS兩個事件,ZB_ENTRY_EVENT僅僅運行一次,用來定義設備的類型(協調器或終端節點),ZB_USER_EVENTS處理用戶事件,會運行多次。
該配置函數能啟動TCP客戶端程序,用來維護W5500設備與云服務器的連接,使得W5500在插上網線后能夠及時連上Intent云服務器。
(2) 溫濕度傳感器和氣體傳感器的設計 數據的采集需要在協調器的應用層添加定時采集函數,協調器定時給相關傳感器終端結點發送采集命令。本系統采用DHT22溫濕度傳感器采集室內的溫度數據,當終端節點接收到采集命令時進行采集,并將采集結果通過ZigBee網絡上報給協調器進行處理。采用TGS2600空氣傳感器采集燃氣壁掛爐附近的氣體信息,當終端結點接收到采集命令時候進行采集,并將采集到的數據通過ZigBee網絡上傳給協調器進行判斷處理。
(3) 協議棧中對燃氣壁掛爐的智能開關控制邏輯 在協調器接收到終端結點發送的數據后,在通過網關上傳到云端服務器的同時,需要在協議棧中數據進行判斷處理。首先通過APP設置室內溫度,通過氣體傳感器取得有害氣體濃度并判斷是否達到預警值,當達到預警值時需要對燃氣壁掛爐開關進行控制。
在對燃氣壁掛爐的控制上,本系統在運行時候主要分為手動模式和自動模式。手動模式就是不管室溫如何,只能用手動(或通過操作Android手機中的相應APP)來開關壁掛爐。自動模式則是通過程序判斷,當溫度達到某一值時候自動通過智能開關打開或者關閉燃氣壁掛爐,達到節省資源的目的。當氣體濃度達到某一危險值時候,會將模式自動切換為手動模式并關閉燃氣壁掛爐。具體的程序流程圖如圖3所示。

圖3 協調器對智能開關的控制圖
本文使用Yeelink云服務器作為整個系統連接家庭網關和手機APP的紐帶,根據命令實現對整個系統的數據的傳輸[8-9]。Yeeklink是一個開放的公共物聯網接入平臺,能使傳感器數據的接入、存儲和展現變得輕松簡單。使用該平臺,需要首先注冊一個賬號(APP KEY),作為不同用戶連接設備的唯一標識;接著將系統用到的傳感器通過“添加新設備”的方式,添加到Yeeklink平臺上;然后下載yeelink SDK,用自己注冊的APP KEY和設備的信息替換掉原來的默認信息。這樣就完成了云服務器傳感器的連接。
通過Android客戶端我們能時刻關注家里溫度情況和燃氣壁掛爐的工作情況,還可以通過Android客戶端實現對燃氣壁掛爐的控制。由于訪問網絡是一個耗時操作,需要開啟一個子線程,在子線程中創建基于TCP/IP協議的Socket輸入輸出流,用來接收和發送網絡數據。子線程中得到的數據,不能直接顯示到頁面上,需要通過handler消息機制,將接收到的數據發送到主線程并顯示到主頁面中。
頁面主要用到:TextView控件,用文本顯示接收到的數據內容;Switch控件,用來設置手動模式或自動模式,還用來控制壁掛爐的開關狀態;EditText控件和Button控件,用來設置室內的溫度; LineChartView控件,這是個第三方控件,利用圖表的形式直觀地呈現一段時間室內的溫度情況。
當操作Switch控件和Button控件的時候,需要在主線程中設置事件監聽器。當監聽到控件狀態改變的時候,觸發聯網子線程,通過網絡將相應的命令發送給云服務器。
測試系統硬件由2個溫度傳感器節點,分別放置在一個臥室和客廳、1個空氣傳感器節點、一個智能開關節點、一個協調器模塊和一個Android手機組成。
在測試中,主要測試溫度數據的采集、有害氣體超標的響應和手機對智能開關的控制。設置家里溫度為18 ℃,利用自動模式進行測試。在2個溫度傳感器節點附近放置兩個家用溫度計同時測試并記錄測試結果。由于用了兩個溫度傳感器節點,顯示的溫度是兩個溫度傳感器的均值。
溫度計測試結果平均值和傳感器測試平均值實時溫度趨勢圖如圖4所示。其平均溫度誤差不超過0.2 ℃。

圖4 實時溫度平均值趨勢圖
由于太短時間內的室內溫度變化比較小,用圖顯示意義不大,因此,將每半個小時的平均氣溫進行比較,結果如圖5所示。

圖5 燃氣壁掛爐狀態監控圖
為了測試在有害氣體濃度升高時候系統的有效性,將氣體打火機的氣體靠近氣體傳感器進行排放。隨著氣體的排放,智能開關關閉了燃氣壁掛爐的電源,壁掛爐停止了工作;在手機APP中,看到模式自動切換到了手動模式,可燃氣體濃度也變成了“危險”,壁掛爐模式變成了“手動”。具體如圖6所示,經測試,用手機APP能打開和關閉燃氣壁掛爐,能準確感應有害氣體并響應。

圖6 有害氣體升高后的狀態圖
測試結果表明:該系統基本完成了設計要求。能遠程實時監控室內溫度,監控溫度與實際溫度誤差不超過0.2 ℃,當有害氣體超標時候,能及時切斷燃氣壁掛爐電源。
本文設計了基于Android的燃氣壁掛爐監控系統。傳統壁掛爐系統的溫度設定、監控和有害氣體監控都是基于本地,不能遠程及時查看及管理。本系統能通過手機APP,實時監控和管理燃氣壁掛爐的狀態。測試結果表明,該系統安全經濟,穩定性高,人機界面簡潔直觀、實用性強。