一、引言

本文将介绍E52-xxxNWxxS的使用示例。使用E52做测试的时候,每个模块最好之间保持10厘米以上的间距,本次实验将会用到4个E52-400NW22S-TB。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

在进行通信实验,请注意一下几个点:

  1. 模块出厂是广播的通信方式;节点类型是路由节点;网络识别码(PANID)是处于同一个网络;端口(用于远程配置)都是1;目标地址都是0,当前地址不一样。

打开网易新闻 查看精彩图片

2、路由节点和终端节点之间切换之后,地址会发生改变,且两个地址的范围不一样,路由节点的取值范围是:0x0000~0x7FFF 终端节点的取值范围是:0x8000~0xFFFE。如果是路由节点,设置超过取值范围的值,地址信息是错误的。

二、常用的指令

AT指令发送时不加回车换行,默认波特率为115200。

1、AT+DEFAULT 恢复出厂:在配置之前最好都进行恢复出厂操作

2、AT+SRC_ADDR=? 查询当前模块的地址

3、AT+DST_ADDR=26034,1 设置目标模块的地址:26034是目标模块的地址,0是掉电不保存,1是掉电保存

4、AT+OPTION=? 查询模块通讯方式:(0x01是单播,0x02是多播,0x03是广播,0x04是泛播)

5、AT+OPTION=1,1 设置模块通讯方式:前面的1是设置为单播,后面的1是掉电保存

6、AT+ROUTER_READ=? 查询路由表

7、AT+TYPE=1 设置节点类型:0是路由节点,1是终端节点

8、AT+ROUTER_CLR=1 清除路由表

9、AT+GROUP_ADD=? 查询所有多播传输的多播地址

10、AT+GROUP_CLR=1 清楚所有多播地址

11、AT+GROUP_ADD=1222 设置多播地址

12、AT+PANID=1111,1 设置网络识别码:主要用于泛播

13、AT+DST_PORT=14,0 设置目标端口:如果设置为14,开启远程配置的功能;如果设置为1,这关闭远程配置的功能

14、AT+HEAD=0 数据帧头开关:0是关闭数据帧头,1是打开数据帧头

三、数据帧头设置

使用和不使用数据帧头开关AT+HEAD指令的区别如图3.1所示。左边是关闭了数据帧头,右边是打开了数据帧头。

打开网易新闻 查看精彩图片

图3.1

四、单播

4.1 单播通信示例

单播实验需要使用到两个E52模块,本文实验使用2个E52-400NW22S-TB,两个模块之间最好间隔10厘米以上。这里设两个E52分别为A模块和B模块。

首先需要通过上位机(该模块的官网进行下载)或者串口助手发送AT+SRC_ADDR=?命令获取当前两个模块自身的地址,并做好记录,注意:使用指令“AT+SRC_ADDR=?”,返回的值有两个,两个值都是表示模块的地址,前面那个值是16进制,后面那个值是10进制。例如本机的模块A和模块B的地址如图4.1所示:

打开网易新闻 查看精彩图片

图4.1

然后把模块A和模块B的广播改成单播,使用上位机配置或者使用指令AT+OPTION(详细见手册指令),如图4.2所示使用AT+OPTION=1,1指令,设置为单播通信,且断电保存。

打开网易新闻 查看精彩图片

图4.2

紧接着模块A和模块B分别输入对方的目标地址,使用上位机配置或者使用指令AT+ DST_ADDR(详细见手册指令),如图4.3所示使用示例,配置目标模块的地址,且上电保存,目标的模块地址就是对方模块的当前地址。

打开网易新闻 查看精彩图片

图4.3

最后让模块A和模块B建立链路通信,双方随便发送非AT指令即可,建立成功会返回 “SUCCESS”,且对方收到单播传输的信息,如图4.4所示。

打开网易新闻 查看精彩图片

图4.4

4.2 注意事项

1、如果两个模块进行通信通信,返回NO ROUTE或者NO ACK,首先检查目标地址是否匹配;如果还是没有解决,请使用恢复出厂指令AT+DEFAULT,重新上电,然后再重新操作;如果还是不行,拔掉模块放置几分钟,然后再重新使用恢复出厂指令,再进行配置。

2、两个模块的节点配置不管是路由节点还是终端节点(路由与路由,路由与终端,终端与终端),都是可以可以进行单播通信。

五、MESH组网

想实现MESH组网,需要3个及其以上的模块,本次实验使用4个E52-400NW22S-TB,首先按照上文“单播”的操作方式,让两两模块进行通信,当通信完毕之后,分别用 “AT+ROUTER_READ=?”指令查询路由表,如果出现类似于图5.1所示现象,则表示此时所有的模块都处于同一MESH网络中,MESH网络中,只有路由节点会转发,而终端节点不会转发。

打开网易新闻 查看精彩图片

图5.1

六、多播

MESH组网实验需要使用到多个E52模块,本次实验使用4个E52-400NW22S-TB,分别设为模块A,模块B,模块C和模块D。

本次多播实验想实现是模块A使用多播通信进行发送,模块B存有多播地址1111和3333,模块C存有多播地址1111、2222和3333,模块D存有多播地址2222和3333,则模块A配置目标多播地址为1111发信息时,模块B和模块C收到该信息;模块A配置目标多播地址为2222发信息时,模块C和模块D收到该信息;模块A配置目标多播地址为3333发信息时,模块B、模块C和模块D收到该信息;

下面进行多播实验示例,模块B、模块C和模块D配置多播地址的操作见图6.1所示,使用AT+GROUP_ADD指令,多播地址是依次填入,最后查询多播地址信息,使用AT+GROUP_ADD=?指令,见图6.2操作。

打开网易新闻 查看精彩图片

图6.1

打开网易新闻 查看精彩图片

图6.2

最后多播的现象是模块A使用AT+DST_ADDR=1111,0发送信息“1234567890”,只有模块B和模块C收到信息,如图6.3所示。

打开网易新闻 查看精彩图片

图6.3

模块A使用AT+DST_ADDR=2222,0发送信息“1234567890”,只有模块C和模块D收到信息,如图6.4所示。

打开网易新闻 查看精彩图片

图6.4

模块A使用AT+DST_ADDR=3333,0发送信息“1234567890”,模块B、模块C和模块D都收到信息,如图6.5所示。

打开网易新闻 查看精彩图片

图6.5

七、泛播

泛播主要用于网络识别码不同时进行通信,模块出厂时网络识别码(PANID)是一样的,当使用AT+PANID指令对其中一个模块进行PANID修改,此时需要用到泛播。

举例,两个E52模块,设为模块A和模块B,模块A是出厂设置,模块B也是出厂设置,但是模块B使用了AT+PANID指令修改了网络识别码,此时,使用单播,广播或多播都无法进行通信,因为模块A和模块B不处于同一网络,需要使用到泛播,泛播使用操作如图7.1所示(泛播的操作请熟悉“单播”再进行)。

打开网易新闻 查看精彩图片

图7.1

八、远程配置

最简单的远程配置就是再完成“单播”的基础上,对其中一个模块使用AT+DST_PORT=14,0 指令,然后使用下面固定格式(++指令 )修改目标模块参数,例如图8.1所示,单播通信的模块A和模块B,实现模块A发送配置指令修改模块B的网络识别码(PANID)。

打开网易新闻 查看精彩图片

图8.1

在理解完单播,多播,广播和泛播的通信原理之后,只要保证模块之间能够通信,就可以使用远程配置的操作配置对方模块的信息。

如图8.1所示,如果没有“返回的信息”,请重新配置成单播通信,确保双方能能接受到信息,然后再进行远程操作。如果还是不行,请给模块发送回复出厂设置,然后断电放置几分钟,然后重新给模块上电,再重新进行远程操作配置。