基于nRF905的無線傳感器網絡節(jié)點的設計與實現(xiàn)
無線傳感器網絡是計算機技術、傳感器技術和網絡通信技術相結合的產物。它由大量隨機分布的、具有實時感知、無線通信和自組織能力的傳感器節(jié)點組成[1]。隨著無線技術的高速發(fā)展,無線傳感器網絡越來越多地走進人們的視野中。與有線技術相比,無線技術具有成本低、體積小、省去復雜的布線等優(yōu)點。但是由于現(xiàn)有的無線傳感器節(jié)點大都采用電池供電,放置地點隨機變動,隨時可能出現(xiàn)節(jié)點中斷的情況,通信能力十分有限,需要經常性的人工維護。因此,無線傳感器網絡節(jié)點要具有自組織、中斷自我修復的功能,需要設計合適的通信協(xié)議和路由算法,以提高系統(tǒng)通信的可靠性。為此,本文采用無線射頻芯片nRF905和STC12系列單片機設計了一種無線傳感器節(jié)點,并且在典型自組織網絡的通信協(xié)議-動態(tài)源路由協(xié)議DSR(Dynamic Source Routing)[2-4]的基礎上,針對路由維護算法做出改進,設計出一種易于實現(xiàn)且實用性高的通信協(xié)議,實現(xiàn)了自組織和多跳傳輸數據的無線通信系統(tǒng)。
1 節(jié)點硬件設計
節(jié)點分為協(xié)調器節(jié)點和普通節(jié)點,普通節(jié)點帶有傳感器,負責采集需要的數據并組成網絡,協(xié)調器節(jié)點負責整個網絡的控制和數據的匯總、分析、處理等。圖1為協(xié)調器和普通節(jié)點的結構圖。
1.1 MCU
STC12LE5410AD單片機是單時鐘/機器周期(1T)的兼容8051內核單片機,是高速、低功耗的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,而速度快8~12倍,內部集成硬件高速SPI(Serial Peripheral Interface)接口、2 KB EEPROM、A/D轉換模塊和MAX810專用復位電路。工作電壓2.4~3.8 V,因此可用電池工作,并可長時間工作。器件在少于6 μs的時間內可以從低功耗模式迅速喚醒。STC12LE5410AD的超小封裝、高度集成、精簡外部電路可設計出更小的節(jié)點,超低的價格可以大規(guī)模鋪設傳感器節(jié)點。STC12LE5410AD單片機的這些特征,非常適合應用在無線傳感器網絡中。
1.2 射頻收發(fā)器件nRF905[5]
nRF905由挪威Nordic公司生產,是一個為433/868/915 MHz-ISM(工業(yè)、科學、醫(yī)療)頻段設計的單片無線收發(fā)芯片,32腳QFN封裝,工作電壓為1.9~3.6 V,最大發(fā)射功率為10 dBm。該收發(fā)芯片由頻率合成器、接收解調器、功率放大器、晶體振蕩器和調制器組成,片內自動完成曼徹斯特編碼/解碼。nRF905有兩種活動(TX/RX)模式和兩種節(jié)電模式?;顒幽J街g轉換時間小于550 μs,活動模式與節(jié)電模式之間的轉換時間小于650 μs。
nRF905通過SPI與微控制器通信,自動處理字頭和循環(huán)冗余碼校驗(CRC)。當進行數據發(fā)送時,只需將配置寄存器信息、所要發(fā)送的數據和接收地址送給nRF905,它就會自動完成數據打包(加字頭和CRC校驗碼)和發(fā)送。接收數據時,nRF905自動檢測載波并進行地址匹配,接收到正確數據后自動移去字頭、地址和CRC校驗碼,再通過SPI將數據傳送到微控制器。
1.3 硬件連接設置
STC單片機通過內部集成的硬件高速串行外設接口SPI與nRF905連接,最快可達3 Mb/s,比軟件模擬SPI方式快30倍左右,大大減少了程序執(zhí)行時間,提高了網絡的吞吐率。同時在設計協(xié)調器節(jié)點與PC上位機軟件通信程序時,利用STC單片機1T時鐘的優(yōu)勢,設置串口波特率使用的定時器12倍速方式,使串口波特率提高至115 200 b/s,提高了協(xié)調器節(jié)點的反應速度,減少了等待時間,提高了系統(tǒng)的吞吐率。
2 節(jié)點軟件設計
本系統(tǒng)的軟件設計分為協(xié)調器節(jié)點Connector軟件和普通節(jié)點Node軟件的設計,其中協(xié)調器節(jié)點作為整個網絡系統(tǒng)的主節(jié)點,起著控制全網絡的作用,通過PC機的上位機軟件,可以對協(xié)調器進行接收和發(fā)送命令及數據,從而實現(xiàn)對整個系統(tǒng)網絡的控制。而每個普通節(jié)點也預留通信接口,可以在需要的時候與其他設備相連接。
由于本系統(tǒng)實現(xiàn)自組織網絡的需要,在物理層中為每個節(jié)點(包括協(xié)調器和普通節(jié)點)定義了相同的物理地址,實現(xiàn)全網的廣播功能。在網絡層為每個節(jié)點分配唯一的網絡地址,通過軟件判斷接收數據的目的節(jié)點是否是本機。
圖2為節(jié)點自組織流程圖。當網絡中增加一個新節(jié)點,新節(jié)點上電初始化后,首先會向協(xié)調器發(fā)送路由請求RREQ請求加入網絡,并打開定時器;協(xié)調器收到RREQ后,記錄新節(jié)點信息,并通過反路由發(fā)送應答信號ACK至源節(jié)點;如果新節(jié)點在設定的時間內收到ACK信號,表示加入網絡成功,并且記錄本節(jié)點至協(xié)調器的路由信息;如果在設定的時間內沒有收到ACK信號,那么重新發(fā)送路由請求RREQ至協(xié)調器,如此循環(huán)直至收到ACK信號。如果重發(fā)次數達到設定的上線,仍沒有收到ACK信號,則進行全網廣播RREQ,并打開定時器,等待返回RREP命令;在設定時間后進行重新廣播RREQ,直到到達重發(fā)上限。新節(jié)點收到RREP表示加入網絡成功,同時保存RREP命令幀中的路由信息。
評論