GW102与LM401节点开发板互联
LM401开发板是基于STM32WL平台的LoRaWAN节点开发板,可以与GW102网关通过LoRa无线方式连接,并通过ChirpStack服务管理。
由于频段的原因,建议选择470的80~87通道。
GW102网关配置
频点要配置为486.6Mhz和487.4Mhz。
cat /etc/lora1302-pktfwd/global_conf.json
"radio_0": {
"enable": true,
"type": "SX1250",
"single_input_mode": true,
"freq": 486600000,
"radio_1": {
"enable": true,
"type": "SX1250",
"single_input_mode": true,
"freq": 487400000,
启用sx1302开机自动运行服务
systemctl enable lora_sx1302_pktfwd.service
启动sx1302服务
systemctl start lora_sx1302_pktfwd.service
LM401节点端配置
修改为 CN490_80_87_Bands
方法一:不建议用此种方法
在LoRaWAN_AT_Slave 例程中修改如下三个地方
- 信道数
RegionCN470.h 文件中, 默认 96 修改为 8
#define CN470_MAX_NB_CHANNELS 96
- 起始发送频点
RegionCN470.c 文件中 void RegionCN470InitDefaults( InitDefaultsParams_t* params) 函数中的Channels的频点,把 470300000 修改为 486300000
RegionNvmGroup2->Channels[i].Frequency = 470300000 + i * 200000
- 起始接收频点
RegionCN470.h 文件中,CN470_FIRST_RX1_CHANNEL的值修改为 500300000 修改为 506700000
#define CN470_FIRST_RX1_CHANNEL ( (uint32_t) 500300000 )
方法二:
打开LoRaWAN_AT_Slave项目后,先编译一边。然后单击Application/User/LoRaWAN/App下的lora_info.c文件前的加号,可以看到依赖的头文件。找到lorawan_conf.h文件,双击打开。
#define HYBRID_ENABLED 1
#define HYBRID_DEFAULT_MASK0 0x00FF
#define HYBRID_DEFAULT_MASK1 0x0000
#define HYBRID_DEFAULT_MASK2 0x0000
#define HYBRID_DEFAULT_MASK3 0x0000
#define HYBRID_DEFAULT_MASK4 0x0000
#define HYBRID_DEFAULT_MASK5 0x0000
找到如上代码,修改为如下
#define HYBRID_ENABLED 1
#define HYBRID_DEFAULT_MASK0 0x0000
#define HYBRID_DEFAULT_MASK1 0x0000
#define HYBRID_DEFAULT_MASK2 0x0000
#define HYBRID_DEFAULT_MASK3 0x0000
#define HYBRID_DEFAULT_MASK4 0x0000
#define HYBRID_DEFAULT_MASK5 0x00FF
表示使用CN470的80-87信道,跟网关的一致。
配置好后,使用AT命令配置如下参数,就可以和GW102网关通信成功了。
LM401ProKit节点的运行ATSlave程序后,波特率是9600。
ABP方式,需要配置DEUI,NetworkSessionKey,ApplicationSessionKey,DeviceAddr
OTAA方式,需要配置NetworkSessionKey,ApplicationSessionKey
以下使用ABP方式
AT+DEUI=3b:ac:47:7e:57:55:e2:ae
AT+NWKSKEY=cd:c6:28:94:d8:52:53:e2:66:f3:11:92:12:df:6a:47
AT+APPSKEY=4e:a2:29:01:c8:f3:30:b3:d2:3c:a9:bc:72:6c:a1:8b
AT+DADDR=01:68:57:8c
以上参数同样也要在ChirpStack页面中先配置好。
入网方式两种,ABP和OTAA。本次使用ABP方式入网。
0 = ABP, 1 = OTAA
AT+JOIN=0
OTAA需要NetworkKey,DEUI, DevAddr
AT+DEUI=3b:ac:47:7e:57:55:e2:ae
AT+DADDR=01:68:57:8c
AT+NWKKEY=cd:c6:28:94:d8:52:53:e2:66:f3:11:92:12:df:6a:47
AT+JOIN=1
这里的NWKKEY的值,来自Chirpstack的OTAA keys页面中的Application key值。
第一次JOIN会失败,需要把DADDR更新到平台。
发送数据
发送一个未确认的消息,“ABCD”数据到应用端口2
AT+SEND=2:0:ABCD
发送一个确认的消息,“ABCD”数据到应用端口2
AT+SEND=2:1:ABCD
DevEUI,由se-identity.h定义是静态还是动态
默认的EUI使用的MCU的UID上电时串口可以看到
/*!
When set to 1 DevEui is LORAWAN_DEVICE_EUI
When set to 0 DevEui is automatically set with a value provided by MCU platform
*/
#define STATIC_DEVICE_EUI 0
传感器数据上报,默认为定时上报。可以配置为按键触发上报方式。
函数接口,lora_app.c中的static void SendTxData(void)函数
定时周期位于lora_app.h中APP_TX_DUTYCYCLE
上类型由lora_app.c中EventType 定义
static TxEventType_t EventType = TX_ON_TIMER;