一种无线传感器网络CSMA协议的设计与实现
复上面的操作。
在具体实现CSMA协议时,本文结合信道监测提供的接口对协议做了一些优化调整。另外,由于无线传感器网络中节点间距离很短,一般忽略传播延迟,因此具体的实现与标准的CSMA协议有些不同,但原理一致,其实现如下:
如果节点要发送数据包,需要先进行载波监听,首先随机选择一个采样窗口数(即信道采样次数),该采样数属于某一个范围,本文选择为8~32。采样数随机选择的目的是减少冲突,举例说明:假设信道目前空闲,A、B、C三个节点都是邻居节点,且A、B节点有数据包要发送给节点C;A、B两个邻居节点同时开始监测,如果采样窗口数固定,根据信道监测的规则,信道空闲必须等到采样数用完才能下结论,那么A、B节点都在用完所有的采样数后得岀信道空闲的结论,然后都发送数据包,这样数据在节点C处就发生了冲突,最后A、B两节点就必须依靠随机回退一段时间后再次监测信道。采用随机的采样窗口数可以降低上面情况的发生率。因为采样窗口数小的节点(假设为节点A)先得出信道空闲的结论并发送数据包,采样窗口数大的节点B在后面的采样中发现信道繁忙(因为节点A已经占用了信道)就回退,避免了发生冲突。
回退时间的选择也是值得推敲的一个参数。CC2420是以数据包为单位发送的射频芯片,其最大数据包的长度为128字节,加上同步头5字节,总共是133字节。CC2420的发送速率是250 kb/s,即发送一个字节的时间为32 μs,因此发送一个最大数据包的时间为133×32=4 256 μs。根据信道采样规则,只要一采样到信道占用,就可以结束本次监测并得出信道繁忙的结论,因此回退时间应该要大于数据包的发送时间。又因为采样窗口数已经采用了随机选取,所以回退时间可以使用固定值。因此可以将回退时间固定为4.5 ms,回退功能的具体实现只需要一个定时器辅助就可以了。
最后,要处理信道强度阈值更新的问题。如果MAC层连续对信道监测的结果都是繁忙,且累计超过一个预设的阈值Y,就必须要调用MAC层提供的接口来对minSignal阈值进行更新,参照上节信号强度阈值的更新机制。根据实际的测试分析,Y的取值一般为30~60。
结语
本文灵活利用CC2420射频芯片的特点,设计并实现了一整套从物理层到MAC层的无线传感器网络CSMA协议的实现;并详细阐述了协议中信道监测使用的所有判定规则及各关键阈值参数的选择。经过实际的多节点通信测试,该CSMA协议可以正确、稳定地进行信道活动监测,并实时动态地调整阈值;并且该CSMA协议的设计可以完全嵌入应用到其他MAC层协议中,辅助其他协议完成信道竞争或信道检测。
- 无线传感器网络CSMA协议的设计(02-15)