LoRaWAN

来自Jack's Lab
2020年12月25日 (五) 15:20Comcat (讨论 | 贡献)的版本

跳转到: 导航, 搜索

目录

1 Overview

https://www.thethingsnetwork.org/docs/lorawan/

详解LoRaWAN协议



2 基本设置

2.1 Overview

  • SF_12
  • BW_125 (125KHz)
  • CR_5 (CR 4/5)
  • Explicit Header
  • CRC_ON


2.2 Preamble

LoRa 数据包前导码,用于接收机辩识 rx data flow。内容固定,长度可选。

默认 12 个 symbol(Bytes?), 0x8 (RegPreambleLsb) + 4

可写 RegPreambleMsb 和 RegPreambleLsb 这两个寄存器,将其改为 6 +4 ~ 65535 +4

10 symbol 的短前导码,通信够用但具有更短的接收周期。。。

当前系统一般皆适用 12 (4 + 8) 的长度:

......
^$Get Preamble Length: state 0
^$Preamble Length: 8
......


2.3 Sync word

  • 0x12 by default
  • 0x34 for LoRaWAN

相关寄存器:RegSyncWord


2.4 Header

Explicit Header & Implicit Header

可通过寄存器 RegModemConfig1 内的位 ImplicitHeaderModeOn 来控制


Explicit Header:

Reset 默认的模式。其能提供的信息:

  • Payload 长度
  • The forward error correction code rate
  • The presence of an optional 16-bits CRC for the payload

The head is transmitted with maximum error correction code (4/8). It also has its own CRC to allow the receiver to discard invalid headers.


Implicit Header:

Header is removed from the LoRa Packet.

Payload, Coding Rate and CRC presence are fixed.

Be advantageous to reduce transmission time



2.5 CRC

RegPayloadCrcOn: RegModemConfig2[2:2]

  • 0 ---> CRC disable
  • 1 ---> CRC enable


In Implicit Header Mode: must be set on Tx and Rx side

In Explicit Header Mode: on the Tx side alone (recovered from the header in Rx side)


Explicit Header Mode Checking process:

Rx 用户负责检查 CrcOnPayload (RegHopChannel[6:6], CRC information extracted from the rx packet header)

如果 CrcOnPayload == 1,需要检查 IRQ 标志位 PayloadCrcError,以确保没有 CRC 错误


Implicit Header Mode 则直接去检查 IRQ 标志位 PayloadCrcError,以确保没有 CRC 错误



3 Address

https://www.thethingsnetwork.org/docs/lorawan/address-space.html


4 Gateway Traffic

uplink, downlink, join

Time    Frequency    Mod.    CR    Data Rate    Airtime (ms)    cnt


5 Gateway Test

$ ./lora_gateway -d 5 -e 12 -c 125 -i 34 -h 2 -f -g 434.3


6 Gateway Config

basic_config_gw.sh:

  • 生成 gateway_id.txt, gateway_id.md5
  • 生成配置文件 gateway_conf.json
  • 配置 WiFi
  • 把 start_gw.sh 加到系统自启动脚本 /etc/rc.local 中
  • 编译 lora_gateway
pi@raspberrypi:~/lora-gw/gw_full_latest $ ./scripts/test_gwid.sh
Detecting gw id as 0000B827EF8855AA

pi@raspberrypi:~/lora_gateway $ scripts/basic_config_gw.sh MKB827EF8855AA00
Taking provided address: MKB827EB8E763900
Keep a copy of /home/pi/lora_gateway/scripts/update_gw.sh
mkdir: cannot create directory ‘/home/pi/scripts’: File exists
Done
Creating /home/pi/lora_gateway/gateway_id.txt file
Writing 0000MKB827EF8855AA00
Done
Creating /home/pi/lora_gateway/gateway_id.md5 file
Done
Replacing gw id in /home/pi/lora_gateway/gateway_conf.json
Done
Creating /home/pi/Dropbox/LoRa-test
Done
Creating log -> /home/pi/Dropbox/LoRa-test
Done
Setting gateway to run at boot
Removing /home/pi/lora_gateway/scripts/start_gw.sh in /etc/rc.local if any
Done
Add /home/pi/lora_gateway/scripts/start_gw.sh in /etc/rc.local
Done
Compile lora_gateway executable
~/lora_gateway ~/lora_gateway
rm *.o lora_*gateway
You have a Raspberry 1
Compiling for Raspberry 1
g++ -DPABOOST -DMAX_DBM=20 -DRASPBERRY -DIS_RCV_GATEWAY -c lora_gateway.cpp -o lora_gateway.o
g++ -c arduPi.cpp -o arduPi.o
g++ -c SX1272.cpp -o SX1272.o
g++ -lrt -lpthread lora_gateway.o arduPi.o SX1272.o -o lora_gateway
~/lora_gateway
You should reboot your Raspberry
Bye.

Refer to: Basic Config

$ sudo apt-get install jq
$ sudo apt-get install python-pip
$ sudo apt-get install python-dateutil python-crypto


7 Reference








个人工具
名字空间

变换
操作
导航
工具箱