袁曉磊,彭 鋼,馬 瑞,張福東,李帥華,李劍鋒
(國網河北省電力公司電力科學研究院,石家莊 050021)
家居的智能化技術[1-2]涉及到現代信息、網絡、通信、計算機、自動控制等多項技術[3-6]。以下提出的智能家居系統是以ARM-Linux嵌入式架構為核心主機[7-9],對下通過無線射頻網絡或RS485網絡與各家居子系統通信,實現設備控制和報警信息的采集;對上通過Internet網絡或GPRS短信接收來自用戶智能手機或平板電腦上運行的終端軟件所發出的控制指令,上傳報警信息,從而全面實現智能家居的燈光控制、家電控制、情景模式、安防報警等各項功能。在軟件實現上,基于Linux多任務操作系統在一個進程中多個線程并發運行,按照功能劃分的不同,每個線程實現一種特定功能;線程間通過全局變量數組傳遞信息,通過互斥(Mutex)保護共享數據的完整性,實現了軟件功能的模塊化以及軟件運行的高效性和實時性。
智能家居主機共使用了3個CPU,主CPU采用基于ARM核的AT91SAM9263,運行Linux 2.6.3操作系統;2個從CPU都采用PIC16F1829。
主CPU具有片上的以太網控制器和多個異步串行口,通過以太網口接收來自Internet的用戶控制指令;通過串口COM1將用戶的控制指令發給設備控制從CPU,進而通過射頻網絡(如433 MHz)將控制命令傳給各智能控制單元(智能插座、智能開關、智能電動窗簾、智能電動開窗器等);通過串口COM2與安防系統的從CPU通信,以接收來自射頻網絡(如315 MHz)的安防報警信息(門磁、紅外、煙感、煤氣泄露等);通過COM3口與GPRS模塊通信,向用戶手機發送安防報警短信或安防照相機拍照彩信,同時接收設備控制短信;通過COM4口與安防照相機通信,實現短信召喚拍照功能。智能家居主機系統架構如圖1所示。

圖1 智能家居主機系統架構
基于以上ARM主CPU架構,在Linux多任務操作系統上開發了智能家居控制軟件進程,采用多線程并發運行方式,共創建了5個線程:主線程(起始線程/433 MHz射頻控制命令發送)、433 MHz射頻設備狀態接收線程、315 MHz射頻安防報警接收線程、UDP控制命令接收/設備狀態更新線程、安防報警/短信控制線程。各線程通過進程中定義的int型全局數組變量交換數據,數組劃分為3個不同的數據區:控制命令區、設備狀態區、安防報警狀態區,從而實現控制命令的下傳和報警信息向用戶終端(智能手機或平板電腦)的上傳。Linux控制進程多線程軟件架構如圖2所示。

圖2 Linux控制進程多線程軟件架構
主線程是初始線程,由它完成所有硬件的初始化(包括COM1、COM2、COM3、COM4 4個串行口設置,UDP Socket的設置)、共享全局變量的初始化(包括控制命令區、設備狀態區、安防報警狀態區),然后創建其它4個線程,最后進入主循環,負責通過433 MHz無線射頻網絡向智能控制單元(如智能插座、智能開關、智能開窗通風設備等)發送控制指令,其軟件控制流程如圖3所示。
設備狀態接收線程不斷監視并讀取COM1口的串口輸入緩沖區,如果有正確的數據幀,進行解析,并將各設備狀態(如燈的開關狀態、智能插座的通斷狀態等)存入共享全局變量數組的設備狀態區,供UDP狀態上報線程讀取并發往用戶終端。線程的軟件流程如圖4所示。
安防報警狀態接收線程不斷監視并讀取COM2口的串口輸入緩沖區,如果有正確的數據幀,進行解析,并將各安防報警狀態(如門磁、紅外、煙感、燃氣泄露等)存入共享全局變量數組的安防報警狀態區,供UDP狀態上報線程讀取并發往用戶終端。線程的軟件流程如圖5所示。

圖3 主線程軟件控制流程

圖4 433 MHz射頻設備狀態接收線程軟件流程
UDP控制命令接收線程不斷監視并讀取UDP Socket的輸入緩沖區,如果有正確的數據幀,進行解析,并將控制命令存入共享全局變量數組的控制命令區,供主線程讀取并通過433 MHz射頻對各類家居設備實施控制;另外,每隔固定間隔,通過UDP Socket寫入設備狀態幀,由遠方智能終端接收后完成用戶界面設備狀態的更新。線程的軟件流程如圖6所示。

圖5 315 MHz射頻安防報警接收線程軟件流程

圖6 UDP控制命令接收/設備狀態更新線程軟件流程
安防報警/短信控制線程定時讀取共享全局變量數組的安防報警狀態區,并通過GPRS調制解調模塊SIM900短信發往用戶智能終端;同時,該線程也讀取來自用戶終端的短信命令,寫入公共內存的命令區,供主線程讀取、執行,如用戶命令為彩信拍照,則通過COM4口啟動安防照相機拍照,將圖像數據通過SIM900以彩信的方式發往用戶手機。線程的軟件流程如圖7所示。

圖7 安防報警/短信控制線程軟件流程
在控制進程中,多個線程有可能并發訪問共享數據區,為了保護數據的完整性,采用了互斥(Mutex)機制保證同時只能有一個線程對共享數據區進行讀寫操作。
在進程中使用了靜態分配的互斥量,其定義及初始化代碼如下:

在各線程中,訪問共享數據前,首先調用pthread_mutex_lock函數,對互斥量加鎖,然后再對共享數據進行訪問,訪問結束,調用pthread_mutex_unlock函數,對互斥量解鎖,其它線程才可對共享區訪問,保證數據的完整性。
共享區訪問代碼如下:


該軟件結構構成的核心主機,配套相應的智能家居外圍設備,已在石家莊某樓盤實施應用。實施規模為60套房(2個單元,每個單元30套),每套房安裝智能開關、智能插座等433 MHz射頻控制設備和門磁、紅外、煙氣、煤氣等315 MHz射頻安防報警模塊,每戶安裝安防彩信照相機一部,每戶配主機一部,通過路由器接入Internet。
為了測試運行效果,在主機上運行了測試程序用于統計設備控制、短信報警、彩信報警的成功率(對于設備控制,收到被控設備反饋為成功,否則為失敗;對于安防報警,報警信息發出后收到用戶終端反饋為成功,否則為失敗)。經過1年的運行,合并各主機的統計結果,得出數據如下:設備控制成功率>99.5%;短信報警成功率>99.6%;彩信報警成功率>99.1%。
由此可見,智能家居系統在該小區實際應用中運行穩定,設備控制、安防報警成功率高于99%,設備運行可靠。
智能家居控制軟件基于ARM-Linux構架,充分利用了操作系統的多任務能力,采用多線程并發運行方式,充分利用了CPU硬件資源,軟件運行效率更高,對用戶命令的響應以及狀態更新更加實時。Mutex機制保證了線程間共享數據的完整性,系統軟件運行穩定可靠。與當前智能家居、安防同類產品相比,該軟件構架有以下優點:
a.軟件構架在開發階段采用了統一可復用結構[10],無縫融合了包括射頻網絡、串口網絡、以太網在內的各種不同網絡;軟件采用模塊化結構,擴展性強,不同線程負責不同功能,不同設備的通信代碼按相同標準編寫成庫函數,可重復調用,設備信息、狀態信息在公共內存區以關系數據庫形式存在,為用戶終端的客戶端界面進行自由設備組態打下了堅實基礎。
b.基于多線程的并發運行機制,使用一個SIM卡完成了短信報警、短信控制、彩信報警等多種功能,減少了電信資費,為用戶提供了方便。
c.該軟件結構在智能家居控制的實際應用中,性能穩定、功能可靠、擴展性強。
[1] 周 洪,胡文山,張立明,等.智能家居控制系統[M].北京:中國電力出版社,2006.
[2] 馬鴻雁,張少軍,張瓊霖.無線網絡的智能家居中的應用[J].北京建筑工程學院學報,2004,20(4):31-35.
[3] 焦尚彬,宋 丹,張 青,等.基于ZigBee無線傳感器網絡的煤礦監測系統[J].電子測量與儀器學報,2013,27(5):436-442.
[4] 李 源,祁 欣.基于GPRS的地表水遠程在線監測系統研究[J].電子測量技術,2013,36(12):118-122,128.
[5] 周 偉,石為人,張洪德,等.無線傳感器網絡的分布式目標跟蹤研究[J].儀器儀表學報,2013,34(7):1485-1491.
[6] 孫 偉,王建平,穆道明,等.基于服務質量的無線傳感器網絡MAC協議模型研究[J].電子測量與儀器學報,2013,27(4):372-380.
[7] 林 濤,耿 壯.多線程技術在嵌入式數據采集系統中的應用[J].自動化博覽,2006,23(1):49-50.
[8] 田 澤.嵌入式系統開發與應用教程[M].北京:北京航空航天大學出版,2005.
[9] 馬春鳴.基于ARM處理器的嵌入式系統實現[M].北京:北京郵電大學,2005.
[10] 胡 婷,于成銘.基于平臺化的數據采集分析系統的設計與實現[J].國外電子測量技術2013,32(12):87-90.