XBee模块是Digi公司的一款采用ZigBee技术的无线模块,通过串口与单片机等设备间进行通信,能够非常快速地实现将设备接入到ZigBee网络的目的,我最近做的一个项目使用了该模块,感觉非常的好用,开发基于ZigBee的无线通信来说是很easy了。此模块采用802.15.4协议栈,通过配置可以用作ZigBee网络中的Coordinator、Router或者End Device节点。XBee按照性能分为XBee和XBee pro两种,XBee pro相对于XBee具有更高的功耗和更远的传输距离,它们对外的接口基本相同,可以根据实际项目的要求来选择。
XBee的引脚如下图所示:
最简单的使用方式下只需要将单片机的串口与XBee模块的串口(Pin2、Pin3、Pin10)相连即可,另外也可通过RTS(Pin16)、CTS(Pin12)进行流控,单片机与XBee模块串口的连接如下图所示:
XBee模块与单片机的串口通信有transparent和API两种操作模式:
(1)transparent操作模式:
单片机直接通过串口将要传输的数据发送给XBee模块,XBee模块按照ZigBee协议将数据通过无线发送给远端的XBee模块,再通过串口发送给远程的单片机,就好像两个单片机之间通过XBee模块建立了一条透明传输通道。如果要通过串口配置本地XBee模块的参数,则可以向XBee模块输入+++,等待XBee模块返回OK后即可通过AT指令集对XBee模块进行参数的配置。这里使用Digi公司的XCTU软件进行演示(XCTU的具体使用以后再进行详细的介绍,其实就是通过串口与XBee模块交互的软件),如下图所示:
(2)API操作模式:
在API操作模式下,所有发送给XBee模块的数据或是从XBee模块接收的数据都会封装成特殊的API帧的格式,包括ZigBee无线发送和接收的数据帧、XBee模块配置的命令帧(等同于transparent操作模式里面的AT指令)、命令响应帧、事件消息帧等。相比于transparent操作模式,API操作模式虽然相对复杂一点,但是提供很多transparent操作模式下无法完成的功能:
API操作模式下,只需要改变API帧里面的目的地址,就可以将数据传输给多个不同的远程节点,而transparent操作模式下要改变远程目的地址只能先进入AT命令下配置目的地址,在进行数据传输。而且API可以接收数据是否发送成功的状态;
接收到的远程节点的数据可以获取远程节点的地址以确认是哪个节点发送的;
获取远程节点的IO采样数据;
通过API帧还可以配置远程XBee模块的参数。
API模式的使用将在以后的文章中进行详细介绍。
XBee模块还具有以下的一些比较实用的功能,简要介绍一下:
(1)支持IO的输入输出,AD采样
上面引脚图中的Name列含有DIOx字样的引脚表示可以进行数字IO的采样输入或者输出高低电平,通过AT指令配置引脚复用的参数即可;
含有ADx字样的引脚表示可以进行模拟电压的AD采样输入,采样电压范围为0~1200mV,采样值范围0~0x3FF,此外还可以对Vcc电压进行采样。
XBee可以将采样数据直接通过ZigBee网络发送给远程节点。这样,在API操作模式下,可以使用远程配置命令控制远程XBee节点开启采样,采样后的数据直接传给本节点,还可以控制远程节点IO输出来控制远程XBee接的外围设备。
(2)ZigBee网络安全
XBee支持多个等级安全模式,加密方式采用128位的AES加密,如下图:
(3)可通过串口Xmodem升级XBee的固件
将DTR(Pin9)、DIN(Pin3)置为低电平,RTS(Pin16)置为高电平后复位XBee模块即可进入XBee的bootloader,串口通信波特率变为115200,输入回车后可获得菜单,选择相应的选项后可以通过Xmodem将XBee固件传送给模块进行升级。
最新的XBee支持SPI的通信方式,还有集成处理器芯片的XBee模块等,那些功能我还没有研究使用过,所以就暂时不做介绍了,接下去的文章我将详细介绍XBee模块使用的具体操作方式与细节。
欢迎大家来吐槽~