物联网LoRa系列-25:LoRa终端--LoRaWAN协议简介与LoRa WAN终端软件选择
前言:
從本篇文章開始:
從通信節點的角度度看,將從Lra終端對點對通信轉到LoRa終端與LoRa網關的通信、LoRa終端與LoRa云服務器的通信;
從協議棧的角度看,將從物理層上升到LoRa的MAC層, 即LoRaWAN;
從軟件項目的角度看,將由pingpong程序轉向Class A-Class C程序。
本文主要探討,LoRa WAN終端與網關通信所需要知道的一些宏觀技術點。
1. 軟件工程文件的轉型
默認的PingPong軟件工程不再使用,必須轉到Class A和 Class C的軟件工程項目。
主要原因是模擬的PingPong應用程序發送的物理層的裸幀,沒有MAC層的頭,不符合LoRaWAN網關的設置規范,會被LoRa網管直接丟棄。
2. LoRa與LoRaWAN
LoRa:低功耗無線通信技術
是一種低功耗遠程無線通信技術, 它是由法國一家公司Cycleo研發一種創新的半導體技術-LoRa,后面被美國一家公司Semtech(升特)收購.后續由Semtech公司基于這個LoRa技術,開發一種套LoRa通信芯片解決方案. LoRa后續通過LoRa聯盟來開始覆蓋推廣普及。因此狹義的LoRa主要是指LoRa射頻層與LoRa物理層。
LoRaWAN:LoRa廣域網
LoRaWAN是基于LoRa遠距離無線通信技術設計的一套廣域網協議,包括MAC層通訊協議和網絡系統架構。
如果按協議分層來說,LoRaWAN重點在MAC層,LoRa重點在物理層。
當然,廣義上的LoRa也包括LoRaWAN。
3. LoRaWAN與LoRa MAC層
應該說,LoRaWAN(LoRa廣域網)的概念比LoRa MAC層更廣。LoRaWAN不僅僅包括LoRa MAC層協議,還包括LoRa應用層和LoRa的整個網絡架構。
4. LoRAN(LoRa廣域網)的網絡架構
LoRaWAN的網絡實體分為四個部分: 終端節點、網關、LoRaWAN服務器和用戶服務器。
- End Node: 終端節點一般是各類傳感器,進行數據采集,開關控制等 。
- Gateway: LoRa網關,對收集到的節點數據進行封裝轉發 。
- NetworkServer: 主要負責上下行數據包的完整性校驗。
- ApplicationServer: 主要負責OTAA設備的入網激活,應用數據的加解密 。
- CustomerServer: 從AS中接收來自節點的數據,進行業務邏輯處理,通過AS提供的API接口向節點發送數據。
后續的幾篇文章,依然把重點放在終端節點上,但終端節點的軟件協議需支持LoRa MAC層協議和應用層協議,而不僅僅是物理層協議。這樣的LoRa終端,稱為LoRaWAN終端。
5. LoRaWAN終端設備分類
根據協議規定有, LoWAN的終端分為Class A/B/C 三類終端設備,這三類設備基本覆蓋了物聯網所有的應用場景。
CLASSA/B/C的應用和區別可見下表:
6. LoRa物理層的幀結構
遵循此層的消息格式,可以實現LoRa終端點對點的通信。
這個結構需要深入探究,因為這涉及到LoRa終端之間是否能夠通信、LoRa終端是否能夠與LoRa進行通信的關鍵。
物理層的幀結構是有LoRa的射頻芯片完成的,軟件治只能設置模式。
(1)Preamble:用于保持接收機與發射機的數據流同步。
Preamble的每個符號是0和1的交替,即0101
LoRa SX1261/2 芯片默認的符號個數是12,即0101 0101 0101,LoRaWAN中默認的符號符號個數是8,即0101 0101。
前導長度是一個可以通過編程來設置的變量,所以前導碼的長度可以擴展。接收機的前導碼長度應與發射機一致。如果前導碼長度為未知或可能會發生變化,應將接收機的前導碼長度設置為最大值。????接收的前導碼小于還是大于發射機?
注意:這里的長度的單位是bit,而不是byte。即多少位。
(2)物理層頭的類型
LoRa物理層幀的頭包括兩種模式,顯性模式和隱形模式。這是由程序設定的。
隱性模式:沒有物理幀的頭部信息,即Preamble之后,直接是MAC層的幀。因此這種模式,物理層Payload的長度必須是確定的、固定的,且需要通信的雙方事先約定好,如果實際數據幀的長度不足預定的長度,需要添加填充域。
顯性模式:包含物理層的幀頭部分。LoRaWAN使用的是顯性模式,
(3)顯性模式下物理層的P_Header:
包含的信息
- Payload的字節數:
軟件通過如下的寄存器告訴射頻芯片,需要發送的物理層的payload的長度:
數據凈荷的最大長度為255字節。
在隱性模式下,需要通信雙方約定數據凈荷的長度。
發送端,一旦已發送的數據幀的長度等于設定的長度,就停止發送,添加CRC.
接受端,一旦接收到的數據幀的長度等于設定的長度,就停止接收,檢查CRC.
因此,如果發送的數據幀的長度與接收端的預先設定不一致,就會導致出錯。
在顯性模式下,不需要通信雙方約定數據凈荷的長度。
發送端,paylaod的實際數據長度,會添加到P_Header中,并通過此域把數據凈荷的長度信息傳遞給接收端。
接收端,從P_Header中獲取數據凈荷的長度,并根據此長度域進行數據凈荷的接收。
增加了通信雙方的適應性。
- 數據凈荷的前向糾錯碼的編碼率CR(Coding Rate)
FEC編碼的冗余部分允許接收方檢測可能出現在信息任何地方的有限個差錯,并且通常可以糾正這些差錯而不用重傳。
FEC使接收方有能力糾正錯誤而不需要反向請求數據重傳,不過這是以一個固定的更高轉發的帶寬為代價的。
因此FEC被應用在重傳開銷巨大或者不可能重傳的情況下,比如單向通信鏈接的時候以及以多路廣播的形式傳送數據給多個接收方時。FEC信息通常被添加到大量存儲設備中,以保障受損數據的恢復。FEC也被廣泛應用在調制解調中。
添加的冗余比特越多,就糾錯的能力越強,但需要的帶寬就越大,因此冗余編碼率會影響信息傳輸所需要的帶寬。
冗余編碼率是通過軟件設定的:
4/5表示:有效數據是4比特,編碼后是5比特。編碼率為0.8,或者說溢碼率是1.25.
注意:
糾錯編碼是LoRa modem的功能,不是物理幀頭的設置。
在隱性模式下,沒有物理層的幀頭信息,只能通過通信雙方人為的約定,如果通信雙方設置不一樣,這會導致譯碼錯誤。
在顯性模式下,有物理層的幀頭信息承載發送端端的糾錯編碼的編碼率。接收端就可以根據此域對數據凈荷進行糾錯性解碼。不需要通信雙方提前人為約定了。
增加了通信雙方的適應性。
- 是否打開Payload CRC。
對Payload的CRC校驗,2個字節。這個CRC是由射頻芯片計算和添加,不是由軟件來完成的。
但是否需要添加CRC是由軟件設置的,即Payload CRC的使能是由軟件控制的。
需要添加CRC是由軟件設置的,即Payload CRC的使能是由軟件控制的。
在隱性模式下,沒有物理層的幀頭信息,就需要通信雙方約定,數據幀最后的2個字節是否是CRC。
在顯性模式下,可以通過物理層的幀頭,傳遞此信息,不需要人為的預先約定。
增加了通信雙方的適應性。
(4)P_Header CRC
對Header域進行單獨的CRC校驗,確保物理層幀頭部的正確性,當然,不包括Preamble。
在隱性模式下,不需要該域,因為隱性模式下,沒有物理層的幀頭信息,因此就沒有物理層幀頭的CRC.
在顯性模式下,是由LoRa的射頻芯片自動添加的,軟件不可設置。
(5)Payload:
物理層的真正發送的數據,在LoRaWAN協議中,該payload就是LoRaWAN的MAC層幀。
(6)Payload CRC:
對Payload的CRC校驗,2個字節。這個CRC是由射頻芯片計算和添加,不是由軟件來完成的。
7. LoRaWAN MAC層的幀結構
遵循此層的消息格式,可以實現LoRa終端與網關之間的通信(網關路由合法的LoRaWAN的消息凈荷)
MAC層的幀結構是由LoRaWAN Class A-C的終端軟件程序完成的。整個MAC的幀作為物理層幀的payload存在。
MAC有MAC層的幀頭MHDR+MAC payload + MIC組成。
(1)MHDR:MAC層的幀頭(7..0)
- MType:LoRa消息的類型(7..5)
LoRa消息的類型分類:
a) Join request和Join Accept:是終端請求加入到LoRa網絡中的消息。
b) Unconfirmed Data up & down:這種是單向,不需確認的消息, 沒有確認與超時重發機制。
c) confirmed Data up & down:這種消息是需要確認回復的,如果沒有回復,就會啟動超時重發
注意:
收到confirmed類型的消息時,接收者要回復一條設置了確認位的消息(ACK 設為1)。
如果發送者是終端,網絡就把確認消息發送到該終端打開的接收窗口。
如果發送者是網關,確認消息的發送由終端就自行判斷。
d) RFU, Proprietary:保留或自定義
- RFU(Reserved for future use):保留域(4..2)
- Major:協議版本(1..0)
(2)MAC payload:MAC層凈荷
MAC凈荷,就是LoRa WAN各種類型消息的實體。
(3)MIC:一致性校驗碼(安全性加密功能)
LoRaWAN中的MIC是CMAC的四個最低有效字節,這一點在LoRaWAN協議中有說明:
The MIC is calculated as follows [RFC4493]:
msg = MHDR | FHDR | FPort | FRMPayload
cmac = aes128_cmac(NwkSKey, B 0 | msg)
MIC = cmac[0..3]
?CMAC則是AES中的一個算法,開發人員直接調用AES庫函數即可,而AES在openssl中有實現。
7. LoRaWAN協議層的消息結構
遵循此層的消息格式,可以實現LoRa終端與LoRa服務器之間的通信。
所謂LoRaWAN協議層的消息,在上圖中,就是指“數據幀”
LoRaWAN協議層的消息組成:
(1)FHDR
- DevAddr:4字節的終端設備的地址
表明該消息的終端標識(雙向,LoRa不需要設備地址)
- FCTR:1個字節的消息控制
- FCnt:
- FOpts:消息操作類型
(2)FPort:上層應用程協議類型,類似與TCP/IP協議中的端口號。
0:表示FRMPayload中只有MAC命令。
1…223(0x01…0xDF)范圍內的FPort由應用指定;
FPort = 224 專門為LoRaWAN Mac層測試協議服務。
(3)FRM Payload:應用層協議數據。
8. LoRaWAN消息交互
參考:
LoRa WAN的官方協議
LoRa WAN協議中文翻譯:https://legacy.gitbook.com/book/twowinter/lorawan-specification_zh_cn/details
LoRa及LoRaWAN簡介: LoRa及LoRaWAN簡介_o倚樓聽風雨o的博客-CSDN博客_lorawan
總結
以上是生活随笔為你收集整理的物联网LoRa系列-25:LoRa终端--LoRaWAN协议简介与LoRa WAN终端软件选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重学java基础第二十五课:数据类型
- 下一篇: [react] create-react