【Zigbee】解密Zigbee地址分配——你需要知道的一切

news2024/11/16 23:55:49
  • 💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。
  • 📝 CSDN主页:Zeeland🔥
  • 📣 我的博客:Zeeland
  • 📚 Github主页: Undertone0809 (Zeeland) (github.com)
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 💬介绍:The mixture of software dev+Iot+ml+anything🔥

本文节选自笔者博客:https://www.blog.zeeland.cn/archives/aa019rhfk ,如有更多问题,请在博客评论区下方发表你的想法。

什么是Zigbee ?

  • 简单来说,Zigbee是一种通信技术。具体地,ZigBee技术是一种近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术。主要适合于自动控制和远程控制领域,可以嵌入各种设备中,同时支持地理定位功能。

Zigbee的组成

一个Zigbee网络通常由以下组成部分:

  1. Zigbee协调器(Zigbee Coordinator):它是网络的核心组件,负责管理整个网络,包括网络的起始、结束和重组。通常它是网络中唯一一个能够与外部网络通信的节点,可以与外部网络(如互联网)连接。
  2. Zigbee路由器(Zigbee Router):它是中间节点,可以扩展网络的范围和覆盖区域。它能够通过选择最佳的传输路径,将数据从一个节点传输到另一个节点。在一个大范围的网络中,路由器可以协助将信息传递到远离协调器的节点。
  3. Zigbee终端设备(Zigbee End Device):它是最基本的节点,通常是一个传感器或控制器。它是一个低功耗设备,只有在需要向网络中传输数据时才会主动唤醒。

这些设备之间通过无线信号进行通信。Zigbee网络也支持多种拓扑结构,如星型、网状、混合等。

Zigbee的特点

  • ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MHz(欧洲流行)和915 MHz(美国流行)3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-75m的范围内,但可以继续增加。

(1)低功耗:在低耗电待机模式下,2节5号干电池可支持1个节点工作6-24个月,甚至更长。这是ZigBee的突出优势。相比之下蓝牙可以工作数周、WiFi可以工作数小时;

(2)低成本:通过大幅简化协议是成本很低(不足蓝牙的1/10),降低了对通信控制器的要求,按预测分析,以8051的8位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4KB代码,而且ZigBee的协议专利免费;

(3)低速率:ZigBee工作在250kbps的通讯速率,满足低速率传输数据的应用需求;

(4)近距离:传输范围一般介于10~100m之间,在增加RF发射功率后,亦可增加到1-3km。这指的是相邻节点间的距离。如果通过路由和节点间通信的接力,传输距离将可以更远;

(5)短时延:ZigBee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进入网络只需30ms,进一步节省了电能。相比较,蓝牙需要3-10s、WiFi需要3s;

(6)高容量:ZigBee可采用星状、片状和网状网络结构,由一个主节点管理若干子节点,最多一个主节点可管理254个子节点;同时主节点还可由上一层网络节点管理,最多可组成65000个节点的大网;

(7)高安全:ZigBee提供了三级安全模式,包括无安全设定、使用接入控制清单(ACL)防止非法获取数据以及采用高级加密标准(AES128)的对称密码,以灵活确定其安全属性;

(8)免执照频段:采用直接序列扩频在工业科学医疗2.4GHz(全球)频段。

Zigbee的地址分配

为什么要进行地址分配?

  • 需要说明的是,Zigbee网络是一个多传感器网络,内部的传感器要想相互通信,必须知道网络内其他传感器的地址,因此每一个节点都有一个16bit网络短地址和一个64bitIEEE扩展地址。
  • 其中,16bit网络地址实在节点加入网络时由其父节点动态分配,这种地址仅仅用于路由机制和网络中的数据传输,类似于Internet中使用的IP地址,或者说可以叫做相对地址;64bit地址类似于MAC地址,是每个节点的唯一标识。
  • 加入Zigbee网络的节点通过IEEE802.15.4MAC层提供的关联过程做成以可逻辑树,当网络中的节点允许一个新节点通过它加入网络时,他们之间就形成父子关系,每个进入网络的节点都会得到父节点为其分配的一个在此网络中的唯一的16bit网络地址,如下图:

如何进行地址分配?

  • 在介绍如何进行地址分配之前,下面,我们要先介绍一些名词概念,以便你更好地理解如何建立地址分配的模型。

  • 节点的网络深度: 指从节点到根节点协调器的最短跳数,标识节点在网络拓扑结构图中的层次位置。

  • LM(Logical type Mask):用于确定节点类型的参数。当LM=3时,节点类型为路由器节点,当LM=2时,节点类型为协调器节点,当LM=1时,节点类型为终端设备节点。

  • CM(Capacity Mask):用于决定网络容量的参数。它决定了哪些节点可以连接到网络上,并限制了节点数量和网络范围。例如,CM=4意味着最多可以有4个子节点连接到任何一个父节点上。

  • RM(Relationship mask):用于帮助确定节点之间的关系的参数。它确定了节点层次结构的深度和节点之间的距离。例如,RM=4意味着节点之间的距离在4层以下。

  • *当协调器建立一个新的网络后,首先将自己的16bit网络地址初始化为0,网络深度初始化为0,在Zigbee网络中,16为短地址的分配机制如下:

  • 规定每个父节点最多可以连接C个子节点

  • 这些子节点中最多可以由R个路由器节点

  • 网络的最大深度为L

  • Cskip(d)是网络深度为d的父节点为其子节点分配的地址之间的偏移量,其值按照下式计算:

  • 每个父节点最多可以分配R个这样的地址。伪终端节点分配地址和为路由器节点分配地址不同,假设父节点的地址为Ap,则第N个与之关联的终端节点地址An按下式计算。

注意事项:
(1)当一个路由器节点的Cskip(d)为0时,它就不具备为子节点分配地址的能力,也即表明不能够在使用别的节点通过他加入网络。
(2)当Cskip(d)大于0时表明父节点可以接受其他节点为其子节点,并为子节点分配网络地址。父节点会为第一个与它关联的路由器分配比他大1的地址,之后与之关联的路由器节点的地址之间都相隔偏移量Cskip(d)。

地址分配示例

已知LM=3, CM=4, RM=4,计算以下zigbee各节点地址并列出计算过程。

首先,先给各个节点标号,便于计算,如下图所示:

根据Cskip的公式,可以计算出:

  • d=0, Cskip(0)=21
  • d=1, Cskip(1)=5
  • d=2, Cskip(2)=1
  • d=3, Cskip(3)=0

可得:
A(1) = 0
A(2) = 1
A(3) = 1+ 21 = 22
A(4) = 22+ 21 = 43
A(5) = 43+ 21 = 64
A(6) = 1 + 1 = 2
A(7) = 23
A(8) = 23 + 5 = 28
A(9) = 64 + 1 = 65
A(10) = 65 +5 = 70
A(11) = 66

References

Zigbee 网络层分配机制–计算个节点的网络地址_网络层地址分配机制_gussu-毛虫的博客-CSDN博客
ChatGPT Next Web (zeeland.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/442458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

URL 转为QR code(二维码)

推荐一个良心的网站,能够免费地将url、text编码为二维码,而且还能设计logo、颜色等。 https://www.the-qrcode-generator.com/ 如下图: 可以自己定义logo、颜色: 还能查看扫描历史等统计信息: 上述所有功能都是免…

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例

【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例 文章目录 【人工智能概论】 RNN、LSTM、GRU简单入门与应用举例一. RNN简介1.1 概念简介1.2 方法使用简介 二. 编码层embedding2.1 embedding的参数 一. RNN简介 1.1 概念简介 循环神经网络(Recurrent Neural Network)理念…

苹果电容笔值得买吗?ipad电容笔推荐平价

在当今时代,高科技已经成为推动数字产品发展的重要推动力。无论是在工作上,还是在学习上,大屏幕都能起到很好的作用。IPAD将会更好地融入我们的生活,不管是现在还是未来。而ipad配上一支简单的电容笔,不仅可以提高工作…

【机器学习】P22 过拟合和欠拟合的探究2,高偏差与高方差

过拟合与欠拟合的探究2,高偏差与高方差 高偏差和高方差过拟合与欠拟合的解决策略带有L2正则化的神经网络带有早停法的神经网络的完整案例 MINST 高偏差和高方差 高偏差和高方差是机器学习中常见的两个问题,会影响模型的性能。 高偏差(High …

MySQL数据库,聚合查询

目录 1、聚合查询 1.1聚合函数 1.1.1count函数 1.1.2sum函数 1.1.3avg函数 1.1.4max函数 1.1.5min函数 1.2group by子句 1.3having 1、聚合查询 1.1聚合函数 聚合函数查询又叫函数查询,它是通过一些特定的函数根据需求来查询相关的信息,常见的…

代码随想录|day52| 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300 最长递增子序列 链接&#xff1a;力扣 看了思路之后写的代码&#xff0c;不知道为什么报错了。 错误一&#xff1a; int nnums.size();vector<int>dp(n,0);dp[0]1;for(int i1;i<n;i){for(int j0;j<i;j){if(nums[i]>nums[j]){dp[i]max(dp[i],dp[j]1);}}}retu…

Java版本企业电子招投标采购系统源代码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

ChatGPT 聊天接口API 使用

一、准备工作 1.准备 OPENAI_ACCESS_TOKEN 2.准备好PostMan 软件 二、测试交流Demo 本次使用POSTMAN工具进行快速测试&#xff0c;旨在通过ChatGPT API实现有效的上下文流。在测试过程中&#xff0c;我们发现了三个问题&#xff1a;    1.如果您想要进行具有上下文的交流&…

【prettier Error resolving prettier configuration for x:\xxx\.prettierrc.js】

Prettier Error resolving prettier configuration for x:\xxx.prettierrc.js 解决方法 Prettier 出现如下错误 错误 内容内联代码片 Error resolving prettier configuration for d:\map\user_package\Leaflet.FileLayer-master\.prettierrc.js ["ERROR" - 10:38…

Facebook、Google、亚马逊,谁将成为跨境电商的营销宠儿?

跨境电商在全球范围内的发展日益迅猛&#xff0c;而营销渠道的选择也变得越来越多样化。在众多的广告平台中&#xff0c;Facebook、Google和亚马逊被公认为是跨境电商卖家们最主要的营销平台。那么&#xff0c;这三个平台中哪个会成为跨境电商的营销宠儿呢&#xff1f; 一、Fac…

自动驾驶——智能底盘构造详解及新发展

摘要&#xff1a; 汽车底盘是指汽车上由传动系统、行驶系统、转向系统和制动系统等部分的组合&#xff0c;其功能包括支承、安装汽车车身、发动机及其它各部件及总成&#xff0c;形成汽车的整体造型&#xff0c;承受发动机动力&#xff0c;保证车辆正常行驶等。 底盘构造介绍 …

摄像头/视频读取_写入

摄像头/视频读取_写入 ➢VideoCapture类: 使用 OpenCV 播放视频&#xff0c;几乎与使用它来显示图像一样容易。播放视频时只需要处理的新问题就是如何循环地顺序读取视频中的每一顿&#xff0c;以及如何从枯燥的电影视频的读取中退出该循环操作。具体如例如下&#xff1a; #…

【计算机架构】如何计算 CPU 动态功耗

&#x1f4dc; 本章目录&#xff1a; 0x00 动态功耗&#xff08;Dynamic Power&#xff09; 0x01 集成电路成本&#xff08;Integrated Circuit Cost&#xff09; 0x02 基准测试&#xff08;SPEC CPU Benchmark&#xff09; 0x03 SPEC功率基准测试&#xff08;SPEC Power B…

vs2022下配置zxing cpp环境

生成zxing 下载zxing&#xff0c;zxing-cpp-master https://github.com/zxing-cpp/zxing-cpp Cmake生成项目&#xff0c;点Generate&#xff0c;把OpenCV_DIR修改了&#xff0c;NameValue没有报红就点Generate。然后点Open Project打开项目。 打开项目后&#xff0c;右击解决…

赋值法写基础解系中解向量

赋值法写基础解系中解向量 &#xff08;一&#xff09;背景引入 通常解方程组时&#xff0c;将系数矩阵化为行阶梯型&#xff0c;进而可化为行最简型 &#xff08;说一嘴&#xff1a;行最简型是指阶梯口元素全是1&#xff0c;该1所在列全其余全为0&#xff1b;广义行阶梯的阶梯…

maven作用讲解---以及怎么配置阿里的maven镜像

目录 Maven介绍 传统的java项目的结构和maven的对比 传统 Maven的项目 如何配置阿里 maven 2. 修改 Maven介绍 传统的java项目的结构和maven的对比 传统 Maven的项目 如何配置阿里 maven (1) 把 D:\program\JavaIDEA 2020.2\plugins\maven\lib\maven3\conf\settings.xml…

DNS服务

DNS服务 使用背景 在日常生活中人们习惯使用域名访问服务器&#xff0c;但机器间互相只认IP地址&#xff0c;域名与IP地址之间是多对一的关系&#xff0c;一个ip地址不一定只对应一个域名&#xff0c;且一个完整域名只可以对应一个ip地址&#xff0c;它们之间的转换工作称为域…

锐捷常用命令

所有交换机和无线控制器开启SSH服务&#xff0c;用户名密码分别为admin、admin1234&#xff1b;密码为明文类型,特权密码为admin 以S5为例&#xff1a; S5(config)#enable service ssh-server S5(config)#username admin password admin123 S5(config)#line vty 0 4 S5(co…

【C++ 十】STL基本概念、STL六大组件、STL容器、STL算法、STL迭代器

STL 的诞生、STL 基本概念、STL 六大组件、STL 容器、STL 算法、STL 迭代器 文章目录 STL 的诞生、STL 基本概念、STL 六大组件、STL 容器、STL 算法、STL 迭代器前言1 STL 的诞生2 STL 基本概念3 STL 六大组件4 STL 中容器、算法、迭代器5 容器算法迭代器初识5.1 vector 存放内…

vue2数据响应式原理(4) 递归侦测对象所有属性,解密vue响应式对象__ob__是干什么的

我们上文写的这个方法 并不能很好的侦测对象所有的属性 或者说 不能比较简介的侦测所有属性 在实际业务中 对象里面套对象 也不是什么很少见的事 例如这样 这种 我们用上一种方法 就很麻烦了 所以 我们需要了解新的方法 要完成完整的属性监听 我们就需要一个工具类 这个类的…