LoRa: Long Range的縮寫眉反,是一種基于線性調制擴頻技術(CSS: chirp spread spectrum)的一種擴頻調制技術虽界。
與同類技術相比捶索,提供更長的通信距離,更低的功耗民假,速率比較低拔疚。
調制是基于擴頻技術荞彼,線性調制擴頻(CSS)的一個變種觉既,并具有前向糾錯(FEC)特性。
LoRa顯著地提高了接受靈敏度(低至-148dBm)阀参,與其他擴頻技術一樣浓恶,使用了整個信道帶寬廣播一個信號,從而使信道噪聲和由于使用低成本晶振而引起頻率偏移的不敏感性更健壯结笨。
LoRa可以調制信號19.5dB低于底噪聲包晰,而大多數(shù)頻移鍵控(FSK)在底噪聲上需要一個8-10dB的信號功率才可以正確調制。
先直觀地看一下LoRa傳輸時的波形,下面幾張圖是我實際抓到的LoRa傳輸時的波形
基礎知識
(一)EIRP ERP (e.r.p/e.i.r.p)
EIRP即射頻發(fā)射功率(dBm)+天線增益(單位dBi)-線路衰減(dB)
ERP即射頻發(fā)射功率(dBm)+天線增益(單位dBd)-線路衰減(dB)
其中 EIRP(dBm) = ERP(dBm)+2.15
這里引出一個問題炕吸,國內(nèi)在470~510MHz頻段要求功率不能超過50mW [17dBm (e.r.p)]伐憾,那為什么廠商出廠都標明了芯片或者模塊是20dBm呢,這不是超出了限制范圍赫模?
芯片或模塊的信號還要經(jīng)過傳輸線和天線树肃,總所周知,芯片到天線會有插入損耗以及線損等瀑罗,然后經(jīng)過天線再增益后才得到最后的空中功率值
(二)dBm dB dBi dBd mW 含義及關系和區(qū)別
請自行看書或搜索學習
如果需要看視頻教程胸嘴,推薦:
視頻(中文字幕):hackrf bilibili , 視頻(英文):hackrf greatscottgadgets
其它視頻:LoRa youtube
(三)鏈路預算
首先要了解接收靈敏度和發(fā)射功率
接收靈敏度值越低越好,比如-120dBm和-145dBm斩祭,-145dBm值更小劣像,我們說接收靈敏度更好。
而經(jīng)常也會有人說最大靈敏度摧玫,這里的大不能理解為值大而知最好靈敏度耳奕,這里需要注意,表達時容易混淆诬像。
可以簡單理解成 最好接收靈敏度值絕對值+最大發(fā)射功率屋群, 更詳細解釋請自行學習
比如按照semtech的sx1276手冊說明,芯片最大功率位20dBm坏挠,最大接收靈敏度位-148dBm,所以最大鏈路預算為168dBm芍躏。
LoRa相關基礎術語和名詞解釋
(一)up-chirp/down-chirp
首先大家都明白調頻(FM
)和調幅(AM
),如下圖:
使用不同幅度或者頻率來表示不同的數(shù)據(jù)(數(shù)值)降狠。
up-chirp/down-chirp
:這里chirp是鳥叫聲的意思对竣,也正如鳥叫聲一樣,up-chirp
指頻率逐漸增加的過程喊熟,down-chirp
則相反是頻率逐漸降低的過程柏肪。
比如下圖就是up-chirp
姐刁,反之如果時間從右往左就是down-chirp
:
通過這種變化過程來表示一個或者多個數(shù)據(jù)(數(shù)值)聂使,
比如最簡單的up-chirp
代表1壁拉,down-chirp
代表0,谬俄;
再復雜一點,從最低頻率變化到最高這個過程表示1弃理,從中間頻率到最大頻率然后跳變到最低頻率再變化到中間頻率這個過程表示2溃论,從最高變成最低標識3等等。具體表示什么就看具體的應用和標準了痘昌。
而LoRa就采用這種調制方式:
(二)帶寬(BandWidth)
帶寬 BW (BandWidth):
表示頻率最大值減去最小值的差值钥勋。
而帶寬和信號的傳輸速率又有著極大的關系,信道帶寬與數(shù)據(jù)傳輸速率的關系可以奈奎斯特(Nyquist)準則與香農(nóng)(Shanon)定律描述辆苔。如果忘記了可以看這里算灸。
所以帶寬越大,速率越快,單位是Hz
(三)碼片(chips)
碼片:通過擴頻技術驻啤,將一個數(shù)據(jù)位用很多碼片來表示菲驴。
(四)符號(symbol)
一個完整的掃頻信號(sweep signal)可以被稱為一個符號,如下圖中需黃色虛線部分的黑色實線稱為為一個符號:
就像前面說的骑冗, 這樣一個chirp信號可以用來表示一個或者多個數(shù)據(jù)(數(shù)值)赊瞬,在LoRa調制中,一個符號代表的數(shù)據(jù)內(nèi)容長度由擴頻因子決定贼涩,擴頻因子含義見后面闡述巧涧。
(五)擴頻因子(Spreading Factor)
前面說了使用擴頻技術用多個碼片來代表1個數(shù)字信號中的數(shù)據(jù)位(即我們真實想傳輸?shù)臄?shù)據(jù)),我們將一個符號分成2^SF個單元遥倦,這個單元即為前面說的碼片(chips)褒侧,來表示SF個數(shù)據(jù)位(注意不是1個數(shù)據(jù)位或者1個字節(jié)),SF即擴頻因子谊迄。
比如一個符號可以表示
1011111
(95)闷供,7位數(shù)據(jù),值位95统诺,這里一個符號代表的數(shù)據(jù)的位數(shù)就是擴頻因子的值歪脏,比如上面這個95的值對應的擴頻因子的值位7
這里即我們用了2^SF/SF
個碼片來表示一個實際的位。如果SF越大粮呢,因為用來表示這個位數(shù)據(jù)的碼片多了婿失,抗干擾能力自然就會好很多;而由于代表每個符號的碼片增加了啄寡,單位時間傳輸碼片數(shù)量是定了的豪硅,因此需要的時間自然就增加了。
綜上挺物,擴頻因子值越小速率越高懒浮,抗干擾性越低,傳輸距離越近。
在semtech的LoRa芯片中砚著,SF取值6~12,6為特殊值
(六)編碼率 CR (Code Rate)
LoRa使用了向前糾錯技術次伶,傳輸?shù)臄?shù)據(jù)有一部分需要拿來糾錯,在實際發(fā)送的長度為SF指定的長度中稽穆,實際傳輸?shù)臄?shù)據(jù)只有一部分即CR(CR的取值是一個小于1的分數(shù)冠王,而semtech的lora的數(shù)據(jù)手冊上為了簡化寄存器,有幾個CR值分別用1~4來表示4/5~4/8舌镶,不要弄混淆了)柱彻,其它的用來糾錯的數(shù)據(jù)。
比如SF8發(fā)送了8個字節(jié)餐胀,但是由于有向前糾錯技術绒疗,這8個字節(jié)中的一部分需要拿來做這個事情,比如這里CR設置4/5骂澄,其中有1/5的數(shù)據(jù)為糾錯數(shù)據(jù)吓蘑,實際發(fā)送的有效數(shù)據(jù)內(nèi)容只有8*4/5字節(jié),如下圖:
所以CR值越大(4/5>4/8)坟冲,則實際一個符號中的有效數(shù)據(jù)更少磨镶,所以速率也就更低,但是魯棒性會更好
速率
碼片速度Rc:
前面也說到健提,帶寬和信號的傳輸速率有極大的關系琳猫,這里碼片的傳輸速率和帶寬(單位Hz)的值相等,即:
Rc= BW = |BW|chips/s
符號速度Rs:
每個符號有2^SF個碼片私痹,而碼片的傳輸速率為Rc脐嫂,所以,符號傳輸速率Rs為:
Rs = Rc/2^SF = BW/2^SF
數(shù)據(jù)傳輸速率DR(或者說bit Rate):
DR = Rb(bits/sec) = SF * Rs * CR = SF * (BW/2^SF) * CR
傳輸時間
1個碼片傳輸時間
Tc = 1/Rc = 1/BW
-
1個符號傳輸時間
Ts = 1/Rs = 2^SF/BW
由此看出紊遵,SF每增加一個值账千,Ts就要是之前的兩倍,如下圖:
-
傳輸時間:
LoRa在傳輸過程中需要傳前導碼、頭暗膜、以及payload
Tpreamble = (Npreamble+2+2+1/4) * Ts
其中Npreamble
可以設置匀奏,比如本文的捕捉到的波形圖中值為8.
Tpayload = Ts * N(payloadSymbNb)
max()取最大值函數(shù)
ceil()取整數(shù)函數(shù)
然后傳輸時間相加Tpreamble + Tpayload
即為傳輸時間
這里放一張網(wǎng)友手算的圖:
當然,有現(xiàn)成的計算工具学搜,semtech官方也提供了工具
實際波形分析(解碼)
了解了以上的知識娃善,再回頭來看看實際捕捉到的波形圖(瀑布圖)
如上面瀑布圖所示,縱軸是時間軸瑞佩,橫軸是頻率聚磺。
可以看到傳輸數(shù)據(jù)時在一周期T內(nèi)頻率會從某個起點均勻變化(增大或減小)直到設置的帶寬的臨界值炬丸,然后跳變?yōu)樽钚』蛘咦畲笾道^續(xù)變化直到頻率變?yōu)槠鹗紩r的頻率瘫寝,即前面說的up-chirp
或者 down-chirp
,而實際也可以看到,除了有(2+1/4)個符號使用了down-chirp
矢沿,其它的都是使用的up-chirp
。
在這張瀑布流圖中可以清晰地看到preamble和sync word酸纲,前12+1/4個符號可以看到有清晰的規(guī)則捣鲸,其中前8個up-chirp是preamble,中間兩個up-chirp是sync word,外加后面(2+1/4)個down-chirp的符號闽坡, 然后后面跟的數(shù)據(jù)就是header和payload了栽惶,由于數(shù)據(jù)不像preamble那樣規(guī)則這里就不分析了。
為什么網(wǎng)關要用sx1301疾嗅,可以用sx1276代替么
1301可以同時監(jiān)聽8個上行通道外厂,每個通道可以同時監(jiān)聽6個正交擴頻因子SF7~SF12,這也就是文檔中說的多大49個虛擬通道的來源代承,但是需要注意的是汁蝶,雖然每個通道可以同時監(jiān)聽6個SF,但同一時刻也只能處理一個信號论悴,比如同時來自SF7和SF12的消息也只能處理其中一個掖棉。
也就是說1301的上行也就能同時處理8個通道(頻率范圍),那可能就會想到如果我用8個SX1276是不是就可以替代1301了膀估,事實上也是不行的幔亥,因為1301每個通道都能檢測6個SF通道,雖然同一時刻只能處理其中一個察纯,但是1276/1278是不能做到這點的帕棉,SX1276/8同一時刻只能檢測一個SF信道。sx1301這個特性的好處就是因為檢測到多個SF信道饼记,因此可以很容易做速率自適應(ADR)香伴,而如果采用SX1276/78因為同時只能監(jiān)聽一個確定的SF的通道(即SF值和頻率均確定為一個),要做到相對來說就更困難具则。
參考資料
- mobilefish.com教學視頻(推薦)(文章中的部分截圖來自這里瞒窒,見截圖水印)
- DecodingLora(推薦)
- https://lora-alliance.org/sites/default/files/2018-04/lorawantm_specification_-v1.1.pdf
- http://blog.sina.com.cn/s/blog_7880d3350102wkzf.html
- http://www.eefocus.com/communication/403484/r0
- https://blog.csdn.net/jiangjunjie_2005/article/details/75123968
- http://bbs.eeworld.com.cn/thread-1060636-1-1.html
- https://wenku.baidu.com/view/390050fa6037ee06eff9aef8941ea76e58fa4a1a.html
- https://blog.csdn.net/qq_26602023/article/details/76026684