摘要
因項目的需要而接觸Lora,為什麼會有Lora這樣一門技術呢,大多應用在什麼樣的場景中?故此學習了一番,通過查找各方資源,總結了一下,如若有什麼錯誤的地方,望各位讀者批評指正。
簡介
LoRa是什麼?LoRa是LongRange的簡稱,是應用在物聯網的低功耗廣域網的一種傳輸技術。具有遠距離通訊、低功耗等特點,代價就是傳輸速率,速率越低,傳輸的距離就會越遠。基於線性調頻擴頻技術,保持了FSK調製相同的低功耗特性,額外增加了通信距離。因此使用LoRa技術,能夠以低的發射功率獲得更遠的傳輸距離。
1、應用舉例
LoRa是美國Semtech公司採用和推廣的一種基於擴頻技術的超遠距離無線技術。主要在全球免費頻段運行,包括433/470/868/915MHz。由於LoRa技術具有遠距離、低功耗、低成本、多節點的特性。多數應用在智能建築、智慧城市等應用領域。
例如智能水錶的應用就很好的利用了LoRa技術。
下面就來介紹一下智能水錶的抄表,大致分為三個部分:水錶、LoRa模塊、網關。
水錶的功能是正轉流量統計、倒轉流量統計、磁干擾檢測、應急關閥和無線傳輸數據。LoRa模塊通過與水錶的對接將水錶採集的數據進行轉發。LoRa網關的主要工作是接收服務指令,對水錶進行管理、數據採集以及上傳,主要作用是用於讀取水錶數據,水錶收到抄表指令後會將採集的數據返回到網關中,網關再將數據返回到服務器,從而實現無線抄表的流程。大致的通訊過程見下圖(引用)。
2、工作頻段
LoRa在中國部署的最佳免費頻段有兩個:CN779-787(最大發射功率僅10dBm)、CN470-510(最大發射功率可達17dBm)。
96路上行,470.3 MHz 每 200 kHz遞增一個到 489.3 MHz,SF7~SF12 4/5 48路下行,500.3 MHz 每 200 kHz遞增一個到 509.7 MHz,SF7~SF12 4/5
3、擴頻技術
由於LoRa採用了線性擴頻技術,不同傳輸速率的通信之間不會互相干擾。網絡服務器通過一種速率自適應ADR方案控制終端設備的傳輸速率。
Chirp的特點是信號的頻率以一定的規律變化,而FSK的信號只會在兩個頻點切換。Chirp的信號時域圖如下(引用):
這種線性擴頻技術能極大限度地共享相同的頻道資源。每套系統都具有與眾不同的擴展序列來減少來自其他設備的干擾,只有具有與發射者相同擴展序列的接收者才可以重組或壓縮擴頻傳輸信號來獲得其中加載的有效信息。即使是多套擴頻設備使用同一個頻道在同一地區進行信號傳輸,只要採用不同的擴頻序列,就不會相互干擾。
LoRa調製的核心思想是使用這種頻率的變化的模式來調製基帶信號,Chirp變化的速率稱之為擴頻因子。擴頻因子越大,傳輸的距離越遠,代價是數據速率。
4、數據通訊
LoRaWAN網絡架構是一個典型的星形拓撲結構,在這個網絡架構中,LoRa網關是一個透明傳輸的中繼,連接終端設備和服務器。
4.1入網過程
LoRa設備支持兩種入網方式,OTAA(Over-The-Air Activation)無線激活和ABP(Activation By Personaliztion)手動激活。
OTAA入網:
入網的過程中涉及兩類消息,join-request、join-accept;
join-request入網請求由終端設備發起,在設備發起請求前,需要配置好設備的三要素(AppEUI、DevEUI、AppKey),由服務端開發商提供,其中AppEUI是應用的EUI,DevEUI是節點的長地址,AppKey服務器與終端設備事先存好,用於對join-accept消息解密使用。
入網請求消息格式如下:
| MHDR | APPEUI | DevEUI | DevNonce | MIC |
| ----- | ------ | ------ | -------- | ----- |
| 1字節 | 8字節 | 8字節 | 2字節 | 4字節 |
消息中的另外兩個字段MHDR是數據包頭,包含了消息的類型,從包頭中可以知道這是一個join-request消息。DevNone是一個設備端產生的隨機數,每次入網請求的時候這個隨機數都會改變,保存在服務器中,防止重放機制,當檢測到某次的值在歷史值中會判定為發生安全問題,就會拒絕本次的join請求。
同意入網請求消息格式如下:
| MHDR | AppNonce | NetID | DevAddr | DLSettings | RxDelay | CFList |
| ----- | -------- | ----- | ------- | ---------- | ------- | -------- |
| 1字節 | 3字節 | 3字節 | 4字節 | 1字節 | 1字節 | 0/16字節 |
服務器收到join-request入網請求的消息後在服務器端會產生一個隨機的AppNone,與NetID、DevAddr一起通過join-accept消息下發給終端設備。 注意的是下行的join-accept消息數據是加密的,需要存於終端與服務器兩邊的AppKey對其進行解密。 保存在服務端的DevNone與解密後的AppNone和NetID經過加密計算後產生NwkSkey和AppSkey兩個會話密鑰,用於網絡通信的安全。 另外,DLSettings字段是設置RX1和RX2的下行接收串口的速率的,CFList是網絡的頻率信道列表選項。
ABP入網:
ABP入網是將DevAddr、NwkSkey和AppSkey直接存放在終端設備中,跳過了join-accept的過程。相對安全性比較低。
4.2數據收發
入網成功後,終端設備就可以向服務器進行數據的收發,支持的數據幀類型有兩種Confirmed與Unconfirmed,前者需要應答,後者不需要應答。
在數據幀頭中含有自適應數據速率控制字段ADR,ADR被置位,網絡就會通過對應的MAC命令來控制設備的數據速率。ADR位可以通過終端以及網絡來設置或取消。能幫助終端延長電池壽命和擴大網絡容量。
終端發送confirmed類型的消息,接收端收到消息後需要回復一條ACK應答消息,且ACK置位。
在下行的數據消息中有個幀掛起位FPending,幀掛起位為1表示網關還有掛起數據等待下發,需要終端儘快發送上行數據來打開一個接收窗口。
每個終端設備都有兩個計數器,一個上行鏈路計數器(由終端在每次上行數據給網絡服務器時累加)和一個下行鏈路計數器(由服務器每次下行數據給終端設備時累加)。設備入網成功後,幀計數器都會置0。每次發送消息後,FCntUp或FCntDown都會加1,接收方會同步保存數據的幀計數。
5、物理幀結構
LoRa的數據報文分為兩種:上行數據報文與下行數據報文。上行的數據報文是從節點設備將傳感器數據經過網關傳到服務端。下行是將服務端的配置經過網關傳輸到設備中,下行僅僅是作為一種回覆。
下面分別是上行數據報文與下行數據報文:
Uplink PHY:
| Preamble | PHDR | PHDR_CRC | PHYPayload | CRC |
| -------- | ---- | -------- | ---------- | ---- |
Downlink PHY:
| Preamble | PHDR | PHDR_CRC | PHYPayload |
| -------- | ---- | -------- | ---------- |
圖3:上下行報文
其中Preamble前導碼的值為0x34; PHYPayload是用戶數據段; 其他的字段由lora radio硬件填充;
Radio PHY layer:
圖4:Radio PHY layer
CRC:CRC校驗位,保護數據的有效性,只出現在上行消息中 ;
PHDR:LoRa物理幀頭; PHDR_CRC:報頭校驗碼; PHYPayload:用戶數據段
MAC層(PHYPayload)
圖5:MAC層
MHDR:MAC頭; MACPayload的長度與區域有關。 MIC:消息一致碼
MAC頭(MHDR)
圖6:MAC頭
MType表示消息類型; RFU:預留字段; Major:表示的是LoRaWAN主版本號;
消息類型有以下幾種:
MACPayload
圖7:MACPayload
Fport:端口,Fport=0表示的是FRMPayload中只有MAC命令。 FRMPayload:負載數據。 FHDR:幀頭
FHDR由終端短址DevAddr、FCtrl控制字段、FCnt報文計數器、以及用來傳輸MAC命令的配置字段Fopts組成。Fopts(0--15Bytes)。
FHDR
圖8:FHDR
上行報文的控制字段FCtrl:
下行報文的控制字段FCtrl:
ADR:數據自適應速率,等於1表示會根據環境對網絡速率進行優化,等於0,表示自使用關閉,需要用戶配置好。 ADRACKReq:ADR請求響應位,如果 ADR_ACK_LIMIT (ADR_ACK_CNT >=ADR_ACK_LIMIT)次上行之後沒有收到下行回覆,就會設置ADR 請求響應位(將 ADRACKReq 設為1)。 ACK:消息確認位。 FPending:只出現在下行的消息中,表示幀掛起,網關有數據等待下發。 FOptslen:表示的是FOpts的實際長度,等於0,表示FOpts字段為空,不等於0,表示FOpts中存放的是MAC指令。MAC指令是不能同時出現在FOpts與FRAMPayload中的。 RFU:Class B與Class A上行數據報文一樣,使用了未使用的RFU字段。
協議詳解
上行報文MACPayload:
圖9:上行報文MACPayload
入網請求Join-Request:
圖10:Join-Request
下行報文MACPayload:
圖11:下行MACPayload
同意入網Join-accept:
圖12:Join-accept
6、終端設備類型
圖13:設備類型
A類設備的上下行傳輸:
圖14:A類設備工作模型
雙向通信終端設備,允許雙向通信,每一個終端設備上行傳輸的時候會伴隨著兩個下行的接收窗口,終端設備的傳輸槽是基於其自身通信需求,其微調是基於一個隨機的時間基準(ALOHA協議),開窗時間誤差要求為+/- 20us。A類設備的功耗最低,設備在上行數據的時候,服務器能迅速地進行下行通信。任何時候,服務器的下行數據通信都只能在上行數據之後。
B類設備的上下行傳輸:
備工作模型
具有預設接收槽的雙向通信終端設備,在預設時間中開放多餘的接收窗口,為了實現這一目的,設備會同步從網關接收beacon信號,通過Beacon將基站與模塊的時間進行同步。能使服務器知曉終端設備正在接收數據。
C類設備的上下行傳輸:
圖16:C類設備工作模型
具有最大接收槽的雙向通信終端設備,持續性的開放接收窗口,只在傳輸時關閉。
7、參考資源
參考文獻:
[1]. 《lorawantm_specification_-v1.1.pdf》
[2]. 《lorawan_regional_parameters_v1.0.3reva_0.pdf》
圖表來源:
文章來源:芯片開放社區
文章鏈接:https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.1b87180flWxVN5&id=656805496396709888