前言
STM32WL是市场上首款可以连接LoRa低功耗广域网的系统级芯片,它继承了STM32MCU超低功耗特性,支持多种Sub-GHz调制方案。LoRa作为市场上流行的长距离物联网无线连接技术,它的应用场景一般是以标准LoRaWAN网络组网或者私有LoRa网络组网的形式呈现。STM32WL在LoRa网络应用中大多是扮演终端节点的角色。比如在LoRaWAN网络中,运行LoRaWAN协议的STM32WL终端节点可以连接专门的LoRaWAN网关进行通信。
本文将介绍私有LoRa网络中STM32WL扮演的一个新角色,即私有LoRa网关。内容涉及STM32WL基于LoRa调制技术的私有网络设计原理,介绍STM32WL如何采用时分和频分的方式搭建私有网络以实现私有LoRa网关与LoRa 传感器节点的连接以及数据传输。最后会介绍如何演示STM32CubeMonitor软件监控基于STM32WL实现的私有LoRa网络。
一、私有LoRa网络设计原理
市场上LoRa应用常见的网络架构有LoRaWAN网络和私有网络。LoRaWAN是LoRa联盟全球推广的统一协议。私有LoRa网络则是客户自己基于LoRa调制技术设计。
常见的私有LoRa网络结构有以下几种:
点对点网络
星状网络
Mesh网络
点对点网络
点对点(Point to point)通信网络是一种最简单的网络结构,在STM32WL的应用中称为PingPong模式,它是基于LoRa调制技术实现类似一主一从数据通信,是半双工通信的方式。客户可以使用点对点的通信,测试两块STM32WL板的通信距里。
星状网络
星状网络结构一般是以众多节点,连接到一个网关的形式呈现,如下图:
标准的LoRaWAN网络和大多私有LoRa网络都采用这种星状网络组网。STM32WL 私有LoRa网络例程也是采用这种网络结构。对比LoRaWAN网络需要采用专门的多通道LoRa网关芯片,私有LoRa网络则可以采用STM32WL 这种低成本,灵活的私有网关方案进行小型LoRa组网。使用STM32WL这类本身做终端节点的芯片做私有LoRa网关,它同时只能采用一个信道进行通信,也即是会采用固定的频率,扩频因子(SF),带宽(BW)等调制参数组合。在这种情况下,为解决私有LoRa网络需要和众多节点进行上下行通信,一般使用以下几种工作模式。
普通模式
定时问询模式
信道升级模式
同步/异步下行主动模式
普通模式
在普通工作模式下,网关和节点都采用相同的芯片(比如STM32WL),工作时都使用相同的频率,扩频因子(SF),带宽(BW)参数。网关会一直打开接收通道,等待节点的上传数据。
定时问询模式
定时问询模式,所有节点和网关跟普通模式类似,都采用相同的频率,扩频因子(SF),带宽(BW)参数。但它在网络建立时,网关会给每个节点分配一个序号以及当前的系统标准时间(确保节点时间和网关相同)。定时问询模式下,网关根据其时间表,在对应的时间与每一个节点进行通信。
信道升级模式
为了解决信道容量和易受干扰问题,可以采用增加网关信道的方法,这就是信道升级模式。这种模式下可以使用多个LoRa节点,比如多个STM32WL组成一个网关。网关里的每个STM32WL工作在不同的频点。
同步/异步下行主动模式
同步/异步下行主动模式是为了解决网关下行控制的实时性问题。
同步下行主动模式利用定时询问模式中的下行控制特点,要求每个节点隔一段周期时间打开接收窗口,且所有节点的接收窗口时间相同。比如每隔1s唤醒,周期性打开接收窗口。当网关需要发送下行控制命令时,只要在节点时间窗口内下发指令,节点就能收到。
异步下行主动模式,通过超长的异步下行前导码唤醒所有网络中的节点,节点唤醒后,打开接收窗口,网关发送下行控制命令给节点。
下图为异步下行主动模式通信示意图
同步/异步下行主动模式,因为所有节点都需要周期唤醒,对比定时问询模式的唤醒方式,功耗会有增加,但相应的提高了网关下行控制的实时性。
Mesh网络
Mesh网络即“无线网格网络”,是多跳(multi-hop)网络,具有多跳互联和网状拓扑特性。常见的Mesh网络有BLE Mesh以及Zigbee Mesh网络。在一些同时需求远距离,高速率的LoRa的应用中也会使用到Mesh技术。
二、STM32WL私有LoRa网络例程
STM32Cube_FW_WL软件开发包提供的私有LoRa网络例程叫“LocalNetwork”,里面包含了STM32WL网关“LocalNetwork_Concentrator”和节点“LocalNetwork_Sensor”两个工程。开发包可以直接从ST官网STM32CubeWL下载。这个私有LoRa网络是基于一个STM32WL的网关,以及高达14个STM32WL节点组成。下面会分别对其工作原理和演示做介绍。
STM32WL私有LoRa网络例程的工作原理
在STM32WL私有LoRa网络中,STM32WL网关(Concentrator)上电后处于待机状态,直到收到来自于PC端通过串口传输过来的AT指令,设置工作频率并开始Beacon广播。这里的工作频率可以通过AT指令配置为欧盟、美国、中国等区域的工作频率。而节点(Sensor),复位后会一直处于扫描模式(Scan)。它会以支持的所有的频段来扫描网关的Beacon广播, 直到找到一个有效的Beacon。当它找到了有效的Beacon,会继续侦听后续的同步(Sync)数据包,以了解网关工作的哪些时隙是空闲的。节点会选择其中一个空闲的时隙来响应网关的控制信息,并通过这个时隙传输后续节点采集的传感器数据。从上面我们可以看到网关一直在广播两种数据包,一种数据包叫Beacon ,它里面包含前导码(Preamble),子区域编号(subregion number),频率种子(frequency seed)。另一种数据包叫同步(Sync),它包含标准的前导码(Preamble)以及一些用来管理私有网络的数据。
STM32WL私有LoRa网络例程通信用到了类似定时问询模式的“时分”,和信道升级模式的“频分”(只是它在一个STM32WL上配合时分来实现)。下面我们来看STM32WL私有LoRa网络例程的演示部分。
STM32WL私有LoRa网络例程演示
演示环境搭建
软件
1.从ST官网下载STM32Cube_FW_WL_V1.1.0软件开发包链接:STM32CubeWL
2. 其它软件工具:
编译器:IAR 8.50.9,
串口工具:Tera Term ,
烧录工具:STM32CubeProgrammer
监控工具:STM32CubeMonitor
硬件
4块NUCLEO-WL55JC 开发板
链接: NUCLEO-WL55JC
4 根Micro USB线
软件烧录
四块STM32WL NUCLEO-WL55JC板,选其中一块作为LoRa私有网关,烧写从ST官网下载STM32Cube_FW_WL_V1.1.0软件开发包里的LocalNetwork_Concentrator 工程软件。其余3块烧写LocalNetwork Sensor工程软件作为节点。这里可以直接使用IAR编译器烧录也可以通过STM32CubeProgrammer烧写.bin文件。
使用STM32CubeMonitor监控私有网络
1.4块STM32WL NUCLEO-WL55JC板工作示意图和实物连接图如下:
2.如上图示,当4块STM32WL NUCLEO-WL55JC板上电后,其中一块私有网关(Concentrator)会周期性发出Beacon 和同步信号。而其余三个节点(Sensor)会启动扫描Scan,捕捉合适的Beacon信号进行连接,连接成功后,根据分配的时隙进行数据通信,上传传感器数据到网关(Concentrator)。
3.当4块STM32WL NUCLEO-WL55JC板上电后,将网关(Concentrator)的板子通过ST Link电脑,可以使用STM32CubeMonitor工具,通过AT指令对网关进行控制管理。如下图,就是在以图形界面的方式显示三个节点(Sensor)上传的传感器数据。
三、总结
本文介绍了私有LoRa网络设计原理,内容包括LoRa网络的常见拓扑结构:点对点网络,星状网络和Mesh网络。其中重点介绍了常用的星状网络拓扑的四种工作模式:普通模式,定时问询模式,信道升级模式,同步/异步下行主动模式。而ST提供的STM32WL私有LoRa网络例程中,其在时隙和跳频上的应用则类似定时问询模式和信道升级模式中运行的机制。接着我们介绍了ST提供的STM32WL私有LoRa网络例程实现的原理,以及如何演示STM32CubeMonitor软件监控STM32WL私有LoRa网络的数据通信。