gpt4 book ai didi

arduino - 将 API tx 帧从协调器发送到终端设备(zigbee+arduino)

转载 作者:行者123 更新时间:2023-12-02 03:39:21 28 4
gpt4 key购买 nike

您好,我正在开发一个 WSN,每个终端设备在开始传输之前都必须收到来自协调器的调用。出于测试目的,我正在使用 4 个 Arduino nano 3.0(在最终配置中,我将使用带有 M3 皮质 cpu 的不同微 Controller )和四个 XBee(带有 zb 固件的 xb24-b)。我无法从协调器向选定的终端设备发送消息,同时我成功地完成了从终端设备向协调器传输数据。这里是在协调器节点上的 arduino 上运行的代码。终端设备通过 USB Explorer 直接连接到电脑。

   #include <SoftwareSerial.h> 
// creo una porta seriale di tipo software sui pin 2(RX) e 3(TX)
uint8_t rxxbee = 2;
uint8_t txxbee = 3;
SoftwareSerial Serial_xbee(rxxbee,txxbee);


// variable to store the data received
int sensorValue = 0;

// costant values of the frame
const byte startDelimeter = 0x7E;

// length
const byte MSB_1 = 0x00;
const byte LSB_2 = 0x10;

// Frame-specific data
const byte frameType = 0x10;
const byte frameID = 0x0;

// 64-bit destination address
const byte MSB_5 = 0x00;
const byte b_6 = 0x13;
const byte b_7 = 0xA2;
const byte b_8 = 0x00;
const byte b_9 = 0x40;
const byte b_10 = 0x86;
const byte b_11 = 0xDB;
const byte LSB_12 = 0xA4;

// 16-bit destination network address
const byte MSB_13 = 0x0;
const byte LSB_14 = 0x0;

// broadcast radius
const byte broadcastRadius = 0x0;

// options
const byte opt = 0x0;


byte spedisci (byte value) {
Serial_xbee.write(value);
Serial.write(value);
return value;
}


void setup()
{
// starts serial communication
Serial.begin(9600);
Serial_xbee.begin(9600);
pinMode(sensorPin, INPUT);

}

void loop()
{
// send data through xBee
spedisci(startDelimeter);
spedisci(MSB_1);
spedisci(LSB_2);
long sum = 0; // accumulate the checksum
sum += spedisci(frameType);
sum += spedisci(frameID);
sum += spedisci(MSB_5);
sum += spedisci(b_6);
sum += spedisci(b_7);
sum += spedisci(b_8);
sum += spedisci(b_9);
sum += spedisci(b_10);
sum += spedisci(b_11);
sum += spedisci(LSB_12);
sum += spedisci(MSB_13);
sum += spedisci(LSB_14);
sum += spedisci(broadcastRadius);
sum += spedisci(opt);
sum += spedisci(0X10); // this is the payload[0] byte
sum += spedisci(0X10); // this is the payload[1] byte
spedisci( 0xFF - (sum & 0xFF));
}

有什么建议吗?

谢谢!

Ps 协调器 api 固件是 21A7;终端设备api固件是29A7

最佳答案

我认为在使用不是协调器的节点的64位IEEE地址时,需要使用0xFFFE作为16位网络地址。尝试更改代码的这一部分:

// 16-bit destination network address
const byte MSB_13 = 0xFF;
const byte LSB_14 = 0xFE;

当您准备好离开 Arduino 平台时,看看这个开源的、便携的、ANSI C XBee Host Library用于在 API 模式下与 XBee radio 通信。它可以大大简化您的软件开发。

关于arduino - 将 API tx 帧从协调器发送到终端设备(zigbee+arduino),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21190788/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com