Arduino教程七: XBee无线通信

Written by on 2007/12/16 in Arduino, 教程 - 5 Comments

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

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

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


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模块的传输性能进行测试。

5 Comments on "Arduino教程七: XBee无线通信"

  1. zhang jie 2009/01/13 at 4:57 PM ·

    请问,如果想直接把Arduino Pro Mini (3.3V的)和XBee板子一起用应该怎么连接呢?哪里能找到XBee Shield的资料?我想看看需要怎么连接,谢谢。

  2. flamingoeda 2009/01/16 at 5:57 PM ·

    应该是连接几根线就可以了,原理图随后公布,着急的话告诉我你的邮件我发给你;-)

  3. zhang jie 2009/01/19 at 6:57 PM ·

    您好,能发邮件给我么?谢谢:D
    ursularzhangcn@yahoo.com.cn

    我用干电池驱动arduino和XBee,电池很快就没电了。不知道您有否遇到过这种问题啊?

  4. Jianlong 2011/08/02 at 3:10 AM ·

    我也遇到和楼上一样的问题,请指教!
    chaijianlong248@gmail.com

Trackbacks for this post

  1. 鲸男与互动新媒体Whale’s Interactive » Blog Archive » Xbee Pro VS Arduino

Leave a Comment

使用新浪微博登录