【问题标题】:Two xbee beacons drowning each other out?两个 xbee 信标相互淹没?
【发布时间】:2014-06-14 00:35:36
【问题描述】:

我正在尝试创建一对 arduino/xbee 信标,它们将始终相互传输一些信息(最终是 GPS 坐标)。问题是当他们都打开时,似乎都没有收到。我猜这是因为两者可能同时传输并淹没了其他消息。但是,我不确定是否有更好的方法,因为两者都不是奴隶或主人。这是我的设置:

硬件:

XBee 设置

  • 视频:542D
  • DT:8153
  • 串行连接到 Teensy 上的串行 3

代码

long lastTxTime = 0

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

void loop() {
  long now = millis();

  // Send ever 0.5 seconds
  if (now - lastTxTime > 500) {
    Serial.println("SEND!");
    Serial3.println("WOOT!");
    lastTxTime = now;
  }

  delay(100);

  // Print anything received
  while(Serial3.available()) {
    char c = Serial3.read();
    Serial.print(c);
  }
}

当我将两个 Teensy 连接到单独的终端时,它们都输出“SEND”并且很少收到“WOOT”。我将其中一个 XBees 直接放在 USB 板上的一个终端上,它会从另一个输出大部分“WOOT”消息。

我可以做些什么来完成这项工作?

【问题讨论】:

  • 尝试删除delay(100);。没有必要,因为您每 500 毫秒只发送一次,并且只有在有数据时才从 Serial3 读取和打印。另一个故障排除技巧:移除 XBee 模块,直接连接 Teensy 串行端口(Tx 到 Rx),看看你的代码是否有效。

标签: arduino xbee


【解决方案1】:

您需要研究的是流量控制。在无线标准中,他们使用 RTS(请求发送)和 CTS(清除发送)。 Xbee 上的 RTS/CTS 引脚可能正是您所需要的,

【讨论】:

  • 酷。这是否意味着每个 xbee 都需要与发送者和接收者同步?或者我可以在发送时将每个 RTS 设置为 HIGH,否则将 CTR 设置为 HIGH?还是他们需要更多地了解对方的状态。最初的设计有两个信标,但未来我想支持更多。
  • 我们的想法是在发送之前先听,如果您不发送,则始终在听。 1) 发送侦听并检查空闲通道。 2)它发送请求发送。 3)一旦接收者得到它,它就会返回清除在通道上发送。 4)然后发送者可以用它的数据接管通道。 5) 接收器不会进入通道,因为如果它试图监听空闲,它将获取数据。看看这个想法的图表。 en.wikipedia.org/wiki/…
  • 忘记回答您最后的问题。在执行 RTS/CTS 方案时,所有信标都将以这种方式运行,并且都将处于监听状态。您的数据必须包含某种类型的数据包标头。所有站都会监听并检查标题以查看数据是否适合他们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多