基于物聯(lián)網(wǎng)的照明控制系統―ARM客戶(hù)端軟件設計
基于物聯(lián)網(wǎng)的照明控制系統以ZigBee、單片機、傳感器、C#和PHP程序設計為主要技術(shù)手段,包括照明控制單元、ZigBee無(wú)線(xiàn)傳輸層(含網(wǎng)關(guān))、PC展示及控制層3個(gè)層次的現場(chǎng)控制單元、CC2430無(wú)線(xiàn)傳輸網(wǎng)絡(luò )、ARM網(wǎng)關(guān)硬件單元、ARM網(wǎng)關(guān)客戶(hù)端軟件、基于C#的服務(wù)端軟件、基于PHP的展示軟件等6個(gè)子系統,用于實(shí)現一套模擬城市照明控制系統。
本文引用地址:http://dyxdggzs.com/article/201808/387712.htm本課題首先規劃了WSN協(xié)調器與ARM網(wǎng)關(guān)的串口通訊協(xié)議及ARM客戶(hù)端與PC服務(wù)端的TCP/IP通訊協(xié)議.然后基于Windows CE 6.0操作系統,運用C#編程語(yǔ)言開(kāi)發(fā)了ARM的客戶(hù)端軟件。經(jīng)測試,客戶(hù)端軟件實(shí)現了按規劃的協(xié)議將協(xié)調器上傳數據發(fā)往服務(wù)端和將服務(wù)端下發(fā)數據發(fā)往協(xié)調器的功能,性能穩定,具有一定的實(shí)用價(jià)值。
1 需求分析
1.1 物聯(lián)網(wǎng)照明控制系統的組成及工作過(guò)程
1.1.1 系統組成
物聯(lián)網(wǎng)照明控制系統由感知層子系統、傳輸層子系統、應用層子系統三個(gè)部分組成,如圖1所示。其中,感知層子系統由開(kāi)關(guān)量照明控制節點(diǎn)組成。傳輸層子系統包括基于CC2430的ZigBee無(wú)線(xiàn)傳輸網(wǎng)和基于TCP/IP的局域網(wǎng)傳輸網(wǎng)。應用層子程序系統由運行于服務(wù)器上的服務(wù)端軟件及其它展示軟件組成,本系統包括Web展示軟件和服務(wù)器Server軟件。如圖1所示。

1.1.2 系統運行過(guò)程
在物聯(lián)網(wǎng)照明控制系統中,所有感知層節點(diǎn)的控制指令均由應用層子系統通過(guò)服務(wù)端下發(fā)給傳輸層ARM網(wǎng)關(guān)客戶(hù)端,然后由ARM處理器通過(guò)串口下發(fā)給CC2430協(xié)調器,再由后者通過(guò)ZigBee無(wú)線(xiàn)網(wǎng)絡(luò )下發(fā)給CC2430終端節點(diǎn)。執行的操作指令主要包括注冊網(wǎng)絡(luò )、獲取網(wǎng)絡(luò )參數、下發(fā)控制指令等3個(gè)方面。
1)注冊網(wǎng)絡(luò )
系統啟動(dòng)后,CC2430協(xié)調器首先建立無(wú)線(xiàn)網(wǎng)絡(luò ),路由器和終端節點(diǎn)在發(fā)現網(wǎng)絡(luò )后,會(huì )主動(dòng)加入網(wǎng)絡(luò ),并上傳網(wǎng)絡(luò )參數(物理地址、網(wǎng)絡(luò )地址、節點(diǎn)類(lèi)型等)。
2)獲取網(wǎng)絡(luò )參數
系統運行中,為及時(shí)發(fā)現掉線(xiàn)節點(diǎn),系統會(huì )周期性去詢(xún)問(wèn)節點(diǎn),要求返回網(wǎng)絡(luò )參數。獲取網(wǎng)絡(luò )參數的流程。
3)下發(fā)控制指令
當需要改變各被控對象的運行狀態(tài)時(shí),系統就需要下發(fā)各類(lèi)控制指令。
1.2 ARM客戶(hù)端軟件的功能需求分析
ARM網(wǎng)關(guān)是傳輸層子系統的核心設備,主要完成數據轉發(fā)、協(xié)議轉換、命令代理和映射、本地存儲等功能,支持無(wú)線(xiàn)傳感器網(wǎng)絡(luò )內部數據協(xié)同和匯聚,支持ZigBee接入、TCP /IP網(wǎng)絡(luò )接入,從而橋接無(wú)線(xiàn)傳感器網(wǎng)絡(luò )與互聯(lián)網(wǎng)。
ARM客戶(hù)端軟件主要用于實(shí)現接收Z(yǔ)igBee無(wú)線(xiàn)傳感網(wǎng)絡(luò )協(xié)調器上傳的數據,然后發(fā)送到服務(wù)器。同時(shí),對于服務(wù)器下發(fā)的一些控制命令進(jìn)行解析,并通過(guò)串口傳輸到無(wú)線(xiàn)網(wǎng)絡(luò )的協(xié)調器。
ARM網(wǎng)關(guān)整體上采用分層設計方案,體系結構如圖1所示。硬件部分主要包括ZigBee通信節點(diǎn)、S3C2440 ARM主控模塊、USB及網(wǎng)絡(luò )等外設模塊。軟件部分包括軟件支持層、應用層。圖2中,軟件支持層由硬件驅動(dòng)、Windows CE操作系統以及支持Z—Stack的協(xié)議棧等構成。應用層由地址適配層、應用協(xié)議層、業(yè)務(wù)邏輯應用程序三部分構成,地址適配層用于Zigbee地址和以太網(wǎng)IP地址與應用層地址的映射,應用協(xié)議層是用于規范節點(diǎn)通信的數據幀格式,二者相互配合可實(shí)現節點(diǎn)間數據的透明傳輸。

本課題所需開(kāi)發(fā)的是軟件部分的應用層軟件,涉及協(xié)議轉換、數據轉發(fā)、人機交互等功能,宜采用軟件設計中的三層架構進(jìn)行軟件開(kāi)發(fā)。所謂三層架構,是指數據訪(fǎng)問(wèn)層、業(yè)務(wù)邏輯層以及窗體表示層。本課題主要涉及業(yè)務(wù)邏輯層和窗體表示層的設計與功能實(shí)現。
2 通信協(xié)議規劃
2.1 通信協(xié)議規劃原則
1)透明傳輸,將控制與傳輸分離。協(xié)議的規劃不宜采用按功能方式規劃,而應采用分層方式實(shí)施,以便明確邊界。對于本系統而言,整個(gè)協(xié)議從下自上為分三層,如圖3所示。

2)本系統WSN類(lèi)型節點(diǎn)由協(xié)調器、路由器、傳感器節點(diǎn)三種組成,拓撲結構有樹(shù)狀形、星形網(wǎng)絡(luò )等。由于本系統控制點(diǎn)不多、分布范圍較窄,故采用星形網(wǎng)絡(luò )拓撲結構。支持
ZigBee無(wú)線(xiàn)網(wǎng)廣播、點(diǎn)對點(diǎn)通信。
2.2 ARM網(wǎng)關(guān)通訊協(xié)議詳細幀格式規劃
ARM網(wǎng)關(guān)通訊協(xié)議詳細幀格式規劃包括注冊網(wǎng)絡(luò )、獲取網(wǎng)絡(luò )參數、返回網(wǎng)絡(luò )參數、下發(fā)操作指令、上傳操作結果等協(xié)議的規劃。
1)注冊網(wǎng)絡(luò )通訊協(xié)議
注冊網(wǎng)絡(luò )是指當終端節點(diǎn)或路由器新加入網(wǎng)絡(luò )后,主動(dòng)向上級節點(diǎn)發(fā)送源節點(diǎn)網(wǎng)絡(luò )參數的過(guò)程。從信息流向來(lái)看,注冊網(wǎng)絡(luò )的信息是由CC2430終端節點(diǎn)出發(fā),經(jīng)協(xié)調器轉發(fā)至PC。
2)獲取網(wǎng)絡(luò )參數通訊協(xié)議
獲取網(wǎng)絡(luò )參數是PC根據人機交互需要,通過(guò)WSN協(xié)調器下發(fā)獲取網(wǎng)絡(luò )參數指令,終端節點(diǎn)或路由器收到指令后,向上級節點(diǎn)返回源節點(diǎn)的網(wǎng)絡(luò )參數。本系統中只有當節點(diǎn)自動(dòng)注冊網(wǎng)絡(luò )失敗時(shí),才從服務(wù)器手動(dòng)發(fā)送指令獲取節點(diǎn)網(wǎng)絡(luò )參數。從信息流向來(lái)看獲取網(wǎng)絡(luò )參數包括從PC到客戶(hù)端,再由客戶(hù)端發(fā)往協(xié)調器,最終到路由器和終端節點(diǎn)的下行發(fā)送指令,以及上行返回網(wǎng)絡(luò )參數兩個(gè)方面。
3)返回網(wǎng)絡(luò )參數通訊協(xié)議
當節點(diǎn)收到由客戶(hù)端轉發(fā)來(lái)自服務(wù)端的獲取網(wǎng)絡(luò )指令后,自動(dòng)向客戶(hù)端返回節點(diǎn)的網(wǎng)絡(luò )參數,再由客戶(hù)端向服務(wù)端返回數據。
4)下發(fā)操作指令通訊協(xié)議
本系統中PC下發(fā)控制指令,是通過(guò)WSN協(xié)調器下發(fā)開(kāi)燈或關(guān)燈指令,終端節點(diǎn)或路由器收到指令后,向上級節點(diǎn)返回源節點(diǎn)的執行結果。從信號流向來(lái)看,指令是由PC發(fā)出,經(jīng)串口發(fā)送到客戶(hù)端,再由客戶(hù)端經(jīng)串口將指令送入WSN協(xié)調器,然后下發(fā)到終端節點(diǎn)。
5)上傳操作結果通訊協(xié)議
本系統中控制上傳控制指令,是通過(guò)WSN協(xié)調器上傳到PC下發(fā)選擇開(kāi)燈或關(guān)燈指令,終端節點(diǎn)或路由器收到指令后,向上級節點(diǎn)返回源節點(diǎn)的執行結果(包括提取到的溫度、濕度以及燈光亮度參數)。從信號流向來(lái)看,指令是由PC發(fā)出,經(jīng)串口送入WSN協(xié)調器,然后下發(fā)到終端節點(diǎn),再經(jīng)串口傳輸到單片機。
3 ARM客戶(hù)端軟件設計
3.1 業(yè)務(wù)邏輯層的設計
業(yè)務(wù)邏輯層涉及數據處理SerialPortClass.cs,包括搜尋設備可用的串口、打開(kāi)串口、關(guān)閉串口、下發(fā)指令并接收數據4種方法。對應方法如表1所示。

3.2 業(yè)務(wù)邏輯層的功能實(shí)現
1)SearchSerialPorts方法
該方法主要用于搜尋設備可用串口,其詳細代碼如下:

2)OpenSerialPort方法
該方法主要用于打開(kāi)串口,該方法先判斷串口是否已經(jīng)打開(kāi)(0-打開(kāi)串口成功;1-串口被占用;2-打開(kāi)串口異常;3-打開(kāi)串口失敗;),然后在串口未被占用的情況下,打開(kāi)串口。
3)CloseSeriaIPort方法
該方法主要用于關(guān)閉串口,該方法先判斷串口是否已經(jīng)打開(kāi)(串口未打開(kāi),無(wú)需關(guān)閉),然后在串口已打開(kāi)情況下,關(guān)閉串口(0-關(guān)閉串口成功;1-串口未打開(kāi);2-關(guān)閉串口失敗;3-關(guān)閉串口異常。
4)SendDataToPort方法
該方法主要用于下發(fā)指令并接收數據,定義一個(gè)byte[]類(lèi)型封裝變量cmd,首先判斷串口是否打開(kāi)。若打開(kāi),則通過(guò)第一個(gè)默認通道發(fā)送cmd,并返回true,若未打開(kāi),直接返回false。
3.3 窗體表示層的設計
1)添加窗體文件并設計窗體
窗體表示層的設計,在設計器中選擇“項目→添加Windons窗體”,打開(kāi)“添加新項”對話(huà)框。選擇“Windons”模板,添加frmClient.cs窗體,根據需求設計frmClient.cs窗體,如圖4所示。

2)frmClient窗體代碼文件(frmClient.cs)的結構
在frmClient.cs中,首先需要定義一些全局變量,實(shí)例化有關(guān)公共對象,然后編寫(xiě)諸如連接設備(串口)、斷開(kāi)設備(串口)、接收數據、轉發(fā)數據等事件的處理方法。
3.4 窗體表示層的功能實(shí)現
1)frmClient_Load事件處理方法
在frmClient窗體加載事件處理過(guò)程中,需搜尋并獲取當前可用串口號寫(xiě)入ComboBox控件cbbSerialPort的Items中并顯示,并設置默認的波特率。其中,通過(guò)調用業(yè)務(wù)邏輯層的Get_Ports方法獲取可用串口。
2)btnConnectCoor_Click事件處理方法
該方法用于連接協(xié)調器,首先提取串口名稱(chēng)、波特率,然后實(shí)例化一個(gè)串口操作對象并調用業(yè)務(wù)邏輯層OpenSerialPort方法打開(kāi)串口,如果打開(kāi)串口成功,則為已經(jīng)打開(kāi)的串口添加DataReceived事件并設置串口連接。如果打開(kāi)串口不成功,則進(jìn)行錯誤提示。
3)btnClosePort_Click事件處理方法
該方法用于斷開(kāi)協(xié)調器,首先實(shí)例化一個(gè)串口操作類(lèi)對象,然后調用業(yè)務(wù)邏輯層CloseSerialPort方法關(guān)閉串口,如果關(guān)閉串口成功,則設置串口連接。如果關(guān)閉串口不成功,則進(jìn)行錯誤提示。
4)btnStartListen_Click事件處理方法
該事件執行啟動(dòng)上傳功能,要實(shí)現該操作需先實(shí)例化客戶(hù)端和網(wǎng)絡(luò )數據流,再連接服務(wù)端,通過(guò)調用SendMessage方法將網(wǎng)關(guān)接入到服務(wù)器,并通過(guò)串口上傳數據到服務(wù)器,同時(shí)調用ReceiveMessage方法接收來(lái)自服務(wù)器發(fā)向協(xié)調器的指令。
5)btnStopListen_Click事件處理方法
該事件執行停止上傳功能,關(guān)閉客戶(hù)端與服務(wù)器之間的傳輸,并斷開(kāi)網(wǎng)關(guān)接與服務(wù)器。
6)btnSendToServer_Click事件處理方法
該事件執行手動(dòng)上傳功能,通過(guò)調用SendMessage方法手動(dòng)向服務(wù)端上傳網(wǎng)關(guān)配置。
7)btnCleaeWSN_Click事件處理方法該事件執行清空WSN無(wú)線(xiàn)網(wǎng)絡(luò )消息的功能。
8)btnClearTcpIP_Click事件處理方法該事件執行清空TCP/IP局域網(wǎng)消息功能。
4 系統測試
4.1 ARM網(wǎng)關(guān)客服端軟件功能測試
利用VS20005軟件生成SmartHomeClient.exe應用文件,然后連接WinCE6.0,利用同步軟件將SmartHomeClient.exe應用文件復制到WinCE 6.0操作平臺,然后打開(kāi)在Win CE6.0操作平臺中打開(kāi)SmartHomeClient.exe應用文件。如圖5所示。然后連接協(xié)調器和服務(wù)端,開(kāi)啟“啟動(dòng)上傳”按鈕,協(xié)調器向服務(wù)端上傳節點(diǎn)數據,服務(wù)端下發(fā)操作指令,觀(guān)察網(wǎng)關(guān)是否有數據傳輸。

4.2 系統調試
1)連接服務(wù)器
在服務(wù)端打開(kāi)的情況下,開(kāi)啟“啟動(dòng)上傳”,連接服務(wù)器成功則提示“接入服務(wù)器”,并在lbServerMsg中顯示來(lái)自服務(wù)器的信息。
2)組網(wǎng)
在已連接協(xié)調器和服務(wù)器的情況下,復位節點(diǎn),通過(guò)協(xié)調器向網(wǎng)關(guān)發(fā)送節點(diǎn)信息,再由網(wǎng)關(guān)將節點(diǎn)信息轉發(fā)至服務(wù)器,進(jìn)行組網(wǎng)。
3)服務(wù)器下發(fā)操作指令
服務(wù)器通過(guò)網(wǎng)關(guān)向協(xié)調器發(fā)送開(kāi)燈指令,在已經(jīng)開(kāi)燈的情況下,服務(wù)器通過(guò)網(wǎng)關(guān)向協(xié)調器發(fā)送光照、濕度、溫度采集指令。
經(jīng)測試本系統網(wǎng)關(guān)客戶(hù)端軟件,實(shí)現了數據的上傳和下發(fā)功能,達到了設計目的。
5 結束語(yǔ)
本文研究利用ZigBee無(wú)線(xiàn)通信技術(shù)組建無(wú)線(xiàn)網(wǎng)絡(luò ),并將其使用于教室、走廊、街道的智能照明控制系統中。無(wú)線(xiàn)智能照明系統的設計是為了對建筑的照明設備實(shí)現集中統一的管理,將建筑的照明設備按場(chǎng)景分類(lèi)進(jìn)行控制,并根據室外光照調節照明設備的照度,從而,使建筑以及室內室外都有一個(gè)良好的光環(huán)境,并能夠盡可能的節約能源。在智能照明控制系統中,使用無(wú)線(xiàn)通信的方式,可以避免有線(xiàn)電纜的鋪設,降低了系統的安裝成本與安裝難度,同時(shí)也便于系統的移動(dòng),即可以整體的搬遷至另外的環(huán)境中進(jìn)行使用,這樣又在另一層面降低了系統的成本,以及縮短了系統回收利潤的時(shí)間。為了達到系統所需要的功能與要求,在本設計中利用了成都無(wú)線(xiàn)龍公司的無(wú)線(xiàn)單片機系統作為系統的硬件開(kāi)發(fā)平臺,對系統中的節點(diǎn)設備進(jìn)行了設計,完成了網(wǎng)絡(luò )協(xié)調器、路由器控制終端設備以及其他網(wǎng)絡(luò )節點(diǎn)的原理圖設計。同時(shí)利用軟件開(kāi)發(fā)平臺IAR環(huán)境,進(jìn)行了系統的主程序設計,以及主程序流程圖的繪制。利用Micresoft Visual Studio 2005開(kāi)發(fā)環(huán)境對控制系統的設計制作,實(shí)現了真正的智能化。
評論