本节说明简单应用程序的仿真实验过程,即通过用户终端(上位机)远程读取传感器采集值或控制节点的Led灯开/关。

图14-5 CoAP协议实验网络
在Cooja 仿真器中,我们建立如图14-5 所示的网络,网络中的节点是sky类型的传感器节点。节点1为传感器网络的网关(边界路由器),其上运行ex⁃amples/ipv6/rpl-border-router/border-router.c 程序。传感器网络使用6LoWPAN协议栈,每个节点都使用根据MAC 地址自动生成的IPv6链路本地地址,所以节点的地址都是以fe80 开头的地址。为了能够通过互联网上的远程用户终端访问传感器节点,需要将链路本地地址映射为IPv6 的全球单播地址,这一工作由网关完成。首先通过仿真器的菜单项tools→serial scoket→sky1 打开网关的侦听端口,然后打开新的ubuntu 终端窗口,使用如下命令即可完成地址映射,也就是建立6LoWPAN网络和外部网络的桥接:
make connect-router-cooja
本例中节点3上运行客户程序examples/er-rest-example/er-example-client.c,除节点1和节点3外,其他节点上都运行服务器程序examples/er-rest-example/er-example-server.c,该程序主要是激活定义的各种资源。网络中节点使用RPL路由协议组网。
选择Cooja 仿真器的simulation→start simulation 菜单项就可启动仿真过程。仿真运行过程中,远程用户通过浏览器访问网关节点1,浏览器窗口中就会列出网络拓扑信息,如网关节点的一跳邻居节点信息以及由路由协议RPL 协议建立的从网关节点到各节点的路径信息,如图14-6所示:
(https://www.xing528.com)
图14-6 RPL路由信息
传感器网络中的节点类似于Web 服务器,基于定义的各种资源向客户提供服务。在安装了copper 插件的Firefox 浏览器中连接网络节点,单击discover按钮后,就会在浏览器discovering 区域列出在其上运行程序中激活的已定义资源,如前文中介绍的控制传感器节点Led 灯的res_toggle 资源,该资源的uri-path 为actuators/toggle。图14-7显示了连接网络中节点4并单击discovering后的结果。

图14-7 网络设备连接
因为与res_light 资源对应的处理函数是res_get_()_handler(),所以通过浏览器上的GET 按钮就可获得光敏传感器采集的数据。同理,通过浏览器上的POST 按钮就可远程控制传感器节点上的红色Led 灯。如图14-7 中选中actua⁃tors/toggle,然后单击浏览器上POST 按钮就可控制节点4 上的红色Led 灯,图14-8(a)是单击POST 按钮之前的状态,图14-8(b)是单击POST 按钮之后的状态。由图14-5可知,节点1通过节点7向节点4发送控制指令,控制节点4上的红色Led灯打开。

图14-8 设备控制
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
