使用XBee模块在Arduino和NodeMCU之间建立Zigbee通信以传输数据
扫描二维码
随时随地手机看文章
Zigbee是一种流行的无线通信协议,用于以极低的功耗传输少量数据。它被广泛应用于需要在个人空间内的多个节点之间共享数据的应用中,随着物联网(IoT)的出现,Zigbee的应用正在快速增长。它被用于家庭自动化、资产跟踪、远程数据收集等等。如果您已经熟悉Zigbee和Zigbee协议的架构,那么您已经知道两个XBee模块之间的无线通信可以在没有任何额外的微控制器的情况下完成,但在实际应用中,这些模块将始终与微控制器接口以读取和发送数据。让我们进一步了解如何使用Arduino和NodeMCU板建立Zigbee通信。
Zigbee和XBee的区别
重要的是要在一开始就澄清,XBee是一个模块,一个产品,它支持许多无线通信协议,如ZigBee, Wi-Fi (Wi-Fly模块),802.15.4,868 MHz模块等。而Zigbee是一种用于建立无线网络(Zigbee通信)的标准协议。人们经常交替使用这两个术语,但不应该这样做。为了建立Zigbee通信,我们需要一个接收器(端点)。为此,与Arduino/NodeMCU连接的XBee模块将完成,这将与另一个XBee模块(协调器)进行无线通信,该模块发送数据,将连接到另一个Arduino板。
建立Zigbee通信的硬件要求
•1 x Arduino Nano
•1 * NodeMCU
•2个XBee Pro S2C模块
•1个XBee资源管理板(用于XBee编程)
•USB电缆
•LED(连同一个220欧姆电阻)
•按钮
使用XCTU软件配置XBee模块
基本上,XBee模块可以配置为协调器、路由器或终端设备。为了使它按照我们的期望工作,首先,我们必须使用XCTU软件对它们进行配置。您可以使用给定的链接下载并安装XCTU软件。
使用USB转串口转换器或资源管理器板将XBee模块与PC机或笔记本电脑连接。使用USB线将XBee模块连接到浏览器板和插件。我们将详细介绍如何准确地使用该软件并配置模块,但在此之前,让我们准备好硬件。
XBee与Arduino接口(发射端)
对于连接的这一边,我们使用了Arduino Nano。也可以使用Arduino Uno或NodeMCU板。XBee与Arduino nano接口的完整电路图如下所示。
在上面的Arduino XBee电路图中,我们使用了一个按钮,当按下时,它将传输数据。为此,将按钮一端连接到Arduino的D5,另一端连接到GND。
XBee模块的VCC(引脚1)连接到Arduino Nano的3.3V, XBee模块的GND(引脚10)连接到Arduino Nano的GND。这两个连接为发射端XBee模块供电。Dout(引脚2)连接Arduino Nano的D2, Din(引脚3)连接Arduino Nano的D3。我使用面包板来构建这个电路,我的硬件设置与所有连接如下所示。
XBee与NodeMCU接口(接收端)
为此,我们使用了NodeMCU,但它有一定的限制。您也可以使用Arduino Nano或Arduino Uno。使用Arduino传输数据,NodeMCU接收数据的想法是,它将有一个更实际的应用,如Arduino可以收集一些传感器参数并通过ZigBee发送给NodeMCU,然后NodeMCU可以处理这些数据并根据需要通过互联网共享或采取任何行动。XBee与NodeMCU接口的完整电路图如下所示。
XBee的Gnd(pin10)接至NodeMCU的Gnd, XBee的Vcc (Pin1)接至NodeMCU的3.3V。上述两个连接也为XBee模块供电。然后将XBee的Dout (pin2)连接到NodeMCU的D6引脚上,将XBee的Din (pin3)连接到NodeMCU的D7引脚上接收数据。
作为是否接收到数据的指示,我们使用了LED。为此,将LED阳极连接到NodeMCU的D2上,LED阴极通过NodeMCU的220ohm电阻连接到GND上。同样,我使用面包板来构建这个电路,我的硬件设置与所有连接如下所示。
下载并安装XCTU软件
设置、配置和测试XBee设备。您需要XCTU软件。它是一个易于使用的,免费的,多平台的RF XBee模块应用程序。在这里下载XCTU软件,它也会指导您安装它。之后,打开应用程序并确保XBee模块已正确连接。在设备管理器中检查资源管理板的COM口。
安装XBee模块固件
固件应该首先安装在两个XBee模块中,因为我们正在使用XBee开发板。
第一步:打开XCTU软件,点击“发现板”。
第二步:选择XBee模块连接的COM端口,点击“下一步”。
第三步:保持默认设置,点击“完成”。
第四步:现在,在弹出的窗口中,点击“Add Selected Devices”。
第5步:现在,XBee模块将出现在窗口的左侧。单击它来更新用户界面。
第六步:更新固件,点击“更新”,在功能集中选择“802.15.4 TH”,在固件版本中选择最新的固件,点击更新。在此之后,将出现一个弹出窗口。点击YES。
第七步:输入任意4位数字作为PAN ID。PAN ID是PAN (personal area network)的标识符。每个网络必须有一个唯一的ID。确保两个XBee模块都输入了相同的PAN ID。这表明两个XBee模块在同一个网络中。
第八步:输入任意4位数字作为目的地址。对于其他XBee模块,必须输入相同的数字作为源地址。
步骤9:输入任意4位数字作为源地址。必须输入相同的数字作为另一个XBee模块的Destination Address。
步骤10:将一台设备设置为“坐标[1]”,另一台设备设置为“终端设备[0]”。
现在,单击顶部栏中的Write。在此成功之后,符号从“E”变为“C”(End Device to Coordinator),正如我们所设置的。对于另一个XBee模块,它应该是“E”)。
注意:正如步骤中提到的,必须对两个XBee模块执行此操作。两者之间的唯一区别是终端设备和协调器的源地址和目的地址相反,必须选择一个作为终端设备,另一个作为“协调器”。在“Coordinator Enable”下拉列表中,确保两个XBee模块都被赋予相同的PAN ID。
COM 5为接收端nodeMCU, COM 14为发送端Arduino nano。
将XBee引脚焊接到Arduino和NodeMCU
XBee模块的引脚与面包板不兼容。因此,从XBee模块引脚焊接4根电线到头引脚,并使用它连接到面包板,如下图所示。或者,如果你想避免焊接工作,你也可以使用母头到公头连接器电线。
在概述中,使用两个XBee模块建立ZigBee通信。Arduino Nano和NodeMCU用于在两个XBee设备之间进行通信。XBee模块的编码是这样的,当在发送端按下一个按钮时,LED在接收端点亮。这表明在源端传输的数据在目的端被正确接收。
ZigBee通信程序Arduino
Zigbee通信的完整Arduino代码可以在本页底部找到。代码解释如下:
本部分模拟了引脚2 (Rx)和引脚3 (Tx)的串行通信。
Pin 5是Arduino Nano上连接按钮的地方,这是发送信息所需要的。
要跟踪按钮是否被单击,可以使用语句。如果按下按钮一次,它会打开LED,如果再按一次,它会关闭LED。为了跟踪这一点,使用了切换。
该程序从一个空设置开始,并设置串行监视器的波特率。
初始化按钮引脚以读取输入。
这部分代码片段使用软件串行开始XBee和Arduino之间的连接。9600是XBee模块的默认通信速度。
这部分是检查按钮是否按下。如果按下,则引脚读取LOW并记录此操作。它还检查之前是否单击了按钮。
这部分是将消息打印到串行监视器上
重置之前的单击,以便它可以再次检测到单击。当开关为假时,LED处于关闭状态。
把消息发给XBee
延迟1秒是为了等待消息被传递
这个位检查按钮是否被点击
在串行监视器上打印消息
设置到之前的点击状态,关闭LED
把消息发给XBee
创建一秒钟延迟来等待消息的传递
ZigBee通信程序NodeMCU
Zigbee通信的完整NodeMCU代码可以在本页底部找到。代码解释如下:
代码的Receiver部分与Arduino代码几乎相同
本部分模拟了引脚13 (Rx)和引脚12 (Tx)的串行通信。
将LED设为引脚2
存储从XBee接收到的数据
初始化串行监视器并以默认波特率9600连接到XBee模块
初始化LED作为输出
将数据存储在接收到的变量中
检查接收数据是否为0
然后打印信息并关闭LED
如果接收到的数据为1,则打印消息并打开LED。
本文编译自iotdesignpro