Arduino 教程之:XBee 无线通信

借助 XBee 扩展板我们可以很方便地将 XBee 模块连接到 Arduino 上,XBee 模块的工作原理也非常简单,它与 Arduino 之间其实就是通过串行接口(即 Tx 和 Rx 引脚)进行通信。对于简单的点对点通信来讲,只需要通过串行接口向 XBee 模块写数据就可以实现数据的发送;当 XBee 模块通过无线通道接收到数据时,通过读串行接口可以很方便地获得这些数据。

原理弄清楚之后,其实我们可以将 XBee 模块看成是 Arduino 的串口,通过相应的串口操作函数来实现数据的接收和发送。首先请按照 Arduino XBee 模块使用手册中的说明配置好你的两个 XBee 模块,然后将相应的跳线连接到 XBee 一端:

tutorial_7_jumber

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


int ledPin = 13;
int val;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // send data to another XBee module
  Serial.print('A');
  delay(1000);

  // receive data from another XBee module
  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 的话,则点亮相应的发光二极管。

将该工程编译并分别下载到两个 Arduino 模块中,注意下载的时候不要连接 XBee 扩展板,这是因为 XBee 模块会占用串口,从而导致下载无法正确完成。

下载完成后将 XBee 扩展板连接到 Arduino 上,并分别给两者上电。这两个 Arduino 模块都会向对方发送字母 A,然后从对方接收字母 A,并对点亮数字 I/O 管脚 13 上连接的发光二极管。你可以试着将两个模块放在房间里的不同位置,来对 XBee 模块的传输性能进行测试。

tutorial_7_circuit