王 超,李 翔,袁向全,劉蘊絡(luò)
(1.北京科技大學(xué)信息工程學(xué)院,北京100083;2.西部礦業(yè)股份有限公司,青海 西寧810001)
礦井的安全生產(chǎn)一直是備受關(guān)注的,通過對井下的安全生產(chǎn)環(huán)境進行實時的監(jiān)測,可以提前有效地發(fā)現(xiàn)危險,提高生產(chǎn)安全管理水平。本文介紹了一種基于CC1110的井下無線傳感器監(jiān)控網(wǎng)絡(luò),給出了網(wǎng)絡(luò)中信息采集節(jié)點和傳輸節(jié)點的硬件構(gòu)成方法、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)以及網(wǎng)絡(luò)協(xié)議棧的構(gòu)成。該網(wǎng)絡(luò)是基于多跳的自組織網(wǎng)絡(luò),通過部署在監(jiān)測區(qū)域的大量微型傳感器節(jié)點,協(xié)作地感知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域中感知對象的信息,并經(jīng)由網(wǎng)關(guān)發(fā)送到數(shù)據(jù)庫中,以便綜合分析預(yù)警[1]。
無線傳感器網(wǎng)絡(luò)(WSNs)中,傳感器節(jié)點是網(wǎng)絡(luò)中最基本的單元,是構(gòu)成WSNs的基礎(chǔ)[2]。本文采用CC1110芯片設(shè)計WSNs節(jié)點,構(gòu)建礦井下WSNs。網(wǎng)絡(luò)中有2種節(jié)點,終端數(shù)據(jù)采集節(jié)點和數(shù)據(jù)匯聚傳輸節(jié)點。數(shù)據(jù)采集節(jié)點和數(shù)據(jù)匯聚傳輸節(jié)點都采用了以CC1110芯片為核心,配合無線通信電路而構(gòu)成的無線通信模塊。數(shù)據(jù)采集節(jié)點在無線通信模塊的基礎(chǔ)上增加了各種傳感器;而數(shù)據(jù)接收傳輸節(jié)點則在無線通信模塊的基礎(chǔ)上增加了存儲芯片、串行通信電路等,以便數(shù)據(jù)的存儲以及與網(wǎng)關(guān)的相連。
TI公司的CC1110芯片是一種包含了射頻單元的單芯片無線傳感器模塊,內(nèi)嵌了加強型51內(nèi)核單片機,8通道8~14 bit A/D轉(zhuǎn)換器、位定時器、串口及多個 IO接口[3]。芯片功耗極低,工作溫度范圍為-40~85℃,可在惡劣環(huán)境工作,如礦井下等。
CC1110芯片的RF性能優(yōu)異,可用頻率范圍為300~348 MHz,391~464 MHz和 782~ 928 MHz,最大輸出功率可達10 dBm,最大數(shù)據(jù)率可達500 kbps,可以選擇2—FSK,GFSK,MSK等多種調(diào)制方式。對于礦井下的WSNs,考慮到傳輸性能和井下的獨立性,采用的頻率為915 MHz,傳輸速率選擇250 kbps和2—FSK調(diào)制。該頻點傳輸性能最好,并且對其他設(shè)備沒有影響[4]。除器件選擇高速的電容器和電感器外,在設(shè)計PCB的版圖時,特別注意了PCB布局的對稱性和阻抗的控制。制板前,通過仿真保證了信號的完整性。選擇了915MHz的外接天線。這些措施保證了射頻部分良好的傳輸性。
數(shù)據(jù)采集節(jié)點是在無線通信模塊的基礎(chǔ)上外接了傳感器。傳感器的信息經(jīng)過CC1110的A/D采集后變?yōu)閿?shù)字信號,發(fā)送給數(shù)據(jù)傳輸節(jié)點。
數(shù)據(jù)采集節(jié)點可以根據(jù)礦井下的實際需要選擇合適的傳感器,如,溫度、濕度、甲烷含量、氧氣含量、壓強等。傳感器數(shù)據(jù)采集節(jié)點的設(shè)計框圖如圖1所示。
圖1 傳感器節(jié)點框圖Fig 1 Block diagram of sensor nodes
在無線網(wǎng)絡(luò)的設(shè)計上,采用了SimpliciTI網(wǎng)絡(luò)協(xié)議。它是由TI公司推出的,針對簡單、小型RF網(wǎng)絡(luò)的,專有低功耗RF協(xié)議,能在CC1110控制器上收發(fā)運行,適合用來設(shè)計小型WSNs。
SimpliciTI網(wǎng)絡(luò)協(xié)議的模塊包括網(wǎng)絡(luò)管理、數(shù)據(jù)中心、跳頻、范圍擴展、加密、低功耗網(wǎng)絡(luò)。協(xié)議主要分為3層:應(yīng)用層、網(wǎng)絡(luò)層和硬件邏輯層,加密在網(wǎng)絡(luò)層處理。硬件邏輯層包括射頻層(radio)和板級驅(qū)動包(BSP)。不存在傳統(tǒng)網(wǎng)絡(luò)中的物理層(PHY)和數(shù)據(jù)鏈路層(MAC/LLC),數(shù)據(jù)直接從射頻層接收,板級驅(qū)動包提供了射頻層與網(wǎng)絡(luò)層的通信接口。
SimpliciTI支持2種基本網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu):星狀網(wǎng)絡(luò)拓?fù)浜忘c對點對等網(wǎng)絡(luò)拓?fù)?,同時支持網(wǎng)絡(luò)拓?fù)鋽U展,即在星狀網(wǎng)絡(luò)的基礎(chǔ)上,使用范圍擴展設(shè)備使網(wǎng)絡(luò)擴展為串狀網(wǎng)絡(luò)[5]。本文網(wǎng)絡(luò)設(shè)計并沒有使用范圍擴展設(shè)備,而是通過串口實現(xiàn)在不同子網(wǎng)之間的數(shù)據(jù)傳輸,達到構(gòu)建主干網(wǎng)的目的。
數(shù)據(jù)幀大小為:最小22字節(jié),最大74字節(jié)。其中,數(shù)據(jù)長度,目的地址,源地址,PORT,設(shè)備信息,交換記錄,有效數(shù)據(jù)等進行CRC校驗。有效數(shù)據(jù)載荷為0~52字節(jié),如表1所示。
表1 數(shù)據(jù)幀格式Tab 1 Format of data frame
對于幀中的有效數(shù)據(jù),根據(jù)傳感器和網(wǎng)關(guān)部分的設(shè)計,將其長度設(shè)置為14字節(jié),各個數(shù)據(jù)位分別為G,子網(wǎng)號,n,節(jié)點號,溫度,濕度,瓦斯,壓強,氧氣,數(shù)據(jù)所占字節(jié)數(shù),如表2所示。
表2 有效數(shù)據(jù)格式Tab 2 Format of valid data
軟件主要包含兩部分,數(shù)據(jù)匯聚傳輸節(jié)點,也叫數(shù)據(jù)中心(access point,AP)設(shè)計,數(shù)據(jù)采集終端節(jié)點(end device,ED)設(shè)計。
圖2中只給出了2個子網(wǎng)和1個網(wǎng)關(guān),通過網(wǎng)關(guān)的轉(zhuǎn)換,數(shù)據(jù)進入互聯(lián)網(wǎng),并傳輸?shù)竭h(yuǎn)端的服務(wù)器。該拓?fù)鋱D中,單個子網(wǎng)使用星狀網(wǎng)絡(luò)拓?fù)洹?號子網(wǎng)的AP在接收了2個ED-S所采集的傳感器數(shù)據(jù)后,將其依次發(fā)送至該子網(wǎng)中的ED-R。ED-R并沒有承擔(dān)一般終端節(jié)點發(fā)送數(shù)據(jù)幀的任務(wù),而是接收本子網(wǎng)中AP發(fā)送的數(shù)據(jù)幀。ED-R將收到的數(shù)據(jù)存入Buf中,整個Buf中的數(shù)據(jù)通過串口發(fā)送到1號子網(wǎng)的AP上,同時1號子網(wǎng)的AP也接收本子網(wǎng)中的ED-S發(fā)送的數(shù)據(jù)幀,再將所有數(shù)據(jù)依次發(fā)至ED-R上,同樣,這個ED-R將收到的所有數(shù)據(jù)存入Buf,再打包發(fā)送到下一層。這個過程可以一直延續(xù)下去,組建出多個子網(wǎng)構(gòu)成主干網(wǎng),但需要考慮到節(jié)點的實際數(shù)據(jù)承載能力,應(yīng)根據(jù)實際情況對拓?fù)浣Y(jié)構(gòu)進行適當(dāng)?shù)男薷摹?/p>
圖2 網(wǎng)絡(luò)拓?fù)鋱DFig 2 Network topology
AP進行BSP的初始化,通過SMPL_Init()打開射頻,完成對網(wǎng)絡(luò)部分的初始化工作。建立星狀網(wǎng)絡(luò),等待ED加入。對串口初始化后,打開串口中斷,等待接收下層子網(wǎng)ED-R通過串口發(fā)送來的數(shù)據(jù)。其中,定義了結(jié)構(gòu)體Uart_R,用于存放串口接收的數(shù)據(jù)。每次發(fā)送的串口數(shù)據(jù)幀長可以在Framelenth中進行修改。AP中設(shè)置了每個網(wǎng)絡(luò)唯一的4bit JOIN_TOKEN,只有該數(shù)值相同的節(jié)點才能加入這個網(wǎng)絡(luò),保證了2個AP不會同時對新加入的節(jié)點進行回應(yīng)。JOIN_TOKEN可以在smpl_nwk_config.dat文件中進行修改設(shè)置。成功建立網(wǎng)絡(luò)后,只要未達到AP所能接受的最大連接數(shù)NUM_CONNECTIONS,AP就始終監(jiān)聽是否有終端節(jié)點的連接請求。最大連接數(shù)NUM_CONNECTIONS可在smpl_config.dat中修改設(shè)置。若收到新節(jié)點的加入信息,AP為每個ED分配ID,并向ED發(fā)送應(yīng)答信息。在收到數(shù)據(jù)幀之后,AP根據(jù)ID號將數(shù)據(jù)保存入緩存中,按照先入先出規(guī)則將這些數(shù)據(jù)幀無線發(fā)送至本子網(wǎng)中的 ED-R。為了判斷串口狀態(tài),定義了結(jié)構(gòu)體 Uart_S,當(dāng)狀態(tài)為“接收完畢RXOVER”或者“定時器關(guān)閉TIMEROVER”時,串口已經(jīng)完成接收工作,可以對數(shù)據(jù)進行處理。由于下層子網(wǎng)ED-R發(fā)送的串口數(shù)據(jù)是成塊發(fā)送,無法直接通過無線發(fā)送,需要重新按照SimpliciTI的數(shù)據(jù)幀協(xié)議格式,將其中的有效數(shù)據(jù),分為獨立幀結(jié)構(gòu),分別發(fā)送至ED-R。每次串口工作完畢,都要對Uart_R中數(shù)據(jù)緩存進行清空。程序流程如圖3所示。
圖3 AP主函數(shù)程序流程圖Fig 3 Flow chart of the main function program in AP
ED在經(jīng)過BSP,串口等的初始化以后,AP發(fā)送加入網(wǎng)絡(luò)的請求,加入成功后同AP進行連接,其流程如圖4所示。
圖4 ED主函數(shù)流程圖Fig 4 Flow chart of the main function()in ED
在星狀網(wǎng)絡(luò)中,ED要加入AP建立的網(wǎng)絡(luò)中,需要向AP發(fā)送連接請求命令。AP允許ED加入并分配ID,對其請求進行應(yīng)答。在主函數(shù)中體現(xiàn)為link to(),其流程如圖5。
圖5 link to()函數(shù)流程圖Fig 5 Flow chart of the link to()function
圖5為一般數(shù)據(jù)采集節(jié)點ED的程序流程,主要負(fù)責(zé)采集傳感器數(shù)據(jù),封裝為數(shù)據(jù)幀之后發(fā)送至子網(wǎng)匯聚結(jié)點AP。本設(shè)計中的數(shù)據(jù)采集節(jié)點能分別采集5只傳感器的數(shù)據(jù),每只傳感器數(shù)據(jù)占用一個片內(nèi)通道,采樣精度為12位,用2個字節(jié)表示。將寄存器ADCCON3設(shè)置為“0x0F+ch”的格式,根據(jù)不同傳感器的通道號,每次可以對相應(yīng)傳感器的數(shù)據(jù)進行A/D轉(zhuǎn)換。寄存器ADCCON1的EOC位用來指示當(dāng)前轉(zhuǎn)換是否結(jié)束。一次A/D轉(zhuǎn)換完成后,將轉(zhuǎn)換結(jié)果低八位ADCL存入adc_value[1],高八位ADCH存入 adc_value[0],對2個數(shù)據(jù)進行移位處理,最終使得采集到的12位數(shù)據(jù)的高四位存放于adc_value[0]中,低八位存放于adc_value[1]中。在link to()函數(shù)中,讀取這2個數(shù)值,完成對傳感器原始數(shù)據(jù)的采集。
構(gòu)建2個子網(wǎng),還需要另外一個接收節(jié)點ED-R,該節(jié)點用于接收AP發(fā)送來的數(shù)據(jù)幀,并將其存入Buf中,通過串口發(fā)送至下一個子網(wǎng)中的AP或者直接發(fā)至網(wǎng)關(guān),將數(shù)據(jù)交給上層服務(wù)器處理。
對于ED-R的主函數(shù)流程,與其他所有ED相同,只是在link to中,成功分配ID之后,需要進行一些修改,ED-R不需要采集傳感器數(shù)據(jù),只需將射頻控制IOCTL_OBJ_RADIO設(shè)置為Rx接收狀態(tài)。設(shè)置串口發(fā)送緩存Buf,當(dāng)接收到數(shù)據(jù)幀后,根據(jù)幀中有效數(shù)據(jù)的子網(wǎng)號G和節(jié)點號n,保存入Buf相應(yīng)位置。處理完畢,通過串口通信將Buf發(fā)送到下個子網(wǎng)AP。設(shè)置計數(shù)器Number,發(fā)送10次之后,清空整個Buf,滿足數(shù)據(jù)的實時更新要求。這部分流程圖如圖6所示。
圖6 ED-R link to()流程圖Fig 6 Flow chart of the link to()in ED-R
設(shè)計的CC1110傳感器節(jié)點在傳輸距離為30 m,通信頻率為915 MHz,調(diào)制方式2-FSK,速率為250 kbps時進行了測試,測試結(jié)果如表3所示。
表3 測試結(jié)果Tab 3 Results of tests
由測試結(jié)果可以看出:節(jié)點在5個不同的發(fā)射功率設(shè)定下,通過無線收發(fā)數(shù)據(jù),均能保證低丟包率和錯誤率,具備較高的可靠性。
基于CC1110設(shè)計的井下WSNs,經(jīng)過多節(jié)點多子網(wǎng)的組網(wǎng)測試,達到預(yù)期目標(biāo)。底層傳感器節(jié)點采集各種井下的環(huán)境和設(shè)備參量數(shù)據(jù),通過無線網(wǎng)絡(luò)發(fā)送至網(wǎng)關(guān),并經(jīng)由網(wǎng)關(guān)發(fā)送到遠(yuǎn)端的監(jiān)控平臺,達到了遠(yuǎn)程實時監(jiān)測的目的,保障了生產(chǎn)安全。
[1]任豐原,黃海寧,林 闖.無線傳感器網(wǎng)絡(luò)[J].軟件學(xué)報,2003,14(7):1282-1291.
[2]Mondinelli F,ltM Z,Sajna K.Self-localizing sensor network architectures[J].IEEE Transaction on Instrumentation and measurement,2004,53(2):277-283.
[3]Texas Instruments CC1110 Datasheet[EB/OL].[2008—07—11].http:∥focus.ti.com/lit/ds/symlink/cc1110f 32.pdf.
[4]程偉明.無線移動自組網(wǎng)及其關(guān)鍵技術(shù)[J].數(shù)據(jù)通信,2002(3):56-58.
[5]李文仲,段朝玉.CC1110/CC2510無線單片機和無線自組織網(wǎng)絡(luò)入門與實戰(zhàn)[M].北京:北京航空航天大學(xué),2008:221-224.