Arduino XBee如何避免使用串行I / O端口?

时间:2013-06-19 01:57:18

标签: arduino xbee zigbee

我有两个Arduinos和两个XBee模块。这些模块直接安装在Arduino板上。一个Arduino正在发送信息,另一个Arduino正在接收信息,同时从它连接的计算机上听命令。我只是通过串口运行XBee代码,它运行正常。

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

void loop()
{
    byte x = Serial.read();
    if (x != 255)
        Serial.println(x);
}

但是,如果代码更改为

#include <SoftwareSerial.h>
SoftwareSerial xbee(2,3);

并将Serial更改为XBee,然后一切都不起作用。我不知道为什么。因为我应该避免使用Serial,因为串口正在与我的计算机上的C代码进行通信。所以我愿意使用另一个端口通过XBee收听。 Rx / Tx上可能存在一些I / O端口冲突,但我的Arduino除了XBee外没有连接任何其他东西。

设置如下:

|的XBee | &LT;&LT; ----------&GT;&GT;的XBee

Arduino |||||||||||||||||| Arduino&lt;&lt; ----------&gt;&gt;电脑C

如何使用SoftwareSerial

2 个答案:

答案 0 :(得分:1)

我已经攻击了Libelium的XBee屏蔽,将电路板的引脚1/0重新路由到2/3,我使用了SoftwareSerial连接。但我所做的改变是永久的!

基本上我所做的是:

Picture of the hack http://m0g.net/stuff/LibeliumXBeeShieldHacked.jpeg

  • 在0和1针脚旁边的焊盘上焊接两根导线
  • 焊接三个引脚跳线XBEE/USB(连接到XBee的那个)的中心引脚上的两根电线的另一端。

但是你可以把它变成永久性的:

  • 使用男性女性jumper wire,您可以将中间针脚连接到2/3针脚。

为确保您的连接,请不要犹豫,仔细检查PCB和原理图:

此外,为了能够在没有任何黑客攻击的情况下使用该屏蔽,您最好使用Arduino Leonardo,其中ATmega32U4具有两个不同的串口:1用于USB,另一个用于引脚1/0。

最后,如果你进行永久性攻击或使用Leonardo,你将不得不创建一个sketch,当你需要重新刷新XBee配置时,它会使Arduino成为USB和XBee之间的桥梁。使用X-CTU(或xbee-comm或moltosenso)。

N.B。:关于软件序列号,您只需要从the official documentation of Arduino获取示例。例如:

def setup():
    SoftwareSerial SwSerial(10, 11);

    SwSerial.begin(9600);
    SwSerial.write(42);
    while (SwSerial.available())
        SwSerial.read();

答案 1 :(得分:0)

XBee模块期望端口0和1作为串行连接。在这里,我假设实际的XBee收发器插入shield,屏蔽插入Arduino,对吗?

如果要使用不同的引脚,则必须制作另一个接口板。