ST Nucleo LoRa Sensor 开发板接入腾讯云物联网开发平台

前言

我的朋友松B曾经说过,土豆很好吃,牛肉很好吃,土豆炒牛肉随便怎么炒都难吃不到哪里去。
Nucleo 好玩,LoRa 好玩,那么 Nucleo + LoRa 也一定不会让人失望。

这节笔记使用 ST 原厂主推的 LoRa 评估套件 P-NUCLEO-LRWAN3 来完成腾讯云 IoT Explorer 的 LoRa 接入体验。

这款开发板也是腾讯云 2019 年 IoT 创新大厦的福利板子,官方在产品入门文档上使用这块板子做了详细的接入教程。因为大部分操作已经在官方入门指引体现了,基本上只要跟着步骤就可以完成,小能手就多讲一些官方文档覆盖不到的背景材料。

腾讯云 IoT Explorer 是腾讯云主推的一站式物联网开发平台,IoT 小能手从设备侧开发、平台功能操作、应用侧开发三个部分来进行学习分享,另外还分享了一些动手实践作品及收录官方发布的产业合作案例,帮助读者更好地理解整个开发链路。详情可点此查看

1 对接总体思路

腾讯系的产品普遍都存在佛系文化的企业印记,在 LoRa 这块也是如此,没有刻意去制定一些协议规范。节点侧采用标准的 LoRaWAN 协议和 CN470 频点规范,网关侧虽然在商用项目中要求 MQTT 协议,但也保留了标准的 Packet Forwarder 协议,最大程度了降低了企业和开发者接入的门槛,体验上对开发者相当友好。

因此节点侧我们只需使用标准的LoRaWAN协议栈,就可以实现平台接入。

这篇接入实践的方案拓扑是这样:

LoRaWAN
PacketForwarder
Nucleo_LoRa_Sensor/TencentOS_tiny
Nucleo_LoRa_Gateway
腾讯云物联网开发平台

2 节点硬件介绍 - NUCLEO LoRa Sensor

ST 官方目前推出了 3 款 LoRa 评估套件,其中 LRWAN1 已经停产,LRWAN2 是高频版本,LRWAN3 是低频版本。因此 LRWAN3 刚好满足咱们国内的需要,是 LoRa 入门开发非常推荐的一款板子。

P-NUCLEO-LRWAN3 由节点开发板 Nucleo LoRa Sensor 和 网关开发板 Nucleo LoRa Gateway 组成。

由于是 ST 官方开发评估板,它最大的特点是支持 ST 的软件资源,比如目前许多厂家参考的节点软件包I-CUBE-LRWAN。如果是第三方开发板的话,在适配开源程序时可能还需要再下功夫去调整。

不过也有一个缺点是这一版采用的是 MCU + 串口LoRa模组的方式,对于想调试协议栈的朋友就感觉缺少了乐趣,因为模组把事情都做了。后来问过一些伙伴,大意是从实际市场反馈来看,相当多的国内厂家更喜欢模组这种方式。采用成熟模组,降低在协议栈的研发投入,将精力投入到高附加值的应用终端中。

3 节点软件介绍 - TencentOS tiny

TencentOS tiny是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。

商业互吹的事情不多说,个人觉得 TencentOS tiny 的低功耗框架和 AT Adapter 还是很接地气很好用。

在官方的入门指引中,TencentOS tiny 直接适配了 NUCLEO LoRa Sensor 开发板,默认的 example 就是这个LoRa 温湿度示例。

详细的开发环境搭建步骤,可以查看 基于 TencentOS tiny 的 LoRaWAN 开发入门指南,包括了 MDK 软件的安装及配置、ST-Link 驱动安装、串口软件的安装。

4 腾讯云物联网平台操作

  1. 创建项目及温湿度产品
    腾讯云物联网开发平台是按照 项目 -> 产品 -> 设备 三个维度来划分。比如有一个智能会议室的项目,里头可能会包含人体探测器、电灯开关等多个产品,每个产品又会有设备a,设备b。

  1. 创建数据模板
    数据模版是产品的json定义。

  2. 配置 LoRaWAN 参数

  1. 设备数据解析
    在设备开发页面中,按需调整设备数据解析。由于 LoRa 类资源有限设备不适合直接传输 JSON 格式数据,使用“设备数据解析”可以将设备原始数据转化为产品 JSON 数据。

  1. 创建测试设备

在设备调试页面中,单击【新建设备】,设备名为 dev001。DevEUI 等信息可从 LoRa 节点开发板背面贴纸上获取。

5 开发板实物操作

1 编译及下载

Step 1. 下载 LoRaWAN 例程

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

Step 2. 代码修改

  1. 请先修改\examples\LoRaWAN\lora_demo.c.
tos_lora_module_join_otaa("8cf957200000f806", "8cf957200000f8061b39aaaaad204a72");

填入节点相应的 DevEUI 和 AppKEY,可从 LoRa 节点开发板背面贴纸上获取。
2. 修改\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"

Step 3. 编译
单击 MDK 工具栏【Rebuild All】,编译整个工程。

Step 4. 下载
单击 MDK 工具栏【Download】,下载编译好的固件。

2 节点加网

节点加网需要依赖LoRa网关的搭建,将会在另一节笔记中介绍。

  1. 节点下载好固件后,会自动重启运行,从串口即可查看设备的运行日志。
  2. 当看到串口打印如下日志,即说明 LoRa 节点已经通过网关成功入网。
--->+JOIN: Network joined
--->+JOIN: NetID 000035 DevAddr 6B:CC:9B:5D

3 节点上行测试

进入【控制台】>【产品开发】>【设备调试】,单击【设备属性】,可查询设备上报到开发平台的最新数据及历史数据。

4 节点下行测试

在控制台【设备调试】列表,单击【调试】,进入在线调试。

将“上报周期”设置为15秒,单击【发送】。

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

LoRa 节点的串口会显示如下日志,表示成功下发了指令到设备端。

rhf76_incoming_data_process 4: 0F00
len: 2
data[0]: 15
data[1]: 0
report_period: 15

易错点 密钥复制错误

照理来说这个示例比较简单,但还是有部分伙伴遇到问题。IoT比赛的群里就有几个朋友遇到加网失败问题,基本上都是deveui 和 appkey 不匹配导致的,因为deveui和appkey都是从开发板的贴纸上抄过去的,所以有可能有错误。

当时群里一个伙伴发了密钥截图,说是没问题,本能手动用了锤子手机的大爆炸,把字符给炸出来才发现少了个字符。

END

That’s all


发布了251 篇原创文章 · 获赞 251 · 访问量 84万+

猜你喜欢

转载自blog.csdn.net/iotisan/article/details/104847915