zigbee路灯无线通讯机制
zigbee路灯无线通讯机制
wang@20160630
前言
目前路灯上通讯主要有电力载波和无线通讯;各有利弊,众说纷纭;本文不对两种技术进行比较,也不讨论哪种好,毕竟同种通讯模块,有的开发出来稳定,有的就不稳定,究其原因有很多,所以也不好做其讨论;本文主要是记述了我如何通过zigbee无线来为路灯做数据的传输;采用的何种通讯技术;为了必免时间久了,忘记了,因此有必要把它记录下来,方便自己记忆,也可给别人做参考。
内容
本文主要内容分四点讲述:1、Zigbee角色定义;2、采用的通讯机制及实现功能;3、路由表定义及作用;4、通讯协义定义和解释;
1、Zigbee角色定义
现状分析:路灯灯杆与灯杆之间都是比较远,而且有点直线分布,不像是网状分布。Zigbee的角色有coorder、router、device。考虑到路灯灯杆分布的现状、一个集中器要带载很多个路灯终端设备,及为了节省资源和以后安装方便,本系统只采用两种角色:coorder和router,每个单灯控制器都是router,可做中转;一个coorder最多可带250个router。
- 采用的通讯机制及实现功能
本系统主要采用泛洪消息机制向本区域所管辖的网络广播,router设备收到包后判断是否是自已的数据包,如何是则接收;如果不是,则先判断是否可转发,若转发次数未到则转发,并且只能转发一次;router设备需维护一张路由表记录以前转发过的包,并在通讯协议上增加两个字段,记录转发次数和发送序列号;每一个router设备维护一个发送序列号,每发送一个包,序列号加1,并把该序列号加到数据包的包头信息中;其它设备节点收到一个数据包后依靠查找路由表中的序列号rxsn和uid来判断自己是否已接过该包,是否是自己的包,或是否需要转发该包。
主要功能:实现coord和route数据透传功能,coord通过串口接收特定的数据,再通过无线传输,把数据传到指定的route设备中,route设备再把信息通过串口显示出来;route设备也可以传送相关的数据到coord设备;每个route设备都具有上、下行数据转发功能,当收到的数据通过mac地址检测到的不是属于它的数据,它需要再次转发出去,并相应的更改转发次数,同一数据包只能被转发一次,数据包总的转发次数不超过100次;
示意图
- 路由表定义及作用
typedef struct _dev_mac_t
{
u32 srcmac;//源mac
u8 rxsn; //接收系列号
u8 rssi; //存储 rssi值
}dev_mac_t;
路由表数据采用动态分配,源mac为唯一标识,接收RF数据时,通过查找srcmac判断是否增加或修改相应数据;首次接收到数据时,会增加一笔记录,保存srcmac、rxsn和rssi,;当再次接收到源mac发来的数据时,如果当前数据包的rxsn与路由表记录的rxsn相同,则不接收,以必免重复接收,如果不是只需要更新rxsn和rssi值;
4、通讯协义定义和解释
总体包格式:包长PHR(1)+MAC(7)+自定义数据(N)+MFR(2)
详细包格式:包长PHR(1)+MAC{帧类型fcf (2)+系列号seq(1)+目标panid(2)+目标短地址(2)}+数据{包类型(1)+源地址(4)+目标地址(4)+发送序列号(1)+转发次数(1)+终端MCU数据包(N)}+MFR(2)
系统基于MAC层的自定义的zigbee协议数据包,采用芯片的mac地址的后48位来做唯一的地址并称为uid;短地址中设coorder地址为0;coorder设备专门为集中控制器用的;
coorder-->router:则源地址为0,目标地址为router的uid;
Router-->coorder:则源地址为router的uid,目标地址为0;
相关文章:

zigbee路灯无线通讯机制
zigbee路灯无线通讯机制 wang20160630 前言 目前路灯上通讯主要有电力载波和无线通讯;各有利弊,众说纷纭;本文不对两种技术进行比较,也不讨论哪种好,毕竟同种通讯模块,有的开发出来稳定,有的…...
asp.net docker-compose添加kafka和redis和zookeeper
docker-compose.yml添加 redis:image: redis:alpinekafka:image: "bitnami/kafka:3.1.1"depends_on:- zookeeperzookeeper:image: "bitnami/zookeeper:3.5.10" docker-compose.override.yml添加 redis:ports:- "6379"kafka:links: - zookeepere…...

2024上海国际人工智能展(CSITF)“创新驱动发展·科技引领未来”
人工智能(Artificial Intelligence,AI)作为当今世界科技发展的关键领域之一,正不断推动着各行各业的创新和变革。作为世界上最大的消费市场之一,中国正在积极努力将AI技术与产业融合并加速推广应用。在这个背景下&…...

汽车标定技术(三)--XCP协议如何支持测量功能
目录 1. 概述 2. 测量方式 -- Poll 3. 测量方式 -- DAQ 3.1 ODT概念模型 3.2 DAQ List概念 3.3 ODT 绝对编号和相对编号 3.4 静态DAQ和动态DAQ模式 (1)静态DAQ (2)动态DAQ 4.小结 1. 概述 在该系列的首篇文章汽车标定技…...
[c++]你最喜爱的stringstream和snprintf性能深入剖析
最近写一个程序中两个差不多的模块,一个使用了snprintf输出中间数据,另一个偷懒使用stringstream。结果你猜怎么着?居然压帧了!!到底是谁拖了性能的后退? 来自阿里云的性能分析实验 我上网一搜࿰…...

windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述
目录 前言一、安装opencv(1)下载(2)双击安装(3)环境变量和system文件夹设置 二、打开vs创建项目三、编辑cpp,.h,cmakelist.txt文件(1)h文件(2&…...

QML 仪表盘小示例
本次项目已发布在CSDN->GitCode,下载方便,安全,可在我主页进行下载即可,后面的项目和素材都会发布这个平台。 个人主页:https://gitcode.com/user/m0_45463480怎么下载:在项目中点击克隆,windows:zip linux:tar.gz tar # .pro TEMPLATE = appTARGET = dialcontrol#…...

力扣206. 反转链表
题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head [1,2] 输出:[2,1] 示例 3:…...

深度学习之基于Tensorflow卷积神经网络花卉识别系统
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习是一种机器学习方法,它通过模拟人脑神经网络的结构和功能来实现对数据的自动分析和学习。卷积神…...

leetcode链表
这几天手的骨裂稍微好一点了,但是还是很疼,最近学校的课是真多,我都没时间做自己的事,但是好在今天下午是没有课的,我也终于可以做自己的事情了。 今天分享几道题目 移除链表元素 这道题我们将以两种方法开解决&…...

Kali Linux渗透测试的艺术
Kali Linux(Kali)是专门用于渗透测试的Linux操作系统,它由BackTrack 发展而来。在整合了IWHAX、WHOPPIX 和Auditor 这3 种渗透测试专用Live Linux 之后,BackTrack正式改名为Kali Linux。 BackTrack是相当著名的Linux发行版本。在…...

2023年最新版潮乎盲盒源码含搭建教程
后台开发语言:后端 Laravel 框架开发 前端开发框架:uniappvue 环境配置: php7.4 mysql5.6 nginx1.22 redis(建议宝塔面板或 lnmp) 源码获取请自行百度:一生相随博客 一生相随博客致力于分享全网优质资源&#x…...

[GitLab] 安装Git 指定版本
卸载旧版本 检查是否已经安装 git --version如果已经安装,先卸载 yum -y remove git安装新版本 在GitHub上选择需要下载的版本 Git版本 在/usr/local/目录下新建文件夹:git,并在/usr/local/git/文件夹内下载压缩包 wget https://github…...
vue中ref和$refs
1.作用 利用ref 和 $refs 可以用于 获取 dom 元素 或 组件实例,也可以在父组件获取子组件,从而调用子组件的方法。 2.特点: 查找范围 → 当前组件内(更精确稳定) 3.语法 1.给要获取的盒子添加ref属性 <div ref"chartRef"&…...

CRM怎样帮助您的企业进行营销管理?
CRM助力企业营销管理,为企业降本增效提升投入产出比。CRM软件是如何实现的呢? 扩大线索量 想要精准获客的第一步是要扩大线索量,多渠道营销推广是很好的方法。例如: 1.线下展会线上Webinar等市场活动 2.搭建微信、微博、…...
Gerrrit 管理员常用命令
1. replication插件重新加载 当修改replication配置文件(replication.config),需要重启gerrit生效,或者重新加载replication。 # 重新加载replication插件 ssh -p 29418 usernamegerrit.company.com gerrit plugin reload repli…...
深入理解强化学习——多臂赌博机:增量式实现
分类目录:《深入理解强化学习》总目录 至今我们讨论的动作—价值方法都把动作价值作为观测到的收益的样本均值来估计。下面我们探讨如何才能以一种高效的方式计算这些均值,尤其是如何保持常数级的内存需求和常数级的单时刻计算量。 为了简化标记&#x…...
视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机
随着自媒体时代的到来,越来越多的人加入到了视频创作行列。然而,视频剪辑是一项繁琐的任务,特别是当你需要批量处理多个视频时。为了提高效率,一款名为“视频闪闪”的批量剪辑软件应运而生。 www.shipinshanshan.com “视频闪闪”…...

优维低代码实践:打包发布
导语 优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。…...
js深度学习(三)
循环 var i0 for(;i<10;){ console.log(i) i } while(i<10){ console.log(i) i } var i100; for(;i--;){ console.log(i) }2、引用值 typeof:number string boolean Object(object/array/null出现是为了指定为空对象/)undefined function typeof a >unde…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...