LoRa全链路打通教程04 - LoRa温湿度节点对接私有Chirp Stack LoRa服务器实战(以ST P-NUCLEO-LRWAN3 套件为例)

1.准备工作

ST P-NUCLEO-LRWAN3 套件

P-NUCLEO-LRWAN3 是用于评估 LoRaWAN 网络的完整套件,包括一个网关和一个节点:

图中左边是LoRa网关,由ST Nucleo-F746ZG 底板和瑞兴恒方 SX1301的 LRWAN_GS 模块组成。

图中右边是LoRAa节点,由 ST Nucleo-L073 底板 和ST LRWAN_NS1 扩展板和组成, 其中
LRWAN_NS1 扩展板集成瑞兴恒方的 RHF0M003 LoRaWAN 模组, 并集成了温湿度传感器
HTS221、气压传感器 LPS22HB、 3 轴磁力传感器 LIS3MDL、 6 轴姿态传感器 LSM6DS3 共 4个 I2C 传感器件。

该网关的全部资料和固件我已上传到百度网盘,关注公众号『Mculover666』回复“lora”即可获取:

=

搭建并启动LoRa服务器

参考教程,在本地WindowsPC上使用ChirpStack搭建并启动服务器:LoRa全链路打通教程03 - 在本地Windows上使用ChirpStack搭建私有LoRa服务器

2. 云端配置

登录到LoRa服务器后台,即http:<部署服务器的ip地址(windows本机则填localhost)>:8080

2.1. 添加Network-servers(网络服务)

点击 “Network-servers”界面,点击 ADD,添加一个通用网络服务器:

  • Network-server name:网络服务器名称;
  • Network-server server:网络服务器ip和端口;

创建完成之后如图:

2.2. 添加service-profiles(服务配置文件)

在Service-profiles页面点击 Create:


填写如下配置:

  • Service-profile name:服务配置文件名称;
  • Network-server: 选择上一步添加的网络服务器;
  • Add gateway meta-data:允许NS将网关元数据发送给AS,

创建完成之后如图:

2.3. 添加设备配置文件

在Device-profiles页面点击 Create:

填写如下配置:

  • Device-profile name:设备配置文件名称;
  • Network-server:选择之前创建的网络服务器;
  • LoRaWAN MAC version:选择lorawan协议版本,推荐选择1.0.2(不能选择1.1.0,该套件不支持);
  • LoRaWAN Regional Parameters revision:选择A;

然后在第二栏中配置节点入网方式,使能 Device supports OTAA:

点击CREATE DEVICE-PROFILE完成创建:

3. 添加和配置lora网关

3.1. 云端添加网关

进入 Gateways 页面,点击CREATE:

填写如下配置:

  • Gateway name:网关名称;
  • Gateway description:网关描述;
  • Gateway ID:网关ID,可以在网关输出信息中查看,也可以使用命令AT+EUI查看;


点击CREATE GATEWAY完成创建:

3.2. 配置实物网关

网关实物具体配置方法参考博客:LoRa全链路打通教程01 - LoRa网关配置查看和修改方法详解(以ST P-NUCLEO-LRWAN3 套件为例)

接下来只讲述在本实验中的配置过程:

  • ① 设置服务器ip和端口

lora服务器ip地址为windows PC在局域网内的ip,端口为默认的1700:

配置命令如下:

AT+PKTFWD=192.168.0.101,1700,1700
  • ② 设置通信频段

搭建lora服务器时设置的频段是CN470_510(在chirpstack-network-server.toml文件中):


所以网关的频段的所有通道频段一次性设置为CN470:

AT+CH=CN470
  • ③ 开启网关日志打印
AT+LOG=ON
  • ④ 重启网关
AT+RESET

4. 添加Lora应用并注册lora节点设备

4.1. 添加应用

在Applications页面点击CREATE:

填写如下配置:

  • Application name:应用名称;
  • Application description:应用描述;
  • Service-profile:选择之前添加的服务配置文件;

点击CREATE APPLICATION 创建应用:

4.2. 注册lora节点设备

点击刚刚创建的应用,进入该应用的管理页面:

点击CREATE创建一个节点设备,配置如下:

  • Device name:设备名称;
  • Device description:设备描述;
  • Device EUI:设备EUI;
  • Device-profile:选择之前添加的设备配置文件;

其中设备EUI可以通过向lora节点模组发送AT命令AT+ID查看;

创建之后如图:

接着系统会自动跳入到KEYS(OTAA)页面,要求填入app key和Gen Application key
,目前app key比较重要,用来真实lora节点设备和平台对接,所以点击按钮随机生成一个即可,Gen Application key用不到,保持和app key一样即可:

记录一下生成的值:

app key:B358DE504C20E7878CB44DD3479015E8
Gen Application key:B358DE504C20E7878CB44DD3479015E8

设置成功之后如图:

5. 节点通过网关对接云端实战

5.1. 直接使用AT命令入网

使用USB转串口直接连接lora节点模组,使用串口助手发送AT命令交互,波特率通常为9600,如果没有独立的lora节点模组,可以跳过此步骤。

  • ① 查看和设置节点设备ID(一般不用重新设置,使用默认值即可)
AT+ID	//查询命令
AT+ID="deveui","8CF9572000004DE8"		//设置命令

  • ② 查询和设置频段
AT+DR	//查询命令
AT+DR=CN470	//设置命令

  • ③ 查看和设置通道
AT+CH	//查看当前所有通道信息
at+ch=num,80-87	//设置使用80-87通道,即486.3~487.7MHz


  • ④ 设置入网模式,关闭ADR模式,开启OTAA模式:
at+adr=off			//关闭ADR
AT+MODE=LWOTAA	//开启OTAA

  • ⑤ 设置入网秘钥
AT+KEY="appkey",<之前在平台设置的app key,不用加引号>

  • ⑥ 入网
AT+JOIN

在云端可以看到设备上线信息:

5.2. 云端设置编解码插件,进行上报下发测试

lora通信速率有限,不发送json数据,直接发送二进制数据,所以要设置编解码插件进行数据解析,在json数据和二进制数据之间进行转换。

进入到之前添加的设备配置文件中,如图,选择CODEC界面,Payload codec选择自定义JavaScript代码:

其中function Decode(fPort, bytes)是设置上报数据解析,编写如下函数:

// Decode decodes an array of bytes into an object.
//  - fPort contains the LoRaWAN fPort number
//  - bytes is an array of bytes, e.g. [225, 230, 255, 0]
// The function must return an object, e.g. {"temperature": 22.5}
function Decode(fPort, bytes) {
	var data = {};
    data.temperature = bytes[0];
    data.humidity = bytes[1];
    data.period = bytes[2] | (bytes[3] << 8);
    return data;
}

其中function Encode(fPort, obj)是下发命令解析,编写如下函数:

{
  "params": {
      "period": 15
  }
}

接下来进入这个页面,如图,开始监听上报数据

在节点中使用AT命令发送数据:

AT+CMSGHEX="1F220A00"


在刚刚的监听页面可以看到刚刚上报的数据:

点击可以查看具体信息,在最后可以看到解析出的温湿度数据:

接着测试下发数据:

创建一条下发命令:

注意:由于本示例中 LoRa 节点是 LoRaWAN Class A 类设备,这类设备不会立即下发数据,需要在有数据上行后,服务器才会向该设备下行数据。因此在 LoRa 节点上报数据之后,才能查看下发的周期调整命令。

所以在串口中再次上报一次数据:

可以看到比之前多了一条数据,这条数据就是刚刚创建的下发命令。

5.3. LoRa 节点入网上云

编译下载 LoRaWAN 例程

TencentOS tiny 官方开源仓库 下载源码,进入<TencentOS-tiny\board\NUCLEO_STM32L073RZ\KEIL\lorawan>目录,打开 TencentOS_tiny.uvprojx 工程,示例工程包含 STM32L073 外设驱动、TencentOS tiny 内核、AT 框架、RHF76 LoRaWAN 模组驱动、LoRaWAN 示例案例。

  • ① 先修改\examples\LoRaWAN\lora_demo.c
tos_lora_module_join_otaa("<填写DevEUI>", "<填写AppKey>");
  • ② 修改\devices\rhf76_lora\RHF76.h
#define RHF76_ATCMD_SET_CHANNEL                 "at+ch=num,0-7\r\n"

由于本示例中计划使用80 - 87信道,因此调整为:

#define RHF76_ATCMD_SET_CHANNEL                 "at+ch=num,80-87\r\n"

编译并下载工程,节点下载好固件后,会自动重启运行,从串口即可查看设备的运行日志:

当看到串口打印如下日志,即说明 LoRa 节点已经通过网关成功入网:

--->+JOIN: Network joined
--->+JOIN: NetID 000000 DevAddr 00:78:55:79

和之前一样,设置编解码插件,查看节点上报数据:

至此,lora对接私有lora服务器实战完成。

发布了160 篇原创文章 · 获赞 502 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/104061297