Digi XBee模块操作说明

本文旨在帮助初次使用Digi公司的XBee无线模块快速熟悉产品和操作配置方法。模块操 作以Zigbee协议为例,其它无线协议方法类似,具体请查看相关模块的产品说明书。 一、使用前的准备工作

XBee 模块产品按协议和频率,传输能力的不同,共有数十种。 大多数XBee 模块产品的串口引脚和电源引脚均相同,可以直接替换。

Digi公司的开发套件中带有通过电脑串口或USB口操作模块的开发底板,用户可以很方便使用串口调试工具或是Digi公司的X-CTU 调试工具对模块进行各种配置。X-CTU是Digi出品的一款Windows下的模块调试配置工具,拿到Digi产品,首先必须安装X-CTU。 请确保计算机能访问互联网,在安装过程中会出现提示:

python 读取电脑硬件信息 python获取usb硬件id_usb接口定义引脚说明


请选择Yes,以下载Digi模块产品的固件库,这样在操作不同模块时,X-CTU能识别最新固件的模块,并显示相应的AT命令集。下载过程较长,大约需15-30分钟。 安装好X-CTU后,如果您使用USB接口的底板或产品,还需要安装一下USB转串口的驱动程序。Digi模块产品的说明书和驱动,均可以在www.digi.com网站上找到。 使用Digi的底板调试程序,其中USB接口的XBIB-U开发底板需装驱动程序。 小贴示:查找Digi产品的使用说明书和驱动,工具等,可以通过Digi.com菜单上,点击”Support”,在提示框中输入产品的部分或全部名称来搜索相关文档。 安装好驱动后,将模块产品接上电脑,打开X-CTU,在PC Settings标签下,就可以看到对应的串口,就可以对模块进行AT命令或API命令帧方式操作。 二、两种工作模式

1、AT模式

AT模式也叫透传模式,是指除按约定的方式进入命令模式外,XBee模块的串行口总是工作在传输模式下,将所收到的数据通过无线的方式发往目标地址。

工作在AT模式下,用户可以通过输入+++来进入命令模式,在命令模式下,输入AT命令会被立即执行,并返回执行结果。在命令模式下,过一定时间没有任何命令,则会返回传输模式。该超时时间可以通过AT命令设置。 2、API模式

API模式是XBee模块的最主要工作模式,在该模式下通过向XBee串行口发送包含地址和数据的命令帧,从而转为无线的方式发往目的地址。

API模式中数据输出方式,API模式中有个AT 命令参数AO,决定如何显示收到的命令 帧,可以是仅输出0x90接收帧格式数据(对应0x10发送数据命令帧),也可以输出完整的0x91接收帧格式(对应0x11明确寻址发送数据命令)。这样,在 Zigbee协议中,可以将APS应用支持子层的数据从串口中获取,从而支持不同的profile应用。 对Zigbee 模块的I/O口操作,也只能通过API方式。

三、模块操作实战

将带有模块的底板接上电脑,打开X-CTU,在PC Settings上可以找到对应串口,并可配置波特率和流控等参数。默认出厂时,模块的波特率设置为9600,数据位8,停止位1,无奇偶校检位。不修改默认参数,点击Test/Query,可以测试模块是否能正常通信,类型,固件版本号,Mac地址等信息,如下图所示。

python 读取电脑硬件信息 python获取usb硬件id_API_02


模块通信正常后,点击OK关闭对话框。点选Modem Configuration标签页,首先点击Read按钮,把模块的参数读出来。

python 读取电脑硬件信息 python获取usb硬件id_usb接口定义引脚说明_03


这里,Modem XBEE是模块类型,Function Set是模块所带有的功能集,不同的模块类型会有不同的功能集,而Version则显示该模块的固件版本号。 尽管不同类型的模块在硬件引脚上大多相互兼容,但值得注意的是, 只有相同硬件类型,才可以相互烧写不同的模块类型固件

。XBEE硬件类型以S开头来区分,有S1,S2,S2B,S2B PRO,S2C ,S2C PRO,S3等,因此除非您了解,在进行固件升级时请不要随意更改Modem XBEE类型,而总是先Read出其模块类型,Function Set和 Version则可以任意变换。 在模块的参数区,可以看到该固件版本所支持的各种AT命令及其含义,相关的AT命令 表也可以在产品说明书中查询到,可以在这里直接设置或查看模块的现有参数值。修改相应参数后,点击Write按钮就会将所有参数写入模块。在透传模式下,更常用的方式还是利用Terminal串口调试终端对产品进行修改,点选Terminal标签页,输入+++三个加号,返回OK,则表示已经进入命令模式,这时可以打入各种AT命令,如ATID显示设置的PAN ID值,ATSH和ATSL分别读取模块的高位和低位地址,ATDH和ATDL则是模块上设置的目标地址,目标地址为0时总代表协调器的地址,广播模式下目标地址为FFFF。一些模块参数是可以设置的,只需在AT命令后面直接输入相应的参数值即可,如ATDLFFFF,就可以把DL 值设置为FFFF。

python 读取电脑硬件信息 python获取usb硬件id_串口_04


可以用其它串口调试工具实现AT 命令的功能,常用的在Windows下有串口调试助手,在Linux下有minicom,但如果要用API的通信模式,则需要用X-CTU更为方便。 四、透传模式测试

1. 准备两个XBee ZB模块,用X-CTU读取模块信息,并设置为AT模式。 设置方法:S2B模块,查看读取的信息中Function Sets 是否为AT的固件,如果不是则更新固件为AT 版本。其中一个模块烧成 Coordinator AT

,另一个模块烧写为 Router AT

。选中固件集后,点一下”Show Default”,在always update firmware上打勾。然后更新固件S2C模块,固件集成为一个,只需设置AP=0,AO=0 即为AT 透传模式,可以通过AT 命令来设置: +++ OK ATAP1 ATAO1 2. 设置模块的目标地址为对方地址 每个模块都有一个出厂的序列号,也就是 64位的MAC地址

,在AT命令中为SH和SL, 分别代表高位和低位地址。要实现A和B的透传,就要把模块A的目标地址(DH,DL)设置为B的MAC地址,而把B的目标地址设为A的MAC地址。 设置方法:以A为例,假设B的MAC 地址为13a20040669e10,在模块A上用AT 命令: +++ OK ATDH13a200 ATDL40669e10 如果A是协调器,那么B无需任何设置即可以A通信(默认目标地址为0,指代协调器, 用默认参数时,B已经是设置为0了),如果不是,可以参照上述方法,把B的目标地址设为A的MAC地址。 注:另外一个特殊地址值是FFFF,这通常用来指代广播地址。

此时,在串口调试工具中键入任何字符,就会出现在另一端的串口调试工具中,透传模式已置好。 (在没有两台电脑时,可以将另一端的XBee模块底板上的回环插针插上,这样远端XBee模块中的串口输出直接送入其串口输入在同台电脑上可以看到发出去数据收回来了,以此来验证连通模性) 注: 有时我们发现,两个模块的PAN ID和信道完全一样,可是仍无法通信

;这是因为两个模块在某一时间配置成直接通信方式(无Zigbee网络情况直接透传),而当我们配置成网络通信时,并没有退出原有通信状态,从而出现通信异常, 这时只需将 该模块退 网: ATNR0命令。 五、API模式测试

这里以S2C模块为例,为了方便我们看测试结果,我们将要测试的一个模块A设置为API( 模式的协调器AP=1,AO=1,CE=1),另一个模块B设置为AT模式的Router。在X-CTU中,A模块的Terminal中,打开Show Hex查看16进制字符。 用API模式,是以指命定令的帧方式通信,可以同模块的网络参数进行交互,串口中输入的数据必须按指定的数据传输帧或命令帧格式。

模块的用户手册给出了各种不同功能命令帧的定义。 我们来测试一下API模式: 我们先从AT模式的模块打入个字符t,该ASCII码对应的16进制为74, 可以看到,接收端收到的是:

python 读取电脑硬件信息 python获取usb硬件id_串口_05


在命令帧生成工具中,选择0x91类型的命令帧,这是Zigbee个工具可以看到协议中明确寻址传输的接收包帧类型,根据这Digi模块默认的Zigbee Profile是Digi Drop-IN Networking Profile,Profile ID为0xC105,而该Profile下用于无线数据端点Source Endpoint和Destination Endpoint都是0xE8,透传数据Cluster ID为0x11。 接着我们用它来发个数据,0x11明确寻址发送数据命令帧包含了Zigbee寻址的功能,将上述值填入命令帧生成工具,地址用ffff填入(广播),在RF Data中填入我们要传输的内容64,点击Build Packet按钮,生成命令帧: 7E 00 15 11 01 00 00 00 00 00 00 FF FF 00 00 E8 E8 00 11 C1 05 00 00 74 D4 发送出去后,在接收端B可以看到数据”t”。 如果把接收端也换成API模式(AP=1,AO=1),则接收到的是0x91格式的接收包帧格式。