当前位置: 首页 > news >正文

zigbee路灯无线通讯机制

zigbee路灯无线通讯机制

wang@20160630

前言

目前路灯上通讯主要有电力载波和无线通讯;各有利弊,众说纷纭;本文不对两种技术进行比较,也不讨论哪种好,毕竟同种通讯模块,有的开发出来稳定,有的就不稳定,究其原因有很多,所以也不好做其讨论;本文主要是记述了我如何通过zigbee无线来为路灯做数据的传输;采用的何种通讯技术;为了必免时间久了,忘记了,因此有必要把它记录下来,方便自己记忆,也可给别人做参考。

内容

    本文主要内容分四点讲述:1、Zigbee角色定义;2、采用的通讯机制及实现功能;3、路由表定义及作用;4、通讯协义定义和解释;

1、Zigbee角色定义

     现状分析:路灯灯杆与灯杆之间都是比较远,而且有点直线分布,不像是网状分布。Zigbee的角色有coorder、router、device。考虑到路灯灯杆分布的现状、一个集中器要带载很多个路灯终端设备,及为了节省资源和以后安装方便,本系统只采用两种角色:coorder和router,每个单灯控制器都是router,可做中转;一个coorder最多可带250个router。

  1. 采用的通讯机制及实现功能

     本系统主要采用泛洪消息机制向本区域所管辖的网络广播,router设备收到包后判断是否是自已的数据包,如何是则接收;如果不是,则先判断是否可转发,若转发次数未到则转发,并且只能转发一次;router设备需维护一张路由表记录以前转发过的包,并在通讯协议上增加两个字段,记录转发次数和发送序列号;每一个router设备维护一个发送序列号,每发送一个包,序列号加1,并把该序列号加到数据包的包头信息中;其它设备节点收到一个数据包后依靠查找路由表中的序列号rxsn和uid来判断自己是否已接过该包,是否是自己的包,或是否需要转发该包。

主要功能:实现coord和route数据透传功能,coord通过串口接收特定的数据,再通过无线传输,把数据传到指定的route设备中,route设备再把信息通过串口显示出来;route设备也可以传送相关的数据到coord设备;每个route设备都具有上、下行数据转发功能,当收到的数据通过mac地址检测到的不是属于它的数据,它需要再次转发出去,并相应的更改转发次数,同一数据包只能被转发一次,数据包总的转发次数不超过100次;

示意图

  1. 路由表定义及作用

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;

http://www.lryc.cn/news/220495.html

相关文章:

  • asp.net docker-compose添加kafka和redis和zookeeper
  • 2024上海国际人工智能展(CSITF)“创新驱动发展·科技引领未来”
  • 汽车标定技术(三)--XCP协议如何支持测量功能
  • [c++]你最喜爱的stringstream和snprintf性能深入剖析
  • windows 用vs创建cmake工程并编译opencv应用项目生成exe流程简述
  • QML 仪表盘小示例
  • 力扣206. 反转链表
  • 深度学习之基于Tensorflow卷积神经网络花卉识别系统
  • leetcode链表
  • Kali Linux渗透测试的艺术
  • 2023年最新版潮乎盲盒源码含搭建教程
  • [GitLab] 安装Git 指定版本
  • vue中ref和$refs
  • CRM怎样帮助您的企业进行营销管理?
  • Gerrrit 管理员常用命令
  • 深入理解强化学习——多臂赌博机:增量式实现
  • 视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机
  • 优维低代码实践:打包发布
  • js深度学习(三)
  • JVM类的声明周期
  • html将复选框变为圆形样例
  • 笔记软件 Keep It mac v2.3.3中文版新增功能
  • uni-app 开发的H5 定位功能部署注意事项
  • CY5-COOH脂溶性羧基荧光染料1032678-07-1
  • 【CSS】div 盒子居中的常用方法
  • Pytorch网络模型训练
  • webgoat-Path traversal
  • P8976 「DTOI-4」排列,贪心
  • 使用 Python 进行自然语言处理第 5 部分:文本分类
  • uni-app---- 点击按钮拨打电话功能点击按钮调用高德地图进行导航的功能【安卓app端】