XBee_1mW_Zigbee_无线数传模块_100米传输_SKU_TEL0014_ - jimaobian/DFRobotWikiCn GitHub Wiki

Arduino XBEE模块的使用

XBee-PRO OEM RF 模块是与ZigBee/IEEE 802.15.4兼容的解决方案,可以满足低成本低功耗无线传感网络的特殊需求。该模块易于使用,极低的功耗,以及提供设备间关键数据的可靠传输。由于设计上的创新,XBee-PRO在范围上可以超越标准ZigBee模块2-3倍。 XBee-PRO模块工作在ISM 2.4 GHz频率波段,而且与MaxStream公司的XBee (1 毫瓦) Zigbee 模块引脚兼容。该模块在美国,加拿大,澳大利亚,以色列以及欧洲广泛使用。 建立RF通信不需要任何配置,该模块的默认配置支持宽范围的数据系统应用。也可以使用简单AT命令进行高级配置。 现在为OEM开发商提供XBee代码开发包,OEM可以自己开发与MaxStream ZigBee/802.15.4 RF模块协作的代码。

利用我们为XBee打造的扩展板就可以很方便地将XBee模块连接到Arduino上。

File:XBee 1mW Zigbee.jpg

File:XBee 1mW Zigbee_1.jpg

XBee模块与Arduino之间其实就是通过串行接口(即Tx和Rx引脚)进行通信。对于简单的点对点通信来讲,只需要通过串行接口向XBee模块写数据就可以实现数据的发送;当XBee模块通过无线通道接收到数据时,通过读串行接口可以很方便地获得这些数据,使用方式和APC220以及DF-Bluetooth蓝牙模块雷同。

使用多个Arduino XBee模块,就可以实现多个结点组成的复杂网络,这里我们只研究最简单的两个结点的ZigBee网络。在使用XBEE之前,我们需要先给XBEE模块进行初始参数设置,对XBee模块的设置可以按照XBee手册里介绍的AT指令,通过串行终端完成,也可以借助X-CTU这一工具来完成,使用工具相对来说要方便点。

将Arduino XBee扩展板连接到Arduino母板上,然后将Arduino XBee扩展板上的两个跳线置于USB一端,这样X-CTU才能通过Arduino的USB接口对XBee模块进行配置:

File:XBee 1mW Zigbee_2.jpg

注意:下面我们会用到Arduino的USB接口以及TX和RX管脚,所以请确保Arduion上没有运行对串行接口操作的程序,或者将AVR芯片从Arduino板上取下之后再进行下面的步骤。

用USB电缆把Arduino与PC机连接好之后, 运行X-CTU软件。首先我们在“PC Settings”中里选择Arduino映射出来的串口通信端口,并设置好波特率等参数。XBee模块出厂里默认的设置为9600,8N1。

File:XBee 1mW Zigbee_3.jpg

点击“Test/Query”按钮,测试XBee模块是否能连接上。如果一切正常,我们将看到如上图中的Com test对话框,会显示模块型号及版本号。如果通信参数设置都是正确的,但仍然无法与XBee模块通信上,则请检查USB连线和Arduino XBee扩展板上的跳线,必要时可以拨掉Arduino上的ATmega单片机再试。

测试通过后,转到“Modem Configuration”。首先点击“Modem Parameters and Firmware”中的“Read”按钮读出XBee模块中的当前参数,由于我们的XBEE是最新版本,这时软件会弹出一个对话框,需要连接官方网站下载新版本配置文件,如下图所示:

File:XBee 1mW Zigbee_4.jpg

等待软件更新完毕后,再点击“Read”按钮读出XBee模块中的当前参数,接着在读出的“Networking & Security”中将“Channel”设为“C”,将“PAN ID”设置为“1234”。

File:XBee 1mW Zigbee_5.jpg

如下图所示,这里可以修改XBEE的波特率,XBEE模块默认波特率9600,没有特殊要求可以不用修改。

File:XBee 1mW Zigbee_6.jpg

上述主要参数设置好后,点击“Write”按钮将参数写到XBEE模块中,这里只做一个最简单的点对点网络,所以只需要把2个XBee模块的参数设置一致即可。两个 XBee模块都设置好之后,运行两个X-CTU并在“PC Settings”中选择不同的串口通信接口,分别对两个XBee模块进行测试。

在X-CTU的“Terminal”中,我们手工输入需要XBee模块传输的数据,这些数据被另一个XBee模块收到之后会在另一个X-CTU的“Terminal”中显示出来。其中蓝色的表示发送的数据,红色的表示接收的数据:

File:XBee 1mW Zigbee_7.jpg

接下来就要我们的Arduino通过串口来发送和接收数据了,先将2个Arduino XBee扩展板的跳线连接到XBEE一端。

File:XBee 1mW Zigbee_8.jpg

我们使用一个最简单的工程来进行实验:

int ledPin = 13;
int val;
void setup()
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  Serial.print('A');
  delay(1000);
  val = Serial.read();
  if (-1 != val)
  {
    if ('A' == val)
    {
      digitalWrite(ledPin, HIGH);
      delay(500);
      digitalWrite(ledPin, LOW);
      delay(500);
    }
  }
}

该工程首先通过串口函数Serial.print()向XBee模块发送一个字母A,字母会被XBee模块通发送到无线网络中去,被另外一个XBee模块接收到,再通过Serial.read()函数从该XBee模块读取出接收到的数据,判断如果是字母A的话,则点亮L发光二极管。

将工程编译后分别下载到两个Arduino模块中,注意下载的时候请将Arduino XBee扩展板上的跳线拔掉,这是因为XBee模块会占用串口,从而导致下载无法正确完成。

由于新版的XBEE模块有60mW的发射功率,耗电也相对大些,直接用USB供电就有点小牛拉大车的感觉,所以建议使用外部供电,保证模块能正常工作。上电后两个Arduino模块都会发送字母A,然后XBEE都会接收到字母A,判断成功后会点亮数字I/O管脚13上的发光二极管。

File:XBee 1mW Zigbee_9.jpg

xbee 1mW zigbee模块数据手册

File:nextredirectltr.png购买 XBee 1mW Zigbee 无线数传模块 100米传输 (SKU: DFR0034)

⚠️ **GitHub.com Fallback** ⚠️