什么是LoRa

LoRa是美国SEMTECH公司基于频谱扩散的一种技术CSS(Chirp Spread Spectrum)开发的无线调制方式。具有远距离通信,低功耗的优点,解决了户外远距离物联设备的通信需求。

什么是LPWAN

LPWA是Low Power Wide Area的缩写,又称LPWAN(Low Power Wide Area Network),是一种以低消耗电力、广域和远距离通信为特点的无线通信技术。虽然通信数据量少且比Wi-Fi等更慢,但可以进行超过10km的无线通信。在工厂、物流、农业、住宅和生活基础设施等的智能化过程中使用了IoT(Internet of Things)和M2M(Machine to Machine),这要求进行少量数据的远距离通信,因此,LPWA作为其基础——无线通信技术而受到了关注。

LPWAN有很多种技术实现,如下是常见的一些技术方式

  • 扩频技术Spread Spectrum:LoRa

  • 窄带技术Narrowband:NB-IoT,WiFi Halow

  • 超窄带技术Ultra Narrowband:Sigfox,Telensa

什么是 ISM 频段?

目前,LoRa 主要运行在 ISM 频段,包括 433/470/868/915MHz 等。

ISM(Industrial Scientific Medical Band)频段,就是工业、科学及医疗频段。世界各国为了让一些工业、科学及医疗领域的公共设备不用专门申请频段,就设置了一些无需授权即可使用的频段,就是 ISM 频段,也就是我们常说的免费频段。像 Wi-Fi、蓝牙、LoRa、ZigBee 等用的都是 ISM 频段。

LoRaWAN

常规使用LoRa是一对一的通信方式,当需要多个节点向网关发送数据时,就需要MAC协议来协调管理节点间的数据传输。LoRa中典型的MAC协议就是LoRaWAN。LoRaWAN协议规定了节点和网关,网关和服务器之间的通信规范,确定了LoRa网络的星型拓扑结构。由于LoRa节点的成本和能耗的限制,当前LoRaWAN协议基本采用ALOHA机制,即节点咋发送数据前不需要载波侦听,也没有使用CSMA/CCA,而是随机选择时间来发送数据。

LoRaWAN包结构

lorawan-packet-layout.png

Preamble、PHDR、PHDR_CRC、CRC都是由硬件自动生成,只有PHYPayload由软件参与。

Preamble,LoRaWAN默认前导码固定长度,为8个字节。

上行最后还有CRC校验,而下行没有CRC校验。其中PHDR,PHDR_CRC,CRC都是射频芯片用于校准数据的完整性和一致性用的,并非用户生成的数据。

默认LoRaWAN都是按小端方式传输数据。

由上图可知,MAC数据包,主要是MACPayload。
其中MAC 层的包有三个部分组成:

  • MHDR(MAC层帧头),1个字节

  • MACPayload(MAC层负载)

  • MIC(校验),4个字节

MHDR :一个字节,指定了消息类型(MType)和帧编码所遵循的LoRaWAN规范的主版本号(Major)。
MType: bit7 ~ bit5
RFU: bit4 ~ bit2
Major: bit1 ~ bit0

MType的值

HeaderHeader
000Join Request
001Join Accept
010Unconfirmed Data Up
011Unconfirmed Data Down
100Confirmed Data Up
101Confirmed Data Down
110RFU
111Proprietary

Unconfirmed和Confirmed
Confirmed:发送数据后需要服务器回复一个ACK,表明已经收到数据了,如果没有回复ACK,还会重复发,一般用于紧急重要的数据上报。
Unconfirmed:就是不管服务器有没有收到数据,发一次就不管了,一般用于非紧急不重要数据上报。

Major值如下

HeaderHeader
00LoRaWAN R1
00, 01RFU

 

MACPayload由三个部分组成:

  • FHDR,MAC层负载头

  • FPORT,MAC层数据的通道号,取值范围1 ~ 223

  • FRMPayload,MAC层加密载荷数据

Node原始数据为数组,经过AES128加密后(AppSKey加密数据,NwkSKey计算MIC校验码),发送出来,网关接收到后,使用Base64加密后,上传到服务器,服务器使用Base64和AES128对数据解密。

NetworkServer先使用NwkSKey对数据包解密,ApplicationServer使用AppSKey对数据载荷解密。

原始数据为两个字节517, 270,Base64编码后为0502,0e01,转换为小端后就是原始数据。

FHDR由四个部分组成:

  • DevAddr,终端的ID,4个字节

  • FCtrl,帧的控制字,上下行有区别,1个字节

  • FCnt,帧的序号, 2个字节

  • FOpts,帧配置,字节数不定,大部分情况0个字节,最长15个字节

OTAA入网数据包

JoinRequest数据包会先发送到NetworkServer,NS先检查MIC是否合法,再转发给AS来出来,AS根据AppEUI和DevEUI来判断是否通过入网请求。

节点发送Join Request数据包

MHDRAPPEUIDevEUIDevNonceMIC
1Byte8Byte8Byte2Byte4Byte

DevNonce是随机值,使用LoRa射频模块的RSSI(信号强度)计算出来。
MIC是校验码,使用AppSKey计算出来。

 

NS下发Join Accept数据包

MHDRAppNonceNetIDDevAddrDLSettingsRxDelayCFList(pad16)MIC 
1Byte3Byte3Byte4Byte1Byte1Byte0/16Byte4Byte4Byte

AS验证设备后,会生成AppNonce,NS会生成网络标识NetID,还分配一个4Byte的DevAddr。

节点收到Join Accept后,会根据AppKey生成两个密钥,AppSKey和NwkSKey。

NwkSKey = aes128_encrypt(AppKey, 0x01 | AppNonce | NetID | DevAddr | DevNonce)
AppSKey = aes128_encrypt(AppKey, 0x02 | AppNonce | NetID | DevAddr | DevNonce)

节点入网后,后续的通信都会使用AppSKey和NwkSKey进行数据加密和解密,保证了节点和服务端双方的数据安全性和完整性。

LoRa通信速率

0.3 kbps 到 50 kbps

码片速率
BW=Rc=chiprate(chips/s)

符号速率
Rs(symbols/sec)=BW/2SF=Rc/2SF

固定带宽,不同扩频因子的区别如下

lora-spreader-factor.png

  • 扩频因子加一,符号传输时间或扫描时间翻倍

  • 当信号微弱时或者干扰强时,LoRa设备提高扩频因子

  • 如果终端设备与网关设备距离较远时,需要使用高扩频因子

扩频因子,带宽

扩频因子(Spreading Factor)是LoRa 调制技术中的一个关键参数,用于控制信号的“扩频”程度。通常范围有7到12。SF7表示最快的传输速率和最短的传输距离,SF12表示最慢的传输速率和最远的传输距离。

带宽指LoRa信号所占用的频率范围,常见有125kHz,250kHz, 500kHz。
带宽越大,范围时间内能够传输的数据量就越多,数据传输速率越高。
带宽越小,单位时间内能够传输的数据量就越少,数据传输速率越低,但抗干扰能力越强。

SX1301模组的8通道

sx1301-8channel.jpeg

 

LoRa网关的容量

网关容量是指在一定时间内网关接收数据包数量的能力。理论上来说,单个SX1301芯片拥有8个信道,在完全符合LoRaWAN协议的情况下最多每天能接收1500万个数据包。如果某应用发包频率为1包/小时,单个SX1301芯片构成的网关能接入62500个终端节点。当然,这只是一个理论值,网关接入终端数量最终还是与网关信道数量、终端发包频率、发包字节数和扩频因子息息相关。

对于有8个信道的网关来说,在没有LBT(发包前监听信道)的前提下,具体的计算公式为:
信道容量(即节点数量)S=8T/2et0

  • T代表发送间隔,跟封包长度、速率有关系

  • 1/2e 是基本Aloha算法最大吞吐量,e是常数,等于2.718

  • t0代表单包的ToA(Time on Air)

假如使用SX1301芯片,在没有LBT(发包前监听信道)的情况下,并且平均每个包空中飞行时间t0=100ms(因此t0=0.1s),平均每个包一分钟发一次(因此T=60s),那么可以容纳多少这样的平均节点呢?
S=860/(22.7180.1)=883
因此,可以容纳 883个节点。

如果前提条件修改成每个节点都带有LBT功能,采用时隙Aloha算法而不是之前的基本Aloha算法来评估,则由于算法不同,导致最大吞吐量不同,此时最大吞吐量是1/e,因此信道容量(即节点数量)S=8T/et0 ,从而 ,则理论容量增加一倍,即883*2=1766个节点。

LoRaWAN网关一天能收75000000 Byte数据

  • 如果每小时间隔发送一次数据,每次50Byte,可以接入62500个设备

  • 如果每10分钟间隔发送一次,每次20Byte,可以接入26041个设备

 

什么是ADR

ADR(Adaptive DataRate,速率自适应),根据Nodes和Gateway的距离:越近,Nodes将采用高速率;越远,Nodes将采用低速率。
ADR技术能带来3大好处:
(1)更高的速率:近距离Nodes采用高速率,大大缩短空中时间。
(2)更低的能耗:高速率Nodes,将会更多地休眠,电池寿命也就更长。
(3)轻松扩容 :增加Gateway 将会提速Nodes,显著提升网络带宽。

LoRaWAN终端节点

LoRaWAN 规范定义了 Class A/B/C 三类终端节点,这三类终端节点基本覆盖了物联网所有的应用场景,如下表所示:

Class介绍下行时机应用场景
A ('all')Class A 的终端节点采用 Aloha 协议按需上报数据。在每次上行后都会紧跟两个短暂的下行接收窗口,以此实现双向传输。这种操作是最省电的。必须等待终端节点上报数据后才能对其下发数据。垃圾桶监测、烟雾报警器、气体监测等
B ('beacon')Class B 的终端节点,除了 Class A 的随机接收窗口,还会在指定时间打开接收窗口。为了让终端节点可以在指定时间打开接收窗口,终端节点需要从网关接收时间同步的信标。在终端节点固定接收窗口即可对其下发数据,下发的延时有所提高。阀控水气电表等
C ('continuous')Class C 的终端节点基本是一直打开着接收窗口,只在发送时短暂关闭。Class C 的终端节点会比 Class A 和 Class B 更加耗电。由于终端节点处于持续接收状态,可在任意时间对终端节点下发数据。路灯控制等

Class A

双向通信终端设备。这一类的终端设备允许双向通信,每一个终端设备上行传输会伴随着两个下行接收窗口。终端设备的传输时隙是基于其自身通信需求,其微调基于ALOHA协议。

Class A设备的功耗最低,基站下行通信只能在终端上行通信之后。

接收窗口RX1在上行后1秒开始,接收窗口RX2在上行后2秒开始。

Class B

具有预设接收时隙的双向通信终端设备。这一类的终端设备会在预设时间中开放多余的接收窗口,为了达到这一目的,终端设备会同步从网关接收一个Beacon,通过Beacon将基站与模块的时间进行同步。

Class B的节点除了在rx1和rx2接收NS的数据外,还可以在和NS同步完时间之后,周期性的打开一个接收窗口来接收NS发送给它的数据。

 

如何做到时间同步呢?网关通过连接GPS,获得GPS信息后,周期性的广播一条消息,这条消息,就叫做Beacon。节点通过获取Beacon来同步时间。

首先我们先来看看Beacon
默认的Beacon周期是128秒一次,Class B的节点,在没有同步到Beacon之前,只能工作在Class A模式下。节点在入网成功之后,先获取Beacon,获取到Beacon之后才能切换成Class B模式,否则,节点一直工作在Class A模式下。

在长时间运行中,节点内部时钟存在一定的偏差,所以节点需要周期性的获取Beacon,以消除内部时钟偏差对时间的影响。
节点锁定Beacon完成时间同步之后,如何和NS协商收发数据的时间点呢?在介绍NS和节点协商发送数据的时间点之前,我们先要了解,什么是Beacon Window,什么是Slot,什么是PingSlot,什么是pingNb,什么是pingPeriod。

从一个Beacon结束时间点开始算起,到下一个Beacon开始时间点,这段时间叫做Beacon Window,NS想要主动给节点发送数据的话,也只能在这个窗口期呢。

Beacon Window这段时间总共有122.88秒。LoRaWAN协议将这段时间平分成2的12次方份,也就是4096份。平均下来每份时长30ms,每30ms叫做一个Slot。NS和节点会在每一个约定好的Slot上通信,这个约定好的Slot叫做节点的PingSlot。

在一个Beacon Window时间窗内,NS可以主动给一个节点发送2的n次方条消息,n的取值范围是0<=n<=7的整数,这个2的n次方就是节点的pingNb。

我们再用4096除以PingNb,得到的就是这个节点的Ping周期,我们将Ping周期称为PingPeriod,Ping周期就是同一个Beacon Window内每个PingSlot相隔的时间。

节点会将PingNB发送给NS。节点和NS通过PingNB和节点的DevAddr就能计算出第一个PingSlot的时间了。然后节点就会每隔PingPeriod个Slot打开一个接收窗口。如果NS有数据发送给节点,就会在PingSlot时刻发送给节点。到这里,NS和节点就能互相准确的知道双方在哪一个时刻接收发送消息了。

Class B的Beacon,是一种按固定周期在特定时间由网关发射的射频信号(LoRa数据包),节点设备可利用Beacon同步时间。

lorawan-classb-sequence-diagram.png

  • Beacon: 信标,由网关发送,节点接收,节点利用Beacon同步与网关的时间

  • BEACON_PERIOD: 128s。连续两个Beacon相隔的时间,所谓的Beacon周期

  • BEACON_RESERVED: 2.12s。为Beacon数据包预留时间窗口

  • BEACON_GUARD: 3s。Beacon窗口的保护时间,此时间段内,节点不得发起Class A通信

  • BEACON_WINDOW: 122.88s。BEACON_PERIOD除去BEACON_RESERVEDBEACON_GUARD所剩余的时间,用于Class B下行通信,Ping 与 PingSlot可以利用的时间窗口

  • pingOffset: pingSlot在每个Beacon周期内的伪随机延时,使得不同的设备在相同的周期内的pingSlot时机偏移抗干扰

  • pingPeriod: 同Beacon周期内相邻pingSlot的时间间隔

  • slotLen: BEACON_WINDOW的最小时间单位,固定30ms,pingOffsetpingPeriod均以此为单位.

 

Class C

具有最大接收窗口的双向通信终端设备。这一类的终端设备持续开放接收窗口,只在传输时关闭。

 

LoRaWAN 相关术语

 

术语含义
DevEUI终端设备 ID,一个类似 IEEE EUI64 的全球唯一 ID,用于标识唯一的终端节点
JoinEUI应用唯一标识 ID,一个类似 IEEE EUI64 的全球唯一 ID,用于标识终端节点的应用提供者,JoinEUI 存储在终端节点中
AppKey应用密钥,由应用程序拥有者分配给终端节点,用来产生会话密钥 NwkSKey 和 AppSKey
DevAddr32 位终端设备地址,OTAA 机制终端节点入网时由网络服务器分配地址,ABP 机制 DevAddr 存储在终端节点中
NwkSKey网络层会话密钥,用于加密和校验网络层数据,ABP 机制 NwkSKey 存储在终端节点中
AppSKey应用层会话密钥,用于加密和校验应用层数据,ABP 机制 AppSKey 存储在终端节点中
NetId24 位网络 ID,用于区分同一物理空间中的不同 LoRaWAN 网络,OTAA 机制才有意义

 

LoRa在中国的可用频段

频段范围

中国地区有2个频段可用:CN779~CN787、CN470~CN510。

  • CN779~CN787
    该频段有一个硬伤:它的最大发射功率仅10mW(10dBm),这对于实际应用是十分有限的。

  • CN470~CN510
    这是中国无委会规定的民用抄表频段,属于ISM免费频段。

信道范围

中国区CN470有96个上行信道,编号从0到95,使用125kHz带宽,速率从DR0到DR5,编码率4/5;从470.3MHz开始以步长200 kHz增长到489.3 MHz。其中6~38和45~77由中国国家电网保留使用,因此这两个频段不能自由使用。
中国区CN470有48个下行信道,编号从0到47,使用125kHz带宽,速率从DR0到DR5,编码率4/5;从500.3 MHz开始以步长200 kHz增长到509.7 MHz。

uplink信道如下

信道0 ~ 56 ~ 3839 ~ 4445 ~ 7778 ~ 95
MHz470.3 ~ 471.3-478.1 ~ 479.1-485.9 ~ 489.3
可用Yes-Yes-Yes

downlink信道如下

信道0...i...47
MHz500.3...500.3 + i x 0.2...509.7

因此可用频段如下表

通道12345678
CN470_0_7uplink470.3470.5470.7470.9471.1471.3471.5471.7
downlink500.3500.5500.7500.9501.1501.3501.5501.7
CN470_8_15uplink471.9472.1472.3472.5472.7472.9473.1473.3
downlink501.9502.1502.3502.5502.7502.9503.1503.3
CN470_16_23uplink473.5473.7473.9474.1474.3474.5474.7474.9
downlink503.5503.7503.9504.1504.3504.5504.7504.9
CN470_24_31uplink475.1475.3475.5475.7475.9476.1476.3476.5
downlink505.1505.3505.5505.7505.9506.1506.3506.5
CN470_32_39uplink476.7476.9477.1477.3477.5477.7477.9478.1
downlink506.7506.9507.1507.3507.5507.7507.9508.1
CN470_40_47uplink478.3478.5478.7478.9479.1479.3479.5479.7
downlink508.3508.5508.7508.9509.1509.3509.5509.7
CN470_48_55uplink479.9480.1480.3480.5480.7480.9481.1481.3
downlink500.3500.5500.7500.9501.1501.3501.5501.7
CN470_56_63uplink481.5481.7481.9482.1482.3482.5482.7482.9
downlink501.9502.1502.3502.5502.7502.9503.1503.3
CN470_64_71uplink483.1483.3483.5483.7483.9484.1484.3484.5
downlink503.5503.7503.9504.1504.3504.5504.7504.9
CN470_72_79uplink484.7484.9485.1485.3485.5485.7485.9486.1
downlink505.1505.3505.5505.7505.9506.1506.3506.5
CN470_80_87uplink486.3486.5486.7486.9487.1487.3487.5487.7
downlink506.7506.9507.1507.3507.5507.7507.9508.1
CN470_88_95uplink487.9488.1488.3488.5488.7488.9489.1489.3
downlink508.3508.5508.7508.9509.1509.3509.5509.7

中国区CN470可用频段

0-5 和 39-44,这2个频段是空闲的;可惜的是,它们都只有6通道,如果使用它们,那意味着将浪费SX1301(8通道)的25%带宽。
78-79,这个频段,未能对齐8;如果使用,将会给实现带来麻烦(LoRaWAN协议栈,很多算法是基于8通道)。
幸好,80-87 和88-95,这2个“宝贵”的频段,受上帝的青睐,即能对齐8,又是连续的。

通道12345678
CN470_80_87uplink486.3486.5486.7486.9487.1487.3487.5487.7
downlink506.7506.9507.1507.3507.5507.7507.9508.1
CN470_88_95uplink487.9488.1488.3488.5488.7488.9489.1489.3
downlink508.3508.5508.7508.9509.1509.3509.5509.7

 

LoRa符合中国工信部公告52号的所有要求

2019年11月28日,工信部发布了《中华人民共和国工业和信息化部公告2019年第52号》(以下简称“52号公告”)(参考资料1),该公告进一步规范微功率短距离无线电发射设备(以下简称“微功率设备”)的管理。

  • 限在建筑楼宇、住宅小区及村庄等小范围内组网应用;

  • 任意时刻限单个信道发射;

  • 民用计量设备应具有防干扰功能;

  • 避免干扰当地的广播电台和电视台;

  • 符合发射功率限值和发射功率频谱密度限值;

  • 单次发射持续时间不超过1秒;

  • 占用带宽不大于500kHz。

 

LoRa和LoRaWAN的关系


LoRaWAN指的是MAC层的组网协议。LoRa是一个物理层的协议。虽然现有的LoRaWAN组网基本上都使用LoRa作为物理层,但是LoRaWAN的协议也列出了在某些频段也可以使用GFSK作为物理层。从网络分层的角度来讲,LoRaWAN可以使用任何物理层的协议,LoRa也可以作为其他组网技术的物理层。事实上有几种与LoRaWAN竞争的技术在物理层也采用了LoRa。

LoRa 是LPWAN通信技术中的一种,是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案改变了以往关于传输距离与功耗的折衷考虑方式为用户提供一种简单的能实现远距离、长电池寿命、大容量的系统,进而扩展传感网络。目前,LoRa 主要在全球免费频段运行,包括433/868/915MHz等。

LoRa网络主要由终端(可内置LoRa模块)、网关(或称基站)、Server和云四部分组成。应用数据可双向传输。派洛德的具备构架LoRa网络的能力,LoRa模块,网关,云平台都已经成熟。

LoRaWAN是非蜂窝LPWA的标准名称,同时也指LoRaWAN网络的通信协议(通信中的约定)。 在LoRaWAN中,终端设备没有IP,而是使用MAC(设备ID)连接到网关并进行无线通信。

lorawan-stack.png

 

LoRaWAN数据包格式

LoRaWan packets format

example : 80C02301260021000266EEA76CCE0C1BBC7A36F69F
80      C0230126   00      2100   02      66EEA76CCE0C1BBC   7A36F69F
MTYPE   devaddr    FCtrl   FCnt   FPort   DATA               MIC

解码LoRaWAN数据包

Decrypt raw LoRaWan packets

from lora.crypto import loramac_decrypt

payload = '80C02301260021000266EEA76CCE0C1BBC7A36F69F'
sequence_counter = int(payload[14:16] + payload[12:14], 16)
app_session_key = '91299DA630B26526967B442361820CAD'
dev_addr = payload[8:10] + payload[6:8] + payload[4:6] + payload[2:4]
decrypted_payload = loramac_decrypt(
                                payload[18:34],
                                sequence_counter,
                                app_session_key,
                                dev_addr)
# Result : 0xbe 0xef 0xde 0xad 0xbe 0xef 0xde 0xad

LoRaWAN应用的网络架构

下图是LoRaWAN的典型架构图

LoRa-Network-Architecture.jpg

从左到右,依次是,节点设备,网关,NS(网络服务),AS(应用服务)。

NS主要是管理网关和节点设备,同时向AS提供设备的数据通道。
AS可以理解为具体的业务应用功能,所以有多个应用功能,数据可以来自同一个NS服务器。

NS服务可以在网关侧运行,也可以在云服务器运行。取决于上层业务应用功能或网络架构的设计。

资源

计算速率和数据包 avbentem.github.io/a...

To be precise the SX1302 actually has 8+8+1 “decoders” :

  • 8 for SF 5 to 12 on bandwidth 125kHz on any of the 8 RF channel

  • 8 for SF 5 to 10, also on bandwidth 125kHz on any of the 8 RF channel

  • The extra one, referred as service modem can listen to bandwidth 125, 250 and 500kHz (maybe also lower bandwidth, but I’m not sure) but only on one radio channel and one SF.

作者:SteveChen  创建时间:2024-11-07 08:35
最后编辑:SteveChen  更新时间:2025-08-10 00:16