基于無(wú)線傳感網(wǎng)絡(luò)的智能機(jī)房環(huán)境監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
4.2 無(wú)線傳感網(wǎng)軟件平臺(tái)搭建
操作系統(tǒng)是通過(guò)調(diào)度各項(xiàng)任務(wù)來(lái)使整個(gè)系統(tǒng)協(xié)調(diào)的運(yùn)作起來(lái)的。對(duì)不同類型設(shè)備的處理作為一個(gè)任務(wù),把新建的任務(wù)添加到系統(tǒng)中,操作系統(tǒng)便會(huì)把新任務(wù)與協(xié)議棧融合到一起,使系統(tǒng)具備新的功能,即完成了無(wú)線傳感器網(wǎng)絡(luò)軟件平臺(tái)的搭建。
1)建立任務(wù):任務(wù)初始化函數(shù)的建立
任務(wù)初始化函數(shù)要做兩件事,首先是為任務(wù)獲取系統(tǒng)分配的任務(wù)ID,最后是初始化運(yùn)行任務(wù)所需的硬件資源及變量。
任務(wù)初始化函數(shù)的格式為:
XXX_Init(unsigned char task_id)
{
XXX_TaskID=task_id;
初始化任務(wù)運(yùn)行所需的硬件資源及變量。
}
其中“XXX”表示任務(wù)的名稱。“XXX_TaskID”是用戶自己定義的變量,用于存儲(chǔ)任務(wù)的ID號(hào)。
2)建立任務(wù):任務(wù)事件處理函數(shù)的建立
對(duì)模塊的各種外部變化操作系統(tǒng)以事件的方式來(lái)處理,不同的宏定義代表不同事件,比如:KEY_CHANGE為按鍵事件;ZD0_STATE_CHANGE為網(wǎng)絡(luò)狀態(tài)變化事件;AF_INCOMING_MSG CMD表示接收到其他節(jié)點(diǎn)發(fā)送來(lái)的數(shù)據(jù),該事件為無(wú)線處理的重要事件。
任務(wù)事件處理函數(shù)原型為:uint16 Sample_ProcessEvent(uint8 task_id,uint16 events);形參task_id為任務(wù)ID號(hào),events為事件代號(hào)。
3)添加任務(wù)
所有的任務(wù)添加都是在應(yīng)用層App/OSAL_SampleApp.c中通過(guò)osalTaskAdd()函數(shù)添加一個(gè)OSAL任務(wù),函數(shù)原型為:
void osalTask Add(const pTaskInitFn pfninit,
const pTaskEventHandlerFn pfnEventProcessor,
const byte taskPriority)
參數(shù)1:pfnInit(指向任務(wù)初始化函數(shù)的指針);
參數(shù)2:pfnEventProcessor(指向任務(wù)事件處理函數(shù)的指針);
參數(shù)3:taskPrioritv(任務(wù)優(yōu)先級(jí))。
4.3 ZigBee網(wǎng)絡(luò)通訊設(shè)置與組網(wǎng)
4.3.1 網(wǎng)絡(luò)通訊設(shè)置
在Tools/f8wConfig.cfg配置文件中定義了工程相關(guān)的網(wǎng)絡(luò)通訊設(shè)置。其中比較重要的是ZigBee通信相關(guān)的信道通道的設(shè)置和PAN ID的設(shè)置。用戶可以通過(guò)更改該文件中的相關(guān)宏定義,來(lái)控制ZigBee網(wǎng)絡(luò)的通道和PAN ID,以此來(lái)解決多個(gè)ZigBee網(wǎng)絡(luò)的沖突問(wèn)題。信道是數(shù)據(jù)在物理層傳輸時(shí)使用的通道:PIN ID為ZigBee網(wǎng)絡(luò)的標(biāo)識(shí)符,用來(lái)區(qū)別不同的網(wǎng)絡(luò)。
除此之外在啟動(dòng)網(wǎng)絡(luò)前還需要修改模塊的物理地址。在ZigBee網(wǎng)絡(luò)中,無(wú)論是協(xié)調(diào)器還是路由器或終端節(jié)點(diǎn),每個(gè)模塊都有自己唯一的64位物理地址。物理地址的修改有兩種方式,一種是通過(guò)Zmain/Zmain.c中的zmain_ext_addr()函數(shù)設(shè)置;另一種是使用Chipeon Flash Programmer軟件。默認(rèn)地址0xff ff ff ff ff ff ff ff為無(wú)效的,除此之外都是有效的,且保證在網(wǎng)絡(luò)中的唯一性即可。
4.3.2 網(wǎng)絡(luò)組建
1)協(xié)調(diào)器格式化網(wǎng)絡(luò)
協(xié)調(diào)器將掃描DEFAULT_CHANLIST指定的通道,最后在其中之一上形成網(wǎng)絡(luò)。如果ZDAPP_CONFIG_PAN_ID被定義為0xFFFF,那么協(xié)調(diào)器將根據(jù)自身的IEEE地址建立一個(gè)隨機(jī)的PAN ID。如果ZDAPP_CONFIG_PAN_ID沒(méi)有被定義為0xFFFF,那么協(xié)調(diào)器建立網(wǎng)絡(luò)的PAN ID將由ZDAPP_CONFIG _PAN_ID指定,通常這個(gè)值介于0~0x3FFF。
2)路由器和終端設(shè)備加入網(wǎng)絡(luò)
路由器和終端設(shè)備啟動(dòng)后,將掃描DEFAULT_CHANLIST指定的頻道。如果ZDAPP_CONFIG_PAN_ID沒(méi)有被定義為0xFFFF,則路由器或終端將強(qiáng)制加入ZDAPP_CONFIG_PAN_ID定義的網(wǎng)絡(luò)。反之隨機(jī)加入網(wǎng)絡(luò)。
4.4 數(shù)據(jù)傳輸
系統(tǒng)中涉及的數(shù)據(jù)傳輸方式有兩種:無(wú)線收發(fā)和串口收發(fā)。其中節(jié)點(diǎn)向協(xié)調(diào)器發(fā)送采集信息、協(xié)調(diào)器向控制節(jié)點(diǎn)發(fā)送控制信息是通過(guò)無(wú)線收發(fā)實(shí)現(xiàn)的;協(xié)調(diào)器將采集信息傳送給網(wǎng)關(guān)、網(wǎng)關(guān)向協(xié)調(diào)器發(fā)送控制命令是通過(guò)串口收發(fā)實(shí)現(xiàn)的。
4.4.1 無(wú)線數(shù)據(jù)收發(fā)
1)無(wú)線發(fā)送 系統(tǒng)中采用短地址方式發(fā)送數(shù)據(jù),數(shù)據(jù)以幀格式傳輸。在發(fā)送前按照協(xié)議規(guī)定的幀形式構(gòu)建數(shù)據(jù)幀,然后調(diào)用無(wú)線發(fā)送函數(shù)。函數(shù)原型為:uint8 SendData(uint8*buf,uint16 addr,uint8 Leng);buf為發(fā)送數(shù)據(jù)指針;addr為目的地址;Leng發(fā)送數(shù)據(jù)長(zhǎng)度。
2)無(wú)線接收 對(duì)于無(wú)線接收并沒(méi)有像發(fā)送一樣單獨(dú)的處理函數(shù),而是在任務(wù)處理函數(shù)中通過(guò)處理無(wú)線接收數(shù)據(jù)事件來(lái)完成處理的,具體函數(shù)如下:
其中AF_INCOMING_MSG_CMD為無(wú)線接收事件宏定義,SampleApp_MessageMSGCB()函數(shù)則為具體接收事件的處理函數(shù)。
4.4.2 串口數(shù)據(jù)收發(fā)
系統(tǒng)中所用的串口為無(wú)線芯片CC2430自帶資源,通過(guò)自定義串口收發(fā)函數(shù)來(lái)使用該資源,從而實(shí)現(xiàn)網(wǎng)關(guān)與協(xié)調(diào)器節(jié)點(diǎn)數(shù)據(jù)傳輸。
串口發(fā)送函數(shù)原型為:
void UartTX_Send_String(char*Data,int len);
串口接收函數(shù)原型為:
char UartRX_Receive_Char(void);
5 結(jié)束語(yǔ)
隨著物聯(lián)網(wǎng)概念的普及,基于ZigBee的無(wú)線傳感器網(wǎng)絡(luò)技術(shù)得到越來(lái)越廣泛的應(yīng)用。文中將ZigBee網(wǎng)絡(luò)技術(shù)應(yīng)用于機(jī)房環(huán)境監(jiān)控系統(tǒng)中,介紹了系統(tǒng)總體架構(gòu),無(wú)線傳感器網(wǎng)絡(luò)部分的軟、硬件設(shè)計(jì)及實(shí)現(xiàn)過(guò)程,重點(diǎn)介紹了無(wú)線網(wǎng)絡(luò)的構(gòu)建與數(shù)據(jù)傳輸。整個(gè)系統(tǒng)能實(shí)時(shí)、準(zhǔn)確地測(cè)量并顯示機(jī)房內(nèi)各點(diǎn)的數(shù)據(jù)信息,使管理者能夠及時(shí)了解機(jī)器工作環(huán)境,從而及時(shí)、有效地采取措施。如果更換采集節(jié)點(diǎn)的傳感器,該監(jiān)控系統(tǒng)可以應(yīng)用于不同的場(chǎng)合,可見(jiàn)無(wú)線傳感器網(wǎng)絡(luò)技術(shù)具有廣闊的應(yīng)用前景。本文引用地址:http://www.ex-cimer.com/article/160069.htm
波段開(kāi)關(guān)相關(guān)文章:波段開(kāi)關(guān)原理
電流變送器相關(guān)文章:電流變送器原理
評(píng)論