我有两个Arduinos和两个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,然后一切都不起作用。我不知道为什么。因为我应该避免使用Serial,因为串口正在与我的计算机上的C代码进行通信。所以我愿意使用另一个端口通过XBee收听。 Rx / Tx上可能存在一些I / O端口冲突,但我的Arduino除了XBee外没有连接任何其他东西。
设置如下:
|的XBee | &LT;&LT; ----------&GT;&GT;的XBee
Arduino |||||||||||||||||| Arduino&lt;&lt; ----------&gt;&gt;电脑C
如何使用SoftwareSerial
?
答案 0 :(得分:1)
我已经攻击了Libelium的XBee屏蔽,将电路板的引脚1/0重新路由到2/3,我使用了SoftwareSerial
连接。但我所做的改变是永久的!
基本上我所做的是:
Picture of the hack http://m0g.net/stuff/LibeliumXBeeShieldHacked.jpeg
XBEE/USB
(连接到XBee的那个)的中心引脚上的两根电线的另一端。但是你可以把它变成永久性的:
为确保您的连接,请不要犹豫,仔细检查PCB和原理图:
此外,为了能够在没有任何黑客攻击的情况下使用该屏蔽,您最好使用Arduino Leonardo,其中ATmega32U4具有两个不同的串口:1用于USB,另一个用于引脚1/0。
最后,如果你进行永久性攻击或使用Leonardo,你将不得不创建一个sketch,当你需要重新刷新XBee配置时,它会使Arduino成为USB和XBee之间的桥梁。使用X-CTU(或xbee-comm或moltosenso)。
N.B。:关于软件序列号,您只需要从the official documentation of Arduino获取示例。例如:
def setup():
SoftwareSerial SwSerial(10, 11);
SwSerial.begin(9600);
SwSerial.write(42);
while (SwSerial.available())
SwSerial.read();
答案 1 :(得分:0)
XBee模块期望端口0和1作为串行连接。在这里,我假设实际的XBee收发器插入shield,屏蔽插入Arduino,对吗?
如果要使用不同的引脚,则必须制作另一个接口板。