物联网专题实践tinyos传感器网络实现图书馆座位管理系统_第1页
物联网专题实践tinyos传感器网络实现图书馆座位管理系统_第2页
物联网专题实践tinyos传感器网络实现图书馆座位管理系统_第3页
物联网专题实践tinyos传感器网络实现图书馆座位管理系统_第4页
物联网专题实践tinyos传感器网络实现图书馆座位管理系统_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、无线与传感器网络实验实验报告题 目基于TinyOS光感传感器的图书馆座位管理系统学 院计算机学院专 业物联网工程班 级学 号姓 名指导教师完成日期 一、项目背景及应用前景TinyOS具有微型化、支持轻量级并发操作、灵活、低功耗等优点,已经被成千上万的研发人员采用,应用于范围广阔的无线传感器网络中。每个TinyOS程序至少应该具有一个用户组件,该用户组件通过接口调用下层组件提供的服务,实现程序的功能,如数据采集、数据处理、数据收发等。用户组件的开发为TinyOS程序设计的重点。TinyOS提供一些常用组件,如执行组件、传感器组件、通信组件。执行组件用于控制LED指示灯、继电器、步进电机等硬件模块

2、;传感器组件用于采集环境数据,如温度、亮度等;通信组件则实现与其它节点通信。TinyOS提供两种通信组件:通过无线电收发器通信的组件和通过UART口通信的组件,后者则应用于槽节点中。硬件抽象层对上层组件屏蔽了底层硬件的特性,从而实现上层组件的硬件无关性,以方便程序移植。2、 功能描述本组选题为基于TinyOS光感传感器的图书馆座位管理系统程序启动后,节点终端有规律的在一段时间内接收光感信号,如果处于接收时段收到一个遮掩信号,则向中转节点发送一个代表有人的信息包,否则发送一个代表无人的信息包,然后通过串口与PC连接,使用监听工具对应的在PC上表示出有人或者无人的信息三、结构描述通信结构从通信的结

3、构来说,系统共分为3个部分:终端节点收发数据,根据收到的数据让某个灯亮;中转节点中转计算机端和终端节点收发的数据;计算机端接收到中转节点发来的数据并进行处理。系统结构概念如图3-1所示。 图3-1 系统结构概念图四、系统的设计与实现本系统由三个部分组成:计算机端、1个中转节点和4个终端节点。系统具体设计为:计算机端从程序一开始的时候,通过中转节点分别向四个节点发送reset信息,终端节点接收到数据后把所有座位置为空,终端节点定期检测光强变化,并判断是否有人占据座位,相应的改变亮灯位置,向中转节点发送数据,计算机端通过端口监听得到数据并进行处理,并在屏幕上显示。4.1 终端节点终端节点是我们进行

4、效果演示的部分。它负责发数据,感应外界对它进行的操作(光感强度的变化)。实现这个部分的功能代码如下:void sendToHost(uint16_t operate) if (!busy) Msg* btrpkt = (Msg*)(call Packet.getPayload(&pkt,sizeof(Msg); if (btrpkt = NULL) return; btrpkt->nodeid = TOS_NODE_ID; btrpkt->operate = operate; if (call AMSend.send(AM_BROADCAST_ADDR, &pkt,

5、 sizeof(Msg) = SUCCESS) busy = TRUE; void succeed() call Leds.led1On(); sendToHost(2); void failed() call Leds.led1Off(); sendToHost(1); 表4-1 DeskC.nc部分代码4.2中转节点对于中转节点的代码主要是基于BlinkToRadio实现的,部分代码如表4-2所示。typedef nx_struct Msg nx_uint16_t nodeid; nx_uint16_t reset; nx_uint16_t operate; Msg;void resetR

6、ats() scoreAll=0; score=0; if (!busy) Msg* btrpkt = (Msg*)(call Packet.getPayload(&pkt,sizeof(Msg); if (btrpkt = NULL) return; btrpkt->nodeid =TOS_NODE_ID; btrpkt->operate =0; btrpkt->reset = 1; if (call AMSend.send(AM_BROADCAST_ADDR, &pkt, sizeof(Msg) = SUCCESS) busy = TRUE; printf

7、("Time out! Clear all information!n"); printfflush(); 表4-2 Control.nc部分代码3)将1)对应id号烧入4个节点终端,将2)烧入中转节点,终端节点只需在准备通信前装上电池。4.3计算机端计算机端是系统数据处理的主要部分。首先由它向中转节点发送reset信息,再由中转节点转发给终端节点。终端节点收到数据后将处理后的数据发给中转节点,计算机端通过端口监听得到数据并进行处理,显示当前的各个“座位”信息在屏幕上。为了实现这个功能我们需要调用在/opt/tinyos-2.1.0/support/sdk/java/net

8、/tinyos/tools文件夹中的Printfclient.java文件,让用户看到具体的信息。4.4 系统使用完成程序烧录之后,确保所有终端节点装有电池以及中转节点与计算机端成功相连,接下来的步骤如下:1、编译并运行Printfclient.java。向命令行输入javac Printfclient.java编译成功后,再向命令行输入java net.tinyos.tools.Printfclient运行java文件,可以看到目前各座位的信息。2、运行中转节点的reset信号,使“座位”信息清空。3、用手遮掩使光强变化观察节点变化和屏幕上显示的信息。五、测试在测试过程中,我们发现当传回的是

9、无人的信号时并不会立刻就在屏幕上显示出来,而是经过一段时间之后才在屏幕上显示多个座位无人的信息。我们猜测是中转节点代码不完善导致信息拥堵。测试数据如图所示:六、总结与收获6.1 遇到的问题和解决方法1)如何判断光强在编写代码时我们首先考虑找到发送信息的光强字段,然后通过判断光强进行下面一系列的操作,但是没找到,参考了BlinkToRadio例子后我们发现这个信息在event void Read.readDone(error_t result, uint16_t data)中的data中,经过考虑,我们把阈值定为25,以判断此时有人无人。2)检测时间的确定之前确定检测时间定为20秒,发现时间过长不利于观察,我们又把数值定在了5秒6.2 总结本次课程中我们对TinyOS有了初步的接触,学习了节点与系统之间的通信方式,节点的各项基本功能,并根据所学内容编写了一个小样例程序。在编写的过程中我们发现了一些问题并一一解决,其中最主要的技术问题已经罗列在上文中。同时,我们还遇到了一些别的问题。例如在计算机端数据接受的过程中,中转节点的消息堵塞造成不能立刻返回信息,数据不及时。在课程中,我们学习了TinyOS的理论知识,通过查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论