李 俊 峰
(安陽師范學院軟件學院 河南 安陽 455000)
在冬季,中南部沒有集中供暖的屋內(nèi)非常寒冷。為了取暖,人們想了各種辦法。其中,利用燃氣壁掛爐取暖,受到了很多家庭的青睞[1]。燃氣壁掛爐可以單戶安裝,能對本戶進行冬季供暖和熱水洗浴。使用燃氣壁掛爐供暖具有方便、快捷、舒適性比較高、節(jié)能環(huán)保等優(yōu)點[2-3]。為了實現(xiàn)對室溫的控制,需要遠程控制壁掛爐的開關和能隨時查看室內(nèi)的溫度;由于燃氣壁掛爐在冬季經(jīng)常開著,需要監(jiān)控天然氣是否會出現(xiàn)泄露和燃燒不完全的一氧化碳氣體會否倒灌到室內(nèi)?,F(xiàn)階段對于智能監(jiān)控系統(tǒng)研究的很多,文獻[3-4]等都研究了遠程監(jiān)控系統(tǒng),但是與燃氣壁掛爐相結合的遠程監(jiān)控系統(tǒng)卻很難找到。
為了解決這些問題,本文把遠程監(jiān)控系統(tǒng)和燃氣壁掛爐結合起來,開發(fā)了基于Android的燃氣壁掛爐監(jiān)控系統(tǒng)。該系統(tǒng)功能有:遠程打開或關閉燃氣壁掛爐;隨時查看室內(nèi)的溫度;隨時查看室內(nèi)的危險氣體是否超標;當室內(nèi)危險氣體超標時會自動關閉燃氣壁掛爐。
本系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)兩部分組成。硬件部分是由協(xié)調(diào)器、控制燃氣壁掛爐電源的智能開關、溫濕度傳感器和空氣傳感器組成的ZigBee無線傳感網(wǎng)絡[4-5];軟件系統(tǒng)由用來存儲監(jiān)控數(shù)據(jù)的Yeelink云平臺和Android手機端APP組成。系統(tǒng)總體設計如圖1所示。傳感器節(jié)點和智能開關加入ZigBee無線網(wǎng)絡,溫濕度和空氣質量等參數(shù)通過ZigBee無線網(wǎng)絡匯集到協(xié)調(diào)器。由于需要把數(shù)據(jù)上傳到網(wǎng)絡Yeelink云平臺,需要實現(xiàn)協(xié)調(diào)器的聯(lián)網(wǎng),于是在協(xié)調(diào)器上額外接了一個W5500模塊,這樣,協(xié)調(diào)器就成為TCP客戶端連接以太網(wǎng)內(nèi)的主機,將終端節(jié)點發(fā)來的數(shù)據(jù)通過W5500上傳給Yeelink云平臺。Android手機上的APP就可以隨時通過云平臺遠程監(jiān)控和操作燃氣壁掛爐。
圖1 總體設計圖
本系統(tǒng)的協(xié)調(diào)器是由TI公司ZigBee SOC CC2530芯片為核心進行設計的。它結合了領先的RF收發(fā)器、業(yè)界標準的增強型8051 CPU內(nèi)核,并集成了ZigBee射頻發(fā)射系統(tǒng),TI公司為其制定了完備的軟件協(xié)議棧z-stack。由于本系統(tǒng)的傳感器節(jié)點比較少,并且距離不遠,因此ZigBee網(wǎng)絡采用星型網(wǎng)絡進行布局。
在對燃氣壁掛爐設置完成后,只要接通燃氣和電源就會自動開啟加熱,而關閉電源就會自動關閉壁掛爐。因此,為了實現(xiàn)對燃氣壁掛爐進行控制,需要設置一個智能電源開關,通過智能開關接收到的信息,來打開燃氣壁掛爐或者關閉燃氣壁掛爐。
智能開關主要通過一個繼電器控制電路來實現(xiàn)控制交流電回路的連通或者斷開。繼電器型號采用HRS3FNH-S-DC 5 V,最大可承受AC 250 V的電壓,額定電流最大為10 A,能滿足家用燃氣壁掛爐的功率要求。用三極管驅動繼電器的吸合與關閉,并聯(lián)在線圈兩端的二極管能為感性線圈提供泄放回路,提高電路安全性,延長繼電器使用壽命,其輸入端接CC2530的P0.1引腳。
本系統(tǒng)主要監(jiān)控室內(nèi)的溫度,防止燃氣泄漏以及防止燃燒后排出的氣體倒灌回室內(nèi),因此需要溫度傳感器和空氣傳感器。
溫度傳感器選用精度較高的DHT22溫濕度傳感器,可以通過單總線直接和CC2530相連接。
空氣傳感器采用TGS2600空氣傳感器,該傳感器是由日本FIGARO公司開發(fā)生產(chǎn)的一種新型半導體氣體傳感器,能夠非常靈敏地檢測到空氣中的低濃度污染物,對H2、CO和CH4等有較高的檢測敏感度。TGS2600與CC2530的A/D轉換接口P0.6相連接。
空氣傳感器和溫濕度傳感器信號的采集、處理和對繼電器開關的控制都是由CC2530內(nèi)部集成的8051控制器來完成的,而ZigBee網(wǎng)絡之間數(shù)據(jù)的傳輸由CC2530內(nèi)部集成的RF收發(fā)器來完成的。
協(xié)調(diào)器主要負責ZigBee網(wǎng)絡的發(fā)起、配置參數(shù)的設定、網(wǎng)絡信息的管理及維護功能[6]。協(xié)調(diào)器部件主要由CC2530芯片作為主控芯片,RF前端芯片選用TI公司的集成度很高的射頻前端芯片CC2591。通過協(xié)調(diào)器,可以主動和其他終端結點組成一個ZigBee網(wǎng)絡。協(xié)調(diào)器能收集這些終端結點的刷新數(shù)據(jù),也可以將執(zhí)行命令通過ZigBee網(wǎng)絡傳遞給相應終端。
由于需要將協(xié)調(diào)器收集到的數(shù)據(jù)傳遞到云端,而CC2530芯片無法實現(xiàn)對互聯(lián)網(wǎng)的連接,只能通過串口將收集到的數(shù)據(jù)傳出去。這樣就需要一個聯(lián)網(wǎng)設備。W5500是WIZnet公司推出的一款在硬件上實現(xiàn)了TCP/IP協(xié)議的以太網(wǎng)芯片,通過該芯片無需其他設備進行數(shù)據(jù)轉換就可以作為網(wǎng)關直接連接互聯(lián)網(wǎng)。CC2530實質上是一款MCU(微控制單元),而W5500可以通過SPI接口與MCU進行通信。CC2530片上有兩個SPI接口,我們可以選擇其中一個作為W5500的控制接口。
本系統(tǒng)通過Android手機APP發(fā)送命令給Yeelink云服務器;云服務器將接收到的命令發(fā)送給室內(nèi)的網(wǎng)關W5500;W5500對接收到的控制命令進行解析和處理,然后將處理的結果發(fā)送給協(xié)調(diào)器模塊;協(xié)調(diào)器通過ZigBee網(wǎng)絡將命令發(fā)送給相應的終端結點;終端結點接到命令后進行響應,從而實現(xiàn)Android手機監(jiān)控室內(nèi)環(huán)境并實現(xiàn)對燃氣壁掛爐的開關控制。數(shù)據(jù)傳輸如下:各個傳感節(jié)點將數(shù)據(jù)通過ZigBee網(wǎng)絡傳輸給協(xié)調(diào)器,協(xié)調(diào)器對數(shù)據(jù)進行處理,若超出,就將控制信息傳遞給智能開關終端,從而控制控制開關的閉合或者打開。在判斷數(shù)據(jù)的同時,協(xié)調(diào)器把數(shù)據(jù)通過網(wǎng)關W5500,上傳到互聯(lián)網(wǎng)上的云服務器存儲起來,最后在Android手機請求數(shù)據(jù)時,將數(shù)據(jù)傳遞給APP。終端結點的控制圖和數(shù)據(jù)流圖如圖2所示。
圖2 終端結點的控制圖和數(shù)據(jù)流圖
系統(tǒng)的軟件設置主要包括ZigBee終端節(jié)點設置、協(xié)調(diào)器設置、網(wǎng)關設置、云端設置和Android手機客戶端設置幾部分。
協(xié)調(diào)器模塊是ZigBee網(wǎng)絡的主要控制器,主要負責網(wǎng)絡的建立、維護和數(shù)據(jù)的中轉[7]。還可以通過公司為CC2530提供的ZStack協(xié)議棧控制ZigBee網(wǎng)絡。
(1) 對網(wǎng)關W5500的處理 在該協(xié)議棧中,需要先將W5500的驅動程序包添加到CC2530的例程中,去掉“LCD_SUPPORTED”,并添加“HAL_LCD=FALSE”,這樣能避免與LCD驅動發(fā)生沖突,導致SPI不可用。將W5500的初始化和相關配置函數(shù)放在應用層的任務里面執(zhí)行,當系統(tǒng)運行起來后,系統(tǒng)會每隔一段時間就要對W5500的網(wǎng)絡狀態(tài)進行一次輪詢處理,該處理放在應用層sapi.c文件中的ZB_USER_EVENTS函數(shù)中。Sapi.c文件中定義了節(jié)點組網(wǎng)和入網(wǎng)的應用函數(shù)。該文件里初始化了SAPI 任務,在這個任務中定義了ZB_ENTRY_EVENT和ZB_USER_EVENTS兩個事件,ZB_ENTRY_EVENT僅僅運行一次,用來定義設備的類型(協(xié)調(diào)器或終端節(jié)點),ZB_USER_EVENTS處理用戶事件,會運行多次。
該配置函數(shù)能啟動TCP客戶端程序,用來維護W5500設備與云服務器的連接,使得W5500在插上網(wǎng)線后能夠及時連上Intent云服務器。
(2) 溫濕度傳感器和氣體傳感器的設計 數(shù)據(jù)的采集需要在協(xié)調(diào)器的應用層添加定時采集函數(shù),協(xié)調(diào)器定時給相關傳感器終端結點發(fā)送采集命令。本系統(tǒng)采用DHT22溫濕度傳感器采集室內(nèi)的溫度數(shù)據(jù),當終端節(jié)點接收到采集命令時進行采集,并將采集結果通過ZigBee網(wǎng)絡上報給協(xié)調(diào)器進行處理。采用TGS2600空氣傳感器采集燃氣壁掛爐附近的氣體信息,當終端結點接收到采集命令時候進行采集,并將采集到的數(shù)據(jù)通過ZigBee網(wǎng)絡上傳給協(xié)調(diào)器進行判斷處理。
(3) 協(xié)議棧中對燃氣壁掛爐的智能開關控制邏輯 在協(xié)調(diào)器接收到終端結點發(fā)送的數(shù)據(jù)后,在通過網(wǎng)關上傳到云端服務器的同時,需要在協(xié)議棧中數(shù)據(jù)進行判斷處理。首先通過APP設置室內(nèi)溫度,通過氣體傳感器取得有害氣體濃度并判斷是否達到預警值,當達到預警值時需要對燃氣壁掛爐開關進行控制。
在對燃氣壁掛爐的控制上,本系統(tǒng)在運行時候主要分為手動模式和自動模式。手動模式就是不管室溫如何,只能用手動(或通過操作Android手機中的相應APP)來開關壁掛爐。自動模式則是通過程序判斷,當溫度達到某一值時候自動通過智能開關打開或者關閉燃氣壁掛爐,達到節(jié)省資源的目的。當氣體濃度達到某一危險值時候,會將模式自動切換為手動模式并關閉燃氣壁掛爐。具體的程序流程圖如圖3所示。
圖3 協(xié)調(diào)器對智能開關的控制圖
本文使用Yeelink云服務器作為整個系統(tǒng)連接家庭網(wǎng)關和手機APP的紐帶,根據(jù)命令實現(xiàn)對整個系統(tǒng)的數(shù)據(jù)的傳輸[8-9]。Yeeklink是一個開放的公共物聯(lián)網(wǎng)接入平臺,能使傳感器數(shù)據(jù)的接入、存儲和展現(xiàn)變得輕松簡單。使用該平臺,需要首先注冊一個賬號(APP KEY),作為不同用戶連接設備的唯一標識;接著將系統(tǒng)用到的傳感器通過“添加新設備”的方式,添加到Yeeklink平臺上;然后下載yeelink SDK,用自己注冊的APP KEY和設備的信息替換掉原來的默認信息。這樣就完成了云服務器傳感器的連接。
通過Android客戶端我們能時刻關注家里溫度情況和燃氣壁掛爐的工作情況,還可以通過Android客戶端實現(xiàn)對燃氣壁掛爐的控制。由于訪問網(wǎng)絡是一個耗時操作,需要開啟一個子線程,在子線程中創(chuàng)建基于TCP/IP協(xié)議的Socket輸入輸出流,用來接收和發(fā)送網(wǎng)絡數(shù)據(jù)。子線程中得到的數(shù)據(jù),不能直接顯示到頁面上,需要通過handler消息機制,將接收到的數(shù)據(jù)發(fā)送到主線程并顯示到主頁面中。
頁面主要用到:TextView控件,用文本顯示接收到的數(shù)據(jù)內(nèi)容;Switch控件,用來設置手動模式或自動模式,還用來控制壁掛爐的開關狀態(tài);EditText控件和Button控件,用來設置室內(nèi)的溫度; LineChartView控件,這是個第三方控件,利用圖表的形式直觀地呈現(xiàn)一段時間室內(nèi)的溫度情況。
當操作Switch控件和Button控件的時候,需要在主線程中設置事件監(jiān)聽器。當監(jiān)聽到控件狀態(tài)改變的時候,觸發(fā)聯(lián)網(wǎng)子線程,通過網(wǎng)絡將相應的命令發(fā)送給云服務器。
測試系統(tǒng)硬件由2個溫度傳感器節(jié)點,分別放置在一個臥室和客廳、1個空氣傳感器節(jié)點、一個智能開關節(jié)點、一個協(xié)調(diào)器模塊和一個Android手機組成。
在測試中,主要測試溫度數(shù)據(jù)的采集、有害氣體超標的響應和手機對智能開關的控制。設置家里溫度為18 ℃,利用自動模式進行測試。在2個溫度傳感器節(jié)點附近放置兩個家用溫度計同時測試并記錄測試結果。由于用了兩個溫度傳感器節(jié)點,顯示的溫度是兩個溫度傳感器的均值。
溫度計測試結果平均值和傳感器測試平均值實時溫度趨勢圖如圖4所示。其平均溫度誤差不超過0.2 ℃。
圖4 實時溫度平均值趨勢圖
由于太短時間內(nèi)的室內(nèi)溫度變化比較小,用圖顯示意義不大,因此,將每半個小時的平均氣溫進行比較,結果如圖5所示。
圖5 燃氣壁掛爐狀態(tài)監(jiān)控圖
為了測試在有害氣體濃度升高時候系統(tǒng)的有效性,將氣體打火機的氣體靠近氣體傳感器進行排放。隨著氣體的排放,智能開關關閉了燃氣壁掛爐的電源,壁掛爐停止了工作;在手機APP中,看到模式自動切換到了手動模式,可燃氣體濃度也變成了“危險”,壁掛爐模式變成了“手動”。具體如圖6所示,經(jīng)測試,用手機APP能打開和關閉燃氣壁掛爐,能準確感應有害氣體并響應。
圖6 有害氣體升高后的狀態(tài)圖
測試結果表明:該系統(tǒng)基本完成了設計要求。能遠程實時監(jiān)控室內(nèi)溫度,監(jiān)控溫度與實際溫度誤差不超過0.2 ℃,當有害氣體超標時候,能及時切斷燃氣壁掛爐電源。
本文設計了基于Android的燃氣壁掛爐監(jiān)控系統(tǒng)。傳統(tǒng)壁掛爐系統(tǒng)的溫度設定、監(jiān)控和有害氣體監(jiān)控都是基于本地,不能遠程及時查看及管理。本系統(tǒng)能通過手機APP,實時監(jiān)控和管理燃氣壁掛爐的狀態(tài)。測試結果表明,該系統(tǒng)安全經(jīng)濟,穩(wěn)定性高,人機界面簡潔直觀、實用性強。