袁曉磊,彭 鋼,馬 瑞,張福東,李帥華,李劍鋒
(國網(wǎng)河北省電力公司電力科學(xué)研究院,石家莊 050021)
家居的智能化技術(shù)[1-2]涉及到現(xiàn)代信息、網(wǎng)絡(luò)、通信、計(jì)算機(jī)、自動控制等多項(xiàng)技術(shù)[3-6]。以下提出的智能家居系統(tǒng)是以ARM-Linux嵌入式架構(gòu)為核心主機(jī)[7-9],對下通過無線射頻網(wǎng)絡(luò)或RS485網(wǎng)絡(luò)與各家居子系統(tǒng)通信,實(shí)現(xiàn)設(shè)備控制和報(bào)警信息的采集;對上通過Internet網(wǎng)絡(luò)或GPRS短信接收來自用戶智能手機(jī)或平板電腦上運(yùn)行的終端軟件所發(fā)出的控制指令,上傳報(bào)警信息,從而全面實(shí)現(xiàn)智能家居的燈光控制、家電控制、情景模式、安防報(bào)警等各項(xiàng)功能。在軟件實(shí)現(xiàn)上,基于Linux多任務(wù)操作系統(tǒng)在一個進(jìn)程中多個線程并發(fā)運(yùn)行,按照功能劃分的不同,每個線程實(shí)現(xiàn)一種特定功能;線程間通過全局變量數(shù)組傳遞信息,通過互斥(Mutex)保護(hù)共享數(shù)據(jù)的完整性,實(shí)現(xiàn)了軟件功能的模塊化以及軟件運(yùn)行的高效性和實(shí)時性。
智能家居主機(jī)共使用了3個CPU,主CPU采用基于ARM核的AT91SAM9263,運(yùn)行Linux 2.6.3操作系統(tǒng);2個從CPU都采用PIC16F1829。
主CPU具有片上的以太網(wǎng)控制器和多個異步串行口,通過以太網(wǎng)口接收來自Internet的用戶控制指令;通過串口COM1將用戶的控制指令發(fā)給設(shè)備控制從CPU,進(jìn)而通過射頻網(wǎng)絡(luò)(如433 MHz)將控制命令傳給各智能控制單元(智能插座、智能開關(guān)、智能電動窗簾、智能電動開窗器等);通過串口COM2與安防系統(tǒng)的從CPU通信,以接收來自射頻網(wǎng)絡(luò)(如315 MHz)的安防報(bào)警信息(門磁、紅外、煙感、煤氣泄露等);通過COM3口與GPRS模塊通信,向用戶手機(jī)發(fā)送安防報(bào)警短信或安防照相機(jī)拍照彩信,同時接收設(shè)備控制短信;通過COM4口與安防照相機(jī)通信,實(shí)現(xiàn)短信召喚拍照功能。智能家居主機(jī)系統(tǒng)架構(gòu)如圖1所示。
圖1 智能家居主機(jī)系統(tǒng)架構(gòu)
基于以上ARM主CPU架構(gòu),在Linux多任務(wù)操作系統(tǒng)上開發(fā)了智能家居控制軟件進(jìn)程,采用多線程并發(fā)運(yùn)行方式,共創(chuàng)建了5個線程:主線程(起始線程/433 MHz射頻控制命令發(fā)送)、433 MHz射頻設(shè)備狀態(tài)接收線程、315 MHz射頻安防報(bào)警接收線程、UDP控制命令接收/設(shè)備狀態(tài)更新線程、安防報(bào)警/短信控制線程。各線程通過進(jìn)程中定義的int型全局?jǐn)?shù)組變量交換數(shù)據(jù),數(shù)組劃分為3個不同的數(shù)據(jù)區(qū):控制命令區(qū)、設(shè)備狀態(tài)區(qū)、安防報(bào)警狀態(tài)區(qū),從而實(shí)現(xiàn)控制命令的下傳和報(bào)警信息向用戶終端(智能手機(jī)或平板電腦)的上傳。Linux控制進(jìn)程多線程軟件架構(gòu)如圖2所示。
圖2 Linux控制進(jìn)程多線程軟件架構(gòu)
主線程是初始線程,由它完成所有硬件的初始化(包括COM1、COM2、COM3、COM4 4個串行口設(shè)置,UDP Socket的設(shè)置)、共享全局變量的初始化(包括控制命令區(qū)、設(shè)備狀態(tài)區(qū)、安防報(bào)警狀態(tài)區(qū)),然后創(chuàng)建其它4個線程,最后進(jìn)入主循環(huán),負(fù)責(zé)通過433 MHz無線射頻網(wǎng)絡(luò)向智能控制單元(如智能插座、智能開關(guān)、智能開窗通風(fēng)設(shè)備等)發(fā)送控制指令,其軟件控制流程如圖3所示。
設(shè)備狀態(tài)接收線程不斷監(jiān)視并讀取COM1口的串口輸入緩沖區(qū),如果有正確的數(shù)據(jù)幀,進(jìn)行解析,并將各設(shè)備狀態(tài)(如燈的開關(guān)狀態(tài)、智能插座的通斷狀態(tài)等)存入共享全局變量數(shù)組的設(shè)備狀態(tài)區(qū),供UDP狀態(tài)上報(bào)線程讀取并發(fā)往用戶終端。線程的軟件流程如圖4所示。
安防報(bào)警狀態(tài)接收線程不斷監(jiān)視并讀取COM2口的串口輸入緩沖區(qū),如果有正確的數(shù)據(jù)幀,進(jìn)行解析,并將各安防報(bào)警狀態(tài)(如門磁、紅外、煙感、燃?xì)庑孤兜龋┐嫒牍蚕砣肿兞繑?shù)組的安防報(bào)警狀態(tài)區(qū),供UDP狀態(tài)上報(bào)線程讀取并發(fā)往用戶終端。線程的軟件流程如圖5所示。
圖3 主線程軟件控制流程
圖4 433 MHz射頻設(shè)備狀態(tài)接收線程軟件流程
UDP控制命令接收線程不斷監(jiān)視并讀取UDP Socket的輸入緩沖區(qū),如果有正確的數(shù)據(jù)幀,進(jìn)行解析,并將控制命令存入共享全局變量數(shù)組的控制命令區(qū),供主線程讀取并通過433 MHz射頻對各類家居設(shè)備實(shí)施控制;另外,每隔固定間隔,通過UDP Socket寫入設(shè)備狀態(tài)幀,由遠(yuǎn)方智能終端接收后完成用戶界面設(shè)備狀態(tài)的更新。線程的軟件流程如圖6所示。
圖5 315 MHz射頻安防報(bào)警接收線程軟件流程
圖6 UDP控制命令接收/設(shè)備狀態(tài)更新線程軟件流程
安防報(bào)警/短信控制線程定時讀取共享全局變量數(shù)組的安防報(bào)警狀態(tài)區(qū),并通過GPRS調(diào)制解調(diào)模塊SIM900短信發(fā)往用戶智能終端;同時,該線程也讀取來自用戶終端的短信命令,寫入公共內(nèi)存的命令區(qū),供主線程讀取、執(zhí)行,如用戶命令為彩信拍照,則通過COM4口啟動安防照相機(jī)拍照,將圖像數(shù)據(jù)通過SIM900以彩信的方式發(fā)往用戶手機(jī)。線程的軟件流程如圖7所示。
圖7 安防報(bào)警/短信控制線程軟件流程
在控制進(jìn)程中,多個線程有可能并發(fā)訪問共享數(shù)據(jù)區(qū),為了保護(hù)數(shù)據(jù)的完整性,采用了互斥(Mutex)機(jī)制保證同時只能有一個線程對共享數(shù)據(jù)區(qū)進(jìn)行讀寫操作。
在進(jìn)程中使用了靜態(tài)分配的互斥量,其定義及初始化代碼如下:
在各線程中,訪問共享數(shù)據(jù)前,首先調(diào)用pthread_mutex_lock函數(shù),對互斥量加鎖,然后再對共享數(shù)據(jù)進(jìn)行訪問,訪問結(jié)束,調(diào)用pthread_mutex_unlock函數(shù),對互斥量解鎖,其它線程才可對共享區(qū)訪問,保證數(shù)據(jù)的完整性。
共享區(qū)訪問代碼如下:
該軟件結(jié)構(gòu)構(gòu)成的核心主機(jī),配套相應(yīng)的智能家居外圍設(shè)備,已在石家莊某樓盤實(shí)施應(yīng)用。實(shí)施規(guī)模為60套房(2個單元,每個單元30套),每套房安裝智能開關(guān)、智能插座等433 MHz射頻控制設(shè)備和門磁、紅外、煙氣、煤氣等315 MHz射頻安防報(bào)警模塊,每戶安裝安防彩信照相機(jī)一部,每戶配主機(jī)一部,通過路由器接入Internet。
為了測試運(yùn)行效果,在主機(jī)上運(yùn)行了測試程序用于統(tǒng)計(jì)設(shè)備控制、短信報(bào)警、彩信報(bào)警的成功率(對于設(shè)備控制,收到被控設(shè)備反饋為成功,否則為失?。粚τ诎卜缊?bào)警,報(bào)警信息發(fā)出后收到用戶終端反饋為成功,否則為失?。?。經(jīng)過1年的運(yùn)行,合并各主機(jī)的統(tǒng)計(jì)結(jié)果,得出數(shù)據(jù)如下:設(shè)備控制成功率>99.5%;短信報(bào)警成功率>99.6%;彩信報(bào)警成功率>99.1%。
由此可見,智能家居系統(tǒng)在該小區(qū)實(shí)際應(yīng)用中運(yùn)行穩(wěn)定,設(shè)備控制、安防報(bào)警成功率高于99%,設(shè)備運(yùn)行可靠。
智能家居控制軟件基于ARM-Linux構(gòu)架,充分利用了操作系統(tǒng)的多任務(wù)能力,采用多線程并發(fā)運(yùn)行方式,充分利用了CPU硬件資源,軟件運(yùn)行效率更高,對用戶命令的響應(yīng)以及狀態(tài)更新更加實(shí)時。Mutex機(jī)制保證了線程間共享數(shù)據(jù)的完整性,系統(tǒng)軟件運(yùn)行穩(wěn)定可靠。與當(dāng)前智能家居、安防同類產(chǎn)品相比,該軟件構(gòu)架有以下優(yōu)點(diǎn):
a.軟件構(gòu)架在開發(fā)階段采用了統(tǒng)一可復(fù)用結(jié)構(gòu)[10],無縫融合了包括射頻網(wǎng)絡(luò)、串口網(wǎng)絡(luò)、以太網(wǎng)在內(nèi)的各種不同網(wǎng)絡(luò);軟件采用模塊化結(jié)構(gòu),擴(kuò)展性強(qiáng),不同線程負(fù)責(zé)不同功能,不同設(shè)備的通信代碼按相同標(biāo)準(zhǔn)編寫成庫函數(shù),可重復(fù)調(diào)用,設(shè)備信息、狀態(tài)信息在公共內(nèi)存區(qū)以關(guān)系數(shù)據(jù)庫形式存在,為用戶終端的客戶端界面進(jìn)行自由設(shè)備組態(tài)打下了堅(jiān)實(shí)基礎(chǔ)。
b.基于多線程的并發(fā)運(yùn)行機(jī)制,使用一個SIM卡完成了短信報(bào)警、短信控制、彩信報(bào)警等多種功能,減少了電信資費(fèi),為用戶提供了方便。
c.該軟件結(jié)構(gòu)在智能家居控制的實(shí)際應(yīng)用中,性能穩(wěn)定、功能可靠、擴(kuò)展性強(qiáng)。
[1] 周 洪,胡文山,張立明,等.智能家居控制系統(tǒng)[M].北京:中國電力出版社,2006.
[2] 馬鴻雁,張少軍,張瓊霖.無線網(wǎng)絡(luò)的智能家居中的應(yīng)用[J].北京建筑工程學(xué)院學(xué)報(bào),2004,20(4):31-35.
[3] 焦尚彬,宋 丹,張 青,等.基于ZigBee無線傳感器網(wǎng)絡(luò)的煤礦監(jiān)測系統(tǒng)[J].電子測量與儀器學(xué)報(bào),2013,27(5):436-442.
[4] 李 源,祁 欣.基于GPRS的地表水遠(yuǎn)程在線監(jiān)測系統(tǒng)研究[J].電子測量技術(shù),2013,36(12):118-122,128.
[5] 周 偉,石為人,張洪德,等.無線傳感器網(wǎng)絡(luò)的分布式目標(biāo)跟蹤研究[J].儀器儀表學(xué)報(bào),2013,34(7):1485-1491.
[6] 孫 偉,王建平,穆道明,等.基于服務(wù)質(zhì)量的無線傳感器網(wǎng)絡(luò)MAC協(xié)議模型研究[J].電子測量與儀器學(xué)報(bào),2013,27(4):372-380.
[7] 林 濤,耿 壯.多線程技術(shù)在嵌入式數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].自動化博覽,2006,23(1):49-50.
[8] 田 澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版,2005.
[9] 馬春鳴.基于ARM處理器的嵌入式系統(tǒng)實(shí)現(xiàn)[M].北京:北京郵電大學(xué),2005.
[10] 胡 婷,于成銘.基于平臺化的數(shù)據(jù)采集分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].國外電子測量技術(shù)2013,32(12):87-90.