劉 軍 鄭蓓林 黃 萍 趙克安
(1.浙江中控自動化儀表有限公司;2.杭州職業(yè)技術(shù)學(xué)院)
在物聯(lián)網(wǎng)時代, 各個設(shè)備之間實現(xiàn)互聯(lián)、相互通信已經(jīng)成為一種必然趨勢。 目前市場上的物聯(lián)技術(shù),遠(yuǎn)距離的可以采用運(yùn)營商布設(shè)的NB-IoT網(wǎng)絡(luò),中距離的可以采用Lora 無線方案,短距離的可以采用WiFi、藍(lán)牙及RFID 等互聯(lián)方案。 筆者討論一種超低成本、簡單便捷,在場區(qū)范圍內(nèi)的無線物聯(lián)方案。
NRF24L01 是一款工作在2.4~2.5GHz 世界通用ISM 頻段的單片無線收發(fā)器芯片,3.3V 供電。該芯片可通過SPI 接口配置126 個1Mbit/s 速率的頻點(diǎn),或者63 個2Mbit/s 速率的頻點(diǎn),SPI 的最大速率可達(dá)10Mbit/s。 最大發(fā)射功率0dB 時供電電流30mA,最大通信距離為可視100m,穩(wěn)定收發(fā)距離10m。 加上功放芯片,最大發(fā)射功率可達(dá)20dB,此時供電電流250mA,最大通信距離為可視1 000m,穩(wěn)定收發(fā)距離100m。芯片可設(shè)6 個物理地址,可提供6 個通道單獨(dú)通信。 每個通道具有CRC 校驗功能、 自動應(yīng)答和自動重發(fā)功能。自動延遲重發(fā)的時間與次數(shù)可自由配置。 每幀最大為32 字節(jié),擁有3 級緩存,可以通過SPI 接口查詢寄存器狀態(tài)后接收數(shù)據(jù)。
NRF24L01 的6 個通道的物理地址都有5 個字節(jié)的長度,其中前兩個自由分配,其余4 個地址的前4 個字節(jié)必須與第2 個地址的前4 個字節(jié)相同。 這樣,把第1 個通道地址留作他用,第2個通道地址作為本網(wǎng)格的廣播接收地址, 其前4個字節(jié)也可以作為本網(wǎng)格的網(wǎng)格號,最后一個字節(jié)定為255 (0xFF)。 假如網(wǎng)格號為【0xC2、0xC2、0xC2、0xC2】, 則第2 個通道物理地址為【0xC2、0xC2、0xC2、0xC2、0xFF】。第3~6 通道的物理地址分別設(shè)為 【0xC2、0xC2、0xC2、0xC2、0x00】【0xC2、0xC2、0xC2、0xC2、0x01】【0xC2、0xC2、0xC2、0xC2、0x02】【0xC2、0xC2、0xC2、0xC2、0x03】。 除了廣播地址,每個節(jié)點(diǎn)可以分到4 個不同的地址,這樣依次按順序分配,整個網(wǎng)格可以有63 個節(jié)點(diǎn)。 規(guī)定地址末位為0、4、8、……,邏輯方向向左;地址末位為1、5、9、……,邏輯方向向下;地址末位為2、6、10、……,邏輯方向向右;地址末位為3、7、11、……,邏輯方向向上,形成如圖1 所示的網(wǎng)格網(wǎng)絡(luò)。 網(wǎng)格外圍的32 個地址為無效地址,規(guī)定圖1 所示相鄰的地址相互通信。 要實現(xiàn)網(wǎng)格內(nèi)節(jié)點(diǎn)能相互通信,需把所有節(jié)點(diǎn)設(shè)在同一個頻點(diǎn)上。
為了避免網(wǎng)格內(nèi)節(jié)點(diǎn)無線信號的相互干擾,首先關(guān)閉自動應(yīng)答與自動重發(fā)功能,以令牌的方式進(jìn)行數(shù)據(jù)傳輸[1]。 設(shè)定如下路由規(guī)則:每個節(jié)點(diǎn)按“左-下-右-上”的順序嘗試連接,傳遞發(fā)送的數(shù)據(jù)包;邊緣節(jié)點(diǎn)無效地址的方向不進(jìn)行連接嘗試;本節(jié)點(diǎn)接收或發(fā)出的通道不再收發(fā)同一數(shù)據(jù)包,最后發(fā)送通道只接收盲端退回的同一數(shù)據(jù)包; 已被遍歷的節(jié)點(diǎn)拒絕接收非退回的數(shù)據(jù)包。例如圖1 中的地址為31 的通道所在節(jié)點(diǎn)發(fā)起訪問,發(fā)送數(shù)據(jù)到地址為63 的通道,按上述路由規(guī)則,其路由過程如圖2 所示。 遍歷所有節(jié)點(diǎn),最終到達(dá)終點(diǎn)。 如果終點(diǎn)返回應(yīng)答數(shù)據(jù),則按同樣的路由規(guī)則由終點(diǎn)發(fā)往起點(diǎn)。
圖1 網(wǎng)格邏輯設(shè)計
圖2 網(wǎng)格路由
在實際工程中,各節(jié)點(diǎn)不會按圖1 所示順序安裝,但邏輯上還是可以按圖1 的順序來進(jìn)行路由,但可能存在路由被撕裂的情況。 按筆者的路由規(guī)則,只要不被完全撕裂,形成孤島,還是可以遍歷到每一個節(jié)點(diǎn)。 圖3 所示為被撕裂情況下的路由過程。 如果終點(diǎn)是圖中的A點(diǎn)或B點(diǎn),只要數(shù)據(jù)包被退回到C點(diǎn)時就可以遍歷到A點(diǎn)或B點(diǎn)了。
圖3 被撕裂情況下的路由
本網(wǎng)格型網(wǎng)絡(luò)總連接數(shù)63×4-32=220 個。 最壞情況,數(shù)據(jù)包被退回兩次,一次發(fā)送一次退回,再次發(fā)送與退回, 連接次數(shù)220×4=880。NRF24L01 進(jìn)入發(fā)射狀態(tài)需要10μs,切換回接收狀態(tài)需要130μs,共140μs。 設(shè)置連接超時1ms,則最壞遍歷時間為(1+0.14)×880=1003.2ms,故本方案具有較高的實用性。
上述路由規(guī)則可做進(jìn)一步簡化,發(fā)起的節(jié)點(diǎn)可以嘗試直接發(fā)目標(biāo)節(jié)點(diǎn),如果目標(biāo)節(jié)點(diǎn)收到數(shù)據(jù)包, 則回復(fù)一個應(yīng)答包就立即可以完成通信。如果沒有得到回復(fù),則可以嘗試連接目的節(jié)點(diǎn)的4 個邏輯方向的附近節(jié)點(diǎn), 通過這4 個節(jié)點(diǎn)進(jìn)行直接傳遞,快速完成數(shù)據(jù)包的傳遞。 如果4 個附近節(jié)點(diǎn)不能連接再進(jìn)行全網(wǎng)格的遍歷。
在實際使用過程中63 個節(jié)點(diǎn)遠(yuǎn)遠(yuǎn)不夠使用,需要多個網(wǎng)格。 在一個網(wǎng)格中可以任選一個節(jié)點(diǎn)與其他網(wǎng)格的一個節(jié)點(diǎn)作為網(wǎng)關(guān),實現(xiàn)多層網(wǎng)格的互聯(lián),形成立體空間的節(jié)點(diǎn)互聯(lián)。
利用NRF24L01 實現(xiàn)設(shè)備的網(wǎng)格狀無線互聯(lián),在工廠、樓宇及大型建筑等場合有較多的需求,不管是新建信息化工程還是更新?lián)Q代,都十分便利。 在此基礎(chǔ)上再設(shè)計一套合適的應(yīng)用層協(xié)議,可以方便地實現(xiàn)節(jié)點(diǎn)設(shè)備的物聯(lián),提高整個系統(tǒng)的智能化、信息化水平。