Digi无线模块产品中,900MHz频段的长距离XBee模块的主打产品是XBee PRO SX和XBee PRO XTC。这两者在硬件上一样,只是固件不同。 XTend是Digi第一代900MHz长距离无线通信数传模块产品。它的封装比XBee大,作为早期的明星产品到现在已经有十多年的历史,最近一次硬件改版中已经被小型化的XTC取代,为了兼容早期的XTend产品设计,仍有相同的封装的新型号XTend Verb模块可以供货。 XTC是兼容Digi XTend模块的小型化产品。它除了是XBee的封装型状以外,其它功能和XTend完全一样。 SX产品分为低功率版本(20mw)的XBee SX和高功率版本(1W)的XBee PRO SX模块。相比XTC/XTend,SX的固件增加了更多的功能特性,一般比较适合国内用的是XBee PRO SX,也是目前国内主推的900MHz无线模块。

DIGI SX模块的产品资料和使用说明,请从官方的产品支持页面下载: http://www.digi.com/products/xbee-rf-solutions/modules/xbee-sx#productsupport
用户手册(在线版)(PDF下载
开发板原理图
硬件设计指南
DIGI XTC/XTend vb模块的Digi官方产品支持页: http://www.digi.com/products/xbee-rf-solutions/modules/xtend-module#productsupport

常用型号:

参数     值          
供电电压   2.6V~3.6V (典型3.3V)
网络拓扑(软件可选) 对等,星状, 自组网
尺寸         3.38 x 2.21 x 0.32 cm
封装类型 邮票孔贴片
天线接口 u.FL 或 RF焊盘  
工作温度 -40°C ~ +85°C
发射功率 30dBm (最高)
RF 特性 频段:902~928 MHz 带宽:10kbps/110kbps/250kbpsFHSS跳频
I/O口 数字13个(5个可配置成输出)ADC:4路10位PWM:2路输出

SX模块可以通过TO参数配置模块的工作模式,默认为C0是Digimesh模式,您可以设置成0x40,使它工作在点对多点的网络拓扑中,以提高带宽。

XBee SX和其它XBee模块稍有不同,在XBee SX的底部有一个额外的地线引脚,用于散热,它需要同底板的地焊在一起以方便散热。详情请参考产品手册中PCB design and manufacturing章节。 XBee SX的封装尺寸图如下(单位为英寸):

点击以显示 ⇲

点击以隐藏 ⇱

SX模块引脚定义

SX模块引脚定义

Pin Name I/O Default state Function
1 GND - -
2 VCC I - 电源
3 DOUT/DIO13 I/O Output GPIO / UART data out
4 DIN/CONFIG/DIO14 I/O Input GPIO / UART data in
5 DIO12 I/O Disabled GPIO
6 RESET I - 低电平置位 (只能开路或拉低)
7 DIO10/PWM0/RSSI I/O Output GPIO / 接收信号强度指示
8 DIO11/PWM1 I/O Disabled GPIO /PWM
9 [Reserved] - - 不要连接
10 DIO8/DTR/SLEEP_RQ I/O Input GPIO/引脚休眠/DTR
11 GND - - Ground
12 DO19/SPI_ATTN O Output GPO/SPI Attention/UART数据指示
13 GND - - Ground
14

15 DO17/SPI_SSEL I/O2 Input GPO / SPI not select 16 DO16/SPI_MOSI I/O3 Input GPO / SPI Data In 17 DO15/SPI_MISO O Output GPO/SPI Data Out Tri-stated when SPI_SSEL is high 18 [Reserved] - - Do not connect 19 [Reserved] - - Do not connect 20 [Reserved] - - Do not connect 21 [Reserved] - - Do not connect 22 GND - - Ground 23 [Reserved] - - Do not connect 24 DIO4 I/O Disabled GPIO 25 DIO7/CTS I/O Output GPIO / UART Clear to Send Flow Control 26 DIO9/ON/SLEEP I/O Output GPIO / Module Sleep Status Indicator 27 VREF - - Feature not supported on this device. Used on other XBee devices for analog voltage reference. 28 DIO5/ASSOC I/O Output GPIO / Associate Indicator 29 DIO6/RTS I/O Disabled GPIO / UART Request to Send Flow Control 30 DIO3/AD3 I/O Disabled GPIO / Analog Input 31 DIO2/AD2 I/O Disabled GPIO / Analog Input 32 DIO1/AD1 I/O Disabled GPIO / Analog Input 33 DIO0/AD0 I/O Input GPIO / Analog Input / Commissioning Pushbutton 34 [Reserved] - - Do not connect 35 GND - - Ground 36 RF_PAD I/O - RF connection for RF pad variant 37 [Reserved] - - Do not connect 38 GND - - Ground pad for heat transfer to host PCB. Located on the underside of the XBee module.

引脚连接建议:
必须连接的引脚有VCC,GND,DOUT,DIN。如果要支持通过UART更新模块固件,还应该连接RTS和DTR引脚。
建议连接:RESET引脚连单片机IO口以便异常时复位模块。有条件可以把commissioning Button也接上按键,特别是开发阶段,以方便调试。如需LED指示灯,请不要用管脚直接驱动,而应该用管子隔开。

本文将指导您使用XBee SX开发套件和XCTU软件进行通信测试。您需要首先安装XCTU 6.3以上的版本。如果您还没有安装,请先下载:http://www.digi.com/xctu-windows
XBee开发底板的驱动,如果您还没有安装,可以从这里下载:http://ftp1.digi.com/support/driver/Digi_USB_RF_Drivers.exe
注意:严禁带电插拨XBee模块,需要插拨模块时,请先断开电源和USB连接。

将XBee SX开发底板通过USB连接到电脑,并插上外接电源,使两块板子隔开2m左右的距离。打开XCTU,首次使用XCTU,您应该使电脑连着网络,XCTU会自动从Digi官方下载固件更新,这样能保证XCTU有最新的各种固件。

使用XCTU左上方的按钮添加或搜索模块,把电脑上连接着的XBee模块加入到左侧的列表中,如下图所示:

默认地,SX模块出厂时,网络ID值是相同的,而模块的DH和DL分别为0和0xFFFF,代表广播地址。因此如果不修改配置,两个模块就能直接通信。 点击XCTU上的终端模式按钮,切换到终端模式,这实际上相当于串口调试工具。利用终端视图分离按钮我们可以分开两个模块的终端视图,这时,在任一模块终端上打字,另一模块则会收到并输出到终端窗口上。

XBee@ SX模块的API模式通信 除透传模式外,还可以使用API模式进行过程和行为都更加方便可控的通信。
API是基于命令帧的串口通信协议,它把不同功能的API用不同的命令帧来实现,可以实现获得比透传模式更多的信息和更灵活的控制。比如我们可以获取数据来自哪个模块,发送远程AT命令,随时给指定的模块发送数据而无需进行模式切换。
要启用API模式,只需将AP参数更改为1或2就可以了。我们可以把刚才测试的一个模块改为API模式,来进行API模式下的通信测式。 首先我们在配置模式下把其中一个模块的AP设置为1,然后分离透传模式的模块终端视图,从透传模式终端中打一个字符“t”,可以看到另一个API模式下的模块收到了带有这个字符的16进制的数据包。如下图所示:

要从API模式发送数据,必须将数据组成特定格式的发送数据帧。XCTU终端模式下很很容易根据需要生成测试的API命令帧。在终端模式窗口中,按“+“号按钮添加一个API帧,根据向导提示,选择Digimesh协议,并从帧类型下接菜单中选择0x10发送请求帧,在目标地址处添入另一模块的地址,在RF Payload处添入要发送的数据”test”,这样就会生成一个发往另一模块的API帧,点击OK并把生成的帧添加到发送列表中。

分离API模式的终端视图,选中一个帧发送,就可以在透传模式中收到测试的发送数据“test”了。

SX模块可以是单独AT或API模式,也可以混合组网。

配置两个SX模块并使用range test工具 不需要再查看终端时,我们可以先关闭串口。 要使用Range Test工具,您需要将本地模块配置成API模式,并通过它搜索网络中的远端模块。API模式下可以通过模块列表上模块右方的按钮来添加同一网络内的模块。添加好模块后如下图所示:

从Tools菜单或工具按钮的下拉菜单中选择Range Test。我们可以配置要发送的数据包大小,超时时间,发送间隔时间和总共要发送的数据包等选项。Cluster ID为0x12表示它用的是0x11带应用层寻址的发送帧,0x12表示让对方回送收到的数据。点击“start range test”开始测试。相关的测试结果以图形化的方式显示出来。

初次使用SX或XTC模块,最快的上手方式是拿一套XBee SX或XTC的开发套件,使用串口调试工具XCTU在电脑上通过串口完成模块间相互通信测试。

将两个相同系列的无线模块用开发底板同电脑连接起来。注意不要将两个高功耗的无线模块并排放置,而是应该隔开至少60cm以上的距离(以天线的振子部位为准),这是因为长距离模块最大发射功率可达1W,如果靠得太近,接收方容易出现过饱知,严重时甚至有可能损坏前端。

连接好后打开XCTU,用左上角的查找模块按钮来查询连接到电脑上的模块,并把它添加到XCTU左侧的无线模块列表中。在XCTU软件中,默认是位于配置窗口中,点击左边模块,便会读取模块相关的参数,在配置窗口中展现出来。

XCTU软件右上角有个控制台模式按钮,可以用它作为一个串口终端程序来进行通信测试。在串口终端模式中,窗口分为ASCII码区域和16进制显示区域。发送和接收的数据会用不同的颜色显示出来。

我们可以用分离终端窗口按钮来把两个模块的终端窗口同XCTU软件分离开来,以方便同时观察各自的发送和接收情况。

XTC/XTend支持两种固件,分别是P2MP和Digimesh,一般国内常用的是点对多点模式的P2MP固件。在这个固件中,最常用的参数包括网络ID,目标地址DT,本地地址MY。通过简单配置这三个参数就可以完成模块的组网通信。默认地,出厂时的固件中模块的MY都是FFFF,所以DT既作源地址也作为目标地址,因此模块已经能和所有目标地址为0的其它模块互通,随意在终端窗口打几个字母,对方的窗口都能收到相应的数据。

我们需要为每个模块设置独一无二的自身地址,这样我们才可以进行定向通信。 在配置窗口中,给模块一的MY设置为1001, DT设置为1002,另一模块上,我们设置MY为1002, DT为1001,这样两个模块就可以独一无二的地十互相通信了。切换到终端窗口,把其中一个终端界面分离出来,我们输入1234,在另一个终端就可以看到接收到的1234以红颜色方式显示出来,这样就完成的透传模式下两个无线模块的对发测试。

XTC有许可可配置的参数来灵活实现各种功能和对不同应用场景通信的调试和优化。更多功能请认真研读产品手册。

除透传模式外,还可以使用API模式进行过程和行为更加方便可控的通信。

为了更大地提升带宽利用率,还可以采用polling mode来进行通信,在一点对多点通信中,要同多方通信的模块称为基站模块。在polling模式中,基站模块会轮询指定范围的远方模块。这样做的好处是,远端模块只有在轮询到才发数据,没有随意发送带来的碰撞冲突,提高带宽利用率。 在轮询模式中,基站模块需要配置如下:

  • MD=3
  • MY=0
  • PB=起始地址
  • PE=结束地址
  • 可选配置包括(MT,PD,AP)

轮询模式的远端模块需配置如下:

  • MD=4
  • MY在指定地址范围内
  • DT=0
  • 可选配置包括MT

在轮询模式中,PD的值很重要,它是每个模块轮询间隔时间,默认是64也就是100ms。通常您可以直接用默认值进行测试。 如果您想观察它如何运作的话,把它改成3E8(1秒),我们会发现,基站模块的发送是随时可以进行的,而远端模块只有轮询的时间片内时数据才会送出。注意为了兼容大多数场景,请把PD设置为300ms以下。

在一对多的场景,避免多的那一方同时发数据造成过多的竞争冲突,polling的时间片方式是一种有效的应对措施。即使是针对一对一的也有一定的意义,因为polling意味着发送方准备好接收而不会与接收方竞发。但PD和数据模型有关,如果PD不匹配数据模型,有可能会观察到的效果并不好。因此,当Polling模式测试下来效果不理想,请恢复模块为出厂配置。

对于数据发送频繁带宽需求较高的应用场景,您需要正确配置XTend和SX,以便发挥它们的功效 对于XTend/XTC来说,一般对于大数据流的应用,主要是要配置RN和TT,可以把RN设置为1或2,把TT设置为1K。在RN=2, TT=1K测试时,双向对发100bytes/100ms,基本上不丢包。 对于SX来说,它没有RN和TT,应该说新的协议在固件里自动优化了之前需要手动设置的参数,只需配置TO=40,用它的P2MP模式即可。

随着SX固件的成熟和完善,相关的测试表明,最新的SX固件已经能取得比XTC更好的效果,在双向密集通信时表现更优越,详情请参考:如何优化双向通信测试时的丢包率