文章目录
- [前言](https://cloud.tencent.com/developer/audit/support-plan/8886438#_3)
- [1 对接总体思路](https://cloud.tencent.com/developer/audit/support-plan/8886438#1__14)
- [2 节点硬件介绍 - NUCLEO LoRa Sensor](https://cloud.tencent.com/developer/audit/support-plan/8886438#2___NUCLEO_LoRa_Sensor_28)
- [3 节点软件介绍 - TencentOS tiny](https://cloud.tencent.com/developer/audit/support-plan/8886438#3___TencentOS_tiny_41)
- [4 腾讯云物联网平台操作](https://cloud.tencent.com/developer/audit/support-plan/8886438#4__51)
- [5 开发板实物操作](https://cloud.tencent.com/developer/audit/support-plan/8886438#5__78)
- [1 编译及下载](https://cloud.tencent.com/developer/audit/support-plan/8886438#1__80)
- [2 节点加网](https://cloud.tencent.com/developer/audit/support-plan/8886438#2__108)
- [3 节点上行测试](https://cloud.tencent.com/developer/audit/support-plan/8886438#3__120)
- [4 节点下行测试](https://cloud.tencent.com/developer/audit/support-plan/8886438#4__126)
- [易错点 密钥复制错误](https://cloud.tencent.com/developer/audit/support-plan/8886438#__144)
- [END](https://cloud.tencent.com/developer/audit/support-plan/8886438#END_150)
前言
我的朋友松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 腾讯云物联网平台操作
- 创建项目及温湿度产品 腾讯云物联网开发平台是按照 项目 -> 产品 -> 设备 三个维度来划分。比如有一个智能会议室的项目,里头可能会包含人体探测器、电灯开关等多个产品,每个产品又会有设备a,设备b。
- 创建数据模板 数据模版是产品的json定义。
- 配置 LoRaWAN 参数
- 设备数据解析 在设备开发页面中,按需调整设备数据解析。由于 LoRa 类资源有限设备不适合直接传输 JSON 格式数据,使用“设备数据解析”可以将设备原始数据转化为产品 JSON 数据。
- 创建测试设备
在设备调试页面中,单击【新建设备】,设备名为 dev001。DevEUI 等信息可从 LoRa 节点开发板背面贴纸上获取。
5 开发板实物操作
1 编译及下载
Step 1. 下载 LoRaWAN 例程
- 请下载 TencentOS tiny 官方开源仓 下载源码 。
- 进入
<TencentOS-tiny\board\NUCLEO_STM32L073RZ\KEIL\lorawan>
目录,打开 TencentOS_tiny.uvprojx 工程。 - 示例工程包含 STM32L073 外设驱动、TencentOS tiny 内核、AT 框架、RHF76 LoRaWAN 模组驱动、LoRaWAN 示例案例。
Step 2. 代码修改
- 请先修改
\examples\LoRaWAN\lora_demo.c.
。
tos_lora_module_join_otaa("8cf957200000f806", "8cf957200000f8061b39aaaaad204a72");
填入节点相应的 DevEUI 和 AppKEY,可从 LoRa 节点开发板背面贴纸上获取。
- 修改
\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网关的搭建,将会在另一节笔记中介绍。
- 节点下载好固件后,会自动重启运行,从串口即可查看设备的运行日志。
- 当看到串口打印如下日志,即说明 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都是从开发板的贴纸上抄过去的,所以有可能有错误。
当时群里一个伙伴发了密钥截图,说是没问题,本能手动用了锤子手机的大爆炸,把字符给炸出来才发现少了个字符。