关于Zigbee无线通信中,多个终端设备向协调器发送数据问题!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Zigbee无线通信中,多个终端设备向协调器发送数据问题!相关的知识,希望对你有一定的参考价值。

我是本科生 现在也在用到Zigbee 我看了TI给的例程 一般实现自己的功能 是不是把例程里APP的程序改改就行呢 像MAC层 HAL这些文件夹下的程序不用改动是吗 至于Zstack的整个流程 我其实也不清楚 大概看了几个pdf介绍 知道是确定协调器,路由器,终端。然后是组网,绑定,传数据,接收显示,这一流程!我现在用到的是星型网络一个协调器和3个终端(DS18B20采集温度和IH3605采集湿度)将三个终端采集到的数据发送给协调器,协调器收到3组数据 取均值后送lcd显示。我的问题是:协调器如何确认收到的是3个不同终端的数据?在程序里应该如何实现呢?麻烦诸位做过次方面设计的指导一下

APP是应用层,一般只是在这里修改就可以,如果程序不是特别复杂的话,是不需要修改协议栈的。
至于协调器如何确认收到的是3个不同终端的数据,传感器向协调器发送数据的时候,是会发送自己的网络地址的,根据网络地址就可以判断是哪个节点发的了。如果是单纯组网的话,你可以看下SensorDemo例程,在TI官网上应该可以下到,在飞比网站上也可以找到。
如果要添加DS18B20采集温度和IH3605采集湿度这些外设,那么需要在传感器的程序里添加你自己的温湿度程序,设置好IO口和时序,明确你温湿度外设的数据发送流程和算法,把接收进来的数据再添加到SensorDemo原本的发送中就可以了。
参考技术A 将终端的物理地址和网络地址加到要发送的数据中,以地址判断你收到的数据是哪些终端发送的。自己改动程序的话,主要是在App里面改动,然后调用其他的(像MAC层、HAL层等) 参考技术B 已经实现组网了,每个设备都有自己的网络ID号的,协调器都是通过ID号判断设备的,不用自己写专门的代码,NWK和MAC层协议会自动完成。如果还是不懂,你可以看看zigbee的网络层、以及zigbee中的各种ID号的功能。 参考技术C

根据簇ID(CLUSTERID)的不同确定是哪个终端发来的数据,也就是终端发送函数AF_DataRequest()的第三个参数,和协调器的簇ID一样就知道是哪个终端发来的数据。

希望有用,谢谢。


ZigBee模块无线传输星形拓扑组网结构简介

zigbee模块无线传输协议的星形拓补是其三种拓补中最简单的拓补结构,包括一个Co-ordinator(zigbee中央协调器)网络节点和多个enddevice(zigbee模块终端)网络节点。每个endevice(zigbee模块终端)网络节点只能与co-ordinator(zigbee模块协调器)网络节点链接通信,其他endevice(zigbee终端)网络节点不能链接。如果需要在两个endevice(终端)网络节点中间进行相互通信,必须通过链接co-ordinator(zigbeee模块协调器)网络节点接收和转发信息。


 

Zigbee模块无线传输技术的拓补结构存在一个缺陷:网络节点中间的无线传输模式仅有一个独一无二的路由。Co-ordinator(协调器)网络节点的状态可能成为整个网络的影响点。星形网络拓扑实现的网络不需要使用Zigbee模块的网络层无线传输协议,因为IEE802.15.4的协议层已经在星形拓补结构的基础上实现,但这增加了开发者在应用层中的更多工作,包括信息接收和转发。

以上是关于关于Zigbee无线通信中,多个终端设备向协调器发送数据问题!的主要内容,如果未能解决你的问题,请参考以下文章

ZigBee模块无线传输星形拓扑组网结构简介

ZigBee模块无线传输星形拓扑组网结构简介

C++ MFC开发串口通信之多个编辑框输出

ZigBee模块通信协议的树形拓扑组网结构

ZigBee模块无线通信组网结构技术之Mesh拓扑网状

关于zigbee 网络拓扑节点