以太網和Zigbee的家居信息采集系統
0 引言
上世紀80 年代發達國家率先提出智能化住宅概念,智能化住宅對家居智能系統的發展起很大促進作用,同時家居信息采集作為住宅智能化起核心作用的一部分,推動著智能化家居的發展。家居信息采集系統預定完成的目標是讓使用家庭更方便、更舒適、更安全,同時也符合環境保護的標準。
上世紀90 年代我國首次提出家居信息采集設計思想,同時發展迅速。
小區智能化的定義為:利用計算機、通訊網絡、自動化技術和射頻卡技術,通過高效的信號傳輸網絡,將多元化信息和管理服務、物業管理與安防技術集成,為小區的服務和管理提升到智能化階段,以實現快速、方便的服務。
本設計中利用Zigbee數傳技術和以太網技術實現了對遠程家居信息的采集,同時利用以太網技術將采集到的數據信息通過以太網模塊實現網絡監控數據實時更新。
1 硬件電路及軟件代碼設計
本設計所完成的功能需要兩塊硬件電路:Zigbee無線模塊和串口轉以太網模塊。
由于TI 公司在設計Zigbee 芯片時有較完善的Zigbee外圍硬件電路設計方案,所以本文采用TI公司原始的設計方案并根據需要作適當的修改。串口轉以太網模塊是針對數據顯示方面的具體應用,實現RS232 通信協議和以太網通信協議間的轉換。
Zigbee無線模塊功能是Zigbee數據采集節點采集到的溫濕度數據和煙霧數據通過Zigbee 通信協議發送到Zigbee 協調器節點,然后通過RS232 串口通信協議傳輸到串口轉以太網模塊。
串口轉以太網模塊功能是當串口接收到Zigbee協調器節點傳來的數據包時,通過微控制器移植的uIP協議棧進行處理,并將處理后的IP 數據包通過遠程DMA 操作寫入以太網控制芯片,并由以太網控制芯片處理發送。
采用的CC2530 Zigbee 無線模塊是TI 公司基于CC2530芯片設計的一款Zigbee數傳射頻芯片。串口轉以太網模塊結構圖如圖1 所示。
圖1 串口轉以太網模塊結構圖
單片機選用STC公司的STC
與以太網的接口芯片采用RealTek公司的RTL8019 系列網絡芯片。
設計中RTL8019 主要實現底層協議DLC、MAC并提供網絡接口,51 內核單片機實現嵌入式的TCP/IP協議棧部分功能和具體應用,電源模塊采用USB供電模塊,通信電路采用RS232 串行接口,網絡接口使用RJ45。
RTL8019 是
RTL8019 有三種工作方式,即跳線方式、免跳線方式、即插即用方式。
1.1 Zigbee模塊傳感器選擇
溫度傳感器采用DS18B20,它采取單總線協議,經一個IO口進行讀寫操作以獲取溫度數據。濕度傳感器采用濕敏電阻。但分立的采用兩個傳感器不利于資源整合和節能需求,因此設計中采用了溫濕度一體的傳感器芯片DHT11。
DHT11 傳感器是一個專用的數字式溫濕度傳感器。其采用電阻元件感應濕度,獲取濕度數據;利用一個NTC測溫元件感知溫度數據,溫度測量范圍為
設計中采用了MQ-2煙霧報警器,該報警器廣泛應用在家庭和工廠的氣體泄漏監測,適合丁烷、酒精、煙霧、一氧化碳等探測,具有靈敏度高、快速響應、穩定、壽命長和驅動電路簡單等優點。
1.2 Zigbee 組網步驟
Z-Stack 協議棧支持三種種類型網絡方式:樹形、星形網絡和網狀網絡。設計中,傳感器節點和協調器節點組建成星型網絡。
組網步驟如下:
(1)定義Zigbee 數傳模塊各個節點的屬性。這樣就需要使用到Zstack協議棧的zgDeviceLogicalType=ZG_DEVICETYPE_ENDDEVICE函數將傳感器節點屬性定義為終端節點,將與網關模塊相連接的節點通過zgDeviceLogicalType=
ZG_DEVICETYPE_COORDINATOR 函數定義為協調器節點。
(2)為各Zigbee 數傳模塊節點分配64 位地址。用戶可以自行定義64 位長地址,當用戶定義錯誤時,系統會隨機生成地址。
(3)給Zigbee無線模塊上電后,協調器節點會自動選擇通信質量好、空閑的信道組建Zigbee 網絡,同時發布14 位PAN ID,并偵聽有沒有節點需要加入網絡。
(4)當終端節點接入電源后,它會自動搜索附近存在的Zigbee 網絡。如果有網絡就發送加入網絡請求,然后等待協調器節點響應,當協調器節點感知到請求并同意請求后終端節點加入網絡。最終,終端節點和協調器節點建立起一個完整的Zigbee 星型網絡。
1.3 uIP協議棧移植
uIP協議棧的代碼采用用C語言編寫,可以非常方便的移植到不同的操作系統結構中。其編譯棧能夠在很小容量的ROM或RAM中運行,并且有一個全局緩沖區,該區域里面能包括硬件處理層、協議棧層和應用層的緩存數據,不需要對數據進行拷貝處理,極大的節省存儲空間,支持多個主動和被動連接并發。
協議棧結構圖如圖2 所示。
圖2 uIP協議棧結構圖
uIP 協議棧通過函數uip-input()和靜態全局變量uip-buf、uip-len 實現與網絡設備驅動的連接。數組uip-buf 指定的緩存區存放嵌入式系統接收和將要發送的數據包。為減少存儲器的使用,接收和即將發送的數據包使用同一個緩存區存放。變量uip-len為接收發送緩存區的數據包長度,判斷該變量數值大小來判斷系統是否接收到新數據,或是否有數據需要發送到網絡上[6]。網絡設備驅動接收到一個數據包后,將其存放到uip-buf中,并將數據包長度寫入uip-len,然后調用函數uip-input()。函數uip-input()是uIP協議棧的底層入口,由其處理收到的數據包。函數uip-input()返回后,若有新數據需要發送,則把數據存放到數組uip-buf指定的緩存區中,數據長度存放在變量uiplen中。系統判斷uip-len 的值,若uip- len 等于0,則表示無數據包要發送;若uip- len大于0,則表示有新數據需要發送,調用網絡設備驅動發送數據。
基于單片機的uIP協議棧的移植有以下九個步驟:
(1)建立KEILC工程文件,并建立src 目錄存儲源文件。
(2)將協議棧代碼主函數文件放入src 源文件目錄下。
(3)參考uIP協議棧源代碼里面的tapdev.c文件和以太網驅動芯片資料編寫網卡驅動程序。
(4)uIP 協議棧需要使用時鐘為TCP 和ARP 提供定時器服務,因此觸發定時器0 模式作為時鐘,每隔20ms 讓計數器變量time_cnt加1,time_cnt 加到25 即0.5s 后調用TCP 定時處理程序,在10s 后調用ARP 老化程序。
(5)在uIP 協議棧源代碼中找到uip.c 和uip.h 文件,并將其復制到src文件夾中,若需要使用ARP協議,則將uip_arp.c和uip_arp.h 文件也放人src 下。
(6)找到uipopt.h 和uip-conf.h 文件,這兩個文件對本地IP 地址、MAC 地址、偵聽數、ARP 表大小等參數進行配置。
(7)編譯代碼找出錯誤并改正使其編譯通過。
1.4 顯示界面的編寫
為了用戶能夠實對數據有直觀掌握,設計一個網頁用于實時了解家庭溫度、濕度和煙霧情況的監控。采用HTML(Hyper Text Mark-up Language)超文本標記語言,其制作簡單,功能強大,支持插入不同數據文件格式,具有簡易性、可擴展性、平臺無關性以及通用性等特點。uIP 協議棧在應用層設計有Web瀏覽器,能夠通過Web瀏覽器讀取HTML網頁文件,同時用網頁形式顯示出來。
瀏覽器不會直接顯示標簽,而是通過標簽內容解釋相關網頁。
超文本標記語言設計網頁的整體框架如下:
<html>
<head>
<title>頁面標題</title>
</head>
<body>
主體文件內容
</body>
</html>
2 系統測試
2.1 節點模塊性能測試
家居信息采集系統采用星型網絡方式組建,CC2530單片機在
圖3 終端節點和協調器節點讀取數據對比圖
在調試過程中,首先讀取終端Zigbee 數據采集節點采集到的數據,然后在讀取協調器節點的數據,做出對比,剛開始打開串口的一段時間內沒有數據接收,這是由于終端節點和協調器節點間在進行組網操作,大約30s 后能接收到數據,通過接收到的數據可判別通信的準確性,圖3 為終端Zigbee 數據采集節點和協調器節點讀取數據的對比圖,從圖中可以看出,左端串口助手讀取的是終端節點采集到的數據,在數據格式中T&H&S分別代表了采集到的溫度、濕度和煙霧濃度,接著的三組數據分別代表了溫度、濕度和煙霧濃度的數值,右端的是協調器節點收到終端節點發送的數據然后用串口顯示的結果。
2.2 串口轉以太網模塊性能測試
本設計在測試時選用了一款RS232 轉RJ45 服務器測試軟件,該軟件能顯示網關RJ45 接口接收到的從串口中傳輸來的數據,同時與串口發送的數據相比對,測試數據傳輸的準確性,測試結果如圖4 所示
圖4 RS232 轉RJ45服務測試軟件測試結果
2.3 整體性能測試測試
網頁動態顯示結果如圖5 和6 所示,圖5 和6 分別代表了兩個時刻網頁顯示的數據。測試時通過人為的改變溫濕度和煙霧傳感器采集的數據來測試整體模塊的性能,從圖5和6 能夠看出改變的數據來驗證整體實現的功能。
圖5 網頁顯示結果
圖6 網頁顯示結果
3 結語
基于Zigbee數傳模塊和以太網的家居信息采集系統是將Zigbee數據采集、發送和網絡信息相結合,用串口轉以太網形式將Zigbee數據采集節點采集到的數據發送到網絡中,并通過網絡設備顯示監控的數據。完成了硬件電路和軟件設計調試,移植了uip協議棧實現了以太網的功能,盡可能地降低代碼量,節約了成本,具有很高的應用價值。