(此处http://www.bitconn.com/form_1/注册后,购买XBee模块,送USB评估底板)

Digi ZigBee模块发展历史 
如果您有幸用过十多年前Digi的第一代ZigBee模块,那时还只有插针封装的型号,在XBee模块上除了XBee几个大字母外,在其下方还可以看到S2的标记。事实上,根据芯片版本的不同历史上分别有S2,S2B,S2C,Micro等,每次硬件平台升级,都会引入一个新的尾缀字母。历史版本中S2和S2B已经停产并被S2C替代,这也是目前在用的主流平台。当前最新的XBee ZigBee模块是XBee Micro平台的XBee3。除了硬件平台上的区别,XBee还有固件上的区别,每隔一段时间,Digi会推出某一系列XBee模块的新的固件,这些新的固件或是增加一些功能,或是解决一些微小的bug,但总的来说,不同固件版本在API层面是相互兼容的,除非软件上用到一些和版本号有关的AT参数或指令,新版模块一般都可以直接替换旧有的模块,而无需在软件层面做出修改。因此不论哪个硬件版本或是固件版本,ZigBee模块都是向下兼容的,在ZigBee协议的支持上是一致的。

两种当前主流的ZigBee无线模块平台 
XBee S2C系列无线模块是支持标准ZigBee PRO 2007协议的无线模块。普通型和增强型均有邮票孔表贴型和双列直插两种封装。同样有各种天线接口的种类繁多的型号。建议用户选择外置天线的型号。这里只列出部分常用的型号:

类型 型号
XBee ZigBee Mesh网络开发套件(S2C) XKB2-Z7T-WZM
XBee PRO ZigBee 贴片式普通型(u.FL天线接口) XB24CZ7UIS-004
XBee PRO ZigBee 双列直插增强型(RPSMA天线接口) XBP24CZ7SIT-004
XBee PRO ZigBee 贴片式增强型(PCB天线) XBP24CZ7PIS-004
XBee PRO ZigBee 贴片式增强型(u.FL天线接口) XBP24CZ7UIS-004

更多型号..

XBee ZigBee 双列直插普通型(RPSMA天线接口) XB24CZ7SIT-004
XBee ZigBee 双列直插普通型(鞭状天线) XB24CZ7WIT-004

.


XBee3和Micro XBee是最新推出的,能够支持ZigBee 3.0的硬件平台,它提供了和S2C一样大小的封装型号,同时还提供了一种XBee Micro的封装,它大约只有原来尺寸的三分之一大小。

类型 型号
XBee3开发套件(普通型,标准XBee底板) XK3-Z8S-WZM
XBee3增强型,双型直插,SMA天线接口 XB3-24Z8ST
XBee3增强型,邮票孔,U.FL天线接口 XB3-24Z8US
XBee3增强型,邮票孔,迷你封装, U.FL天线接口 XB3-24Z8UM

新的产品和新的项目设计,建议都用XBee3进行开发。

XBee 模块的使用方法

XBee模块通过一个UART串行接口与外部MCU进行交互,单片机或ARM等主控器件,只要逻辑电平不高于XBee模块的定义,通常都可以直接连接XBee的UART进行通信,而无需额外的上拉或下拉电阻。外部主控芯片同XBee的连接最简单的情况仅需接收和发送两根线(DIN,DOUT)即可通信,对于大数据量的传输,根据不同场景您有可能还需要加上流控引脚,此外XBee还有些辅助引脚可针对不同应用场景加以应用,简化开发或方便调试。比如入网信号,引脚休眠,配置按钮,IO引脚等,可根据需要决定是否使用。

ZigBee模块的在线文档请参考:\\XBee S2C 
XBee3

如果您购买了XBee ZigBee Mesh Kit 开发套件,还可以查阅开发套件的使用文档:XBee S2C 
XBee3硬件参考手册

ZigBee网络基础

ZigBee是由来自全球三百多家知名企业会员民的ZigBee联盟在基于IEEE802.15.4之上定义的一个开放式全球网络协议标准,它在802.15.4的基础上定义了一套网络层协议来实现自组网功能。

ZigBee协议栈由PHY,MAC,网络层和应用支持子层(APS))组成,ZigBee设备对象(ZDO)作为应用程序框架或者说一个特殊的APS子层是每个ZigBee设备都必须拥有的功能。ZigBee协议定义了三种不同的设备节点类型:协调器,路由器,终端节点。

  • 协调器

在ZigBee网络中,协调器负责选定一个信道和PAN ID来创建一个网络。它能允许路由器和终端节点加入网络,可作为路由转发数据,可以为休眠子节点缓存数据,但它不可以休眠。

  • 路由器

路由器需先加入协调器的网络才能发送,接收或转发数据,加入网络后它能允许路由器或其它节点加入网络,转发数据,可以为休眠子节点缓存数据,同样地,它也不可以休眠。

  • 终端节点

节点设备必须加入ZigBee网络才能发送或接收数据,它不能允许其它设备加入网络,总是通过它的父节点发送或接收数据,不能作为路由转发数据。它可以进入低功耗的休眠模式。

zigbee-stack-typo

Digi的ZigBee模块简单地说,是内置ZigBee协议栈,带有ZDO功能,支持通过串口简单配置来实现使用ZigBee网络进行通信,它能实现ZigBee的全部功能,但用户又不需要深入了解ZigBee协议本身。使用Digi的ZigBee模块能和其它符合标准ZigBee协议的第三方设备进行通信。

ZigBee 3.0是在ZigBee 2007 PRO的基础上进一步的发展,增强安全和易用性,统一了应用规范,使得不同行业的设备也能互联互通。有关ZigBee 3.0的一些额外特性,请参考:ZigBee 3.0

XBee S2C组网和通信测试

透传模式通信

您需要有Digi的XBee ZigBee mesh网络开发套件来进行组网和通信操作。开发套件中带有三个不同的模块和底板,天线和USB线缆,方便您使用电脑进行测试。在进行下一步操作之前,您需要装备好至少两个模块和对应的开发底板。

首先,确保您的电脑上已经安装好Digi的开发工具XCTU。将两个Digi的XBee ZigBee模块通过开发底板和电脑连接起来,打开XCTU,用左上角的查找模块按钮来查询连接到电脑上的模块,并把它添加到XCTU左侧的无线模块列表中。在XCTU软件中,默认是位于配置窗口中,点击左边模块,便会读取模块相关的参数,在配置窗口中展现出来。

首次使用,建议用右侧上方的“Default”按钮加载模块的默认参数,并按“Write”写入模块,使模块恢复出厂的配置,确保不会因为之前使用时的不恰当参数影响通信效果。写入默认值后,再按“Read”按钮重新加载一下参数到XCTU右侧的参数栏上。点击左侧另一个模块,用同样的方式恢复一下模块的出厂设置。

在配置模式下,如果仅对某个参数进行读取和写入,可以使用对应参数右方的刷新和写入按钮。

两个ZigBee模块要相互通信,必须在同一个网络中,所以我们需要将一个模块配置成协调器,另一个模块配置成路由器并加入到协调器的网络中。以下两个模块简称A和B。 A模块:CE=1 配置为协调器,DL=FFFF B模块:不改任何参数 将A模块的CE改为1,就把模块配置成协调器了,这时模块会生成一个网络号为ID指定值的ZigBee网络,默认ID=0,因此协调器会生成一个随机64bit的网络号的ZigBee网络。如果刷新模块参数,会发现OP和CH有一个值了,这里OP是指当前的网络号,CH是指当前的信道号。DH和DL组成模块的目标地址,我们把DL改为FFFF,是因为默认DH和DL都为0,这样指代协调器本身,改成FFFF则是广播地址。

B模块是默认的路由器的出厂配置,ID=0表示可以加入任意网络。如果周边没有其它ZigBee网络,B模块又是首次使用,那么它肯定会在10秒内加入A模块的网络,可以读取一下B模块的OP和CH,观察它是否和A模块相同,以此来判断是否在同一个网络中。默认地B模块的DH和DL都是0,表示目标地址是协调器。入网后,模块的入网指示灯会均匀地闪烁,这样我们已经配置好两个对发的模块了。

这时我们可以点击右上角的图标切换到终端窗口,来观察串口数据透传的效果。终端窗口实际上是个带有ASCII和16进制显示终端的串口调试工具,有个串口打开/关闭按钮,以及一个视图分离按钮,方便查看两个模块各自的收发数据。

分别选中模块,并在终端模式中打开串口,将其中一个模块的串口终端视图分离,我们在任意一个终端中输入数据,另一个模块的张端就能收到相同的数据。如下图所示:

在透传模式下,数据送入A模块的串行UART接口,就会被发到目标地址指定的B模块上,从B模块的串行UART中输出,所以称之为透传。平时模块处于空闲或传输数据的状态,当我们需要更改模块参数时,就可以通过向串口发指定时序的特定字符串来进入命令模式,以便更改模块配置。默认地,在空闲期间连续输入三个“+”号可进入命令模式,这时可以通过向串口发AT命令来实现特定功能。比如,我们之前设置协调器的目标地址为0xFFFF,这样网络内所有的模块者能收到该数据并转发,如果我们只需向特定的模块发送数据,就不应该用广播模式,而需要把目标地址设置为特定的模块的MAC地址,下面AT命令演示了读取B模块的自身地址并将它设置为A模块的目标地址的过程。

在B模块上,用“+++“进入命令模式,发ATSH,ATSL分别读出模块64位MAC地址的高位和低位。切换到A模块的终端窗口中,用ATDH和ATDL把刚才获取得的参数设置目标地址,并用ATWR写入flash,这样断电重启后配置不会被清空。注意,默认地在命令模式中如果10秒内无任何输入,就会退出命令模式,回到透传模式的空闲状态。所以AT命令中的字符请连续输入不要间停超过10秒。否则您需要重新用”+++“进入命令模式。

静静等待约10秒钟后模块退出命令模式(也可以发ATCN命令直接退出命令模式),这时在终端窗口中输入数据,另一个模块的终端也能收到数据,只不过,此时作为协调器的A模块不再是广播模式,而是只定向往B模块发数据了。

通过AT命令可以设置很多参数,比如NI是设置模块的ASCII名称,NR是退网命令,ID是指定网络名称,还可以通过AT命令读取或设置模块的IO口状态等。请查阅XCTU或产口手册获取更多信息。下面我们将把A模块的网络ID更改,让B模块重新加入,以下是完整操作过程的相关AT命令。 A模块:读一下CE,以确定是要操作的协调器A模块;读一下当前ID值;写入新的网络ID;配置写入flash;稍等片刻后查询当前工作的网络ID.

B模块:读一下CE,确定是路由器;读一下当前网络ID;读一下当前信道;发退网命令,离开之前加过的网络;稍等片刻查询新加入的网络ID;查询当前信道。

由于透传模式下,需要通过特定字符组合和时序进入命令模式,在一些需要频繁使用AT命令的场景下就显得很不方便,因此Digi的模块除了支持透传模式外,还可以通过API模式更灵活地使用模块。

API模式通信

API模式,是指外部MCU通过向XBee模块的UART发送指定格式的命令帧,来实现发送数据或执行AT命令等功能。API模式下,XBee模块能够实现比透传模式更多的功能,包括:

  • 无需配置DHDL,直接向网络内任意模块进行通信

DH,DL是透传模式下才会用到的参数,在API模式下,命令帧中带有目标地址字段和数据字段

  • 随时进行发送本地和远程AT命令,而无需切换模式

API模式下,通过命令帧的识别码来区别是数据发送请求,还是本地AT命令或远程AT命令,无需进行模式切换。

  • 发送状态可通过反馈包判断,接收到的数据可识别来源

可以通过开启反馈包,判断每个数据包发送成功与否,接收到的数据可以通过数据帧中的源地址判断是从哪个模块发过来的。

  • 可以进行ZDO和ZigBee协议的通信

API模式下的明确寻址数据发送命令帧中,可以使用ZigBee协议的Profile,Cluster,Endpoint字段来实现ZigBee协议的通信。 并且固件中自带有ZDO协议栈处理ZCL请求和响应。

  • 更多功能,请阅读产品手册

XBee模块可以通过ATAP命令来设置模块的工作模式,AP=0时是透传模式,AP=1是API模式。 在XCTU上方的工具菜单或工具按钮中,可以找到API组帧和解析工具。在API模式的模块终端窗口中,也会有发送帧的生成向导和接收帧的解析窗口。 下面是用API帧生成工具生成的一个发送数据帧例子:

ZigBee网络内的无线模块,可以全部配置成透传模式或API模式,也可以部分配置成API模式,它们之前可以相互通信,下面将演练一下API模式的模块A和透传模式的模块B进行相互通信实验。

A模块:在配置窗口中,直接设置CE=1, AP=1,并按一下配置窗口上方“Read”按钮刷新一下模块信息,我们会发现API模式下左侧列表协调器图标会多出一个红色”C”字。切换到终端模式,我们会发现API的终端模式和透传模式不太一样,它是以API帧为主的信息框和工具框,如下图所示:

这里,我们利用新增命令帧向导添加一个准备用来发送“test”字符的命令帧,注意目标地址字段要用B模块的Mac地址,如下图所示:

 

根据向导提示,按“OK”和“Add Frame”按钮,把生成的帧添加到发送列表当中。

B模块:保持透传模式不变,确保DH和DL为默认值0,并且是加入A模块的网络。

同样地,将B模块的终端视图分离出主窗口,以便观察它们的相互通信。 当在A模块中选中刚才生成的发送“test”字符的命令帧,按下发送按钮时,B模块的窗口中就收到了“test”字符。如下图所示:

我们还可以看到,默认地,API带有反馈包,在发送端可以看到发送成功与否的结果。

我们在B模块的终端打一个字符“a”,同样地,A模块就收到带有这个字符的API接收帧,我们可以通过A模块的帧信息详情的下拉滑块查看帧的详细说明。

更多的API命令帧说明,请参考产品手册或Digi XBee API进阶应用指南。

关于XBee API模式帧生成工具代码或者说是API驱动库,请参考XBee API驱动

XBee/XBee-Pro ® ZigBee 模块相关推荐

  1. Xbee Pro 900HP模块的API模式组网配置

    为使无人机编队个体间实现组网通信,需要选用合适的通信模块构建通信网络.前期曾试用ZIGBEE模块(DRF1605),但其传输速度不能令人满意--每秒最快只能接收10个数据包,320个字节,将近2.4K ...

  2. 【XBEE手册】ZigBee网络

    [XBEE手册]ZigBee网络 @(ZigBee)[ZigBee, XBEE手册] [转载请注明出处,谢谢!] [XBEE手册]ZigBee网络 定义 Zigbee堆栈层(ZigBee STACk ...

  3. ZigBee的发展也有“碎片化”zigbee模块

    ZigBee的发展也有"碎片化" --看ZigBee在各个领域的发展 关键字:ZigBee,Profile,应用标准,物联网,碎片化 引言 2002年ZigBee 联盟成立,符合Z ...

  4. 全球最小的zigbee模块---XBee3微型封装模块

    (http://www.bitconn.com/form_1/ 登记后,购买XBee模块,送USB评估底板及相关中文资料,或者免费申请借用评估套件) 今年年初,Digi推出一款新的微型封装的XBee, ...

  5. GPRS、433、Wifi、Zigbee模块概念和区别

    工业数据无线传输中,常涉及到诸如GPRS.433.Wifi.Zigbee模块等这些概念,如何理解,怎么区分,可能很多人并不知道,尤其是非技术人员: 1.GPRS模块是什么?有哪些功能? GPRS DT ...

  6. STM32G031无线温湿度仪开源项目 -4,Zigbee模块(DRF1609H)的初始化

    关键词:CubeMX,CubeIDE,STM32G031C8T6,AHT10,DRF1609H 本项目的全部源码资料下载 本项目中使用了Zigbee模块(DRF1609H),作为无线数据传输使用,初始 ...

  7. Zigbee模块、NB-IOT模块、LoRa模块谁将主导未来物联网市场?

    提到物联网中的短距离无线通信技术,可能不少人第一时间想到的会是蓝牙和WiFi.但实际上,包括Zigbee等在内的其他技术,其发展速度正在大大加速,并迅速占据市场.从前几年开始,国内市场对Zigbee模 ...

  8. 怎样使用Zigbee模块的低功耗功能

    怎样使用Zigbee模块的低功耗功能 低功耗其实包含二方面的含义​:一是运行时的功耗,一般单片机在20mA左右,二是休眠时的功耗,一般可到几个uA. 运行时的功耗不管怎么小,几个mA还是需要的,再好的 ...

  9. 第六章、Zigbee模块组网实例

    假设有一个有线的温湿度测量,传输系统.我们用Zigbee模块连接起来,改造成一个无线的Zigbee网络温湿度测量系统: 1个上位机通过485总线连接了4台温湿度测量仪(或温湿度变送器): 连接的波特率 ...

最新文章

  1. Vmware 下安装Arch Linux
  2. pyqt改变背景颜色
  3. python迭代器和解析
  4. android 同根动画_android 动画系列 (1) - tween 动画(view动画)
  5. 数学对编程思想的帮助_学编程需要什么基础?
  6. 第 9 章 Debug
  7. StringBuffer的基本使用
  8. Python 清理项目的目录
  9. C语言读取文件函数用法,C语言读取文件流的相关函数用法简介
  10. 浏览器打开exe(IE和谷歌)
  11. BI_01_一个BI工具的痛点
  12. 股票的收益率计算公式
  13. Java opencv tld_TLD-(windows) tld c++版可运行版本,亲测. tld OpenCV 252万源代码下载- www.pudn.com...
  14. autojs之酷炫字体效果
  15. 去除浏览器自动填充密码功能
  16. 实验四+163+张玉洁
  17. 3d打印机打印obj格式_3D打印的手使人群站起来
  18. 二级java pdf_全国计算机等级考试二级Java语言程序设计.PDF
  19. 计算机制作表格英语怎么说,表格用英语怎么说
  20. Python爬虫爬取韩国电影售票评分网站电影排行榜Top250

热门文章

  1. `LINK : fatal error LNK1104: 无法打开文件“***.dll”`的问题解决
  2. 【Pytorch】netron可视化——靠谱的使用方法
  3. 网易NEC命名规范笔记
  4. 命名实体识别的难点与现状
  5. 动画 | 大学四年结束之前必须透彻的排序算法
  6. 计算机应用技术班级介绍,【完满超级团支部】计算机应用技术20-4班开展“点燃青春之火,成就辉煌人生”班级演讲活动...
  7. 【日志分析】Linux日志分析
  8. padStart与padEnd方法
  9. C语言:习题2-5 求平方根序列前N项和.2021-08-02
  10. java的数据异常_java的各种异常