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;

相关推荐
科技块儿2 分钟前
在线考试防作弊IP工具选型:5款主流IP查询API精度、成本、场景适配全测评
服务器·网络·tcp/ip·安全
zbtlink31 分钟前
路由器的外置天线和内置天线有多大差别?
网络·智能路由器
B2_Proxy1 小时前
如何使用代理服务解决“您的 ASN 被阻止”错误:全面策略分析
网络·爬虫·网络协议·tcp/ip·安全·代理模式
一起养小猫1 小时前
Flutter for OpenHarmony 进阶:Timer组件与倒计时系统深度解析
android·网络·笔记·flutter·json·harmonyos
程序猿编码1 小时前
实战Linux内核模块:终止ptrace跟踪程序与被跟踪进程
linux·网络·内核·内核模块·ptrace
乾元1 小时前
下一代检测:基于自编码器(Autoencoder)的异常流量检测
运维·网络·人工智能·深度学习·安全·安全架构
lifejump1 小时前
二层双核心冗余链路实现(1/2期)(eNSP)
网络
弹简特1 小时前
【JavaSE-网络部分02】网络编程套接字
网络
学习的周周啊2 小时前
ClawdBot(openclaw) + Cloudflare Tunnel + Zero-Trust 零基础保姆教程
网络·人工智能·python·clawdbot
会员源码网2 小时前
交易所 K 线模块无法启动?核心源码排查位置与实战解决方案
网络·elasticsearch