張 濤,張 晶,陳 凱,孟憲佳,陳嘉文,李 康,馬玉梅
(1.西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,陜西 西安 710127;2.鎮(zhèn)北臺長城文物管理所,陜西 榆林 719000)
與3G[1],WiFi[2],ZigBee[3]等傳統(tǒng)無線通信方式相比,低功耗廣域物聯(lián)網(wǎng)(LPWAN)[4]能夠進(jìn)行遠(yuǎn)距離數(shù)據(jù)傳輸,對能源的依賴低,布置成本低,可以實現(xiàn)物聯(lián)設(shè)備的大范圍覆蓋。LoRaWAN是一種星形拓?fù)渚W(wǎng)絡(luò)結(jié)構(gòu),應(yīng)用擴(kuò)頻通信(spread spectrum communication,SSC)技術(shù)實現(xiàn)了0.3kb/s千萬至50kb/s的超遠(yuǎn)距離數(shù)據(jù)傳輸,使用速率自適應(yīng)(ADR)方案最大化發(fā)送節(jié)點的電池的壽命和網(wǎng)絡(luò)容量。在帶寬一定的情況下增大擴(kuò)頻因子(spreading factor,SF)有效減小了數(shù)據(jù)傳輸?shù)恼`碼率,提高了信號在遠(yuǎn)距離下的抗干擾能力。然而LoRaWAN使用基于時隙與占空比的碰撞避免的數(shù)據(jù)傳輸方法,增大了數(shù)據(jù)包發(fā)送的延時,SF的增大進(jìn)一步限制數(shù)據(jù)傳輸速率。本文通過節(jié)點協(xié)作,使得各通信信號同步碰撞,在不加大SF的前提下,實現(xiàn)LoRa節(jié)點的遠(yuǎn)距離、高速率通信,并且鏈路層不再避免碰撞,減小了信號的傳輸延時。
現(xiàn)有的提高數(shù)據(jù)傳輸速度的方法有很多,如 BLINK[5]是通過鏈路層算法優(yōu)化和信道選擇算法強化傳輸過程減小通信所需消耗從而提高tag的吞吐和通信速率;FlipTracer[6]實現(xiàn)了RFID的并行通信,利用星座圖建立了一個電位跳變模型實現(xiàn)了RFID碰撞的分離。這種方式并不適用于LoRa。對于無線信號的碰撞問題的解決主要集中于蜂窩網(wǎng)[7-8]、RFID[9]和無線局域網(wǎng)[10-12]。然而,這些工作大部分都要依賴于多根天線,ZigZag[13]提出從時間的角度去進(jìn)行碰撞的識別與分離,這個方法需要同一終端信號的多次碰撞。本文只需要單天線一次信號碰撞就可以實現(xiàn)LoRa碰撞信號的分離。
本文在Choir[14]的基礎(chǔ)上,提出一種基于信號碰撞的通信方式,有效地增加了LoRa節(jié)點通信距離,減小了節(jié)點間的數(shù)據(jù)傳輸?shù)难舆t、提高了其數(shù)據(jù)傳輸速度。
首先,文章探究了信號與信噪比(SNR)之間的關(guān)系,明確了信號碰撞可以提高LoRa的通信速率,以此為基礎(chǔ),要實現(xiàn)信號之間的碰撞就要做到各節(jié)點發(fā)送的數(shù)據(jù)包的同步,所幸LoRa是星形拓?fù)涞木W(wǎng)絡(luò)結(jié)構(gòu),我們采用類似于Beacon基站[15]的通信的方式,通過基站發(fā)送一個同步信號實現(xiàn)節(jié)點信號的同步。
其次,所有通信節(jié)點都是工作在同一中心頻段上的,這就使得不用占用過多的頻段資源,并且星形網(wǎng)絡(luò)中的通信從沖突檢測變?yōu)樾盘柵鲎?大大提高了網(wǎng)絡(luò)的信息吞吐量。碰撞信號使得所有信號的能量疊加在一起,與單節(jié)點發(fā)送信號相比,在相同通信距離下,保證相同的信號發(fā)射強度,通信范圍更遠(yuǎn)。
LoRa信號會根據(jù)信道的信噪比來選擇一個SF值來實現(xiàn)遠(yuǎn)距離通信,信道噪聲越強,SNR越小,需選擇的SF就越大,通過式(1)可以發(fā)現(xiàn),當(dāng)一個信號包的總能量分配到每個chirp的碼片時,SF越大時對于每個符號其分配到的能量值就越多,相對地對于信號的SNR就越大。因此,SF越大,每比特數(shù)據(jù)的SNR就會變大,信號相對的抗干擾能力變強,傳輸?shù)木嚯x也就越遠(yuǎn)。另一方面,信號的碰撞會使信號能量疊加,對于單位時間內(nèi)的信號S1與S2,其碰撞后的信號能量為pS1+pS2,我們把碰撞的信號都作為有效信號,則信號的能量的疊加會提高信噪比。對于LoRa而言,信號的碰撞使得SNR增大,變相地我們可以適當(dāng)?shù)販p小SF以此提高網(wǎng)絡(luò)中數(shù)據(jù)的傳輸速率,因此碰撞的實現(xiàn)也會使得信號延時降低。
(1)
(2)
若要實現(xiàn)信號的碰撞,首先需要實現(xiàn)信號的同步,我們通過基站發(fā)送同步信號來實現(xiàn)。由于節(jié)點晶振造成的硬件頻偏,即使我們忽略同步信號到達(dá)各個節(jié)點的時間偏差,在接收端信號的碰撞依舊不是十分的完美。由于單個chirp的頻率偏移不超過整個chirp的1/4就不會對信號的解調(diào)產(chǎn)生影響,因此兩個節(jié)點實現(xiàn)同步通信,其時間偏移不能超過1/4*2SF/BW(BW為信號的帶寬),在這個范圍內(nèi)的誤差是可以容忍的。對于晶振所產(chǎn)生的頻率偏移Δf,可以使用公式(3),(4)將其轉(zhuǎn)化為時間上的偏移Δt。
K=BW2/2SF,
(3)
Δt=Δf/K。
(4)
在進(jìn)行碰撞信號的分離時,首先需要確定碰撞信號的包頭,在近距離下收到的信號的強度沒有衰減到噪聲水平以下。我們可以直接通過信號的強度直接來確定信號的一個包的開始,然而隨著距離的增加,信號的強度會急劇衰減,當(dāng)信號強度衰減到噪聲強度以下時,噪聲將信號淹沒,就很難再簡單地從信號的強度上判斷一個信號包的起始位置。
3.3.1 基于頻率的包頭檢測 由于LoRa采用的是線性擴(kuò)頻調(diào)制技術(shù),其頻率特性并不會因為距離的增加而丟失,由此我們可以通過頻率的特性來判斷一個包的起始位置。我們使用FRFT對信號進(jìn)行處理,可以得到該窗口內(nèi)chirp的起始位置的頻率。為了加快處理速度,通過脈沖壓縮,再將得到的信號作FFT就可以得到我們想要的頻率信息。通過信號時域上的能量疊加,在一個chirp的時間窗內(nèi)可以識別出一個較為突出的頻率峰值,而這個峰值遠(yuǎn)高于其他噪聲的峰值。當(dāng)這個時間窗內(nèi)剛好存在一個完整的chirp時,該頻率對應(yīng)的峰值會達(dá)到最大,這個最大值的位置就是一個包的起始位置。
3.3.2 基于擬合的包頭檢測 由于對信號的頻率檢測處理計算較為復(fù)雜,我們提出一種基于擬合包頭檢測方式。對于一個信號的檢測實質(zhì)是信號前導(dǎo)碼的檢測,而前導(dǎo)碼部分的形式是固定的,因此可以通過接收到的信號與標(biāo)準(zhǔn)chirp信號進(jìn)行比較,相似度達(dá)到一定閾值范圍內(nèi),則認(rèn)為找到了包頭。
3.4.1 較大頻率偏移的碰撞信號的分離 對于存在較大頻率偏移的碰撞信號,通過脈沖壓縮后做FFT,調(diào)整FFT的頻率分辨率,使得碰撞信號的區(qū)分度達(dá)到最大,根據(jù)能量值就可以在頻域上得到每一個chirp的起始頻率,由于每一個完整的chirp都將完整的掃過該信號的整個頻率帶寬,結(jié)合前后時間窗口的chirp的起始頻率,就可以推測出每一個chirp的終止頻率。
3.4.2 較小頻率偏移的碰撞信號的分離 在碰撞信號存在較小頻率偏移或信號完美碰撞時,無論怎樣調(diào)整頻率分辨率都很難從數(shù)值上直接區(qū)分出兩個chirp。與信號的檢測相似,FRFT使得每一個chirp在頻域上以波峰凸顯出來。每個LoRa節(jié)點都存在一個固有的硬件頻偏[14],通過這個固有的硬件頻偏可以將不同節(jié)點發(fā)送的chirp區(qū)分出來。
對于兩個碰撞信號S(t)可用式(5)表示,D為一個downchirp,且每個波峰的峰值表示該頻率上的能量,可以近似為每個chirp的能量值A(chǔ),如此已知能量A以及起始頻率f可以擬合出碰撞信號,而后利用最小二乘法公式(6)在已知的最大可能的硬件頻偏內(nèi)估計各個chirp的頻率。最后迭代將信號中所有的chirp分離出來。
S(t)D=A1ej2πf1t+A2ej2πf2t,
(5)
(6)
f=fs/N。
(7)
由公式(7)所示,頻譜的分辨率由采樣率fs和采樣點數(shù)N決定,為了更容易在頻域分離碰撞信號,需要盡可能地提高頻率分辨率,但是這樣的處理會使得原始信號的高頻部分的信息丟失。為緩解這樣的誤差,我們使用自適應(yīng)頻率校正算法[16],利用各峰值左右兩側(cè)的幅度值估計峰值曲線的大致增長趨勢,校正峰值處的頻率,以減小頻率計算誤差。
在得到每一個時間窗口中chirp的起始終止頻率后,需要對信號進(jìn)行拼接,同一chirp可能會落到連續(xù)的兩個時間窗口內(nèi),有一點是確定的,同一chirp一定存在唯一的最低點(即起始頻率)和唯一的最高點(即截止頻率),并且最高點和最低點都落在該信號的帶寬上下限附近,其頻率會從從最低點變化到了最高點。通過這樣的關(guān)系以及獨特的硬件頻偏可以實現(xiàn)chirp信號的拼接。
本文所有實驗都是把USRP-2954作為接收端,SX1276嵌套開發(fā)板Arduino/Genuino Uno作為發(fā)送端。在信號碰撞實驗中,我們使用一個LoRa節(jié)點作為同步信號的發(fā)送端。LoRa節(jié)點全部工作在中心頻率為915MHz的免注冊非授權(quán)頻段,實驗中LoRa信號的帶寬(BW)為500kHz,發(fā)射端發(fā)射功率全都固定在10dbm,各個節(jié)點發(fā)包時間間隔為150ms。
為了確定遠(yuǎn)距離下多節(jié)點發(fā)送信號的能量是否會疊加,我們分別在50m和100m的室外環(huán)境中做了不同個數(shù)的節(jié)點的信號碰撞實驗,發(fā)送端節(jié)點工作在中心頻率為915MHz的頻段上,SF為8,BW為500kHz。如圖1所示,可以看到從50m到100m單節(jié)點發(fā)送信號,信號有了明顯的衰減,隨著節(jié)點個數(shù)的增加信號的能量通過碰撞有了明顯的加強。
圖1 50m和100m不同節(jié)點個數(shù)碰撞的信號的能量Fig.1 Energy of different nodes colliding in the distance of 50m and 100m
我們模擬計算了單節(jié)點的通信速率。首先假設(shè)發(fā)送節(jié)點與基站的距離為單個節(jié)點的最遠(yuǎn)通信距離,這種情況下節(jié)點的擴(kuò)頻因子設(shè)為12,帶寬設(shè)為500kHz,表1為單個節(jié)點在BW為500kHz時不同SF下的最大通信速度,表1為SF每減小1數(shù)據(jù)傳輸速率增加的大小。隨著碰撞節(jié)點的增加SF的減小,節(jié)點的數(shù)據(jù)傳輸速率會在一定程度上提升。
表1 BW為500kHz時不同SF下節(jié)點的數(shù)據(jù)速率
Tab.1 Data rate of nodes under different SF when BW is 500kHz
SFRate/bit721 900 812 500 97 000 103 900 111 760 12980
表2 與SF為12相比減小不同SF時數(shù)據(jù)速率增加的比特數(shù)
Tab.2 The number of bits of data rate increase when different SF are reduced compared to SF of 12
減小的SFRate/bit1780 22 920 36 020 411 520 520 920
本文設(shè)計實現(xiàn)了一種基于LoRa節(jié)點協(xié)作的低延遲數(shù)據(jù)傳輸方法,建立信噪比與碰撞之間的關(guān)系,通過信號碰撞的方式,增加信號的有效傳輸范圍。在確定編碼率的情況下,通過碰撞可以有效地提高信號的信噪比,在等距離的相同信號傳輸中有效地減小了節(jié)點的功率消耗。因此,相同距離可以將SF降低而不影響數(shù)據(jù)的識別度。由于SF的減小使得相同時間下節(jié)點的數(shù)據(jù)傳輸速度得到明顯的提升,同時在這樣的星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中,沒有采用沖突避免策略,而是直接利用碰撞,在一定程度上增加了單節(jié)點的信號傳輸距離,同時增加了該信道上的信息吞吐量。
在該方法的實現(xiàn)中,本文主要利用信號的有效碰撞來提高數(shù)據(jù)的傳輸速率,集中實現(xiàn)碰撞信號的分離。信號分離的前提是檢測到信息,而后是對碰撞信號的識別分類,通過頻率點能量的變化趨勢來尋找包頭,利用最小二乘法估計頻率偏移、提高數(shù)據(jù)采樣率分辨解決信號頻率的混疊、采用拋物線插值法等頻率校正算法進(jìn)一步校正譜峰頻率,比較前后時間窗口chirp的頻率完成信號的拼接。
但是,這種方式的缺點是必須通過基站進(jìn)行信號的同步,同時碰撞的信號必須具有較大的相似性。在碰撞的分離上,隨著碰撞節(jié)點的增加,信號的分離難度會隨之增加,我們算法的效率會越來越低,因此對于信號分離算法的研究也將是我們未來工作的中心之一。