ZigBee基础
Zigbee技术
Zigbee由Zigbee联盟制定的无线网络协议,在IEEE 802.15.4标准的基础上设计,是一种自愈、安全和稳健的网状网协议,可扩展到更大范围内的数百个节点。主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用,核心市场包括消费类电子产品、能源管理和效率、医疗保健、家庭自动化、电信服务、楼宇自动化以及工业自动化等。
1)Zigbee工作频段
ZigBee工作在三种频段上,分别是用于欧洲的868MHz频段,用于美国的915MHz频段,以及全球通用的2.4GHz频段,它们各自的信道带宽分别是0.6MHz,2MHz和5MHz,分别有1个,10个和16个信道。Zigbee的数据速率并不高,对于2.4GHz频段只有250kb/s,而868MHz频段只有20kb/s,915MHz频段只有40kb/s。
目前国内Zigbee技术主要采用2.4GH频段。
2)Zigbee组网
Zigbee网络节点一般有三种,分别为协调器或中心节点(Coordinator)、路由节点(Router)、终端节点(End Device)。
中心节点:又指网络协调器,它包含所有的网络消息,是3种设备类型中最复杂的一种,发送网络信标、建立和维护一个网络、管理网络节点、寻找一对节点间的路由消息、不断地接收信息。即使Coordinator掉电,Router仍然在保持网络,所以Router与Router之间仍然能够通讯,当有新的节点加入时,仍然能够通过现有的Router组建网络,加入网络。
路由节点:可以担任网络协调者,维护整个网络的正常运行,形成网络,让其它的路由或者终端连接,起到数据的转发功能和自动寻找最捷径的路由表。也可用作终端设备,兼转发和终端功能。
终端节点:用有限的功能来控制成本和复杂性,网络中通常用作终端设备。通常定义为电池供电设备,可周期性唤醒并执行设定的任务,End Device周期性醒来时,问自己的父节点是否有传输给自己的数据,并执行设定的任务。具有低功耗特征。
虽然Zigbee网络中有三种类型节点,但每个节点的物理特性都是相同,仅仅是软件配置不同从而控制节点类型。
一个Zigbee网络中有且只能有一个中心节点,企业接入网关在Zigbee网络中充当中心节点,完成Zigbee网络管理和Zigbee数据与其他网络(如Internet)数据交互功能。
企业接入网关通过USB或UART接口连接Zigbee模块(内置Zigbee协议栈),实现对Zigbee协议支持。Zigbee模块通过USB连接企业网关时,Zigbee模块(或USB接口)被虚拟为一个COM口,网关通过读写COM口完成对Zigbee数据的收发。
Zigbee应用
1.同一个Zigbee网络内,所有节点必须具有相同的频道及PAN ID(网络ID)。
2. Zigbee网络是MESH结构网络(网状网),最大特点是自动路由及动态维护路由。
3. 在Zigbee协议内部,用户的96个字节为一个数据帧,最大发送数据包为269个字节,在Zigbee内部会分成3个数据帧,到达目标模块后,先还原成原始数据再从串口输出。所以,用户每次发送的数据包如果少于96字节,会获得最好的性能。
4. ZigBee 是基于 IEEE 802.15.4 定义的 MAC 层和物理层,在 IEEE 802.15.4 规范中定义 3 个工作频段 2.4GHz(全球)、868MHz(欧洲)和 915 MHz(美国),它们分别具有最高 250kbit/s、 40kbit/s和 20kbit/s的传输速率。在这三个频段上一共有27个可选择工作信道,其中在 2.4GHz 上有 16 个信道,在 915MHz 上有 10 个信道,在 868MHz 上有 1 个信道。国内 ZigBee 产品 工作在 2.4GHz 的频段上,可以有 16 个信道选择。在 AT 命令模式,可通过“AT+CHA=N”,其中 N=11-26,配置信道。推荐使用 15,20,25,26 信道,可减少同频段上 wifi 的干扰。
5.Zigbee透明传输指发送端发出的内容与接收端收到的内容完全一致。一般情况下,透明传输仅支持Coordinator与Router,或Coordinator与End Device间传输。因为广播仅适用于协调器。
主发从:广播,在Zigbee网络中,Coordinator发送的数据,同网络的所有Router和End Device都将收到相同的数据。
从发主:仅主收到,从网络中的某个Router或End Device发送数据,只有Coordinator收到相同数据。
6. 点对点传输指发送端在已知对方地址的情况下按照指定的格式将数据发送给同网络内其他某个节点(或在未知地址的情况下广播发送)。点对点传输支持网络内的任意节点间的数据传输。一般自定义协议格式。
7.Zigbee网络一般配置参数
配置信息 |
参数范围 |
功能说明 |
节点类型 |
0-2 |
0:Coordinator,1:Router,2:End Device |
PanID |
0x0000~0xFFFF |
Zigbee局域网ID,节点用于判断自身所属网络的标识。 可互相通信的节点PanID必须相同。且必须保证同一工作区域内的相邻网络PanID不同。 |
信道 |
11-26 |
Zigbee的2.4G提供16个物理信道,必须在同一信道节点才可能互相通信。在同一工作区域内的相邻网络,建议使用不同的通道,以避免相互干扰导致通信效率降低。 推荐使用 15,20,25,26 信道,可减少同频段上 wifi 的干扰。 |
设备地址 |
0x0000~0xFFFF |
透明传输时不用设置。 |
Zigbee市场方案
Zigbee网络中各个节点的物理特性相同,即每个节点可通过软件配置为任意节点类型。
目前市场上的Zigbee方案可分为两类:一是基于Zigbee芯片直接开发,包含硬件和软件协议栈(一般芯片厂商直接提供协议栈),市面上应用较多的芯片包括TI的CC2530和CC260,NXP的JN5168等;二是直接采用Zigbee透传模块,模块内置协议栈,只需要满足模块硬件要求即可保证数据透明传输。相较于基于芯片开发,显然基于模块开发更简单可行(规避了芯片电路设计陷阱和软件协议栈的设计)。本次企业网关开发直接选用内置Zigbee协议栈的模块进行开发。
Zigbee数据量少且速度不高,芯片或模块外置姐接口以UART居多,对企业网关UART接口不易连接且数量有限,选用外置USB接口的Zigbee模块方案更为合适。
不同厂商zigbee方案
TI SimpleLink MCUs
TI提供分别对Zigbee三代协议支持的芯片CC243x,CC253x和CC26x2/CC13x2。
NXP Zigbee方案
NXP提供JN 516x和JN517x两类Zigbee芯片,突出特点为超低功耗。支持Zigbee3.0协议支持。
小米的多功能网关采用的是基于NXP的JN5168芯片方案,参考:从小米智能套装分析同为2.4G的ZigBee与Wi-Fi如何相容。
ZLG开发了FastZigbee协议,采用JN5168芯片方案。FastZigbee采用全透明传输方式,透明传输:即发送方和接收方数据的长度和内容完全一致,相当于一段无形的传输线。透明传输的优势在于,用户可以在这个基础上,创建自己需要的协议格式,使用户不局限于固定使用第三方协议。
参考:
- 通俗易懂介绍一下ZigBee的特性
- ZigBee是如何组网的?
- zigbee概述 几种无线通信技术性能比较
- What is ZigBee?
- https://www.zigbee.org/what-is-zigbee/
- LoRa与ZigBee有什么区别? 舜为互联
- https://item.taobao.com/item.htm?spm=a1z10.1-c.w5003-16306285895.4.fed839d2RXTYj5&id=552637896279&scene=taobao_shop
- http://www.dtkcn.com/download.html
- http://feibit.com/wangguanmokuai/mokuai-478.html
- https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-2601654064.13.7b6f3dddn9ygQB&id=39330273113
- http://www.four-faith.com/html/procenter/zigbee/
- http://www.kelanelec.com/
ZigBee基础的更多相关文章
- [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)
引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...
- [ZigBee] 4、ZigBee基础实验——中断
前言 上一篇介绍了CC2530的IO的基础知识,并用LED的控制来展示如何配置并控制GPIO的输出,用KEY状态的读取实验来展示如何读取GPIO的状态.从上一节的KEY状态读取的代码看出是采用轮训方式 ...
- [ZigBee] 6、ZigBee基础实验——定时器3和定时器4(8 位定时器)
上一节讲了16位定时器1,本节讲8位定时器3和定时器4! 1.综述 Timer 3 and Timer 4 are two 8-bit timers(8位定时器). Each timer has tw ...
- [ZigBee] 5、ZigBee基础实验——图文与代码详解定时器1(16位定时器)(长文)
1.定时器1概述 定时器1 是一个支持典型的定时/计数功能的独立16 位定时器,支持输入捕获,输出比较和PWM等功能.定时器有五个独立的捕获/比较通道.每个通道定时器要使用一个I/O 引脚.定时器用于 ...
- [ZigBee] 3、ZigBee基础实验——GPIO输出控制实验-控制Led亮灭
1.CC2530的IO口概述 CC2530芯片有21 个数字输入/输出引脚,可以配置为通用数字I/O 或外设I/O 信号,配置为连接到ADC.定时器或USART外设.这些I/O 口的用途可以通过一系列 ...
- [zigbee]zigbee的一些基础
--------------------------下面转自知乎 首先要区分协议跟协议栈.◇协议是一种规定.是一系列的通信标准,通信双方按照这一标准进行数据收发.◇协议栈是一系列代码,是协议的具体实现 ...
- [ZigBee] 16、Zigbee协议栈应用(二)——基于OSAL的无线控制LED闪烁分析(下)
说在前面:上一篇介绍了无线LED闪烁实现的OSAL部分,本篇介绍如何实现无线数据收发及数据处理: 上一篇是用SI跟着流程查看源码,我个人认为以架构的思维去了解代码能让人更清晰 ::ZMain.c程序入 ...
- ZigBee 安全探究
ZigBee 安全探究 0x02 ZigBee安全机制 (注:对于本节内容,可能在新版ZigBee协议标准中会有所变化,请以新版为准.) ZigBee主要提供有三个等级的安全模式: 1. 非安全模式: ...
- [ZigBee] 15、Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子(长文,OSAL及Zigbee入门知识)
1.Zigbee协议栈简介 协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收.协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用 ...
随机推荐
- JS中获取文件点之后的后缀字符
var FileName = $("#file").val(); var index1=FileName.lastIndexOf("."); var index ...
- web 连接池配置
TOMCAT J2EE项目连接池配置 web 项目的 web.xml <web-app> <resource-ref> <description>DB Connec ...
- [ 转载 ] Handler详解
带着问题学习 Android Handler 消息机制 Marker_Sky 关注 0.4 2018.02.06 18:04* 字数 3992 阅读 541评论 0喜欢 13 学习 Androi ...
- Css实现元素的垂直居中
前言: 在写CSS的时候让元素在高度固定的容器中垂直居中是很简单的,譬如设置容器的padding或者元素的margin之类的都可以做到:让元素在容器中水平居中也有text-align:center.m ...
- 洛谷.1333.瑞瑞的木棍(欧拉路径 Hash)
题目链接 #include <cstdio> #include <cstring> const int N=2e6+5,M=5e5+5,mod=2e6; const int s ...
- BZOJ.3598.[SCOI2014]方伯伯的商场之旅(贪心 数位DP)
题目链接 先考虑,对于确定的一个数,怎样移动代价最少(或者移到哪个位置最优)? 假设我们都移到下标\(1\)位置(设集合点为\(1\)),那么移动到下标\(2\)与\(1\)相比代价差为:\(下标&l ...
- 洛谷P1886 滑动窗口(POJ.2823 Sliding Window)(区间最值)
To 洛谷.1886 滑动窗口 To POJ.2823 Sliding Window 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每 ...
- swoole深入学习 4. process
swoole-1.7.2增加了一个进程管理模块,用来替代PHP的pcntl扩展.pcntl是php新增的一个多进程扩展,用来实现多进程,但是有很多不完善的地方,swoole 就完善了这些地方,而且使得 ...
- JDBC(3)—ResultSet结果集
简介:ResultSet:结果集.封装了使用JDBC进行查询的结果.Statement只能进行更新操作,所以使用ResultSet进行查询操作. 1.调用Statement对象的executeQuer ...
- Swift中String与NSDate的互相转换
其实每种编程语言,我都觉得String和日期对象的相互转换是一种十分麻烦的事情,Swift也不例外.这篇博客记录了我学到的String与NSDate的互相转换方法,供大家参考. 从String转为NS ...