Lora Mesh模块实测报告


适用于DTK全部Lora模块:
· DRF1665(3.3V UART接口)
· DRF2667(RS232接口)
· DRF2668(USB接口)
· DRF2669(RS485接口)
· DRF2671(TCP/IP 网口)



一、概述


    本报告是测试Lora Mesh模块DRF1665的性能。

    测试的工具:

    1、Coordinator,采用DRF1665 +弹簧天线 +USB底板,接到电脑上。
    设置的参数为:节点类型:Coordinator ,PAN ID = 2279,频道 = 57, Lora参数 = Lora09
    这里使用的是弹簧天线(特点是价格便宜、体积小、性能还不错),主要是为了模拟实际的使用环境,如果用户换更长的外接天线,使用效果会更好。



2、从节点(Router 或End Device),采用DRF3201单片机底板。

DRF3201里面已经内置了ModBus RTU协议,上位机通过无线发过来的ModBus指令,DRF1665从串口输出给DRF3201的CU,MCU收到指令后,返回符合ModBus格式的数据。
(备注:DRF3201是开源的,所有的源代码及PCB资料在资料包里面都有,文末有下载地址)

天线采用的是很常见的470MHz胶棒天线(价格便宜、容易购买)。

DRF3201板子上含有DC-DC电源,可以DC5-28V输入,测试的时候可以使用4节5号电池供电。



    DRF3201的内部元件及框图:


    3、测试软件

    数据测试采用ModBus Poll软件,上位机发送一条指令,单片机底板(DRF3201)回复一条数据,与大部分PLC、触摸屏、485设备采用的软件一致(或者组态王软件)。
    ModBus Poll会自动记录错误的数据(超时丢失、校验错误、数据错误),这样很容易观察到无线数据传输时的性能。

    另一个重要的测试软件,是DTK的Lora Mesh网络软件,通过该软件,可以观察全网节点是否在网及信号强度。


Coordinator:红色节点,Coordinator的短地址永远是0x0000,Lora Mesh网络是主从结构网络,一个网络由一个Coordinator +n个从节点(Router或End Device)构成,Coordinator必须存在。

Router:蓝色节点表示,框内是它的短地址,Router可以收发数据,还能充当其它节点的自动路由(自动中继)

End Device:黄色节点表示,框内是它的短地址,End Device可以收发数据,不能路由数据

用户点击选中某个模块后,可以点“读取参数”,这样通过Coordinator就可以远程读到这个模块的参数,然后可以修改这个模块的参数(这里主要是修改它的节点类型,以达到期望的路由路径)

(备注:频道、PAN ID、Lora参数是不可以远程修改的)

    Lora Mesh软件是DTK公司开发的读取网络结构软件,只能配合DTK公司模块使用,这也是DTK无线模块(Zigbee模块、Lora Mesh模块与其它模块的重要区别)。


二、数据传输性能测试


    测试采用1个Coordinator + 8个End Device,连续测试一周。

    1、先设置Coordinator的参数:


将参数设置为:
节点类型:Coordinator
PAN ID:2279 (范围0x0001 – 0xFFF0)
频道:57(范围30-70)
波特率及串口格式:115200,8-N-1
Lora参数:Lora09

“给从模块预设的参数“会自动带出来,注意波特率及串口格式115200 ,8-N-1不要改

自定义地址,我们这里用不到,不用管

Lora参数=Lora09,下面的表格会自动给出Lora的具体参数(无需修改),Lora参数从Lora10到Lora03,数据传输的速度从快到慢,传输距离从近到远。

Lora本身已经传输很远,一般不建议使用Lora06以下的参数,Lora03、Lora04,数据包在空中时间太长,其实很容易受到干扰,Lora09、Lora08、Lora07,通常已经兼顾性能与传输距离。

    写入参数后,注意点击“模块重启“(参数写入后重启才生效)。


    2、再通过按键,让从模块自动加入网络

    细心的用户可能发现,我们的单片机底板(DRF3201)上面并没有留出模块的串口,那么,要怎么样才能配置单片机底板上的模块呢?

    有2种方法用来配置模块:
    (1),把模块的按键及指示灯引出来,通过按键启动自动加入网络,并从Coordinator那里自动取得“给从模块预设的参数“,这种方法最简单,而且可靠,推荐使用这种方法;
    (2),单片机发指令给模块,说明书里有指令表,或者在配置软件里面,选择好参数以后,会自动生成对应的指令;

    这里,我们用按键的方法先让8个从模块加入网络
    (1),连按三次Coordinator上的Function按键,Coordinator上的2个指示灯会长亮,表示Coordinator已经进入配网状态;
    (2),连按三次从模块上的Function按键,此时从模块上的2个指示灯会长亮,几秒后,会变成1个熄灭1个快闪,表示从模块已经从Coordinator那里取得了“给从模块预设的参数“,即表示已经配网成功。


    3、通过Lora Mesh网络结构软件,查看整个网络:



    这里设置了10个End Device,其中5个在一个房间,5个在另一个房间,主模块在另一个房间,8个End Device参与测试,另外2个用来监控主模块发送的数据。

    加入网络确定没问题后,要给每一个单片机底板分配一个ModBus地址(可以参考有关单片机底板的说明书及源代码,这里略过)。


    4、数据传输测试

    这里的测试参数:波特率=115200,超时=1000MS,指令间隔=100MS,每次读10个字(20个字节),Lora参数 =Lora09



    经过一周的测试后:

    最好情况:传输了41万8千次,各有1次错误,丢包率为:百万分之2.4;
    最差情况:传输了41万8千次,有19次错误,丢包率为:百万分之46(即万分之0.46);

    综合丢包率为:

    总共传输了:3345262次
    总共丢包:76次
    丢包率:76 /3345262 =0.00002272(十万分之2.2)

    DRF1665的稳定性是很好的,同时也说明单片机底板上的ModBus协议也是相当稳定的(这部分是开源的,用户可以在单片机底板的资料包里找到源程序,大概率已经超过了很多有线的485 ModBus设备)。


三、路由测试


    路由是Mesh网的核心功能之一,为此,DTK专门开发了读取网络拓扑的软件(Zigbee网络、Lora Mesh网络,这里用到的是Lora Mesh网络)。

    1、承接上面的测试,我们先将一个模块放到4楼的窗户边,并将它的节点类型改成“Router”;








    2、其它3个模块拿着,沿办公室前面的道路往前走;
    通过软件可以看到,此时产生了一级路由。


    3、到达第一个点,将其中一个改成Router(5A2B),剩下2个继续往前走;


    4、达到第二个目标点,留下一个模块(3B2E),并将其改成Router,继续往前走;
    此时已经产生了二级路由。




    5、到达第三个目标点
    此时产生了第三级路由,测试的目标是第四级(4A2D)。


    测试数据:
    上面4个(01 -04),直接连接到Coordinator,数据无丢包;
    第一级路由点的丢包率为4%,第二级为3%,第三级为2%,第四级为6%。


第一个点:
第二个点:
第三个点:


    标注在百度地图上为:


总长度为1.8KM
产生了3级路由(总共四级数据)

直接连接的丢包率为:0%
第四级最大丢包率为:6%

真实模拟用户使用环境:
Coordinator与第一级路由之间在一栋楼的2楼与4楼并处于对角线(穿2层楼板);
测试路径包含了:穿越高铁线路、小山包(模块二-二之间都不可视);
天线使用了最简单的天线(弹簧天线、胶棒天线);
测试地点只是简单的放在路面上,没有使用特制的架子。

总结:DRF1665(Lora Mesh模块,含DRF2657、DRF2658、DRF2669、DRF2671)在覆盖半径2KM的范围内使用是没问题的。


    测试点实拍:

第一级路由:

第二级路由:

第三级路由:

第四级路由:



四、距离测试


    Lora的传输距离与Lora参数相关:



    将Lora参数设置为Lora03,实际应用环境下的距离测试:
    在不需要中继的情况下,实测距离1.8km
    在完全开阔可视环境下,实测距离可以达到5.0km



五、通讯速度参数




    优选的参数是:Lora10 – Lora06。Lora03由于扩频因子太大(4096),无线电数据空中时间太长,容易受到干扰,特别是在城市环境。