欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-09 11:22:08
...

前言

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

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

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。

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

  1. 创建数据模板
    数据模版是产品的json定义。
    ST Nucleo LoRa Sensor 开发板接入腾讯云物联网开发平台

  2. 配置 LoRaWAN 参数

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

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

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

  1. 创建测试设备

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

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

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. 节点下载好固件后,会自动重启运行,从串口即可查看设备的运行日志。
    ST Nucleo LoRa Sensor 开发板接入腾讯云物联网开发平台
  2. 当看到串口打印如下日志,即说明 LoRa 节点已经通过网关成功入网。
--->+JOIN: Network joined
--->+JOIN: NetID 000035 DevAddr 6B:CC:9B:5D

3 节点上行测试

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

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

4 节点下行测试

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

将“上报周期”设置为15秒,单击【发送】。
ST Nucleo LoRa Sensor 开发板接入腾讯云物联网开发平台

由于本示例中 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


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