一、引言
本文将介绍E52-xxxNWxxS的使用示例。使用E52做测试的时候,每个模块最好之间保持10厘米以上的间距,本次实验将会用到4个E52-400NW22S-TB。
在进行通信实验,请注意一下几个点:
模块出厂是广播的通信方式;节点类型是路由节点;网络识别码(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所示,如果没有“返回的信息”,请重新配置成单播通信,确保双方能能接受到信息,然后再进行远程操作。如果还是不行,请给模块发送回复出厂设置,然后断电放置几分钟,然后重新给模块上电,再重新进行远程操作配置。
热门跟贴