摘要:設計了一種基于ARM和ZigBee無線網絡的智能家居系統,闡述了智能家居系統的方案設計,并給出了關鍵環(huán)節(jié)的實現方法。該系統能實現對家居環(huán)境監(jiān)測和家電控制,在現代生活中具有廣闊的應用前景。
關鍵詞: ARM;ZigBee;智能家居;嵌入式Web服務器
1 引言
智能家居利用先進的計算機技術、網絡通訊技術、電力自動化技術,將與家居生活有關的各種子系統有機地結合在一起,進行網絡化的綜合管理[1]。從目前的發(fā)展來看,嵌入式系統和無線網絡技術應用在智能家居系統已成大勢所趨。相比傳統的家居系統,嵌入式系統和無線網絡技術日益成熟,無線傳感器產品成本低廉,而且能提供更大的靈活性、流動性,省去了花在綜合布線上的費用和精力,因而更適應于家庭、小中型辦公場所。
本文設計了一種具有數據傳輸穩(wěn)定、功耗要求低、系統可靠、成本低廉等特點的智能家居系統。該系統以ARM處理器S3C2440和嵌入式Linux操作系統[2]為核心平臺,通過ZigBee無線網絡[3]把家電設備與嵌入式Web服務器[4]相連接,使得用戶可以通過客戶端的瀏覽器實現對家居環(huán)境的監(jiān)測和家電設備的控制。
2 系統方案設計
基于ARM和ZigBee無線網絡的智能家居系統原理框圖如圖1所示。系統以S3C2440嵌入式處理器為核心,外擴NAND Flash、SDRAM、和網絡通訊接口等。多個ZigBee無線模塊節(jié)點CC2430組成無線網絡,各終端節(jié)點連接傳感器或者家電設備,通過無線傳輸的方式與ZigBee協調器進行通信,ZigBee協調器通過SPI接口與ARM進行數據傳輸[5]。其中S3C2440處理器是韓國三星基于ARM公司開發(fā)的ARM920T處理器核,ZigBee網絡節(jié)點是成都無線龍公司開發(fā)的網絡微型節(jié)點CC2430。
智能家居系統由客戶端、嵌入式Web服務器和家電設備三部分組成,ARM中的嵌入式Web服務器是家電監(jiān)控系統的核心,嵌入式Web服務器通過ZigBee和家電設備連接,通過網線和客戶端相連接。因此,本系統的關鍵環(huán)節(jié)是:ZigBee通信網絡、嵌入式Web服務器和SPI接口的Linux驅動。
本設計中選用嵌入式Linux操作系統作為軟件開發(fā)平臺,Linux內核版本為2.4.18,交叉編譯工具為arm-1inux-gcc(2.95.3版本),根文件系統選用Cramfs, 用戶文件系統采用YAFFS格式。
圖1 智能家居系統硬件結構圖
3 ZigBee通信網絡的建立
ZigBee無線傳感網絡主要功能是傳輸家居實時信息和控制消息。本系統采用的無線傳感器網絡硬件平臺為成都無線龍通訊公司的無線單片機專業(yè)開發(fā)系統C51RF-3-PK,該系統的處理器是支持ZigBee協議的SoC射頻(RF)芯片CC2430,并且免費提供基于最新ZigBee協議規(guī)范的協議棧Z-Stack,協議的應用開發(fā)環(huán)境為IAR Embedded Workbench for 8051。ZigBee通信網絡的建立主要涉及應用數據收發(fā)和串口通信的應用程序設計。
3.1 應用數據收發(fā)模塊
在 ZigBee 網絡中,應用層定義了兩種數據服務傳輸格式:KVP(鍵值對)和。本系統選擇采用MSG(消息)數據服務格式。ZigBee網絡應用數據收發(fā)模塊分為數據發(fā)送子程序和數據接收子程序。
在Z-Stack協議中,應用層通過調用AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP, uint16 cID, uint16 len, uint8 *buf, uint8 *transID, uint8 options, uint8 radius)函數來發(fā)送數據。其中,dstAddr帶有目的地址的地址類型和地址信息,cID為待發(fā)送數據的16位簇信息(cluster ID),len表示待發(fā)送數據的長度大小,*buf為待發(fā)送數據的首指針。為實現節(jié)點消息的管理,本文將簇信息節(jié)點間發(fā)送的消息進行分類,分類如下表1所示。
表1應用層 Cluster ID 定義表
在Z-Stack中,當節(jié)點接收到數據時,操作系統抽象層(OSAL)會產生一個AF_INCOMING_MSG_CMD事件通知,用戶只需要在該事件下對接收到的消息進行處理即可。消息的處理過程中,用戶可根據消息中的Cluster ID分別進行處理。本系統按照表1中Cluster ID的定義,控制中心節(jié)點的每個Cluster ID 下的功能函數如下所示。
3.2 串口通信模塊
在 Z-Stack 中,節(jié)點的串口通信單元實現文件為 hal_uart.c/.h,只需要進行適當的配置就可以調用該單元,實現數據的收發(fā)。該模塊功能函數包括:串口初始化void HalUARTInit( void )、開串口uint8 HalUARTOpen( uint8 port, halUARTCfg_t *config ) 、關串 口void HalUARTClose( uint8 port )以及讀串口uint16 HalUARTRead( uint8 port, uint8 *buf, uint16 len )和寫串口uint16 HalUARTWrite( uint8 port, uint8 *buf, uint16 len )等。本系統選用串口0與管理中心通信,對其串口0的配置如下所示:
4 嵌入式Web服務器的實現
嵌入式Web服務器能將采集的家居信息供遠程用戶在PC上查看,用戶可以通過Web頁面了解家中的實時信息并進行必要的控制。本系統選用Boa作為嵌入式Web服務器。Boa對所有活動的HTTP連接在內部進行處理,通過建立請求列表來處理多路HTTP連接請求,Boa的HTTP請求處理速度和效率很高,只為每個CGI連接創(chuàng)建新的進程,在最大程度上節(jié)省系統資源。
4.1 Boa程序移植
4.2 Boa的配置
Boa配置文件主要有兩個,一個是Boa源碼包中的example/boa.conf,另一個是從宿主機的/etc目錄下不需做任何修改而拷貝過來mime.type文件。其中,boa.conf 配置文件對Boa的啟動和運行起著非常關鍵的作用。下面是本系統中具體的一個 boa.conf 文件配置。
由于本系統中Linux的根文件系統是只讀的Cramfs格式,/usr目錄為可讀寫的YAFFS格式,因此,需要將編譯好的boa和配置文件下載到ARM板的/usr目錄下。具體步驟是:在sur 目錄下建www目錄,把boa、boa.conf、mime.type 保存在該目錄下。根據 boa.conf 的配置還需要:創(chuàng)建日志文件所在目錄/usr/log/boa,創(chuàng)建HTML文檔的主目錄/usr/www,創(chuàng)建CGI腳本所在目錄/usr/www/cgi-bin。
5 Linux驅動程序開發(fā)
嵌入式Web服務器是通過SPI總線和ZigBee協調器(CC2430)通信的,驅動程序的主要任務就是把Web服務器傳送過來的命令數據發(fā)送給ZigBee協調器,或是接收來自ZigBee協調器發(fā)送過來的數據。驅動程序的編寫就是根據芯片之間制定的通信協議,填寫 file_ operations 數據結構,完成設備初始化、數據的發(fā)送和接收及其它控制命令的接收等工作。
應用程序使用驅動程序時,首先調用系統open函數打開此設備的驅動文件,然后,系統將調用設備驅動程序中的spi_open()函數。此函數初始化所用到的接口,操作成功后返回0,否則返回非0。
此函數的主要作用是把數據從用戶空間拷貝到內核空間,然后通過SPI總線把數據發(fā)送到ZigBee協調器。
6 結論
本文設計了一種基于ARM和ZigBee無線網絡的智能家居系統,用戶可以通過Internet對家居環(huán)境和家電設備進行遠程監(jiān)控,能實現無線傳感器網絡和嵌入式系統的結合運用。相比傳統的家居系統,本方案具有良好的工作穩(wěn)定性和實時性,外圍擴充接口豐富,網絡節(jié)點體積小,安裝、布置簡單方便,在低功耗和低成本方面具有很強的優(yōu)勢。
參考文獻
[1] 楊士元.數字家居網絡技術及應用[M].北京:電子工業(yè)出版社,2002.
[2] 馬春鳴.基于ARM處理器的嵌入式系統實現[M].北京:北京郵電大學,2005.
[3] Drew Gislason. Zigbee Wireless Networking[M]. Washington: Newnes, 2008.
[4] 吳軍霞.基于ARM的嵌入式Web服務器的研究[D].武漢:武漢大學,2007.
[5] 劉淼.嵌入式系統接口設計與Linux驅動程序開發(fā)[M].北京:北京航空航天大學出版社,2006.
作者簡介:
羅桂娥,女,1962年生,教授,主要研究方向:信息融合,數字圖像處理,智能儀器開發(fā)。
劉樂石,男,1983年生,研究生,主要研究方向:嵌入式系統,無線傳感器網絡。
注:文章內所有公式及圖表請以PDF形式查看。
關鍵詞: ARM;ZigBee;智能家居;嵌入式Web服務器
1 引言
智能家居利用先進的計算機技術、網絡通訊技術、電力自動化技術,將與家居生活有關的各種子系統有機地結合在一起,進行網絡化的綜合管理[1]。從目前的發(fā)展來看,嵌入式系統和無線網絡技術應用在智能家居系統已成大勢所趨。相比傳統的家居系統,嵌入式系統和無線網絡技術日益成熟,無線傳感器產品成本低廉,而且能提供更大的靈活性、流動性,省去了花在綜合布線上的費用和精力,因而更適應于家庭、小中型辦公場所。
本文設計了一種具有數據傳輸穩(wěn)定、功耗要求低、系統可靠、成本低廉等特點的智能家居系統。該系統以ARM處理器S3C2440和嵌入式Linux操作系統[2]為核心平臺,通過ZigBee無線網絡[3]把家電設備與嵌入式Web服務器[4]相連接,使得用戶可以通過客戶端的瀏覽器實現對家居環(huán)境的監(jiān)測和家電設備的控制。
2 系統方案設計
基于ARM和ZigBee無線網絡的智能家居系統原理框圖如圖1所示。系統以S3C2440嵌入式處理器為核心,外擴NAND Flash、SDRAM、和網絡通訊接口等。多個ZigBee無線模塊節(jié)點CC2430組成無線網絡,各終端節(jié)點連接傳感器或者家電設備,通過無線傳輸的方式與ZigBee協調器進行通信,ZigBee協調器通過SPI接口與ARM進行數據傳輸[5]。其中S3C2440處理器是韓國三星基于ARM公司開發(fā)的ARM920T處理器核,ZigBee網絡節(jié)點是成都無線龍公司開發(fā)的網絡微型節(jié)點CC2430。
智能家居系統由客戶端、嵌入式Web服務器和家電設備三部分組成,ARM中的嵌入式Web服務器是家電監(jiān)控系統的核心,嵌入式Web服務器通過ZigBee和家電設備連接,通過網線和客戶端相連接。因此,本系統的關鍵環(huán)節(jié)是:ZigBee通信網絡、嵌入式Web服務器和SPI接口的Linux驅動。
本設計中選用嵌入式Linux操作系統作為軟件開發(fā)平臺,Linux內核版本為2.4.18,交叉編譯工具為arm-1inux-gcc(2.95.3版本),根文件系統選用Cramfs, 用戶文件系統采用YAFFS格式。
圖1 智能家居系統硬件結構圖
3 ZigBee通信網絡的建立
ZigBee無線傳感網絡主要功能是傳輸家居實時信息和控制消息。本系統采用的無線傳感器網絡硬件平臺為成都無線龍通訊公司的無線單片機專業(yè)開發(fā)系統C51RF-3-PK,該系統的處理器是支持ZigBee協議的SoC射頻(RF)芯片CC2430,并且免費提供基于最新ZigBee協議規(guī)范的協議棧Z-Stack,協議的應用開發(fā)環(huán)境為IAR Embedded Workbench for 8051。ZigBee通信網絡的建立主要涉及應用數據收發(fā)和串口通信的應用程序設計。
3.1 應用數據收發(fā)模塊
在 ZigBee 網絡中,應用層定義了兩種數據服務傳輸格式:KVP(鍵值對)和。本系統選擇采用MSG(消息)數據服務格式。ZigBee網絡應用數據收發(fā)模塊分為數據發(fā)送子程序和數據接收子程序。
在Z-Stack協議中,應用層通過調用AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP, uint16 cID, uint16 len, uint8 *buf, uint8 *transID, uint8 options, uint8 radius)函數來發(fā)送數據。其中,dstAddr帶有目的地址的地址類型和地址信息,cID為待發(fā)送數據的16位簇信息(cluster ID),len表示待發(fā)送數據的長度大小,*buf為待發(fā)送數據的首指針。為實現節(jié)點消息的管理,本文將簇信息節(jié)點間發(fā)送的消息進行分類,分類如下表1所示。
表1應用層 Cluster ID 定義表
在Z-Stack中,當節(jié)點接收到數據時,操作系統抽象層(OSAL)會產生一個AF_INCOMING_MSG_CMD事件通知,用戶只需要在該事件下對接收到的消息進行處理即可。消息的處理過程中,用戶可根據消息中的Cluster ID分別進行處理。本系統按照表1中Cluster ID的定義,控制中心節(jié)點的每個Cluster ID 下的功能函數如下所示。
3.2 串口通信模塊
在 Z-Stack 中,節(jié)點的串口通信單元實現文件為 hal_uart.c/.h,只需要進行適當的配置就可以調用該單元,實現數據的收發(fā)。該模塊功能函數包括:串口初始化void HalUARTInit( void )、開串口uint8 HalUARTOpen( uint8 port, halUARTCfg_t *config ) 、關串 口void HalUARTClose( uint8 port )以及讀串口uint16 HalUARTRead( uint8 port, uint8 *buf, uint16 len )和寫串口uint16 HalUARTWrite( uint8 port, uint8 *buf, uint16 len )等。本系統選用串口0與管理中心通信,對其串口0的配置如下所示:
4 嵌入式Web服務器的實現
嵌入式Web服務器能將采集的家居信息供遠程用戶在PC上查看,用戶可以通過Web頁面了解家中的實時信息并進行必要的控制。本系統選用Boa作為嵌入式Web服務器。Boa對所有活動的HTTP連接在內部進行處理,通過建立請求列表來處理多路HTTP連接請求,Boa的HTTP請求處理速度和效率很高,只為每個CGI連接創(chuàng)建新的進程,在最大程度上節(jié)省系統資源。
4.1 Boa程序移植
4.2 Boa的配置
Boa配置文件主要有兩個,一個是Boa源碼包中的example/boa.conf,另一個是從宿主機的/etc目錄下不需做任何修改而拷貝過來mime.type文件。其中,boa.conf 配置文件對Boa的啟動和運行起著非常關鍵的作用。下面是本系統中具體的一個 boa.conf 文件配置。
由于本系統中Linux的根文件系統是只讀的Cramfs格式,/usr目錄為可讀寫的YAFFS格式,因此,需要將編譯好的boa和配置文件下載到ARM板的/usr目錄下。具體步驟是:在sur 目錄下建www目錄,把boa、boa.conf、mime.type 保存在該目錄下。根據 boa.conf 的配置還需要:創(chuàng)建日志文件所在目錄/usr/log/boa,創(chuàng)建HTML文檔的主目錄/usr/www,創(chuàng)建CGI腳本所在目錄/usr/www/cgi-bin。
5 Linux驅動程序開發(fā)
嵌入式Web服務器是通過SPI總線和ZigBee協調器(CC2430)通信的,驅動程序的主要任務就是把Web服務器傳送過來的命令數據發(fā)送給ZigBee協調器,或是接收來自ZigBee協調器發(fā)送過來的數據。驅動程序的編寫就是根據芯片之間制定的通信協議,填寫 file_ operations 數據結構,完成設備初始化、數據的發(fā)送和接收及其它控制命令的接收等工作。
應用程序使用驅動程序時,首先調用系統open函數打開此設備的驅動文件,然后,系統將調用設備驅動程序中的spi_open()函數。此函數初始化所用到的接口,操作成功后返回0,否則返回非0。
此函數的主要作用是把數據從用戶空間拷貝到內核空間,然后通過SPI總線把數據發(fā)送到ZigBee協調器。
6 結論
本文設計了一種基于ARM和ZigBee無線網絡的智能家居系統,用戶可以通過Internet對家居環(huán)境和家電設備進行遠程監(jiān)控,能實現無線傳感器網絡和嵌入式系統的結合運用。相比傳統的家居系統,本方案具有良好的工作穩(wěn)定性和實時性,外圍擴充接口豐富,網絡節(jié)點體積小,安裝、布置簡單方便,在低功耗和低成本方面具有很強的優(yōu)勢。
參考文獻
[1] 楊士元.數字家居網絡技術及應用[M].北京:電子工業(yè)出版社,2002.
[2] 馬春鳴.基于ARM處理器的嵌入式系統實現[M].北京:北京郵電大學,2005.
[3] Drew Gislason. Zigbee Wireless Networking[M]. Washington: Newnes, 2008.
[4] 吳軍霞.基于ARM的嵌入式Web服務器的研究[D].武漢:武漢大學,2007.
[5] 劉淼.嵌入式系統接口設計與Linux驅動程序開發(fā)[M].北京:北京航空航天大學出版社,2006.
作者簡介:
羅桂娥,女,1962年生,教授,主要研究方向:信息融合,數字圖像處理,智能儀器開發(fā)。
劉樂石,男,1983年生,研究生,主要研究方向:嵌入式系統,無線傳感器網絡。
注:文章內所有公式及圖表請以PDF形式查看。