分享:基于CC2530的zigbee信道、PANID扫描设备
快过年了,在这里送上年前最后一篇分享,也是第四篇,是一个关于zigbee信道扫描和PANID扫描的,主要目的是为了在复杂现场环境中辅助调试、安装zigbee设备的。采用的平台为TI公司的CC2530,协议栈使用的版本为“ZStack-CC2530-2.5.1a”。该设备具有以下功能:1、设备为终端节点型或路由型设备,可以手动配置信道和PANID,加入任意网络,且可以和协调器通信,测量现场环境中各个位置协调器或路由设备信号强度。
2、可以扫描zigbee的全部16个信道,检查哪些信道已经被占用,从而可以避开这些信道。
3、可以扫描zigbee任意信道内已经存在的网络的PANID,从而可以避开这些PANID。
在这里送上我在开发板上调试时完成的程序,希望能给大家一些思路。有兴趣的朋友可以一起交流下。(程序太大,所以分成5个包,大家要全部下载才能解压)
注释:
1、本设备主菜单分四个功能:正常启动,配置信道PANID,信道扫描,PANID扫描;还有一个确认件,和一个系统复位键(非单片机复位键);
2、关于配置信道、PANID的思路:文件“ZComDef.c"中,有关于信道和PANID初始化语句”uint32 zgDefaultChannelList = DEFAULT_CHANLIST; uint16 zgConfigPANID = ZDAPP_CONFIG_PAN_ID;“;
我们可以将其赋值去掉,然后再为其重新赋值,至于我们自己的信道和PANID需要事先保存在flash中。重新赋值的位置在”ZMain.c=>zgInit()=>zgInitItems( setDefault )"后面;
3、关于信道扫描,我们知道当终端节点或路由的设PANID为0xFFFF时,会随机选择信号较好的PANID加入,正式利用这一点,我们便可以做到检查信道是否被占用;
4、关于PANID的思想和信道扫描一样,也是利用0xFFFF。设备上电启动后会向指定的信道内的协调器发送请求包,收到回应后变可获知协调器的PANID,我们可以屏蔽掉设备入网的程序,让设备一直处于入网请求状态,变可以并一直可以不停的检测信道已经存在的PANID;位置在“ZDApp.c=>networkDesc_t* ZDApp_NwkDescListProcessing(void)=>for ( i = 0; i < ResultCount; i++, pNwkDesc = pNwkDesc->nextDesc )循环内”; lou0908 发表于 2013-3-7 21:59 static/image/common/back.gif
我试过 确实不行 找不到压缩文件 解压失败
重新上传了,你再下载试试 請問一下lz xbee 是否有玩過,有些 術語想請教 rei1984 发表于 2013-2-5 22:58 static/image/common/back.gif
請問一下lz xbee 是否有玩過,有些 術語想請教
xbee没玩过啊,呵呵 {:lol:}威武,正在学习中。。。 good mark ZIGBEE 2000人 技术交流群:174821337 欢迎大家加入共同解决学习工作中遇到的问题 LZ能否吧代码重新上传一下,我打不开 lou0908 发表于 2013-3-7 18:00 static/image/common/back.gif
LZ能否吧代码重新上传一下,我打不开
你再下一次试试看,不行我再上传,应该有不少人都下了呀 我试过 确实不行 找不到压缩文件 解压失败 lou0908 发表于 2013-3-7 21:59 static/image/common/back.gif
我试过 确实不行 找不到压缩文件 解压失败
可能是压缩的问题,文件太大只能分开压缩,我回头再上传一次试试看 楼主好人呀,最近也在学习呢,谢谢 rei1984 发表于 2013-2-5 22:58 static/image/common/back.gif
請問一下lz xbee 是否有玩過,有些 術語想請教
玩过,不过就是组网简单的测试了一下 水印。。 本帖最后由 yaodp 于 2013-4-1 00:21 编辑
不错啊,1分到手 seewolf 发表于 2013-3-13 14:49 static/image/common/back.gif
重新上传了,你再下载试试
ZStack-CC2530-2.5.1a,这个协议栈用IAR哪个版本开发的?兼容性怎样啊 yaodp 发表于 2013-4-1 00:21 static/image/common/back.gif
ZStack-CC2530-2.5.1a,这个协议栈用IAR哪个版本开发的?兼容性怎样啊
我用的IAR是C8051 8.1版本的,兼容性你指哪方面?对一个公司的产品而言一般用的都是一个版本的协议栈呀 seewolf 发表于 2013-4-1 12:06 static/image/common/back.gif
我用的IAR是C8051 8.1版本的,兼容性你指哪方面?对一个公司的产品而言一般用的都是一个版本的协议栈呀 ...
最新版本的协议栈+最新版本的IAR for 8051啊!
兼容性就是看看新协议栈和新版IAR是否兼容,有没有什么问题?
你的8.1版是全功能破解版还是交费了的? 目前而言没发现什么问题,我用的版本都很新吗?我知道协议栈版本是挺新的,IAR倒是没注意,呵呵~我的IAR是破解版的,中国有几个人用收费的软件呢,呵呵 seewolf 发表于 2013-4-8 09:42 static/image/common/back.gif
目前而言没发现什么问题,我用的版本都很新吗?我知道协议栈版本是挺新的,IAR倒是没注意,呵呵~我的IAR是 ...
楼主,若节点是被动的传输数据(类似红外传感器,扫描有人才让节点发送信号),但是因为节点好几个,若同时几个节点都像
协调器传输数据时,会产生数据冲突,这个有什么办法可以解决啊。 黄毛 发表于 2013-4-9 16:31 static/image/common/back.gif
楼主,若节点是被动的传输数据(类似红外传感器,扫描有人才让节点发送信号),但是因为节点好几个,若同 ...
这个问题其实协议栈内部有解决的,你仔细看手册。当节点遇到信道堵塞的问题时,协议栈会自动随机产生一个延时,然后延时后重新检测信道状况。不过延时的次数有上限,不过一般没事,最多丢一次数据而已。所以一般一个网络的建立初始时会不太稳定,可能会发生信道堵塞的问题,但随着时间的推移,会越来越稳定 seewolf 发表于 2013-4-9 16:42 static/image/common/back.gif
这个问题其实协议栈内部有解决的,你仔细看手册。当节点遇到信道堵塞的问题时,协议栈会自动随机产生一个 ...
首先谢谢你的回答。
你指的是什么手册啊。{:lol:} 黄毛 发表于 2013-4-9 23:59 static/image/common/back.gif
首先谢谢你的回答。
你指的是什么手册啊。
Z-stack的协议栈的手册呀,你不知道? 谢谢分享 谢谢分享!下载了学习下{:handshake:} LZ很慷慨,赞一个!要是把你的iar8.1也上传了就更好了,呵呵! seewolf 发表于 2013-3-13 14:49 static/image/common/back.gif
重新上传了,你再下载试试
还是无法解压啊,提示压缩文件损坏,楼主能不能重新传一下啊,或者给我发一份?burstonthewing@163.com,多谢啦! mark,到时候试试看,现在没时间 下载了无法解压,后缀名被论坛自动更改了,无法正常解压,论坛这方面怎么做的啊,不好用啊! xlqiang 发表于 2013-6-8 22:02 static/image/common/back.gif
下载了无法解压,后缀名被论坛自动更改了,无法正常解压,论坛这方面怎么做的啊,不好用啊! ...
你自己试试把后缀改回来不就行了 seewolf 发表于 2013-6-9 16:55 static/image/common/back.gif
你自己试试把后缀改回来不就行了
嗯,就是,我自己已经试着改了好几次了,就是改不对啊,单个文件好改,多个文件时文件名及其编号先后顺序不知道啊,我试着改了好几次都还是无法正确解压缩! 能不能发我一份啊jhzh951753@126.com 下载的都不能下载改文件名也试了就是打不开。 18602141485 发表于 2013-6-15 23:53 static/image/common/back.gif
能不能发我一份啊 下载的都不能下载改文件名也试了就是打不开。
已经发你邮箱啦 xlqiang 发表于 2013-6-14 18:47 static/image/common/back.gif
嗯,就是,我自己已经试着改了好几次了,就是改不对啊,单个文件好改,多个文件时文件名及其编号先后顺序 ...
已经发你邮箱啦 seewolf 发表于 2013-6-16 10:18 static/image/common/back.gif
已经发你邮箱啦
谢谢了。 seewolf 发表于 2013-6-16 10:18 static/image/common/back.gif
已经发你邮箱啦
楼主太给力! 楼主,给我来一份吧。liyun_can@139.com liyuncan 发表于 2013-7-24 19:06 static/image/common/back.gif
楼主,给我来一份吧。
发给你了,希望能有所帮助,呵呵 好东西! 不知道楼主上传的cc2530模块的原理图是自己设计的吗?貌似匹配电路比参考设计多了个π型匹配,不知道怎么设计的 {:3_48:} 顶一下 xingyuezh 发表于 2013-8-12 14:36 static/image/common/back.gif
不知道楼主上传的cc2530模块的原理图是自己设计的吗?貌似匹配电路比参考设计多了个π型匹配,不知道怎么设 ...
不是我设计的,是开发板资料里带的,呵呵 seewolf 发表于 2013-4-8 09:42 static/image/common/back.gif
目前而言没发现什么问题,我用的版本都很新吗?我知道协议栈版本是挺新的,IAR倒是没注意,呵呵~我的IAR是 ...
想请问楼主一个问题,如果在 f8wConfig.cfg手动指定了信道和PANID号,如果协调器在上电的时候在这个信道内已经有了这个PANID协调器,那么该协调器是一直处于创建网络状态,还是会创建另外一个PANID的网络呢 zzh90513 发表于 2013-8-28 21:17 static/image/common/back.gif
想请问楼主一个问题,如果在 f8wConfig.cfg手动指定了信道和PANID号,如果协调器在上电的时候在这个信道 ...
当协调器上电后,会检测当前信道内是否已经存在自己程序中设定的PANID,如果有,则会PANID+1组建网络,如果还有,一次类推。(但已经存在的PANID不一定是协调器组建的,也可以是路由型设备,这两种设备都可以维持网络) seewolf 发表于 2013-8-29 09:09 static/image/common/back.gif
当协调器上电后,会检测当前信道内是否已经存在自己程序中设定的PANID,如果有,则会PANID+1组建网络,如 ...
那我有个疑惑是:如果恰好我协调器掉电时有另外一个同样PANID协调器开启,那么原来协调器所管理的路由和终端设备不是永远无法重新加入到以前网络中了吗?
请问这个问题有解决办法吗 zzh90513 发表于 2013-8-29 10:43 static/image/common/back.gif
那我有个疑惑是:如果恰好我协调器掉电时有另外一个同样PANID协调器开启,那么原来协调器所管理的路由和 ...
我明白你的意思了,你是想在保持原来网络链接的情况下更换协调器设备对吧?这个问题有很多种情况,首先是你是否把网络链路保存了flash,如果是的话是一种情况,这时你必须重新配置原来网络中所有设备的频点和ID,这时会清除掉原来的链路,重新加入新的网络。如果你没保存flash的话,你先把原来网络中路由型设备断电,然后把新的协调器打开后再给原来的路由型设备上电即可 seewolf 发表于 2013-8-30 09:27 static/image/common/back.gif
我明白你的意思了,你是想在保持原来网络链接的情况下更换协调器设备对吧?这个问题有很多种情况,首先是 ...
还有一层意思是如果我产品路由端点预配置的PANID和信道在安装现场已经有另外其他协调器设备占用了怎么办? 或者说是在自己协调器掉电过程中有另外一个设备占用了该PANID怎么办?
我想的意思是被占用可以,但是协调器不要去创建一个PANID+1的网络,而是停留在等待创建网络过程,路由器也停留在加入网络过程。
另外还有几个问题想请假您:
1. 路由节点可以同时向协调器发送数据吗?
2. 路由器如果也预配置了安全密匙,是不是就算是有其它同样PANID和信道的其它协调器也不会加入其网络 zzh90513 发表于 2013-8-30 19:34 static/image/common/back.gif
还有一层意思是如果我产品路由端点预配置的PANID和信道在安装现场已经有另外其他协调器设备占用了怎么办 ...
首先关于你说的“在现场遇到自己预设的频点和ID已经被占用”的问题,这个问题就是我发这个帖子的目的了,我做的这个“频点ID扫描设备”就是为了现场安装时使用的,防止频点ID冲突。
其次关于你说的“自己的协调器掉电时别的同样频点ID设备上电”,这个问题其实也可以解决,只要你的现场还存在没掉电的路由不就行了,而且没有绝对完美和安全的解决方法的。
剩下的两个问题如下:
1、路由节点肯定不可能同时和协调器通信的,因为无线通信可以理解为单线通信,同一时刻只可能有一对设备在通信,或者是广播通信。
2、这个问题你问的有问题,首先如果现场有原来网络的路由器在工作,新上电的新的协调器只会建立PANID+1的网络,怎么会冲突!这个和路由器是否设置安全秘钥无关 seewolf 发表于 2013-9-1 00:16 static/image/common/back.gif
首先关于你说的“在现场遇到自己预设的频点和ID已经被占用”的问题,这个问题就是我发这个帖子的目的了, ...
非常感谢你的耐心回答,解决了我很多疑惑和问题,你说的这个现场安装信道ID扫描设备为我打开了一个大思路;因为我直接拿Z-Stack作应用层,具体Zigbee协议还没深入研究;经过这两天实验,还有两个问题需要您解答一下:
1. 刚才您说的,只要新的协调器上电时,这个信道和PANID内不管是否已经有同样的协调器和路由,只要已经被占用就会创建一个PANID+1的网络是吧?
我错误的理解成只要原先的协调器掉电,这个信道PANID就能被其他协调器占用;
2. 我今天实验出这种情况不能理解: 我打开了协调器的NV_INIT和NV_RESTORE两个预编译选项,此时我有一个正常运行的网络,我的通信方式是协调器已广播方式发命令,路由直接发送数据到地址0,也就是协调器,每个路由节点是否会数据是根据协调器命令里面的地址是否一致才回复,不会发生同时回数的情况。
然后我执行下面操作:整个网络全部关掉电源,此时我将一个同样信道和PANID的协调器上电,创建网络成功后,我再将原来的网络上电,发现此时两个协调器都可以给路由发送命令,而且路由回复的命令两个协调器都能收到,这个时候协调器重新上电也一样。 zzh90513 发表于 2013-9-1 12:49 static/image/common/back.gif
非常感谢你的耐心回答,解决了我很多疑惑和问题,你说的这个现场安装信道ID扫描设备为我打开了一个大思路 ...
你的第一个问题:就是你说的那样,只要原来的频点和ID被占用,(协调器和路由器其实是一样的,只是协调器做了一个组建网络的功能,网络组件之后,协调器和路由器是一样的功能,都是维护网络而已)新上电的协调器设备只能建立PANID+1的网络。
关于你的第二个问题不好意思,没看太明白什么意思,你能表述的再清楚点么,别丢字,呵呵~ zzh90513 发表于 2013-9-1 12:49 static/image/common/back.gif
非常感谢你的耐心回答,解决了我很多疑惑和问题,你说的这个现场安装信道ID扫描设备为我打开了一个大思路 ...
还有,这是我邮箱:langchaojian@126.com,有问题可以发邮件 seewolf 发表于 2013-9-1 19:54 static/image/common/back.gif
还有,这是我邮箱:,有问题可以发邮件
恩,意思就是一个网络中可以同时存在两个地址为0的协调器,前提打开了非易失存储功能,并且分别正常创建了PANID网络,此时两个协调器都可以正常在同一个网络中工作;
另外有办法检测路由器变成一个孤立节点吗?我看了很久也没发现怎么判断路由成为一个孤立节点
zzh90513 发表于 2013-9-1 20:39 static/image/common/back.gif
恩,意思就是一个网络中可以同时存在两个地址为0的协调器,前提打开了非易失存储功能,并且分别正常创建 ...
你说这种状况不应该出现的,里面肯定有什么别的问题存在,估计是你哪里配置的有问题吧 昨天下载了楼主分享的源码,今早看了一下,个人理解是这样:接收设备扫描环境中存在的ZIGBEE网络,然后列出各个PANID,然后组网,协调器发送个数据包过来,这样接收设备就能知道这个网络的RSSI值。
但是这样有个问题:协调器必须配合着发送一个数据包过来,否则无法检测RSSI值。如果协调器并没有烧写楼主提供的源码,同样是CC2530,同样是ZSTACK,但就是没有配合发送这个数据包的命令,那岂不是
无法知道这个网络的RSSI值。这样就不通用了。
其实,路由器在搜索网络的时候,不是会选择一个信号最强的网络进行连接吗?在这个过程中,不是已经检测到RSSI值了,不知楼主对这有何看法。 米饭 发表于 2013-9-12 15:42 static/image/common/back.gif
昨天下载了楼主分享的源码,今早看了一下,个人理解是这样:接收设备扫描环境中存在的ZIGBEE网络,然后列出 ...
嗯,我明白你的意思,设备在入网前确实会进行扫描,选择最佳路径,我尝试过去提取,但提取的值不太对,但是程序上来讲我找的位置应该没错,具体我也不太清楚,所以暂时就放弃了。不知道你是否做到了?可以分享给我么?呵呵~其次我写的这个程序只有检测信道、PANID是通用的,检测信号强度只是针对自己公司的设备的,目前国内的zigbee市场你懂得,都是自家的设备只能和自家的通信,别家的基本没法用,所以我这样的方式虽然不通用,但实际应用并无影响,目的就是辅助现场安装使用的,呵呵~ seewolf 发表于 2013-9-13 11:12 static/image/common/back.gif
嗯,我明白你的意思,设备在入网前确实会进行扫描,选择最佳路径,我尝试过去提取,但提取的值不太对,但 ...
之前公司生产了一批设备了,所以如果按照楼主的方法,就要更新那部分设备的程序,比较麻烦,所以正在尝试通用的方法。我也还没写出来,不知楼主是在哪个位置提取RSSI值的,我找不到地方呀。 {:cry:} 楼主,有没有在ZDApp_NwkDescListProcessing()中试过,试图让终端找信号最强的协调器啊?通过比较已经找到的设备描述中,比较pNwkDesc->chosenRouterLinkQuality 的值。{:smile:} 楼主,方便的话也给我发一份,谢谢.yc985055@163.com 谢谢分享,好好研究一下! yc985055 发表于 2013-10-22 19:18 static/image/common/back.gif
楼主,有没有在ZDApp_NwkDescListProcessing()中试过,试图让终端找信号最强的协调器啊?通过比较已经找到 ...
我的测试结果是pNwkDesc->chosenRouterLinkQuality始终为0,如果是低版本的协议栈组建的网络,这个值是正常的,不知你是否遇到这个问题? mark一下。 楼主能否发一份到我邮箱里 han724.love@163.com
谢谢 发我一份 chenkai345@qq.com 解压不了,麻烦传一份527753879@qq.com,谢谢 牛人,谢谢大侠分享 大家还是希望一睹lz的代码的啊,上传个网盘地址呗。{:smile:} MARK 谢谢分享 只有做记号的份,顶楼主。 LZ 或 那个哥们有LZ的代码能否共享一下,1637268743@qq.com 正在学习中。。。 好东西,学习中 有个疑问,如果默认0XFFFF随机加入,那根据信号强度区分加入,即使一个环境多存在多个PANID网络,会不会只加入信号强的那个?那这样岂不是只能获得该网络的参数信息了? black.lu 发表于 2014-6-13 14:48
有个疑问,如果默认0XFFFF随机加入,那根据信号强度区分加入,即使一个环境多存在多个PANID网络,会不会只 ...
不是的,入网流程其实是这样的,0XFFFF时设备地会先搜索信道内能搜到的所有网络,然后在当中选择信号最好的加入。因此其实并不需要加入某个网络,在入网前,就已经获得了能搜索到的所有网络的PINID了,我的信息也就是从这里提取出来的 seewolf 发表于 2014-6-13 22:30
不是的,入网流程其实是这样的,0XFFFF时设备地会先搜索信道内能搜到的所有网络,然后在当中选择信号最好 ...
哦,了解了,我也在做zigbee相关的项目,我试一下你的方法,谢谢分享{:lol:}
学习中,哪位好友能共享一下LZ的代码,haoprolly123@163.com,非常感谢{:smile:} 我只想问一下!要什么入手啊~~现在要用!看了一两天,看得云里雾里的! 看了个大概,还得仔细学习哈 LZ还有不也给咱发一份!哪位大神有的也给一份tangui123@sina.com 18602141485 发表于 2013-6-15 23:53
能不能发我一份啊 下载的都不能下载改文件名也试了就是打不开。
还有不!有的话 麻烦也给咱 传一份~~谢谢tangui123@sina.com tanguicaicai 发表于 2014-8-21 10:26
还有不!有的话 麻烦也给咱 传一份~~谢谢
文件很大,重新上传很麻烦,帖子里的附件你下载不了吗? 本帖最后由 tanguicaicai 于 2014-8-22 13:21 编辑
下了!不过用不了 解压不行~~LZ那我QQ415476297传我一下
麻烦哦 问大家一个问题,大家的Zigbee网络有几个节点? 留个记号,慢慢看 学习学习,好好收藏!! 学习zigbeeing 楼主,我正在学习ZigBee需要用你的代码学习一下,在论坛下的解压不了,能不能发一份给我,18811545562@139.com,谢谢 用好压haozip,如果不想下载HAOZIP。试下这个办法(注意在dos下面改,在WIN状态下改不了后缀名的):
假设我们下载的压缩包名称依次为a.haozip.01.zip,a.haozip.02.zip ..... a.haozip.05.zip
首先,文件名全部更改成s或者别的简单的字母。假设为s,最后一个压缩包就是s.zip 则xxxxxx.05.zip更改为s.zip,前面的压缩包后缀都应改为.z01 .z02 .z03 .z04,因为最后一个是05么,所以就到04,所有文件就变成了s.z01 s.z02 s.z03.s.z04,然后再解压s.zip 成功。 可以发我一份吗?1746286272@qq.com 谢谢分享。。。 cquanelc 发表于 2015-1-12 10:01
可以发我一份吗?
你直接下载好了,我发邮件很麻烦,还要重新上传,文件挺大的 seewolf 发表于 2015-1-12 12:09
你直接下载好了,我发邮件很麻烦,还要重新上传,文件挺大的
下载后不能解压哦
还有有没有相关文档说明 好人,解答很好,消除了我的一些困惑,谢谢 跪谢楼主了,最近一直在研究这个 求楼主给我也发一份,学习一下,跪谢搂主了595653042@qq.com seewolf 发表于 2013-3-13 14:49
重新上传了,你再下载试试
下载下来无法解压啊,什么情况?能重新上传吗? 一路看下来 学习不少东西感谢楼主分享~ 楼主能发一份给我吗?谢谢 !邮箱:antzhan@126.com 你可以直接下载附件呀
页:
[1]
2