这几天在做collector和sensor的连接实验时,collector与sensor之间的连接没有问题。但是把collector断电一段时间,再重新上电的时候会发现一些问题?
1.有部分sensor连接不上,另一部分还可以保持连接,不知道这是什么原因。
2.这部分连接不上的sensor,重新上电也没有起到作用还是连接不上,抓包也没有看到数据。
3.给sensor重新烧写固件之后,又可以连接上collector。这个时候就搞不懂是什么原因了。
4.是否与孤节点这个设定有关,在什么情况下会成为孤节点。
lin shi chang:
在这里补充一下,刚刚做了一个小实验。在两块launchpad中烧入collector和sensor的例程,可以正常连接。当collector重新烧写程序时,sensor的调试信息打印出State Changed: 5。通过查找发现5对应的是设备成为孤节点的状态如:Jdllc_states_orphan。之后sensor就连接不上了。还有我发现只要出现状态5,sensor就连接不上,就算到了指定的CONFIG_ORPHAN_BACKOFF_INTERVAL默认为300000时,还是没有连接上。
Alvin Chen:
你把collector断电后是否所有节点都有发出orphan scan 呢?case Jdllc_deviceStates_scanOrphan:/* Orphan scan */if(!CONFIG_FH_ENABLE){sendScanReq(ApiMac_scantype_orphan);}break;
以及你是否做了什么修改?
Alvin Chen:
回复 lin shi chang:
你这个测试结果时正常的,你的重新烧录估计NV以及collector都变化了,要是还能连接回去才奇怪呢。
lin shi chang:
回复 Alvin Chen:
1.我在原先的例程中去除了按键允许入网的功能,让collector一直处于允许入网的状态。
2.修改了report和polling的时间均为3s
3.还有个问题我想请教一下,在什么情况下sensor会变为孤节点。如果成为了孤节点要如何让他重新入网呢?解决这个问题很重要。
lin shi chang:
回复 Alvin Chen:
所以我就有个疑惑,要是collector做了一些修改需要重新烧入的时候,那么sensor不是也要重新烧入。这个操作就很繁琐,感觉没有必要浪费这个时间。我通过查找说可以使用SmartRF Flash Programmer 2做相关设定进行烧入,但是我没有成功。如下图,NV在flash的第30页,不知道我这有操作对不对。
lin shi chang:
回复 Alvin Chen:
我刚刚还测试了一下FH模式,进行了collector重刷固件的操作,固件除了增加了一条打印“hello”的调试信息,没有做任何修改。经过这个操作之后,sensor无需重刷固件就可以连接上。这两种模式的差异还挺大的。
但是考虑到功耗的问题,通过抓包可以看到,FH模式在没有发数据的时候,会一直发送一条数据(估计为跳频所需的数据),且频率很高,怎么修改都没有效果。所以这两种模式,如果要量产,根据你们的经验应该选择那种呢?
Alvin Chen:
回复 lin shi chang:
如第一条回复如果你没有配置跳频则会自动发送orphan的scan 去寻找网络,至于选择那种模式看你的需要,如果只想在一个频点运行则无需跳频
lin shi chang:
回复 Alvin Chen:
您好,我们要做的产品为了避免别的频点干扰会造成通讯失败,所以最后还是会考虑用跳频。只是功耗的问题一直解决不了。
还有烦请您帮忙解答下我前面的几个疑惑。
Alvin Chen:
回复 lin shi chang:
如果时PH mode抓不到rejoin 包是正常的:
sensor uses association request to rejoin in FH mode because Orphan scans are not used.
Alvin Chen:
回复 Alvin Chen:
你的SDK版本是什么?