2

我有两个 Arduino 和两个 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 然后一切都不起作用。我不知道为什么。因为我应该避免使用串行,因为串行端口正在与我计算机上的 C 代码通信。所以我愿意使用另一个端口通过 XBee 进行监听。Rx/Tx 上可能存在一些 I/O 端口冲突,但我的 Arduino 没有连接到除 XBee 之外的任何其他设备。

设置是这样的:

| XBee| <<------------>> XBee

Arduino |||||||||||||||||| Arduino <<--------->> 计算机 C

我该如何使用SoftwareSerial

4

2 回答 2

1

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

基本上我所做的是:

黑客的图片
(来源:m0g.net

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

但是你可以让它不是永久的:

  • 通过使用公母跳线,您可以将中间引脚连接到 2/3 引脚。

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

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

最后,如果您进行永久破解或使用 Leonardo,当您需要使用 X-CTU(或xbee -comm 或 moltosenso)。

注意:关于软件序列号,你只需要从Arduino 的官方文档中举例,例如:

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

    SwSerial.begin(9600);
    SwSerial.write(42);
    while (SwSerial.available())
        SwSerial.read();
于 2013-06-19T08:38:16.270 回答
0

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

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

于 2013-06-19T02:31:17.577 回答