通过arduino xbeeshield连续通信

时间:2011-09-13 17:43:39

标签: serial-port arduino processing xbee

我在计算机端有一个ladyada xbee适配器和一个我试图通过无线通信的arduino xbeeshield。两个xbe都配置正确,因为我可以从xbeeshield接收数据到计算机。但是它不能以其他方式工作,即xbeeshield不会串行回送从计算机发送的字节。知道我可能做错了什么吗? (注意:当我使用USB线将arduino板连接到计算机时,echo程序运行正常。仅在无线模式下出现问题)

处理代码

void setup() {
  Serial.begin(9600); 
}

void loop() {
  if (Serial.available()) {
    Serial.print((char) Serial.read());
    delay(10);
  }
}

我只是从电脑发送按键并等待回复。我没有得到任何。

2 个答案:

答案 0 :(得分:0)

我使用我回答的代码来解决从PC向Xbee / Arduino发送串行字节的问题。它已经好几个月了。确保您已在PC和Arduino端配置了Xbee模块。确保您的PAN ID也一样。

Arduino making decision according to a packet received from serial port

您使用的是什么版本的Xbee模块?我的代码适用于系列1,但也适用于较新的版本。

答案 1 :(得分:0)

尝试使用softwareSerial库并将Tx和Rx连接到引脚4和2.运行以下草图并告诉我发生了什么。更改波特率值以匹配您自己的

#include <SoftwareSerial.h>

uint8_t pinRx = 2 , pinTx = 4; // the pin on Arduino

long BaudRate = 57600; // Please set your Baudrate. It should match the one in XC-TU
char GotChar, getData;
// Xbee SoftwareSerial initialization
SoftwareSerial xbee(pinRx, pinTx); // RX, TX

void setup() 
{
  Serial.begin(9600);
  Serial.println( "Welcome to the XBee Communication Test" );
  Serial.print("BaudRate:");
  Serial.println(BaudRate);
  Serial.print(" Rx Pin#");
  Serial.println(pinRx,DEC);
  Serial.print(" Tx Pin#");
  Serial.println(pinTx,DEC);
  // set the data rate for the SoftwareSerial port
  xbee.begin( BaudRate );
  xbee.println("Setup Completed!");
}

void loop() 
{
  if (Serial.available()) 
  {
    GotChar = Serial.read();
    xbee.print(GotChar);
    Serial.print(GotChar);
  }
  while (xbee.available()>0)
  {  
    Serial.println("Ohohoh");
    getData = xbee.read();      
    Serial.print(" Received: );
    Serial.print(getData);
    Serial.println();

    if(getData == 'a')
    {    
      Serial.println(" sbam");
    }  
    else if(getData == 'b')
    {
      Serial.println(" sbo");
    }
  }  
}

上传程序并打开串行监视器。您是否完成了“安装”设置&#39;电脑上的消息?如果你发送&#39; a&#39;或者&#39; b&#39;从Pc到Arduino?