在本篇文章中,我们将使用Arduino Uno开发板连接一个XBee模块。与Arduino开发板连接的XBee模块将作为一个接收器,它将与其他XBee模块进行无线通信,这些模块使用Explorer Board与笔记本电脑串口连接。接下来,让我们进一步探索使用XBee模块和Arduino进行无线通信。
所需的硬件
● Arduino Uno开发板
● XBee Pro S2C模块(可以使用任何其他型号)
● Xbee Explorer Board(可选)
● Xbee分线板(可选)
● USB线缆
● 发光二极管
使用XCTU配置XBee模块
正如我们在之前的教程中所了解的那样,XBee模块可以作为协调器Coordinator、路由器或终端设备,但需要将其配置为在所需模式下工作。因此在将XBee模块与Arduino一起使用之前,我们必须使用XCTU软件配置这些模块。
要将XBee模块与笔记本电脑连接,请使用USB转串口转换器或专门设计的Explorer电路板。只需将XBee模块连接到Explorer电路板,然后使用USB线将其与笔记本电脑一起插入。
如果您没有任何转换器或Explorer电路板,Arduino开发板也可以用作USB转串口设备,可以轻松与XBee和笔记本电脑进行通信。只需在Arduino板上上传空白草图,然后它就像USB转串口转换器一样工作。
ZigBee模块和Arduino的连接如电路图所示。
连接方式:
● XBee的Tx(pin2) - > Arduino开发板的Tx
● Xbee的Rx(pin3) - > Arduino开发板的Rx
● Xbee的Gnd(pin10) - > Arduino开发板的GND
● Xbee的Vcc(Pin1) - > Arduino开发板的3.3v
在本篇文章中,Explorer电路板用于配置XBee模块。
从此链接下载XCTU软件并进行安装。下载并安装XCTU软件后,打开它并确保XBee模块已正确连接。检查设备管理器中Arduino开发板的COM端口。
第1步: - 现在,单击搜索按钮。这将显示与笔记本电脑连接的所有RF设备。在我们的示例中,它只显示一个XBee模块。
第2步: - 选择Explorer板/ Arduino开发板的串口,然后单击Next。
第3步: - 在下一个窗口中,如下所示设置USB端口参数,然后单击Finish。
第4步: - 选择Discovered设备,然后单击Add selected device。此过程将您的XBee模块添加到XCTU仪表板。
第5步: - 现在,您可以在此窗口中配置XBee模块。使用AT命令或手动输入数据。如您所见,左侧面板上显示R,表示Xbee处于路由器模式。我们必须让它成为发射机部分的协调器Coordinator。
首先,单击“Update firmware”更新固件。
第6步: - 选择XBee模块背面的设备产品系列。选择下面突出显示的功能集和固件版本,然后单击“更新”。
第7步: - 现在,您必须提供ID、MY和DL数据以与其他XBee建立连接。两个模块的ID保持不变。只有MY和DL数据交换,即接收器XBee的MY变为发送器XBee(协调器)的DL,接收器XBee的DL变为发送器XBee的MY。将CE设为协调器,然后单击“Write”按钮。如下所示。
第8步: - 将上述数据写入发射器部分后,将其从资源管理器板中插出并插入第二个XBee模块。重复上述相同的过程,只有更改是DL、MY和CE。因为我们将第二个XBee作为终端设备,所以在CE下拉菜单中,选择End device,然后点击Write按钮。
第9步: - 现在,我们的XBee模块已准备好与Arduino开发板连接。我们将使用发射器XBee连接到笔记本电脑,Arduino开发板连接到接收器XBee。然后使用笔记本电脑向接收器部件发出命令。
使用Arduino编程和测试XBee通信
现在,我们将为接收器Arduino编写一个代码,以便在接收器部件接收到“a”时点亮LED,并在接收到“b”时使LED闪烁,对于其他字符,LED将保持熄灭状态。
代码简单易懂。我们将使用Serial.available()函数检查传入的字符,并使用Serial.read()函数将此字符存储在变量中;然后将其与'a'和'b'进行匹配。如果匹配正确,则执行条件中指定的任务。在文章最后给出了Receiver部分的完整代码。上传接收器部分Arduino中的代码。在上传之前删除XBee的Tx和Rx线。
现在,我们都准备测试我们的发射器和接收器。为了给发射器部分命令,我们将使用XCTU的控制台终端。单击设置选项旁边的控制台图标。然后,单击“打开”按钮将XBee连接到笔记本电脑。
在控制台日志中输入“a”。您将看到LED将亮起2秒钟,然后输入“b”使LED闪烁5次。
您也可以将发射器XBee连接到Arduino开发板,只需稍微更改接收器代码即可。代替Serial.read()函数,使用Serial.println()函数发送字符。
这个XBee-Arduino设置可用于制作许多有用的无线应用,如家庭自动化系统、聊天室等。
代码
以下是本篇文章使用的完整代码:
- int led = 13;
- int received = 0;
- int i;
- void setup() {
- Serial.begin(9600);
- pinMode(led, OUTPUT);
- }
-
- void loop() {
- if (Serial.available() > 0) {
- received = Serial.read();
-
- if (received == 'a'){
- digitalWrite(led, HIGH);
- delay(2000);
- digitalWrite(led, LOW);
- }
- else if (received == 'b'){
- for(i=0;i<5;i++){
- digitalWrite(led, HIGH);
- delay(1000);
- digitalWrite(led, LOW);
- delay(1000);
- }
- }
- }
- }
复制代码