xbee模块和单片机_基于XBee进行ZigBee组网
该文章转帖自:http://blog.csdn.net/u012261135/article/details/48594419
文章简单地介绍了XBee模块、应用组合和2种通讯方式,还有XCTU的基本使用,作为入门很有帮助,可惜博主没有继续更新后续内容。
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固件传送给模块进行升级。
本文主要介绍ZigBee网络的基本结构,三种组成ZigBee网络的基本节点:协调器(coordinator)、路由器(router)、终端(end device),如何使用XCTU对XBee进行基本参数的配置,使XBee成为ZigBee网络中的一个节点。
ZigBee网络中定义了三种不同类型的设备:
协调器(coordinator)
每个ZigBee网络中只允许有一个协调器,它是整个网络的开始,协调器首先选择一个信道(channel)和网络标识(PAN ID)来启动一个ZigBee网络,然后允许路由器和终端加入这个网络。协调器在建立ZigBee网络之后,其功能相当于路由器,可以进行数据的路由转发,可以为它的终端子设备缓存数据包,协调器本身不能休眠。
路由器(router)
路由器首先必须加入到一个ZigBee网络中,然后路由器也是允许其他路由器和终端加入这个网络,进行数据的路由转发,为它的终端子设备缓存数据包,同样路由器也不能休眠。
终端(end device)
终端也必须加入到一个ZIgBee网络中才能工作,但它不支持其他设备加入ZigBee网络,也不能进行数据的路由转发,终端数据的收发必须通过其父设备进行转发。终端可以休眠进入低功耗的模式,一般可以采用电池进行供电。
ZigBee网络的基本拓扑结构如下图所示:
一个XBee模块只能选择成为以上三种设备类型的其中一种,对于老的硬件XBee S2或Xbee S2B来说,需要给XBee模块升级不同的固件来改变设备类型和操作方式(API或Transparent),固件版本对应类型如下:
20xx - Coordinator - AT/Transparent Operation
21xx - Coordinator - API Operation
22xx - Router - AT/Transparent Operation
23xx - Router - API Operation
28xx - End Device - AT/Transparent Operation
29xx - End Device - API Operation
而对于新的XBee
S2C(固件版本为40xx)来说,只需要通过配置XBee参数就可以改变设备类型或操作方式,下面仅以XBee
S2C模块为例进行说明。
在默认参数的情况下,XBee模块为路由器transparent模式,通过AT指令设置CE为1可以将XBee设置为协调器,设置SM为一个非零值可以将XBee设置为终端。注意:作为协调器时SM必须设置为0,作为终端时CE必须设置为0,CE和SM同时为0则为路由器。此外,设置AP为0为transparent模式,设置AP为1或2则为API模式。
将XBee模块通过串口与PC相连,使用XCTU对模块进行测试、修改参数,首先搜索与PC连接的XBee模块,默认波特率为9600,如下图:
成功添加XBee模块后选中XBee模块可以获取到该模块对应的配置参数并进行修改,如下图:
通过修改CE、SM和AP的值可以改变XBee模块的ZigBee设备类型和操作方式。当然,也可以手动向XBee模块的串口发送AT指令来修改参数,如下图:
在配置完XBee模块的参数后,我们进行XBee模块的组网通信,以两个XBee模块为例,一个设置为协调器,一个设置为路由器,都为transparent操作模式,设置DH和DL的值为目的地址(接收数据的XBee模块的MAC地址,即SH和SL的值),如果发送的目的地址为协调器,也可以设置DH和DL为0。上电后XBee模块会按照配置的参数自动完成ZigBee的组网。使用XCTU分别打开协调器和路由器的串口连接,向路由器串口发送数据,可以在协调器的串口观察到路由器发送过来的数据,说明组网通信成功,如下图所示:
当然,可以使用更多的XBee模块,组成一个多跳的ZigBee网络,网络中的XBee节点只要配置目的地址为任何一个在ZigBee网络中存在节点的64位MAC地址,就可以将数据通过ZigBee网络送达,组网和多跳路由的功能将由XBee模块自动完成。需要注意的是,如果一个XBee路由器节点之前已经接入过其他的ZigBee网络,那么他的PAN ID将始终保存,这样就无法再加入其他ZigBee网络,即使断电重启也不会改变,需要使用ATNR0命令来退出之前ZigBee网络,之后就可以自动搜索加入新的ZigBee网络了。
我们可以看到,在采用transparent操作方式下,如果需要将数据发送给网络中的多个节点,需要首先进入AT命令模式修改DH和DL的值,再发送数据,非常繁琐。而采用API操作方式可以指定发送的目的地址,非常方便,API操作方式将在以后进行介绍。
xbee模块和单片机_基于XBee进行ZigBee组网相关推荐
- xbee模块和单片机_利用XBee实现Arduino点对点无线通信
新人来发帖了,望各位大神多多指教. 最近在尝试使用XBee的通信,被各种概念各种绕,稍稍理解一些,做了个小小的试验,也把自己理解的拿出来一起交流.主要是通过XBee来实现两个Arduino之间的点对点 ...
- xbee模块和单片机_美国DIGI公司的XBee模块无线通讯实验
DFRobot公司出品的XBee适配器驱动就是Arduino Duemilanove控制器的驱动,因为它们都是采用了FIDI USB驱动,如果您已经安装了Arduino Duemilanove控制器的 ...
- 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
1.HC-SR04超声波模块工作原理 (1)采用IO口触发测距,给至少10us高电平脉冲: (2)模块自动发送八个40khz方波,并自主检测是否有电波返回: (3)当有信号返回时,通过IO口输出一个高 ...
- python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)
一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...
- 基于java校园新闻管理系统数据库模块的论文_基于JSP的校园新闻管理系统的设计与实现(MySQL)...
基于JSP的校园新闻管理系统的设计与实现(MySQL)(包含任务书,开题报告,中期报告,毕业论文,28000字,程序代码,数据库) 摘 要 本人从校园网建设的实际情况出发,经过对相关校园新闻资讯网站 ...
- p620光耦接单片机_基于51单片机的可控硅调压调光程序-带过零检测
标签: 单片机 单片机(Microcontrollers,亦称MCU)包括了CPU.随机存储器RAM.只读存储器ROM.多种I/O口和中断系统.定时器/计数器等功能集成到一块硅片上构成的一个小而完善的 ...
- iolink单片机_基于IO-Link接口的温湿度传感器设计
基于 IO-Link 接口的温湿度传感器设计 石 磊 1,2, 孙凯明 1,2, 王 刚 2 [摘 要] 摘 要 : 简述具有能与 IO-Link 主机通讯的 IO-Link 接口的温度和湿度 传感器 ...
- verilog 算法加速模块设计流程_基于FPGA的图像加速器的设计
基于 FPGA 的图像加速器的设计 摘 要 介绍了一种基于 FPGA 的图像加速器的设计.本文硬件加速器的实质是通过流水线 设计来减少多余的操作达到加速的目的的, 内存是由 DMA 控制器访问, 之后 ...
- zigbee 串口不稳定_基于项目的ZigBee系统组网介绍
关于ZigBee的资料之前陆陆续续发过一些,主要以技术文档介绍为主,在项目案例介绍中多以设备实际应用为主.但仍感不够详细,恐对大家造成困惑,故今以ZigBee技术为核心,三层别墅为蓝本进行一下介绍. ...
最新文章
- python时间日期字符串各种
- 回溯法实现正则匹配判断
- 如何运用组策略禁用U盘
- 第七周项目一-一般函数(2)
- linux下source insight安装以及打开
- c语言程序的命令行输入,C程序获取命令行参数
- 从 SAP WebIDE 里向Github 发起 push 的错误消息 - Git result: REJECTED_NONFASTFORWARD
- MySql安装及Navicat连接(解决Starting the server失败;mysql输入密码登录报错1045(28000),不输入密码却能登录;Navicat连接报错2059)
- java虚拟机_深入浅出Java虚拟机,从来没有人能把Java 虚拟机讲解的这么透彻
- Windows域控去掉密码强度策略 可以设置简单密码【全域策略生效】
- 国外软件测试方法,ATE软件测试方法研究及实现
- mysql 1690_mysql error BIGINT UNSIGNED value is out of range in 解决办法
- Android Uri to Path
- kali linux捉肉鸡教程,使用Kali中的Metasploit生成木马控制Windows系统
- 没有期刊申请清华博士_没有论文,也可申请麻省理工学院博士及奖学金
- 河北农业大学能不能学计算机,河北农业大学(专业学位)计算机技术考研难吗
- 原来使用 Pandas 绘制图表也这么惊艳!
- 前后端传图片用base64好吗_Base64是什么?前端用Base64加载图片到底好不好?
- Docker提交天池比赛代码流程(windows10环境下)
- 解压缩文件并将其中的excel文件汇总
热门文章
- 虚假新闻检测的论文阅读笔记——sigir2021:User Preference-aware Fake News Detection
- Windows Mobile下创建cmwap接入点
- 爬虫之数据保存到txt文本中
- Android 设置横屏或竖屏
- 程序员今年在相亲市场上这么受欢迎?
- Wideband Direction of Arrival Estimation Based on Multiple Virtual Extension Arrays
- FPS游戏透视源码!
- 基于三菱运动控制系统生成丝滑无比的凸轮曲线(上)
- 给中国学生的第五封信
- java图书销售系统_基于springboot的小型图书销售系统 源码下载