ZigBee学习(一)
文章目录
- 一、ZigBee介绍
- 二、IEEE 802.15.4
- 2.1 物理层
- 2.2 MAC层
- 2.3 如何实现网络和设备寻址
- 2.4 能量管理
- 三、ZigBee网络拓扑结构
- 四、ZigBee配置参数
一、ZigBee介绍
ZigBee是一种基于IEEE 802.15.4标准的高级通信协议,它被设计用于低速率、低功耗和短距离无线通信,尤其适合于构建低成本、复杂的网络。这使得ZigBee成为智能家居、工业控制、医疗保健、智能农业等领域的理想选择。
以下是关于ZigBee的几个重要特点:
1.低功耗:ZigBee协议拥有非常低的功耗。这使得其在许多基于电池供电的应用中具有重要价值。
2.自组网能力:ZigBee可以自动形成和修复网络,也就是说,无需人工设定,它们可以自动找到可以连接的设备并形成网络。
3.大规模网络:ZigBee 支持非常大规模的网络。这使得ZigBee非常适合用于构建包含大量设备的复杂网络,比如在智能家居中的大量设备控制。
4.通信协议简单:相较于Wi-Fi或蓝牙,ZigBee的通信协议相对简单,因此在相同的硬件条件下,实现ZigBee的成本更低。
二、IEEE 802.15.4
2.1 物理层
该层负责无线电频率的选择,数据的传输和接收,以及无线信号的调制和解调。
物理层的主要功能包括:
1.激活和去激活无线电收发器:物理层控制无线电频率接收器和发射器,确保它们在需要的时候启动,并在不需要的时候关闭以节省功耗。
2.信道选择:物理层可以根据环境和网络配置选择一个特定的无线电信道来通信。
3.能量检测(Energy Detection, ED):物理层可以测量当前信道上的RF能量,以便检测信道是否被占用。
4.链路质量指示(Link Quality Indication, LQI):物理层可以估计接收数据包的质量,以便为网络层提供关于信道质量的反馈。
5.数据的发送和接收:物理层负责将数据从MAC层传输到无线电频道,并从无线电频道接收数据传输到MAC层。
6.调制和解调:物理层将数字数据信号转换为适合无线传输的模拟信号,也就是将数据包转换为无线电波。接收端的物理层则负责将无线电波转换回数据包。
IEEE 802.15.4定义了多个频率带,包括868 MHz、915 MHz和2.4 GHz,每个频率带有多个信道。例如,2.4 GHz频带定义了16个信道,每个信道之间的间隔为5 MHz。每个信道都定义了特定的调制类型,例如2.4 GHz频带使用的是偏移键控(OQPSK)调制。
2.2 MAC层
IEEE 802.15.4标准中的媒体访问控制层(MAC)协议主要负责帧的组成、帧的发送和接收、信道访问机制以及网络连接和丧失连接的处理。以下是MAC层的一些主要职责:
1.帧格式与处理:MAC层定义了一个特定的帧格式,用于数据的发送和接收。这个帧格式包括一些关键的信息,如源地址,目的地址,负载数据等。此外,MAC层还负责处理发送和接收的帧。
2.信道访问机制:MAC层利用 CSMA/CA(载波监听多路访问和碰撞避免)机制来控制设备的信道访问,并尽可能地避免信道冲突。
3.网络和设备的寻址:MAC层为每个设备分配一个唯一的地址,并处理目标设备的寻址过程。
网络连接和丧失连接的处理:MAC层负责处理设备的网络连接过程,例如通过发送和接收请求与应答来形成网络。它还会处理设备的丧失连接状态,例如,当设备离开网络或网络不可用时。
4.能源管理:MAC层也参与到设备的能源管理中,例如,它可以将设备设置为低功耗模式,以节省电池电力。
5.安全:MAC层还可以提供一些安全功能,例如数据的加密与解密,以及通过验证接收帧的完整性来防止数据篡改。
与Internet网络中MAC层有什么不同?
IEEE 802.15.4 MAC层和Internet中的MAC层,也就是以太网(Ethernet)或Wi-Fi(IEEE 802.11)的MAC层之间,存在一些显著的不同。
- 用途:IEEE 802.15.4是为低速率、低功耗和短距离无线通信设计的,例如传感器网络、自动化设备等。而Ethernet 和 Wi-Fi 则用于创建高速率、高带宽的有线和无线局域网。
- 帧结构:IEEE 802.15.4和以太网的帧结构不同。例如,IEEE 802.15.4的一般数据帧包括一些特定的字段,如帧类型、源地址和目标地址等。而以太网的帧结构包括目标MAC地址、源MAC地址、类型/长度和负载数据等。
- 信道访问机制:IEEE 802.15.4使用CSMA/CA来避免在无线通信中的碰撞。然而,以太网使用了稍有不同的CSMA/CD(载波侦听多路访问和碰撞检测)机制,它可以在碰撞发生后再进行碰撞处理,因为以太网通信环境比无线环境下的难度要小。
- 网络拓扑:IEEE 802.15.4支持星形和对等网络等多种网络拓扑,以适应不同的应用需求。而以太网或Wi-Fi主要使用星形网络拓扑。
- 能效:由于目标应用的不同,IEEE 802.15.4特别关注低功耗设计,因此它包含一些节能功能,例如设备能够按照预定的时间表进入休眠模式。而这在以太网和Wi-Fi中并不常见。
虽然这两者都在MAC层完成定址、帧处理和网络访问控制等基础功能,但基于其应用场景的差异,设计实现上有显著不同。
2.3 如何实现网络和设备寻址
在IEEE 802.15.4标准中,网络和设备地址的配置通过PAN ID和设备地址两种方式实现。
- PAN ID:PAN(Personal Area Network)ID是用于标识特定无线个域网的独特16位标识符。每个网络都有一个唯一的PAN ID,所有在同一个网络中的设备都共享这个PAN ID。这是用来区分不同网络的关键标识。
- 设备地址:任何IEEE 802.15.4网络中的设备都有一个唯一的地址。这在标准中被定义为两种类型:
- 短地址:短地址是一个16位的唯一标识符,用于在PAN内识别设备。这种地址由PAN协调器在设备加入网络时分配,并且只需要在该PAN内保持唯一性。
- 长地址:长地址是一个64位的全局唯一标识符(EUI-64)。EUI-64地址通常在设备制造时硬编码,并且在全球范围内保持唯一性。
整个寻址过程是这样的:根据数据帧的目标PAN ID和设备地址,MAC层确定数据帧应发送给哪个网络中的哪个设备。发送设备将生成一个MAC层数据帧,其中包括源和目标的PAN ID和设备地址。接收设备通过检查数据帧中的PAN ID和设备地址,确定该数据帧是否目标为其自身。如果是,它将处理数据帧;如果不是,它将忽略该数据帧。
通过这种方式,IEEE 802.15.4网络能够支持设备和网络寻址,以正确地路由和交付数据。
2.4 能量管理
IEEE 802.15.4标准设计了一些特性以支持能源管理和降低功耗。考虑到该标准主要用于低功耗和长待机时间的设备(如传感器网络、家庭自动化系统等),这些特性使设备可以在不影响性能的同时,实现更长的电池寿命。以下是一些主要的能源管理策略:
- 睡眠周期:IEEE 802.15.4设备可以在不活动时进入低功耗模式或睡眠模式。这在非接收和非传输时间是十分有用的。设备可以依据预设的时间表或网络协调器的指示进行唤醒和休眠。
- 动态能源管理:设备可以根据当前的通信需求动态调整其消耗的功率。例如,当网络流量较低时,设备可以使用较低功率的模式,从而节省电能。
- 仅在需求时激活无线电:无线电硬件是设备中电力消耗的主要部分,因此,IEEE 802.15.4设备只在真正需要进行数据传输或接收时才激活无线电硬件。当设备处于闲置或睡眠模式时,无线电设备会被关闭。
- 延迟发送和接收:为了进一步降低功耗,设备可以在网络中设置数据包的延迟发送和接收。这意味着设备可以预测何时其他设备将发出数据包,并在此期间处于休眠状态,只在预定的时刻唤醒以接收数据。
三、ZigBee网络拓扑结构
ZigBee网络支持三种基本类型的拓扑结构:星型网络,网状网络和树状网络。
-
星型网络:在星型网络中,有一个中心节点或协调器,所有其他设备(称为终端设备)都直接连接到它。这种网络结构易于建立和管理,但其范围受到协调器无线信号范围的限制。
-
网状网络(Mesh Network):在网状网络中,任何一个ZigBee设备都可以与任何其他设备直接通讯,只要它们在彼此的无线通讯范围内。这使得网络具有最大的灵活性,可以很好地适应物理布局的变化和设备的增减。这种网络的优点是,如果第一条通讯路径出现问题,数据可以自动寻找另一条路径传输,增加了网络的可靠性。
- 树状网络(Tree Network):在树状网络中,协调器位于树的顶部,它负责开始和结束网络通讯。其他设备作为路由器分散在树的中部,并有可能存在终端设备连接到路由器上。这种网络的特点是中心节点更容易控制网络,但如果移除或断开任何中间节点的连接,则下面的所有设备都将断开。
ZigBee协议的一个关键优点就是容错与自我修复能力,如果在网络中某一设备或组件出现故障或丢失,数据可以重新路由,从其他节点通过。这使得ZigBee网络具有很强的健壮性和可靠性。
图片来源:https://www.cnblogs.com/endust/p/12015419.html
四、ZigBee配置参数
配置ZigBee网络时,需要考虑以下重要参数,这些参数将决定网络的性能和行为特性。
1. PAN ID (Personal Area Network Identifier):这是一个独特的网络标识符,可以用于识别特定的ZigBee网络。在一个区域中,多个ZigBee网络可以同时存在,每个网络都有一个不同的PAN ID来区分。
2. Channel:这个参数决定了ZigBee网络在无线电频谱上的工作频带。选择合适的信道可以避免无线电干扰,优化网络性能。
3. Network Address:网络地址用于标识网络中的每个设备。这个地址是唯一的,通常是由协调器在设备加入网络时分配的。
4. Encryption Key:用于网络安全的密钥。ZigBee协议支持AES-128位加密,以确保数据的秘密性和完整性。
5. Transmission Power:设备无线电收发的功率级别。这个参数影响数据传输的范围和质量,以及设备的电池寿命。一般来说,功率越大,传输范围越远,但电池寿命可能更短。
6. Sleeping Interval:对于用电池供电并且大部分时间在休眠状态的设备(如传感器),休眠间隔是一个重要参数。设定这个参数可以可以在保持良好通信能力和延长电池寿命之间取得平衡。
相关文章:

ZigBee学习(一)
文章目录 一、ZigBee介绍二、IEEE 802.15.42.1 物理层2.2 MAC层2.3 如何实现网络和设备寻址2.4 能量管理 三、ZigBee网络拓扑结构四、ZigBee配置参数 一、ZigBee介绍 ZigBee是一种基于IEEE 802.15.4标准的高级通信协议,它被设计用于低速率、低功耗和短距离无线通信&…...

Unity—配置lua环境变量+VSCode 搭建 Lua 开发环境
每日一句:保持须臾的浪漫,理想的喧嚣,平等的热情 Windows 11下配置lua环境变量 一、lua-5.4.4版本安装到本地电脑 链接:https://pan.baidu.com/s/14pAlOjhzz2_jmvpRZf9u6Q?pwdhd4s 提取码:hd4s 二、高级系统设置 此电…...

前端-云点播技术
一、简介 云点播(Cloud Video On Demand)是一种基于云计算平台提供的视频点播服务。这种服务允许用户在需要的时候按需观看视频内容,而无需等待下载完成。以下是一些关于云点播技术的常见特征和要点: 存储和管理: 云存…...

k8s---ingress对外服务(traefik)
目录 ingress的证书访问 traefik traefik的部署方式: deamonset deployment nginx-ingress与traefix-ingress相比较 nginx-ingress-controller ui访问 deployment部署 ingress的证书访问 ingress实现https代理访问: 需要证书和密钥 创建证书 密钥 secre…...

MySQL-SQL-DQL
DQL-介绍 DQL-语法 基本查询 1、查询多个字段 2、设置别名 3、去除重复记录 条件查询 1、语法 2、条件 聚合函数 1、介绍 2、常见的聚合函数 3、语法 分组查询 1、语法 2、where与having区别 排序查询 1、语法 2、排序方式 分页查询 1、语法 DQL-执行顺序...

Docker(十四)Etcd 项目
作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! etcd etcd 是 CoreOS 团队发起的一个管理配置信息和服务发现(Service Discovery)的项目,在这一章里面&a…...

EtherNet/IP开发:C++开发CIP源代码
① 介绍一下CIP CIP是一种考虑到自动化行业而设计的通用协议。然而,由于其开放性,它可以并且已经应用于更多的领域。CIP网络库包含若干卷: 第1卷介绍了适用于所有网络自适应的CIP的常见方面。本卷包含通用对象库和设备配置文件库࿰…...

【算法题】68. 文本左右对齐
题目 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必…...

PHP 调用 e 签宝接口签名指南
前言 在 401 问题上卡了 一段时间,参考官网文档和鉴权签名计算测试也试了很久,签名确定是没错的,但是一直提示 INVALID_SIGNATURE 其实问题在于我忽略了 公共请求头格式 中 Content-MD5 部分的一句话: GET 和 DELETE 请求且 Bod…...

穿越Flink的时间隧道:解锁实时数据之窗,掌握流处理之巅
目录 Flink中的时间和窗口 1时间语义 1.1Flink中的时间语义 1.1.1处理时间 1.1.2事件时间 1.2那种时间语义更重要 2 水位线 2.1 事件时间和窗口 2.2 什么是水位线 2.3 如何生成水位线 2.3.1使用WatermarkGenerator 2.3.2使用SourceFunction 2.4 水位线的传递 2.5 水位…...

服务器与Ajax
1.初识Ajax Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 术语ajax最早产生于2005年,Ajax表示Asynchronous JavaScript and XML(异步JavaScript和XML),但是它不是像HTML、JavaScript或CSS这样的一种“正式的”技…...

Electron项目架构方案心得
这里只记录FE的业务流程设计考虑和Electron的业务流程考虑。 一个electron客户端,理想的架构是,底层的能力支持完全由electron底层模块支持。关于electron底层模块的支持,不限于node packages 或者 dll 或者 rust实现的一些东东。而业务流程…...

Java中创建List接口、ArrayList类和LinkedList类的常用方法(一)
List接口 要了解List接口,就不得不说起Java的集合框架。 (该图来自菜鸟教程) Collection接口和Map接口 Java 集合框架主要包括两种类型的容器,集合Collection和图Map。 Collection接口代表了单列集合,它包含了一组…...

顶级开源社区开发者体验实践分享
实践一:开发者贡献指南 实践二:Dev Container Setup(bonus) 实践三:Good First Issues 实践三:Good Second Issues(bonus) 实践四:RFC 机制 实践五:完善 CI I…...

STM32之RTC实时时钟
一、实时时钟概述 1、实时时钟介绍 英文缩写:RTC。显示年、月、日、时、分、秒、星期,自动计算闰年,能够区分每个月的天数。 RTC特点:能从RTC获取到具体的日期时间,断掉后再开机时间仍然准确(需要纽扣电池ÿ…...

Java JVM 堆、栈、方法区详解
目录 1. 栈 2. 堆 3. 方法区 4. 本地方法栈 5. 程序计数器 首先来看一下JVM运行时数据区有哪些。 1. 栈 在介绍JVM栈之前,先了解一下 栈帧 概念。 栈帧:一个栈帧随着一个方法的调用开始而创建,这个方法调用完成而销毁。栈帧内存放者方…...

Oracle篇—分区表和分区索引的介绍和分类(第一篇,总共五篇)
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...

Vue中的模式和环境变量
文章目录 一、介绍二、配置1、环境文件2、变量使用 三、读取环境文件 一、介绍 vue官网:https://cli.vuejs.org/zh/guide/mode-and-env.html模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式 开发环境:develop…...

用ChatGPT教学、科研!亚利桑那州立大学与OpenAI合作
亚利桑那州立大学(简称“ASU”)在官网宣布与OpenAI达成技术合作。从2024年2月份开始,为所有学生提供ChatGPT企业版访问权限,主要用于学习、课程作业和学术研究等。 为了帮助学生更好地学习ChatGPT和大语言模型产品,AS…...

问题解决:django模型查询报错,找不到数据库表
django项目,使用的postgresql数据库,建了多个模式,模型查询时一直默认查public的表 1. 问题: django.db.utils.ProgrammingError: relation "ip_management_app.table" does not exist 2. 代码: class …...

持续集成工具Jenkins的使用之安装篇(一)
Jenkins是一个基于Java开发的开源的一种持续集成工具,主要用于环境部署,监控重复性的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。要想使用它,你就必须的先安装,接下来我们就介绍下J…...

【JavaScript】面向后端快速学习 笔记
文章目录 JS是什么?一、JS导入二、数据类型 变量 运算符三、流程控制四、函数五、对象 与 JSON5.1 对象5.2 JSON5.3 常见对象1. 数组2. Boolean对象3. Date对象4. Math5. Number6. String 六、事件6.1 常用方法1. 鼠标事件2. 键盘事件3. 表单事件 6.2 事件的绑定**1…...

笨蛋学设计模式行为型模式-命令模式【19】
行为型模式-命令模式 8.6命令模式8.6.1概念8.6.2场景8.6.3优势 / 劣势8.6.4命令模式可分为8.6.5命令模式8.6.6实战8.6.6.1题目描述8.6.6.2输入描述8.6.6.3输出描述8.6.6.4代码 8.6.7总结 8.6命令模式 8.6.1概念 命令模式允许将请求封装成一个对象(命令对象,包含…...

windows用msvc编译opencv、opencv-python、opencv_contrib、cuda
如要用mingw编译opencv,参考我另外一篇文章https://blog.csdn.net/weixin_44733606/article/details/135741806。 如要用Ubuntu编译opencv,参考我另外一篇文章https://blog.csdn.net/weixin_44733606/article/details/131720128。 一、安装VS2022&…...

JVM实战篇:GC调优
目录 一.GC调优的核心指标 1.1吞吐量(Throughput) 1.2延迟(Latency) 1.3内存使用量 二.GC调优的方法 2.1监控工具 Jstat工具 VisualVm插件 Prometheus Grafana 2.2诊断原因 GC日志 GC Viewer GCeasy 2.3常见的GC模…...

C# 获取QQ会话聊天信息
目录 利用UIAutomation获取QQ会话聊天信息 效果 代码 目前遇到一个问题 其他解决办法 利用UIAutomation获取QQ会话聊天信息 效果 代码 AutomationElement window AutomationElement.FromHandle(get.WindowHwnd); AutomationElement QQMsgList window.FindFirst(Tr…...

Java中的内存溢出与内存泄漏深度解析
目录 引言 一. 内存溢出(Memory Overflow) 1.1 堆内存溢出 1.2 栈内存溢出 1.3 内存溢出的解决策略 1.3.1 优化对象的创建和销毁 1.3.2 调整堆内存大小 1.3.3 使用内存分析工具 1.3.4 避免创建过大的对象 1.3.5 定期清理不再使用的对象 二、…...
计算机网络安全——密码学入门
网络安全是指在网络领域、专业领域的网络安全包括在基础计算机网络基础设施中所做的规定,网络管理员采取的策略来保护网络及网络可访问资源免受未经授权的访问,以及对其有效性(或缺乏)的持续不断的监控和测量的结合。 1. 密码学的…...

go语言(八)---- map
map的声明方式有以下三种。 package mainimport "fmt"func main() {//第一种声明方式//声明map1是一个map类型,key是String,value是Stringvar myMap1 map[string] stringif myMap1 nil {fmt.Println("myMap1 是一个空map")}//在使…...

Flutter:跨平台移动应用开发的未来
Flutter:跨平台移动应用开发的未来 引言 Flutter的背景和概述 Flutter是由Google开发的一个开源UI工具包,用于构建漂亮、快速且高度可定制的移动应用程序。它于2017年首次发布,并迅速引起了开发者们的关注。Flutter采用了一种全新的方法来…...