本例是无线传感器网络数据采集实验,建立如图12-21所示的网络,网络中节点1是汇聚节点(sink),其他节点是普通网络节点,程序运行中建立以节点1为根的RPL DAG,普通节点基于RPL路由向汇聚节点1发送采集到的数据。节点1上运行的程序是udp-sink.c,其他节点上运行的程序是rpl-sender.c,这两个程序文件保存在examples/ipv6/rpl-collect/文件夹下。udp-sink.c 中建立DAG的代码与前例中边界路由器上运行的代码类似,这里不再叙述。
图12-21 数据采集实验网络
本例使用DGRM 模型运行仿真,使用DGRM 模型的原因是容易改变链路接收率,而且它也能够容易地在两个期望的节点之间形成链路而不包括其他节点,以下是仿真步骤:
步骤1:建立新仿真
运行Cooja,在仿真程序界面“File”下拉菜单中选择“New Simulation”(或者使用快捷键Ctrl+N),将会出现图12-22的窗口。
图12-22 新建仿真
在“Simulation name”文本框中输入该仿真的名字,在“Radio medium”下拉菜单中选择“Directed Graph Radio Medium(DGRM)”,然后单击“Create”按钮创建新仿真,新建的仿真窗口如图12-23所示:
图12-23 新建仿真窗口
步骤2:添加汇聚节点
添加汇聚点Sink类型的微尘、图12-21中的节点1,上传代码udp-sink.c。当然,也可以根据应用上传需要的任何代码,单击Compile 按钮编译代码添加sink节点。
步骤3:添加普通网络节点
可以在网络中部署任意多个普通节点,如图12-21 中的节点2 到节点25,在普通节点上上传程序udp-sender.c。微尘的放置位置并不重要,可以把微尘放在图中任意位置,因此不同于距离模型,可以在通信的微尘之间建立明确的链接,因此它们之间的距离没有影响。
步骤4:添加通信链路(www.xing528.com)
可在每组节点之间添加两个通信链路以便双向通信。单击菜单项“Tools-> DGRM Links…”打开DGRM 配置对话框,如图12-24 所示,点击“Add”按钮,选择源节点“Source”和目标节点“destination”,并且再次单击“Add”按钮,这样将会添加从选择的源节点到选择的目的节点的单向链路。对于双向链路,需要再添加一条从选择的目的节点到选择的源节点的单向链路,可以通过这个办法添加多条链路,添加完链路之后关闭这个对话框。
图12-24 DGRM配置
根据应用,可以改变链路的一些其他参数,比如RX ratio、RSSI、LQI 和Delay。这些参数影响单个链路的质量,例如RX ratio 影响ETX 值。因此,为了在不同的链路质量条件LQI 下测试应用,可以修改链路的这些参数。也可以通过“remove”选项删除现有的配置,使用“Import”选项可导入任何数据文件,这些数据文件可能已经指定了链路链接和相关的参数。
步骤5:运行仿真
使用“Simulation Control”窗口中的“Start”按钮可启动仿真,这将初始化所有微尘,并且给所有微尘分配新的Rime 地址,以及给其他的初始化进程分配内存。
步骤6:仿真输出
图12-25 传感器数据收集控制
可以在“Motes Output”窗口中看到微尘的输出和调试信息,当单击图12-25 上的“Send command to nodes”,sink 节点会输出“I am sink”信息启动信息收集,如图12-26 所示。可以基于节点的ID:node_id 过滤输出信息,从而观察特定的某个节点,也可以观察特定的调试信息。“Motes Output”窗口中的其他有用的功能有“File”“Edit”和“View”,使用“File”选项可以把输出保存在一个文件中,使用“Edit”选项可以复制全部输出信息或部分输出信息,也可以使用“Clear all”选项清除所有信息,可以使用保存在文件中的信息,根据实验目标观察实验结果或绘制实验数据图,如图12-27所示。
图12-26 数据收集
图12-27 实验数据曲线
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。