基于ZigBee的光伏照明控制系統(tǒng)設(shè)計(jì)
2.3 終端節(jié)點(diǎn)硬件設(shè)計(jì)
終端節(jié)點(diǎn)的功能是接收協(xié)調(diào)器發(fā)送的指令控制路燈開關(guān)。其電源是在監(jiān)控計(jì)算機(jī)發(fā)送命令到光伏充電機(jī)對路燈供電線纜供電之后提供,因此硬件部分不需要電池后備功能、光伏照明系統(tǒng)中供電電壓為直流220 V,終端節(jié)點(diǎn)電源部分采用DC-DC開關(guān)電源產(chǎn)生5 V直流供電,路燈開關(guān)控制則通過CC2430的GPIO和三極管控制繼電器實(shí)現(xiàn)。由于CC2430只有引腳P1.O和P1.1具有20 mA的驅(qū)動(dòng)能力,而其他引腳最大驅(qū)動(dòng)電流為4 mA,所以使用SN74HC04D作為輸出緩沖。其原理圖如圖4所示。本文引用地址:http://m.butianyuan.cn/article/157120.htm
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要包括ZigBee協(xié)調(diào)器節(jié)點(diǎn)程序、路由器節(jié)點(diǎn)程序、終端節(jié)點(diǎn)程序和監(jiān)控計(jì)算機(jī)程序。監(jiān)控計(jì)算機(jī)程序?qū)崿F(xiàn)對光伏照明系統(tǒng)的監(jiān)控和數(shù)據(jù)處理,LED路燈通斷控制,以及與之相連的另外一套光伏發(fā)電系統(tǒng)和環(huán)境監(jiān)測系統(tǒng)的數(shù)據(jù)采集和監(jiān)控。監(jiān)控計(jì)算機(jī)與協(xié)調(diào)器節(jié)點(diǎn)通信通過二進(jìn)制編碼的方式進(jìn)行通信,每隔5 s發(fā)送1次采集命令。其數(shù)據(jù)包格式如下:
其中,數(shù)據(jù)包包頭(HEADER)占2字節(jié),可設(shè)置為0x81、Ox82,用于區(qū)分是計(jì)算機(jī)數(shù)據(jù)包輸出還是數(shù)據(jù)包輸入;數(shù)據(jù)長度(LENGTH)為1字節(jié);命令類型包括充電機(jī)數(shù)據(jù)采集、路燈開關(guān)狀態(tài)采集、環(huán)境參數(shù)采集等;數(shù)據(jù)字節(jié)數(shù)由LENGTH指定;數(shù)據(jù)CRC校驗(yàn)占1字節(jié)。
ZigBee節(jié)點(diǎn)程序是在TI公司提供的ZStack-1.4.3-1.2.1協(xié)議棧的基礎(chǔ)上編寫的,可以實(shí)現(xiàn)網(wǎng)絡(luò)建立、節(jié)點(diǎn)加入和退出、數(shù)據(jù)傳輸?shù)裙δ?。該協(xié)議棧將應(yīng)用層和堆棧層進(jìn)行了分離,提供了類似于操作系統(tǒng)的運(yùn)行機(jī)制(OSAL)(主要包括任務(wù)的注冊、初始化、啟動(dòng),任務(wù)間的消息交換,任務(wù)同步,中斷處理,以及時(shí)間管理和內(nèi)存分配等),具有很好的可移植性。
節(jié)點(diǎn)程序流程如圖5所示。當(dāng)對硬件和協(xié)議棧各層初始化后,采用有限狀態(tài)機(jī)以事件輪詢方式對事件進(jìn)行處理。如果同時(shí)有幾個(gè)事件發(fā)生,則判斷事件優(yōu)先級后逐次處理。該協(xié)議棧提供了豐富的API函數(shù)供用戶調(diào)用,這種軟件構(gòu)架可方便地構(gòu)造用戶應(yīng)用程序。由于對終端節(jié)點(diǎn)的供電是由光伏充電機(jī)根據(jù)監(jiān)控計(jì)算機(jī)的命令來控制,因此在正常情況下終端節(jié)點(diǎn)每天都會加人和退出網(wǎng)絡(luò)。
ZigBee節(jié)點(diǎn)之間的通信有兩種尋址方式,分別通過固定的64位IEEE地址和16位網(wǎng)絡(luò)地址來尋找網(wǎng)絡(luò)設(shè)備。當(dāng)節(jié)點(diǎn)加入ZigBee網(wǎng)絡(luò)時(shí),它可以通過協(xié)調(diào)器隨機(jī)獲取唯一的l6位網(wǎng)絡(luò)地址。光伏照明系統(tǒng)要求能按照路燈的編號任意控制其點(diǎn)亮或者關(guān)閉,而要與特定節(jié)點(diǎn)通信必須采用IEEE地址,故利用TI公司提供的SmartRF軟件對ZigBee節(jié)點(diǎn)的64位IEEE地址進(jìn)行人工分配。協(xié)調(diào)器向終端節(jié)點(diǎn)傳送數(shù)據(jù)使用AF_DataReqt-lest()函數(shù)實(shí)現(xiàn),該函數(shù)需要節(jié)點(diǎn)的網(wǎng)絡(luò)地址作為參數(shù),通過IEEE地址獲取16位網(wǎng)絡(luò)地址的功能由NLME_GetShortAddr()函數(shù)實(shí)現(xiàn)。程序設(shè)計(jì)中,在應(yīng)用層添加用戶所需要的任務(wù),對接收到的事件進(jìn)行處理。節(jié)點(diǎn)在啟動(dòng)時(shí)需完成以下工作:初始化CC2430和協(xié)議棧;幫助協(xié)調(diào)器節(jié)點(diǎn)建立ZigBee網(wǎng)絡(luò),設(shè)置網(wǎng)絡(luò)PAN ID,等待其他節(jié)點(diǎn)加入網(wǎng)絡(luò);對監(jiān)控計(jì)算機(jī)傳送的命令進(jìn)行解析和轉(zhuǎn)發(fā);讀取路由器和各個(gè)終端節(jié)點(diǎn)發(fā)送的狀態(tài)數(shù)據(jù),并轉(zhuǎn)發(fā)給監(jiān)控計(jì)算機(jī)處理。
配置ZigBee設(shè)備對象(ZD0)端點(diǎn)時(shí),網(wǎng)內(nèi)的所有節(jié)點(diǎn)其端點(diǎn)ID和端點(diǎn)描述符必須相同,否則節(jié)點(diǎn)之間不能進(jìn)行通信。圖5的程序流程主要是針對用戶事件處理(包括串口事件、數(shù)據(jù)傳送事件、定時(shí)器事件等),路由器和終端節(jié)點(diǎn)的程序設(shè)計(jì)流程類似,分別在用戶事件中根據(jù)協(xié)調(diào)
器發(fā)送的命令類型完成充電機(jī)狀態(tài)數(shù)據(jù)采集、回傳,以及路燈開關(guān)控制。
結(jié)語
將ZigBee無線網(wǎng)絡(luò)用于光伏照明系統(tǒng)控制,具有通信距離遠(yuǎn)、成本低,維護(hù)方便等優(yōu)點(diǎn),控制路燈總數(shù)可達(dá)64盞,覆蓋范圍大于300 m,并可以進(jìn)一步擴(kuò)展。該系統(tǒng)已經(jīng)成功應(yīng)用于建設(shè)部太陽能建筑應(yīng)用示范工程,且通過建設(shè)部驗(yàn)收。
評論