天天看點

LoRa協定學習總結

摘要

因項目的需要而接觸Lora,為什麼會有Lora這樣一門技術呢,大多應用在什麼樣的場景中?故此學習了一番,通過查找各方資源,總結了一下,如若有什麼錯誤的地方,望各位讀者批評指正。

簡介

LoRa是什麼?LoRa是LongRange的簡稱,是應用在物聯網的低功耗廣域網的一種傳輸技術。具有遠距離通訊、低功耗等特點,代價就是傳輸速率,速率越低,傳輸的距離就會越遠。基于線性調頻擴頻技術,保持了FSK調制相同的低功耗特性,額外增加了通信距離。是以使用LoRa技術,能夠以低的發射功率獲得更遠的傳輸距離。

1、應用舉例

LoRa是美國Semtech公司采用和推廣的一種基于擴頻技術的超遠距離無線技術。主要在全球免費頻段運作,包括433/470/868/915MHz。由于LoRa技術具有遠距離、低功耗、低成本、多節點的特性。多數應用在智能建築、智慧城市等應用領域。

例如智能水表的應用就很好的利用了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

LoRa協定學習總結

3、擴頻技術

由于LoRa采用了線性擴頻技術,不同傳輸速率的通信之間不會互相幹擾。網絡伺服器通過一種速率自适應ADR方案控制終端裝置的傳輸速率。

Chirp的特點是信号的頻率以一定的規律變化,而FSK的信号隻會在兩個頻點切換。Chirp的信号時域圖如下(引用):

LoRa協定學習總結

這種線性擴頻技術能極大限度地共享相同的頻道資源。每套系統都具有與衆不同的擴充序列來減少來自其他裝置的幹擾,隻有具有與發射者相同擴充序列的接收者才可以重組或壓縮擴頻傳輸信号來獲得其中加載的有效資訊。即使是多套擴頻裝置使用同一個頻道在同一地區進行信号傳輸,隻要采用不同的擴頻序列,就不會互相幹擾。

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,前者需要應答,後者不需要應答。

LoRa協定學習總結

在資料幀頭中含有自适應資料速率控制字段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:

LoRa協定學習總結

圖4:Radio PHY layer

​ CRC:CRC校驗位,保護資料的有效性,隻出現在上行消息中 ;

​ PHDR:LoRa實體幀頭;​ PHDR_CRC:報頭校驗碼;​ PHYPayload:使用者資料段

MAC層(PHYPayload)

LoRa協定學習總結

圖5:MAC層

​ MHDR:MAC頭;​ MACPayload的長度與區域有關。​ MIC:消息一緻碼

MAC頭(MHDR)

LoRa協定學習總結

圖6:MAC頭

​ MType表示消息類型;​ RFU:預留字段;​ Major:表示的是LoRaWAN主版本号;

消息類型有以下幾種:

LoRa協定學習總結

MACPayload

LoRa協定學習總結

圖7:MACPayload

​ Fport:端口,Fport=0表示的是FRMPayload中隻有MAC指令。​ FRMPayload:負載資料。​ FHDR:幀頭

FHDR由終端短址DevAddr、FCtrl控制字段、FCnt封包計數器、以及用來傳輸MAC指令的配置字段Fopts組成。Fopts(0--15Bytes)。

FHDR

LoRa協定學習總結

圖8:FHDR

上行封包的控制字段FCtrl:

LoRa協定學習總結

下行封包的控制字段FCtrl:

LoRa協定學習總結

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:

LoRa協定學習總結

​ 圖9:上行封包MACPayload

入網請求Join-Request:

LoRa協定學習總結

​ 圖10:Join-Request

下行封包MACPayload:

LoRa協定學習總結

圖11:下行MACPayload

同意入網Join-accept:

LoRa協定學習總結

​ 圖12:Join-accept

6、終端裝置類型

LoRa協定學習總結

​ 圖13:裝置類型

A類裝置的上下行傳輸:

LoRa協定學習總結

圖14:A類裝置工作模型

雙向通信終端裝置,允許雙向通信,每一個終端裝置上行傳輸的時候會伴随着兩個下行的接收視窗,終端裝置的傳輸槽是基于其自身通信需求,其微調是基于一個随機的時間基準(ALOHA協定),開窗時間誤差要求為+/- 20us。A類裝置的功耗最低,裝置在上行資料的時候,伺服器能迅速地進行下行通信。任何時候,伺服器的下行資料通信都隻能在上行資料之後。

B類裝置的上下行傳輸:

LoRa協定學習總結

備工作模型

具有預設接收槽的雙向通信終端裝置,在預設時間中開放多餘的接收視窗,為了實作這一目的,裝置會同步從網關接收beacon信号,通過Beacon将基站與子產品的時間進行同步。能使伺服器知曉終端裝置正在接收資料。

C類裝置的上下行傳輸:

LoRa協定學習總結

圖16:C類裝置工作模型

具有最大接收槽的雙向通信終端裝置,持續性的開放接收視窗,隻在傳輸時關閉。

7、參考資源

參考文獻:

[1]. 《lorawantm_specification_-v1.1.pdf》

[2]. 《lorawan_regional_parameters_v1.0.3reva_0.pdf》

圖表來源:

LoRa協定學習總結

文章來源:晶片開放社群

文章連結:

https://occ.t-head.cn/community/post/detail?spm=a2cl5.14300636.0.0.1b87180flWxVN5&id=656805496396709888

繼續閱讀