曹夢龍,鄒云東
(青島科技大學自動化與電子工程學院,山東青島 266042)
隨著計算機、網絡和微電子技術的飛速發展以及人們生活水平的提高,人們開始追求高質量的生活方式,物聯網、智能家居開始成為人們研究的熱點。智能家居是指利用先進的計算機網絡通信技術、嵌入式技術和傳感器技術與家居生活有關的各種子系統,有機地結合在一起,通過統籌管理,使家居生活更加舒適和安全[1]。
家庭網關的主要功能是通過Internet或者GSM網絡等外網連接家庭本地網絡和遠程控制終端,使用戶可以通過外網對家庭本地網絡進行遠程監控。目前家庭網關的設計大多為基于PC的方案和基于單片機的方案。基于PC方案的網關不僅靈活性差,不能滿足人們對家居現場的實時監控,而且成本較高,不便于智能家居的推廣。而以單片機為控制核心的家庭網關設計,由于單片機軟件資源有限,給系統的升級、維護及調試帶來極大的困難[1]。參考文獻[2],以 ARM Cortex-M3為平臺,實現了基于μC/OS-Ⅱ的小型 TCP/IP 協議棧的網關[2],實現了家庭內網與外網的鏈接。但是這種小型的TCP/IP協議棧傳輸功能有限,只能進行簡單的數據傳輸,不能完成視頻監控等任務。μC/OS-Ⅱ操作系統是一個基于優先級的實施操作系統,只支持多任務,而不支持多線程。而智能家居中需要多個節點的并行控制,因此需要多進程的編程,所以它并不適合智能家居的控制。
綜合以上考慮,本文采用ARM9 S3C2440處理器作為硬件平臺,并移植Linux操作系統,然后在其上搭建boa Web服務器,實現智能家居網關的設計。
智能家居系統一般分為本地控制終端、家庭本地網絡、家庭網關、遠程控制終端四部分。家庭本地網絡中各終端節點將采集到的數據傳給網關,經網關處理后發送給外網。用戶可以通過智能手機、計算機等遠程控制終端實現對家庭本地網絡的監控。
本文設計的智能家居網關硬件結構如圖1所示。其中家庭網關包括控制器 S3C2440、DM9000AE網卡、SIM300手機模組。控制器使用的S3C2440是三星公司開發的一款基于ARM920T內核和0.13 μm CMOS工藝的32位RISC微處理器,最高主頻為400 MHz,低成本、低功耗,能夠滿足智能家居的控制要求。網卡是設備連接互聯網的必備芯片,本文選用的網卡為DM9000AE。SIM300手機模組將重要的報警信息,以短信的形式發送給用戶手機。用戶也可以通過發送短信控制家庭本地網絡中各個設備,其與控制器通過串口相連。

圖1 智能家居硬件結構
DM9000AE與S3C2440芯片的連接電路圖如圖2所示。DM9000AE是16位總線寬度,連接在 S3C2440的bank2上,DM9000AE的第32腳CMD用來指示當前數據總線Index端口還是Data端口,地址線A1接到此引腳,以區分讀寫的是命令/地址還是數據。DM9000AE的Index端口的地址是0x10000000,Data端口的地址是0x10000002。驅動程序中只以兩個物理地址訪問DM9000AE。網卡使用中斷EINT2。

圖2 DM9000與S3C2440連接電路圖
本文采用免費、開源的Linux作為ARM9 S3C2440平臺的操作系統,它的內核可裁剪,易于移植,占用資源小,并支持多進程,能夠滿足本文網關的設計要求,并適于智能家居系統的整體控制。本文的網關要實現的通信功能具體有兩個:家庭本地網絡與Internet網絡的通信;家庭本地網絡與GSM手機網絡的通信。
本文設計實現了一種通過瀏覽器瀏覽網頁進行智能家居遠程監控的控制方法。這種B/S(瀏覽器/服務器)模式,省去了C/S(客戶端/服務器)模式中客戶端軟件的設計,節省了客戶端軟件的設計開發和維護成本。同時與C/S模式相比,更方便用戶對家居進行控制,用戶可以在任意能上網的計算機或者手機上對家居進行監控,而不需要安裝控制軟件。
如圖3所示,用戶通過計算機或者手機瀏覽器訪問相應的HTML格式的網頁,通過Javascript腳本程序將控制命令傳遞給家庭內網S3C2440芯片上運行的boa服務器,boa服務器通過CGI程序對家庭內網中的各硬件設施進行控制。

圖3 Internet通信原理
由于嵌入式設備的資源有限,并且不需要能同時處理很多用戶的請求,因此本文沒有選用Apache等大型的服務器,而是選擇了boa服務器。boa服務器占用資源很小,可執行代碼只有約60 k,是一個專門為嵌入式設備設計的Web服務器。它能很好地支持CGI程序。boa的設計目標是速度和安全,在服務器站點公布的性能測試中,boa的性能要好于Apache服務器。而且,boa服務器為開源的免費軟件,更節省了成本。
本文設計中,網頁采用HTML語言編寫。HTML語言即超文本標記語言,它通過標記符號來標記要顯示網頁中的各個部分,它的主要功能就是顯示。Javascript是HTML網頁中的腳本語言,它是一種基于對象和事件驅動并具有相對安全性的客戶端腳本語言。CGI是“公共網關接口”(Common Gateway Interface)的簡稱,它運行在服務器上,是服務器與系統中其他程序的橋梁。服務器接收到瀏覽器的請求后,通過CGI程序獲得家庭本地網絡的狀態信息,再轉發給瀏覽器網頁或者對家居進行控制。
本文設計中使用的Javascript腳本語言中的AJAX,即Javascript及XML。可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。但是編寫常規的AJAX代碼并不容易,因為不同的瀏覽器對AJAX的實現并不相同。這意味必須編寫額外的代碼對瀏覽器進行測試。為了解決這個問題,本文中使用了jQuery。jQuery是一個寫得少,但做得多的輕量級Javascript庫。
本設計中通過jQuery AJAX從家庭內網獲得溫度的Javascript腳本程序如下:


對于一些重要的報警信息(如防火報警、防盜報警),只是通過Internet發送給用戶,用戶將不能及時地接收到報警信息。在部分場合,用戶不能或者不方便使用Internet上網,這時用戶將不能通過Internet對家居進行監控。因此本文設計加入了手機短信的監控方式。當家庭本地網絡產生報警信息時,可以通過手機模組向用戶手機發送報警短信。用戶也可以發送相應的短信對家居進行監控。因為只是使用了手機的短信功能,GSM網絡完全可以實現本系統功能并且成本更低,因此本系統沒有選用3G或者4G網絡。
手機通信程序結構如圖4所示。main主程序創建gprsThread進程。經手機模塊初始化和串口初始化后,進程進入while(1)循環,循環檢測紅外、煙霧報警信息和從串口讀取短信控制命令。當檢測到報警信息后,通過串口給手機模組發送命令,給用戶發送報警信息。

圖4 手機通信程序結構圖
當從串口中讀取到“+CMTI:"SM",1”時,說明GPRS模塊收到了短信。這時給GPRS模塊發送短信讀取命令“AT+CMGR=1”。在串口中可以讀取到如下形式的數據“+CMGR:"REC UNREAD","+861515420****","13104122,10:57:50+32"CONTROL_LAMP ON”。上述字符串中“CONTROL_LAMP ON”為控制命令,將電燈打開。通過處理上述字符串,將控制命令解析出來,即可控制家庭內網中的電器。
將本系統通過固定 IP(211.64.219.***)接入 Internet,在室溫16℃,濕度70%環境下測試。本文設計的網關能夠實現家庭本地網絡與外網的通信。通過瀏覽器,能夠接收家庭本地網絡的狀態信息,也可以向家庭本地網絡發送控制信息,實現家居的遠程控制。用戶可以通過手機短信對家居進行監控。瀏覽器訪問的監控網頁如圖5所示。通過網頁打開電燈和熱水器開關后,實現了對電燈和熱水器的遠程開關控制。獲取溫度16.5℃,濕度70.6%。發送的短信控制命令和控制結果如表2所示。

圖5 智能家居控制網頁(截圖)

表2 短信控制結果
本文設計了一種基于Internet和GSM的智能家居網關,在S3C2440為控制器的硬件平臺上移植嵌入式Linux操作系統,結合手機模組SIM300,實現了家庭內網與Internet網絡和GSM網絡的通信。該網關設計成本低、性能高,在智能家居領域將會有很高的應用價值。另外在酒店管理、醫療自動化等需要局域網通信的領域也有很廣闊的應用前景。
:
[1]趙勇.基于ARM和ZigBee的智能家居遠程監控系統設計[J].測控技術,2012,31(11):52-59.
[2]張毅,馬鈞元,楊校權.基于Cortex和ZigBee的智能家居網關設計與實現[J].電視技術,2012,36(1):56-58.
[3]朱恒軍,張志華,于泓博,等.GSM短信預警的智能家居服務系統設計[J].東北石油大學學報,2012,36(4):79-84.
[4]劉治國,陳新華.基于Linux和Qt的智能家居系統的設計與實現[J].電子技術應用,2012,38(4):23-26.
[5]南春輝,李博,武穎.基于Web技術的嵌入式智能家居系統設計[J].電視技術,2013,37(3):86-92.
[6]張慶海.基于無線通信網絡融合的智能家居系統研究[J].電視技術,2013,37(4):92-95.
[7]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
[8]MATTHEW N,STONES R,陳建,等.Linux程序設計[M].北京:人民郵電出版社,2012.