【问题标题】:Receive XBee signals on Arduino在 Arduino 上接收 XBee 信号
【发布时间】:2013-02-07 17:27:30
【问题描述】:

A 面:

  • Arduino Uno R3 带无线 Proto 屏蔽,由 USB 供电
  • 使用 XBee Pro S1,DH 0 DL FFFF MY 0 API 0
  • Wireless Proto shield 的串行选择开关位于“微型”位置

B 面:

  • XBee Explorer USB 连接到装有 XCTU 软件的 PC
  • 使用 XBee Pro S1,DH 0 DL FFFF MY 0 API 0

(当我将两个XBee模块都放在USB资源管理器中,连接两台PC时,我可以毫无问题地来回发送数据,所以我认为XBee设置很好。)

问题

现在我希望 Arduino 从 B 端捕获输入(使用 XCTU 终端发送),但是当我在终端中输入任何内容时,A 侧的 RSSI LED 仅亮 5 秒,但 Arduino 会似乎没有捕获任何数据,因为它没有像应有的那样发回数据(Serial.print("I received: ");

Arduinosketch:

int incomingByte = 0;

void setup() {
    Serial.begin(19200);  //Both XBee chips are configured at 19200 Baud
    Serial.print("start echo machine");  //This is received just fine on the B side
}


void loop() {
    if (Serial.available() > 0) {
        // Read the incoming byte:
        incomingByte = Serial.read();

        // Say what you got:
        Serial.print("I received: ");  //This never shows on the B-side
        Serial.println(incomingByte, DEC);
    }
}

我该如何解决这个问题?

【问题讨论】:

  • 盾牌的串行选择开关在哪个位置?
  • 串行选择在“微”位置

标签: serial-port arduino xbee


【解决方案1】:

您必须使用 XBee 的 SoftwareSerial(RX,TX) 和将输出打印到 PC 的 Serial。 SoftwareSerial 的 RX 和 TX 必须连接到模块的 DOUT 和 DIN 引脚到 Wireless Proto shield:

#include <SoftwareSerial.h>

// Connect pin 10 of Arduino to DOUT of Wireless Proto shield
uint8_t ssRX = 10;

// Connect pin 11 of Arduino to DIN of Wireless Proto shield
uint8_t ssTX = 11;

SoftwareSerial nss(ssRX, ssTX);

void setup() {
  Serial.begin(19200);
  nss.begin(19200);
  Serial.println("Serial works");
}

void loop() {

  if (nss.available()){
    Serial.println("received packet:");
    for(int i=0;i<25;i++){
      Serial.print(nss.read(),HEX);
      Serial.print(",");
    }
    Serial.println();
   }

【讨论】:

  • 多么巧合,我只是为这个问题自己输入了一个答案!使用 zigbee 进行一些基本的通信时,API 模式有哪些优势?在这种特殊情况下,我不需要高级网络模式。
  • API模式的优点很多;根据我的说法,最好的方法之一是您可以知道数据包的源地址,这对传感器网络非常有用...但是您可以在这里查看 API 和 AT 模式之间的其他差异:code.google.com/p/xbee-api/wiki/WhyApiMode
【解决方案2】:

许多电路板需要启用 DIN 上的上拉电阻。 根据一些消息来源,Digi Xbee 模块默认启用此上拉。

确保启用或启用它:

将您的 Xbee 模块放入 USB 资源管理器并使用 X-CTU 检查 PR 配置。 Xbee Pro S1 的 DIN 位于第 7 位,因此在这种情况下,您需要最后一位为 1。

我这样写:00000001

然后将其转换为十六进制(在我的情况下为 01)并使用 X-CTU 将该值写入 Xbee 模块。

所以这是一个电子问题而不是编程问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多