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