Xbee无法发送数据的可能原因

时间:2016-03-12 19:42:23

标签: arduino xbee

我正在使用带有Xbee系列1的Arduino Pro Mini 328P(3.3v,8Mhz)。我已将频率设置为1 Mhz,波特率设置为9600.此外,我在Xbee中将波特率设置为9600。我还测试过,在这个波特率下,Xbee正常情况下正确发送数据。

现在我在项目中做了什么:

我已经在网关上注册了我的Xbee,然后它将进入休眠状态(我使用了引脚休眠模式),然后它将被Pro Mini的数字引脚唤醒。我已经延迟了19ms,之后Xbee将尝试发送数据。发送数据后,它将重新进入休眠状态。

问题是它在向网关发送数据时行为是随机的(它也有相同的Xbee系列1)。有时它会完美地发送数据,有时发送失败。如果Xbee第一次无法发送数据,我还启用了RR重试6次。

由于发送数据的随机性,我不知道如何解决这个问题。

我已经放了两个Xbees(我有两个节点具有相同的硬件和相同的代码)。大约4分钟之间的间隔。因此,当一个Xbee完美地发送数据时,在那4分钟gae(两个RTC在不同节点上的时间差)之后,另一个无法发送数据。在这种情况下,我能得出什么结论?

作为旁注,Xbee将尝试每小时发送一次数据。要计算那个小时,我必须使用RTC,这似乎工作正常(我确信因为我已经记录了日志,RTC永远不会产生中断)。

所以我想知道可能的原因是什么,以及如何解决这个问题(如果可能的话没有重新启动任何东西那么没有什么会比这更好)。

我没有选择重启我的控制器。

如何调试?

1 个答案:

答案 0 :(得分:0)

一些事情。如果可能,请提高波特率,以便花费更少的时间向/从XBee发送数据。如果您的功率预算有限,更快的波特率可以节省时间和精力。我不知道UART如何在Arduino上运行,所以我不能说1MHz CPU时钟是否可以达到115,200bps。

其次,确保在唤醒后,等待XBee将CTS断言回Arduino。除非“明确发送”,否则永远不要发送给XBee。

第三,如果您使用API​​模式,您可以观察从本地XBee到Arduino的“传输状态”帧,它会让您知道模块何时成功发送帧,并且您可以安全地放置它又回到了睡眠状态。