1 引言
信息技術(shù)已在人們生活的各個方面得到廣泛應(yīng)用。人們對家庭居住環(huán)境的要求越來越高。智能家居應(yīng)運(yùn)而生,與普通家居相比,智能家居不僅具有傳統(tǒng)的居住功能,提供舒適安全、高品位且宜人的家庭生活空間;還由原來的被動靜止結(jié)構(gòu)轉(zhuǎn)變?yōu)榫哂心軇又腔鄣墓ぞ?,提供全方位的信息交互功能,幫助家庭與外部保持信息交流暢通,優(yōu)化人們的生活方式,幫助人們有效安排時間,增強(qiáng)家居生活的安全性,甚至為各種能源費(fèi)用提供節(jié)約方案。簡言之,智能家居就是以住宅為平臺,利用網(wǎng)絡(luò)、通信及控制技術(shù)管理家中設(shè)備,來創(chuàng)造一個高效、舒適、安全、便利、環(huán)保的居住環(huán)境。
智能家居在我國起步較晚,目前家居網(wǎng)絡(luò)的應(yīng)用復(fù)雜而分散,沒有統(tǒng)一的標(biāo)準(zhǔn)。大體而言可分為高層的信息娛樂網(wǎng)絡(luò)和底層的數(shù)據(jù)采集與控制網(wǎng)絡(luò)。在底層以微控制器為核心作為智能家居網(wǎng)絡(luò)結(jié)點(diǎn)是目前家居網(wǎng)絡(luò)的主要實現(xiàn)方式。本文正是基于這種方式用NXP公司的ARM7微控制器LPC2478實現(xiàn)了智能家居監(jiān)控系統(tǒng)。系統(tǒng)可以采集多路模擬量和開關(guān)量經(jīng)處理后可以為本地用戶或通過CAN總線為遠(yuǎn)程用戶如物業(yè)管理中心提供實時家居環(huán)境狀態(tài)信息。一旦家居環(huán)境狀態(tài)改變用戶可迅速做出反應(yīng),以最大限度地減少安全事故的發(fā)生。
2系統(tǒng)方案
本系統(tǒng)主控采用ARM微控制器中的LPC2478,它有512K字節(jié)的程序存儲空間,豐富的片上資源,片上具有LCD控制器和兩個CAN接口,它非常適合低功耗、低成本的嵌入式設(shè)計。圖1中有8個模擬量輸入,由于在實際家居狀態(tài)監(jiān)控數(shù)據(jù)中模擬量較少,加之LPC2478片上有可復(fù)用8路10位模數(shù)轉(zhuǎn)換器,所以本系統(tǒng)直接以其片上資源實現(xiàn)A/D功能。采所采集的模擬量經(jīng)微控制器處理之后通過PA口輸出到LCD顯示模塊(LCM1)進(jìn)行本地顯示,以及經(jīng)CAN1口輸出到遠(yuǎn)程主機(jī),同時也可以通過UART0以RS-232串行通信方式傳送到本地PC機(jī).開關(guān)量經(jīng)過總線隔離驅(qū)動芯片(74HC245)輸入到微控制器的P0~P2口。微控制器處理之后經(jīng)P3口輸出到8D鎖存器74HC573中,然后經(jīng)過驅(qū)動電路控制如照明、空調(diào)等僅需要開關(guān)的家用電器.開啟用邏輯“1”表示,關(guān)閉用邏輯“0”表示,與此同時微控制器同樣經(jīng)CAN1口輸出到遠(yuǎn)程主機(jī),鍵盤電路用于設(shè)置系統(tǒng)的工作狀態(tài)及對采集量進(jìn)行本地顯示。
圖1 下位機(jī)硬件設(shè)計框圖
3系統(tǒng)軟硬件設(shè)計
下位機(jī)軟件設(shè)計主要可分為數(shù)據(jù)采集模塊、通信模塊、鍵盤及LCD控制模塊、開關(guān)量輸出控制模塊。限于篇幅只介紹數(shù)據(jù)采集模塊的具體實現(xiàn)方式。ARM微控制器應(yīng)用輪詢方式進(jìn)行模擬量和開關(guān)量的采集。通過設(shè)置定時器/計數(shù)器0中斷,每次中斷時間20毫秒,用于模擬量(AI)采樣定時;定時器/計數(shù)器1中斷,中斷時間250毫秒,每次中斷時掃描開關(guān)量輸入(DI)狀態(tài).主程序開始時進(jìn)行定時/計數(shù)器0,定時/計數(shù)器1,AD,DI等的初始化,初始化主要是設(shè)置定時器的中斷方式(設(shè)置定時器0溢出中斷,定時器1比較中斷),外部中斷INT0,INT1中斷方式(INT0下降沿產(chǎn)生異步中斷請求,INT1上升沿產(chǎn)生異步中斷請求);AD,DI處于可以接收模擬量和開關(guān)量的狀態(tài),然后程序進(jìn)入循環(huán)狀態(tài),等待上位機(jī)控制信息的到來,如果有控制信息到來便把相應(yīng)的標(biāo)志位置1,主程序跳轉(zhuǎn)到相應(yīng)的服務(wù)程序產(chǎn)生相應(yīng)操作。
l 定時器0中斷服務(wù)程序
定時器0中斷主要完成模擬量的數(shù)據(jù)采集與平均值計算,其程序流程圖如圖2所示,具體為:定時器0中斷時間為20毫秒,用于AD采樣計時;當(dāng)AD采樣次數(shù)滿15次后判斷采樣結(jié)束標(biāo)志,如果采樣結(jié)束則計算平均值然后在LCD上進(jìn)行顯示后,產(chǎn)生AD中斷,最后中斷返回。
l 定時器1中斷服務(wù)程序
定時器1主要完成掃描開關(guān)量輸入狀態(tài),其中斷程序流程圖如圖3所示.具體為:中斷時間為250毫秒,如果有開關(guān)量輸入,則置開關(guān)量輸入標(biāo)志為1,然后中斷返回。
上位機(jī)監(jiān)控管理軟件設(shè)計采用分層結(jié)構(gòu),三個功能模塊從下至上依次分布在三層之中.由下向上三層依次為底層,通信層和圖形用戶界面層(GUI層),如圖4所示:
本文主要完成的是圖7中虛線框內(nèi)的部分,底層由程序設(shè)計語言本身來實現(xiàn).這里直接引用Visual Basic 2005中的SerialPort類。
系統(tǒng)設(shè)計在底層之上加通信層,這樣就可以完成本系統(tǒng)自定義的通信協(xié)議,由于系統(tǒng)要完成數(shù)據(jù)采集功能,這里的通信層也包括了數(shù)據(jù)處理模塊,這樣做可以簡化一些設(shè)計,減小代碼編寫量.通信層之上是圖形用戶界面層(GUI層),這層的功能是把數(shù)據(jù)流從通信層中讀出來,以圖形方式向用戶表示,這樣在用戶使用系統(tǒng)的時候就會感到自由清晰,很好地完成工作。
本系統(tǒng)主要應(yīng)用的是串行通信協(xié)議,這個協(xié)議是定義在物理層之上的,其具體協(xié)議行為發(fā)生在底層,我們不必關(guān)心它,只需對它的設(shè)置參數(shù)進(jìn)行相應(yīng)的設(shè)置.另外,為完成系統(tǒng)的功能要求還須自定義一個數(shù)據(jù)幀或命令幀格式.所以這里通信層中的通信協(xié)議包括了兩方面的內(nèi)容:一個是串行端口參數(shù)設(shè)置,另一個就是自定義的數(shù)據(jù)幀或命令幀。
串行端口設(shè)置參數(shù)主要有以下幾個:波特率、數(shù)據(jù)位、奇偶校驗位、停止位以及編碼方式.本系統(tǒng)中的波特率設(shè)置為19200 bit/s;數(shù)據(jù)位設(shè)置為8位;由于通信距離較近所以沒有奇偶校驗;停止位設(shè)為1位;編碼方式采用ASCII碼方式。這里的設(shè)置通過對Visual Basic 2005中SerialPort類中的公共屬性BaudRate、DataBits、Parity、StopBits、Encoding的設(shè)置即可完成。
接收數(shù)據(jù)幀和命令幀兩部分,數(shù)據(jù)幀的格式如圖5,命令幀格式如圖6所示。
這里的“$”代表起始字符,“YK” 代表發(fā)送設(shè)備標(biāo)志,“*”代表校驗和標(biāo)志“<CR><LF>”代表結(jié)束標(biāo)志.其中各項數(shù)據(jù)以 “,”分隔.在命令幀中用 “KZ”代表發(fā)送設(shè)備標(biāo)志,其他符號和接收數(shù)據(jù)幀相同.?dāng)?shù)據(jù)幀中模擬量有5個,每個用4個字符表示.?dāng)?shù)字量用“0”和“1”表示LED燈的滅和亮。
Visual Basic 2005 中的SerialPort類用于控制串行端口文件資源.它具有如下特性:提供同步 I/O 和事件驅(qū)動的 I/O,對管腳和中斷狀態(tài)的訪問以及對串行驅(qū)動程序?qū)傩缘脑L問。
本系統(tǒng)中只引用了它其中的4個方法分別是Open方法、Close方法、Write方法、ReadLine方法和一個接收數(shù)據(jù)的DataReceived事件.Open方法用于打開計算機(jī)的串行端口,在本系統(tǒng)中使用方法如下:
Try
With serialport
.PortName = cbbCOMPorts.Text '設(shè)置串口名
.BaudRate = 19200 '設(shè)置波特率
.Parity = IO.Ports.Parity.None '無奇偶校驗
.DataBits = 8 '設(shè)置數(shù)據(jù)位
.StopBits = IO.Ports.StopBits.One '設(shè)置停止位
End With
serialport.Open() '打開串口
lblHelp.Text = cbbCOMPorts.Text & "已連接,請您選擇相應(yīng)操作!"
Catch ex As Exception '捕捉異常
MsgBox(ex.ToString) '異常信息提示對話框
End Try '結(jié)束Try語句
其他的三個方法的使用方法類似,這里從略。
4 結(jié)論
基于ARM核心的微控制器無論在運(yùn)算速度還是系統(tǒng)實現(xiàn)成本上都優(yōu)于傳統(tǒng)的8位單片機(jī)。本文利用NXP公司ARM7微控制器LPC2478設(shè)計完成了家居網(wǎng)絡(luò)的底層監(jiān)控系統(tǒng)。本系統(tǒng)充分利用LPC2478的豐富片上資源,如LCD控制器、CAN總線接口,輔之簡單的外圍電路實現(xiàn)監(jiān)控系統(tǒng)的硬件部分。整個監(jiān)控電路板的實現(xiàn)成本及功耗體積相比8位單片機(jī)實現(xiàn)方案,大大縮小,很適合家居智能化的工程實施。另外本文還提出了PC機(jī)監(jiān)控管理軟件的通信層結(jié)構(gòu)及實現(xiàn)細(xì)節(jié),可以為家居智能化改造提供技術(shù)基礎(chǔ)。