LoRaWAN初探
随着物联网技术的快速普及,越来越多终端设备将接入到云端。LoRa/LoRaWAN作为一种新兴的物联网通信技术,逐步进入大众的视野里。相比于Zigbee,蓝牙以及常用的无线射频技术,其传输距离更远,且协议也包含了无线电以及以太网等组网方案,比较适合智慧城市等场景的建设。
通常,整个LoRaWAN项目结构如下:
本次参与测试体验的环境也包含了以上的元素,分别如下:
- 设备端:LoRa节点和LoRa网关(P_NUCLEO_LRWAN3)
- 核心网平台:腾讯云物联网开发平台(IoT Explorer)
本人更关注设备上云以及测试技术,因此,本文将会记录如何利用现有测试设备和环境快速上云,并初步掌握分析LoRaWAN协议以及TencentOS Tiny驱动LoRa模组的原理。
LoRa设备快速上云
整体部署上,设备快速上云需要三步走,添加网关和节点,配置网关信息,烧录并运行节点程序,具体如下:
- 添加网关和节点(腾讯云物联网开发平台)
网关需要填写的关键信息为GwEUI,可在后台配置,用于标识网关:
节点需要关注的市AppKey和devEUI,可以在【调试】环节添加:
- 配置网关信息
网关需要配置监听的节点上行频点以及核心网地址即可。根据不同区域的标准,核心网收到数据后会计算对应的下行频点,目前CN470的规范表示,节点的上行信道%48就是下行频点的接收频点。
配置频点
AT+CH=0,486.3,A 等,以此类推可以设置8个监听的上行频点
配置核心网地址:
AT+PKTFWD=loragw.things.qcloud.com,1700,1700
配置成功后,网关就接入了核心网,可以在后台看到网关在线状态。
- 节点刷入代码
打开TencentOS tiny 的LoRa项目,修改其中的lora_demo.c,将其中的OTAA对应的devEUI以及APPKEY修改为在核心网登记的即可,信道也需要调整,真的是快捷方便,动动手指快速上云。
#define RHF76_ATCMD_SET_CHANNEL "at+ch=num,80-87\r\n"
之后Build和刷入固件,设备启动后入网成功。
TencentOS Tiny 初探
市面上,有多种节点方案,根据目前拿到的测试硬件以及TencentOS Tiny代码,可以知道目前开发板节点主推的方案是MCU+LoRa模组,具体如下图所示。
体设备包括一个RHF0M003(LoRa模组)+ STM32L073RZ (MCU)
在Lora相关API操作上,主要是通过对lora_module_t进行回调完成,通过分析回调,可以知道最终会进入模组的驱动:
具体实现在devices\rhf76_lora目录下,我们可以看到其封装了rhf的驱动。因此,开发者可以无需考虑协议栈处理LoRaWAN协议的问题,把重心聚焦于业务实现。
LoRaWAN协议初探
由于LoRaWAN协议会上传到云端,因此,我们可以通过UDP抓包的方式窥探协议最原始的二进制状态。记录具体的抓包过程如下,在路由器上通过TCPDUMP记录下数据包,接着,可以使用wireshark查看流量并分析,该格式是packet_forwarder格式(UDP+JSON+Base64)。
其中LoRa数据经过base64编码后为"data":"ILaau0xOfygYAK9mVxijdSA0iXG0fPQ4Lp967WqxYuuF",解码后,对应二进制为:
\x20 \xb6 \x9a \xbb \x4c \x4e \x7f \x28
\x18 \x00 \xaf \x66 \x57 \x18 \xa3 \x75
\x20 \x34 \x89 \x71 \xb4 \x7c \xf4 \x38
\x2e \x9f \x7a \xed \x6a \xb1 \x62 \xeb
\x85
根据LoRa协议,可以分析这是一个Join Accept的回应包:
小节
经过这段时间的测试,体验到了利用TencentOS Tiny和腾讯云物联网开发平台,快速部署LoRaWAN方案的效果,也记录下了LoRaWAN协议有关的一些知识。文章如有错误地方,欢迎拍砖。