在TinyWSN网络中,一个路由节点同时支持的在线节点数目是有限的,常见是64~96个在线节点,如果全部只使用在线节点,往往不能满足传感器网络的容量要求,这时可以通过增加睡眠节点的数量来满足容量的要求。这也是TinyWSN典型的组网模式,大部分节点都配置成睡眠节点,达到增加容量,已经降到功耗的要求, 只有保留少量是在线节点,以满足较高的响应速度的要求。如下图所示, 整个网络含了4095个睡眠节点和4个在线节点:

睡眠节点
睡眠节点,又称离线节点,它的实际处于不连续接收模式,或DRX模式,它周期打开一个很小的接收窗口,扫描是否有无线数据帧的前导码,如果有就切换到接收模式;否则关闭无线,等待下一个接收周期。由于接收窗口非常小,它绝大部分时间都是处于睡眠模式,使得它平均功耗保持较低水平(小于2uA),下面介绍通过几个示例,介绍睡眠节点的上下行数据的发送,收发数据利用节点的命令模式进行,命令的语法可以格式参加:http://www.tinywsn.net/wordpress/index.php/docs/manual/node/node-usrpkt/usrpkt-intr/
上行数据
上行数据发送比较简单,外部模式只需从串口输入数据,或者内嵌模式通过消息发送,节点模块收到数据后自动激活,进行网络鉴权和接入过程,当完成数据发送后,又恢复到睡眠模式。上行数据的周期由外部自行输入决定,常常是几个小时一次,甚至一天一次。例如,有一外部测量模块,每隔8小时进行温湿度测量,然后发送测量结果。
命令响应 | 对象 | 说明 |
---|---|---|
>#00000001^val,rh,68.1%,23.0C | 节点 | 发送温湿度测量数据 |
> +c0aa4001^val,rh,68.1%,23.0C | 网关 | 网关接收到测量数据 |
下行数据
下面示例如何配进行节点LED开关的配置过程,首先需要明确的是,睡眠节点需要唤醒和接入网络之后,才能接收到下行数据,所以数据下发时,都需要一个唤醒过程。下面示例了两种配置过程
单点发送
命令响应 | 对象 | 说明 |
---|---|---|
>#7f000001$setf,0001 | 网关 | 唤醒节点保持在线状态 |
>#7f000001$wkup,c0aa4001/bfx | 网关 | 唤醒节点c0aa4001 |
> +c0aa4001$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 | 网关 | 接收到节点的唤醒响应 |
>#c0aa4001^set,led,1/p | 网关 | 发送LED配置命令 |
> +c08a1001^set,led,1 | 节点 | 节点接收到配置命令 |
> +c0aa4001$resp,00,1b,00,00 | 网关 | 收到节点消息处理结果 |
>#7f000001$rstf,0001 | 网关 | 释放所有的唤醒节点 |
广播发送
广播唤醒时,所有的睡眠节点同时激活,它们竞争接入网络,由于网络支持的接入容量是有限的,只有部分能成功接入,有些节点失败后,重复进入睡眠,所以需要多次唤醒,如下所示,唤醒的命令格式: addr$wkup,nod_addr[,token][/bfndx]
其中有一个token参数,作为本次唤醒的标识,这样可以避免多次被重复唤醒。
命令响应 | 对象 | 说明 |
---|---|---|
>#7f000001$setf,0001 | 网关 | 让唤醒节点保持在线状态 |
>#7f000001$wkup,fffffff,01/bfx | 网关 | 唤醒所有的睡眠节点 |
> +c0aa4001$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 +c0aa4002$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 +c0aa4003$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 … | 网关 | 接收到节点的唤醒响应 |
>#7f000001^set,led,1/bfnp | 网关 | 当无新增唤醒节点时,广播配置LED的命令 |
> +c08a1001^set,led,1 | 节点 | 各个节点接收到配置命令 |
> +c0aa4001$resp,00,1b,00,00 +c0aa4002$resp,00,1b,00,00 +c0aa4003$resp,00,1b,00,00 | 网关 | 收到各个节点处理结果 |
>#7f000001$disc/bfn | 网关 | 释放本次所有的唤醒节点 |
>#7f000001$wkup,fffffff,01/bfd | 网关 | 继续唤醒剩余的节点,注意使用相同的token,这样前面释放的节点就不会再次被唤醒了 |
> +c0aa4021$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 +c0aa4022$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 +c0aa4023$wkup,c08a3001,ff,00,03,ff,6a,6c,01,05 … | 网关 | 继续接收剩余节点的唤醒响应 |
… | … | 重复上面步骤,直至所有节点完成配置 |
>#7f000001$rstf,0001 | 网关 | 释放所有的唤醒节点 |