無線傳感器網絡數據中轉器的設計
引言
無線傳感器網絡是一種全新的信息獲取平臺,它可借助于多樣傳感器來實時監(jiān)測和收集網絡分布區(qū)域內各種目標對象的狀態(tài)信息,因而具有廣闊的應用前景。本文所討論的無線傳感器網絡數據中轉器就是為實現遠程上位機對目標區(qū)域內的各種環(huán)境參數的實時監(jiān)控而設計的,它在整個系統(tǒng)中可實現無線傳感器采集數據的上傳和遠程上位機控制命令的下達,對整個無線傳感器網絡數據采集系統(tǒng)的穩(wěn)定應用起著承上啟下的作用。
1 無線傳感器網絡的組成及工作原理
無線傳感器網絡數據采集系統(tǒng)的總體結構方案如圖1所示。該系統(tǒng)由無線傳感器網絡,數據中轉器,GPRS無線傳輸和上位機服務器等4部分組成。無線傳感器網絡(一個網絡一般可包含128個采集節(jié)點)負責采集監(jiān)測環(huán)境的有關數據,包括監(jiān)測環(huán)境參數(空氣濕度,降雨量和土壤溫度等)和無線傳感器網絡數據(釆集節(jié)點路由表、采集節(jié)點鄰居表以及釆集節(jié)點狀態(tài)表),并通過ZigBee網絡(監(jiān)測區(qū)域內的短距離通信)發(fā)送給數據中轉器保存。當存儲的數據達到規(guī)定的數量以后,便可通過GPRS網絡(監(jiān)測區(qū)域與服務器間的遠距離通信網絡)傳輸給上位機服務器,這樣可以減少數據中轉器與上位機的通信次數,降低系統(tǒng)的功耗。上位機服務器則可通過GPRS網絡發(fā)送控制命令給數據中轉器,進而轉發(fā)給無線傳感器,用以控制傳感器采集數據的類型、數據釆集間隔、數據上傳間隔、網絡數據上傳類型等,以使無線傳感器能按照用戶所希望的方式來工作。
圖1無線傳感器網絡數據采集系統(tǒng)結構
2 數據中轉器的組成及工作原理
本文所討論的數據中轉器的硬件結構如圖2所示。數據中轉器以ARM處理器為核心構建而成,由雙鋰電池供電,通過匯聚節(jié)點和GPRS模塊分別與無線傳感器網絡和上位機通信。ARM處理器選用32位嵌入式處理器LPC2148,該處理器內置寬范圍的串行通信接口,并擁有40KB的片內靜態(tài)RAM和512KB的片內Flash程序存儲器,能完全滿足系統(tǒng)的應用要求。GPRS模塊選用SIM公司的SIM300C,其內部整合了TPC/IP協議,下載/上傳速度分別可達85.6/42.8kB/s。匯聚節(jié)點主要由基于ZigBee協議的射頻芯片CC2531來組成。數據中轉器在整個數據采集系統(tǒng)中可起到一個承上啟下的作用,它可通過匯聚節(jié)點存儲和轉發(fā)無線傳感器網絡上傳的采集數據和網絡信息,并通過GPRS模塊接收和轉發(fā)上位機下達的控制命令。ARM處理器LPC2148通過串口uartO與匯聚節(jié)點進行通信,而通過串口uartl與GPRS模塊通信,同時通過串口SPI0將需要存儲的大量采集數據存入內存容量為2GB的SD卡中。
圖2數據中轉器硬件結構圖
3 數據中轉器的設計
數據中轉器的應用程序開發(fā)可采用ARMDeveloperSuiteV1.2開發(fā)環(huán)境。在該開發(fā)環(huán)境中,可完成程序的編輯與調試。編程語言以C語言為主,并可嵌入arm匯編語言,系統(tǒng)平臺采用Mc/os-n嵌入式實時操作系統(tǒng),以保障開發(fā)程序能夠可靠穩(wěn)定的運行。
3.1 數據中轉器的工作流程
本文所討論的數據中轉器和無線傳感器都具備休眠功能,這樣可以有效的降低系統(tǒng)功耗。無線傳感器平時處于休眠狀態(tài),當需要采集數據和上傳數據時,再自動醒來聯網并喚醒數據中轉器。數據中轉器被喚醒后,便可接收無線傳感器網絡的上傳數據,并/34物聯網技術2012年/第1期存儲在SD卡中,然后判斷無線傳感器網絡上傳數據次數N(N的初始值為0),如果N小于10,數據中轉器將通知無線傳感器休眠,同時自己也進入休眠狀態(tài)。如果N等于10,數據中轉器將啟動GPRS模塊,再將SD卡內的大量數據上傳給上位機,在供用戶存儲顯示使用之后,上位機將下達新的數據采集控制命令,以控制無線傳感器采集數據的類型、數據采集間隔、數據上傳間隔、網絡數據上傳的類型等給數據中轉器,數據中轉器將新的數據采集控制命令轉達給無線傳感器后便進入休眠狀態(tài),無線傳感器在更新采集參數后,也進入休眠狀態(tài)。整個無線傳感器網絡數據采集系統(tǒng)就這樣周而復始的工作,圖3所示為其系統(tǒng)軟件工作流程圖。
圖3系統(tǒng)軟件流程圖
3.2 數據通信協議
無線傳感器網絡數據采集系統(tǒng)中各個模塊之間的通信需要制定明確的數據通信協議。數據通信協議可以保證數據安全正確的收發(fā),便于系統(tǒng)中各個模塊對數據的接收、解析和存儲管理。該系統(tǒng)通信協議的數據幀格式如表1所列。
表1中:SOP為起始標志符,可用一個字節(jié)來表示數據幀的起始,將這個字節(jié)定義為0x7E;CMD表示命令ID,用一個字節(jié)的數據來標識命令消息;LEN表示DATA的長度,也用一個字節(jié)來指示DATA位的數據長度;DATA為具體要發(fā)送的數據;FCS是校驗位,這里的校驗使用異或校驗來校驗CMD、LEN、DATA中的所有數據;STOP為結束標志符,用一個字節(jié)來表示數據幀的結束,一般將這個字節(jié)定義為0xAA。
當無線傳感器網絡數據采集系統(tǒng)的各個模塊接收到數據后,都是通過判別CMD來對數據幀的類型進行解析。數據幀的CMD有如下五種類型:其中,0X02為無線傳感器向數據中轉器上傳釆集數據的命令;0X03為數據中轉器告知無線傳感器休眠的命令;0X04為數據中轉器向上位機服務器上傳采集數據的命令;0X05為上位機服務器向數據中轉器下達數據釆集控制的命令;0X06為數據中轉器向無線傳感器轉達數據采集控制的命令。
系統(tǒng)中各個模塊之間按以上制定的數據幀格式進行通信,可以極大地排除雜亂信號的干擾,簡化系統(tǒng)的軟件設計,從而達到數據傳輸的安全性和可靠性。
3.3 基于AT指令的GPRS通信
GPRS模塊SIM300C作為一個功能獨立而且完善的模塊,可以通過外接SIM手機卡實現與遠端上位機的連接和通信,ARM芯片LPC2148則利用AT指令以GPRS流量的方式發(fā)送數據給上位機。ARM發(fā)送的AT指令都是以字節(jié)為單位,回車符代表指令的結束,模塊接收到回車符后開始執(zhí)行指令。模塊執(zhí)行指令后的一切返回值(無論是指令執(zhí)行后的OK,還是ERROR)都是以不可打印字符“0D0A”開始和結束。LPC2148與GPRS模塊之間可通過UART1通信。本系統(tǒng)使用表2所列指令來實現與遠程上位機服務器的數據傳輸。
表2中第一條AT指令可使得GPRS模塊附著到GPRS網絡;第二條AT指令為GPRS模塊聯網而設置的上下文環(huán)境;第三條AT指令用于激活GPRS網絡的上下文環(huán)境,并獲取網絡IP;第四條AT指令用于建立TCP連接。由于本設計中的數據中轉器需與遠程上位機相互通信,因而必須建立TCP連接,這樣,首先GPRS模塊會返回一個對此條指令認可的確認消息“OK”,之后,如若TCP網絡連接建立成功則會返回"CONNECTOK\r”,表示物理通道已經成功建立,之后便可調用最后一條指令與遠端上位機進行數據通信。
表2GPRS流量通信方式所涉及到的AT指令
AT指令 |
指令解析 |
AT+CGATT=l\r |
附著到GPRS網絡 |
AT+CGDCONT=1,IP,CMNET\r |
PDP環(huán)境 |
AT+CGACT=l,l\r |
激活GPRS |
AT+CIPSTART="TCP","IPADDR","PORT" |
連接服務器IP |
AT+CIPSEND\r***\x01A |
發(fā)送數據 |
無線傳感器網絡數據中轉器在很大程度上可以解決無線傳感器網絡與上位機服務器之間的遠程通信問題,并能有效地降低整個系統(tǒng)的功耗。經過試驗表明,上述設計方案具有穩(wěn)定可靠,數據傳輸準確等優(yōu)點,能夠滿足無線傳感器網絡數據采集系統(tǒng)在長期無人值守的情況下監(jiān)測某一區(qū)域環(huán)境信息的要求。
20210828_612a1e7021423__無線傳感器網絡數據中轉器的設計