下面采用digi的xbee zigbee mesh网络开发套件来进行组网和通信操作,需要装备好至少两个模块和对应的开发底板。
首先,确保您的电脑上已经安装好digi的开发工具xctu,请下载对应您的电脑操作系统的最新版本。将两个digi的xbee zigbee模块通过开发底板和电脑连接起来,打开xctu,用左上角的带有放大镜图标的查找按钮来查询连接到电脑上的模块,并把它添加到xctu左侧的无线模块列表中。在xctu软件中,默认是位于配置窗口中,点击左边模块,便会读取模块相关的参数,在配置窗口中展现出来。
xctu的参数区域的上方,有一排常用的按钮,分别是读取(read),写入(write)参数,加载默认参数(default),升级固件(update),配置导入导出(profile)。首次使用,建议用update按钮更新一下到最新固件,在firmware version中选择最上方最新的固件,确定是zigbee协议的固件,去掉“强制模块保留当前配置”的选项,然后点update按钮。这样就恢复模块到出厂的设置。如果您的模块已经是最新固件,请用参数区上方的“default”按钮加载模块的默认参数,并按“write”写入模块,使模块恢复出厂的配置,确保不会因为之前使用时的不恰当参数影响通信效果。写入默认值后,再按“read”按钮重新加载一下参数到xctu右侧的参数栏上。
点击左侧另一个模块,用同样的方式恢复一下模块的出厂设置。在配置模式下,如果仅对某个参数进行读取和写入,可以使用对应参数右方的刷新和写入按钮。
两个zigbee模块要相互通信,必须在同一个网络中,所以我们需要**将一个模块配置成协调器,另一个模块配置成路由器并加入到协调器的网络中。**注意:模块默认的nj为254s,所以在5min内会关闭允许加入,为了避免加入窗口被关闭,可以把nj改为ff,也就是永远允许加入。
以下两个模块简称a和b。
a模块:ce=1 配置为协调器,dl=ffff,nj=0xff
b模块:不改任何参数。
将a模块的ce改为1,就把模块配置成协调器了,这时模块会生成一个网络号为id指定值的zigbee网络, 默认id=0,因此协调器会生成一个随机64bit的网络号的zigbee网络。 如果刷新模块参数,会发现op和ch有一个值了,这里op是指当前的网络号,ch是指当前的信道号。dh和dl组成模块的目标地址,我们把dl改为ffff,是因为默认dh和dl都为0,这样指代协调器本身,dh为0而dl=ffff则是广播地址。
b模块是默认的路由器的出厂配置,id=0表示可以加入任意网络。如果周边没有其它zigbee网络,b模块又是首次使用,那么它肯定会在10秒内加入a模块的网络,可以读取一下b模块的op和ch,观察它是否和a模块相同,以此来判断是否在同一个网络中。默认地b模块的dh和dl都是0,表示目标地址是协调器。入网后,模块的入网指示灯会均匀地闪烁(每秒两次),这样我们已经配置好两个对发的模块了。如果b模块的assoc指示灯没有闪烁而是常亮,那表示还没有入网,这时可以手动在commissioning按钮上连按四下,让这个模块离开原来网络,以便加入a模块的网络,通常只要天线连着,就可以看到b模块入网,然后我们就可以做透传对发测试。
这时我们可以点击右上角的图标切换到终端窗口,来观察串口数据透传的效果。终端窗口实际上是个带有ascii和16进制显示终端的串口调试工具,有个串口打开/关闭按钮,以及一个视图分离按钮,方便查看两个模块各自的收发数据。
分别选中模块,并在终端模式中打开串口,将其中一个模块的串口终端视图分离,我们在任意一个终端中输入数据,另一个模块的张端就能收到相同的数据。如下图所示:
在透传模式下,数据送入a模块的串行uart接口,就会被发到目标地址指定的b模块上,从b模块的串行uart中输出,所以称之为透传。平时模块处于空闲或传输数据的状态,当我们需要更改模块参数时,就可以通过向串口发指定时序的特定字符串来进入命令模式,以便更改模块配置。默认地,在空闲期间连续输入三个“+”号可进入命令模式,这时可以通过向串口发at命令来实现特定功能。比如,我们之前设置协调器的目标地址为0xffff,这样网络内所有的模块都能收到该数据并转发;如果我们只需向特定的模块发送数据,就不应该用广播模式,而需要把目标地址设置为特定的模块的mac地址。
下面at命令演示了读取b模块的自身地址并将它设置为a模块的目标地址的过程:
在b模块上,用“+++“进入命令模式,发atsh,atsl分别读出模块64位mac地址的高位和低位。切换到a模块的终端窗口中,用atdh和atdl把刚才获取得的参数设置目标地址,并用atwr写入flash,这样断电重启后配置不会被清空。注意:**默认地在命令模式中如果10s内无任何输入,就会退出命令模式,回到透传模式的空闲状态。**所以at命令中的字符请连续输入不要间停超过10s,否则需要重新用”+++“进入命令模式。
静静等待约10s后模块退出命令模式(也可以发atcn命令直接退出命令模式),这时在终端窗口中输入数据,另一个模块的终端也能收到数据。只不过,此时作为协调器的a模块不再是广播模式,而是只定向往b模块发数据了。
通过at命令可以设置很多参数,比如ni是设置模块的ascii名称,nr是退网命令,id是指定网络名称,还可以通过at命令读取或设置模块的io口状态等。
下面我们将把a模块的网络id更改,让b模块重新加入,以下是完整操作过程的相关at命令:
a模块:1)读一下ce,以确定是要操作的协调器a模块;2)读一下当前id值;写入新的网络id;3)配置写入flash;4)稍等片刻后查询当前工作的网络id。
b模块:1)读一下ce,确定是路由器;2)读一下当前网络id;3)读一下当前信道;4)发退网命令,离开之前加入的网络;5)稍等片刻查询新加入的网络id;6)查询当前信道。
由于透传模式下,需要通过特定字符组合和时序进入命令模式,在一些需要频繁使用at命令的场景下就显得很不方便,因此digi的模块除了支持透传模式外,还可以通过api模式更灵活地使用模块。
鼎芯正式发布TD射频芯片 TD商用化进程提速
国产封装材料为何被卡喉咙?市场发展现状如何?
打造物联网智能空间需要了解有哪一些
LG还未放弃它的模块化设计理念,还打算用在智能手表上
应用于可穿戴设备领域的柔性混合电路方案
Digi XBee3 ZigBee组网和通信测试步骤
5G时代下的底层存储技术将迎来巨大变革
国内外智能工厂建设的现状 工业互联网与智能工厂殊途同归
国家电投滨海南H3海上风电项目圆满完成首台风机吊装任务
PLC控制系统使用经验和注意事项
硅基氮化镓是什么意思 硅基氮化镓和碳化硅的区别
肖特基二极管和温度
广州新赛格电子城疑似停业,一个时代的落幕?
诺基亚8什么时候上市?诺基亚8最新消息:诺基亚8再次曝光:全面屏+6G内存,还会有骁龙835
ModbusTCP转Profinet网关连接脉冲电源通讯配置
基于TruTherm技术的LM95231型传感器
电梯用的整流桥如何测量好坏
电镀行业产品优化测试分析方案
台湾面板、太阳能、LED 产业何去何从?
保隆安徽喜获“安徽省科学技术奖二等奖”