我的朋友松B曾经说过,土豆很好吃,牛肉很好吃,土豆炒牛肉随便怎么炒都难吃不到哪里去。Nucleo 好玩,LoRa 好玩,那么 Nucleo + LoRa 也一定不会让人失望。
这节笔记使用 ST 原厂主推的 LoRa 评估套件 P-NUCLEO-LRWAN3 来完成腾讯云 IoT Explorer 的 LoRa 接入体验。
这款开发板也是腾讯云 2019 年 IoT 创新大厦的福利板子,官方在产品入门文档上使用这块板子做了详细的接入教程。因为大部分操作已经在官方入门指引体现了,基本上只要跟着步骤就可以完成,小能手就多讲一些官方文档覆盖不到的背景材料。
腾讯云 IoT Explorer 是腾讯云主推的一站式物联网开发平台,IoT 小能手从设备侧开发、平台功能操作、应用侧开发三个部分来进行学习分享,另外还分享了一些动手实践作品及收录官方发布的产业合作案例,帮助读者更好地理解整个开发链路。详情可点击阅读原文。
腾讯系的产品普遍都存在佛系文化的企业印记,在 LoRa 这块也是如此,没有刻意去制定一些协议规范。节点侧采用标准的 LoRaWAN 协议和 CN470 频点规范,网关侧虽然在商用项目中要求 MQTT 协议,但也保留了标准的 Packet Forwarder 协议,最大程度了降低了企业和开发者接入的门槛,体验上对开发者相当友好。
因此节点侧我们只需使用标准的LoRaWAN协议栈,就可以实现平台接入。
这篇接入实践的方案拓扑是这样:
NucleoLoRaSensor/TencentOStiny --LoRaWAN--> NucleoLoRa_Gateway --PacketForwarder--> 腾讯云物联网开发平台
ST 官方目前推出了 3 款 LoRa 评估套件,其中 LRWAN1 已经停产,LRWAN2 是高频版本,LRWAN3 是低频版本。因此 LRWAN3 刚好满足咱们国内的需要,是 LoRa 入门开发非常推荐的一款板子。
P-NUCLEO-LRWAN3 由节点开发板 Nucleo LoRa Sensor 和 网关开发板 Nucleo LoRa Gateway 组成。
由于是 ST 官方开发评估板,它最大的特点是支持 ST 的软件资源,比如目前许多厂家参考的节点软件包I-CUBE-LRWAN。如果是第三方开发板的话,在适配开源程序时可能还需要再下功夫去调整。
不过也有一个缺点是这一版采用的是 MCU + 串口LoRa模组的方式,对于想调试协议栈的朋友就感觉缺少了乐趣,因为模组把事情都做了。后来问过一些伙伴,大意是从实际市场反馈来看,相当多的国内厂家更喜欢模组这种方式。采用成熟模组,降低在协议栈的研发投入,将精力投入到高附加值的应用终端中。
TencentOS tiny是腾讯面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率。
商业互吹的事情不多说,个人觉得 TencentOS tiny 的低功耗框架和 AT Adapter 还是很接地气很好用。
在官方的入门指引中,TencentOS tiny 直接适配了 NUCLEO LoRa Sensor 开发板,默认的 example 就是这个LoRa 温湿度示例。
详细的开发环境搭建步骤,可以查看 基于 TencentOS tiny 的 LoRaWAN 开发入门指南,包括了 MDK 软件的安装及配置、ST-Link 驱动安装、串口软件的安装。
1.创建项目及温湿度产品 腾讯云物联网开发平台是按照 项目 -> 产品 -> 设备 三个维度来划分。比如有一个智能会议室的项目,里头可能会包含人体探测器、电灯开关等多个产品,每个产品又会有设备a,设备b。
3.配置 LoRaWAN 参数
4.设备数据解析 在设备开发页面中,按需调整设备数据解析。由于 LoRa 类资源有限设备不适合直接传输 JSON 格式数据,使用“设备数据解析”可以将设备原始数据转化为产品 JSON 数据。
5.创建测试设备
在设备调试页面中,单击【新建设备】,设备名为 dev001。DevEUI 等信息可从 LoRa 节点开发板背面贴纸上获取。
Step 1. 下载 LoRaWAN 例程
请下载 TencentOS tiny 官方开源仓 下载源码 。
进入
目录,打开 TencentOS_tiny.uvprojx 工程。
示例工程包含 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】,下载编译好的固件。
节点加网需要依赖LoRa网关的搭建,将会在另一节笔记中介绍。
1.节点下载好固件后,会自动重启运行,从串口即可查看设备的运行日志。2.当看到串口打印如下日志,即说明 LoRa 节点已经通过网关成功入网。
--->+JOIN: Network joined
--->+JOIN: NetID 000035 DevAddr 6B:CC:9B:5D
进入【控制台】>【产品开发】>【设备调试】,单击【设备属性】,可查询设备上报到开发平台的最新数据及历史数据。
在控制台【设备调试】列表,单击【调试】,进入在线调试。
由于本示例中 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都是从开发板的贴纸上抄过去的,所以有可能有错误。
当时群里一个伙伴发了密钥截图,说是没问题,本能手动用了锤子手机的大爆炸,把字符给炸出来才发现少了个字符。
That's all
作者其他精彩文章:
行业围观
LoRaWAN介绍 - LoRa从业者读这篇就够了
心得分享
文档啊,最重要的还是层次感
技术管理入门课_先做个不讨厌的人
你一定没见过这么有意思的电路板