当前位置:首页 > 物联网 > IoT设计分享
[导读]Zigbee是一种流行的无线通信协议,用于以极低的功耗传输少量数据。它被广泛应用于需要在个人空间内的多个节点之间共享数据的应用中,随着物联网(IoT)的出现,Zigbee的应用正在快速增长。它被用于家庭自动化、资产跟踪、远程数据收集等等。如果您已经熟悉Zigbee和Zigbee协议的架构,那么您已经知道两个XBee模块之间的无线通信可以在没有任何额外的微控制器的情况下完成,但在实际应用中,这些模块将始终与微控制器接口以读取和发送数据。让我们进一步了解如何使用Arduino和NodeMCU板建立Zigbee通信。

Zigbee是一种流行的无线通信协议,用于以极低的功耗传输少量数据。它被广泛应用于需要在个人空间内的多个节点之间共享数据的应用中,随着物联网(IoT)的出现,Zigbee的应用正在快速增长。它被用于家庭自动化、资产跟踪、远程数据收集等等。如果您已经熟悉Zigbee和Zigbee协议的架构,那么您已经知道两个XBee模块之间的无线通信可以在没有任何额外的微控制器的情况下完成,但在实际应用中,这些模块将始终与微控制器接口以读取和发送数据。让我们进一步了解如何使用ArduinoNodeMCU板建立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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭