中南林业科技大学-教务处doc
首页
阅读:
admin
2019-10-21 18:27

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  中南林业科技大学 大学生研究性学习和创新性实验计划 项 目 结 题 报 告 项目名称 项目主持人 所在学校院系 项目级别 (国家级 (省级 □校级 立项年份 指导老师 联系电话 填表日期 中南林业科技大学 教务处制 填写说明 一、要按要求逐项认真填写,填写内容必须实事求是,表达明确严谨。空缺项要填“无”。 二、格式要求:表格中的字体用小四号仿宋体,1.5倍行距;需签字部分由相关人员以黑色钢笔或水笔签名。均用A4纸双面打印,于左侧装订成册 三、本页不装订。 项目名称 面向森林火灾监测的无线传感器网络 立项时间 2015年6月 完成时间 2016年6月 项 目 主 要 研 究 人 员 序号 姓 名 学号 专业班级 所在院(系) 项目中的 分 工 1 罗宇舟计算机科学与技术 计算机与信息工程学院 硬件编程,调试,报告撰写 2 孙晓阳计算机科学与技术 计算机与信息工程学院 硬件编程,实现节点组网 3 郝攀刚计算机科学与技术 计算机与信息工程学院 编写Java上位机程序,报告撰写 4 杨杰计算机科学与技术 计算机与信息工程学院 编写Java上位机程序 5 二、研究成果简介 项目成果类型 (产品 (系统软件 □论文 (专利 □其它 (注:请在相应成果复选框内打“√”,其它请具体说明) 项目成果名称 项目研究的目的、意义;研究成果的主要内容、重要观点或对策建议;成果的创新特色、实践意义和社会影响;研究成果和研究方法的特色。限定在2000字以内。 项目研究目的及意义 构建一个面向森林火灾监测的无线传感器网络,实现森林大火的早发现,早预警,早控制,提供一个高效、经济的林火监测方案,为林业部门对森林资源进行有效管理提供有力支撑。 研究成果的主要内容 利用无线传感器网络来对大面积的森林进行火灾监测。该项目通过嵌入式开发板自主搭建一个基于无线传感网络的火灾监测系统。该网络通过与若干温度传感器和一个控制中心协调运作,构成了森林火灾监测系统。 本项目利用森林生态系统和发生火灾时的一些特点,将大量传感器(Sensor)部署在森林中,这些传感器通过自组织方式构成网络,每个都作为一个传感器节点(Sensor node)存在。传感器节点收集自己周围的数据后,均以数据包的形式发送给汇聚节点(Sink node)。 为了保证数据传输的准确性与稳定性,本系统除了在程序代码、路由协议的选取上采取措施外,另外提出该系统的一种可能的应用场景:将森林分区域管理,每片区域由若干传感器节点控制,这样可以使得数据传输更加高效,火情定位更加准确。因为森林中地形复杂,障碍物多,节点建议选择地势较高,有遮掩物的地方进行安装。 成果的创新特色 该无线传感网络采用Zigbee协议搭建,网络具有鲁棒性。为了保证数据传输的可靠性,采用了多个机制:CSMA-CA机制,帧确认和数据校验机制。 该无线传感网络执行基于AODV专用网络的路由协议,并对AODV协议进行了简化(AODVjr)。简化后的AODVjr协议仅保留了AODV协议按需路由的动态特征,而将HELLO消息、路由错误信息、问询序列号等AODV协议为了适应节点移动性提出的优化措施统统省略,对AODV协议进行了最大限度的简化。因此,AODVjr算法具有灵活的路由查找功能,其按需产生路由寻径的方式提高了协议效率,能快速适应动态链路环境并支持多播功能。虽然在节点移动过程中,存在丢包和能量受限问题,但考虑到本项目中无线节点的有限移动性,AODVjr协议是非常适用的,功耗得到了最大限度的降低。 该传感器网络采用树型拓扑结构,所有传感器节点(Sensor node)采集到的数据周期性地汇总到汇聚节点(Sink node) 该项目实现采用自上而下的编程思路。首先结合项目的实现目标,分析各种可能的实现方法,然后通过大量参考文献和网络资料确认可行性最高的方案。 该项目结合硬件编程和上位机编程的思路,通过串口实现硬件和PC端的对话,使得传感器采集的数据可以得到汇总和分析。 该项目成果具有可扩展性,节点数目、网络拓扑结构、采集数据类型、传输距离等都可以视情况进行扩充和改进,以最大程度地适用于节点所在的环境。 该项目成果具有一定的研究价值,通过将Zigbee协议用于嵌入式系统中,采集各种类型的传感器数据,可以直观分析协议在具体应用场景下的性能和表现,以及拓扑结构的适用性。 三、项目研究总结报告 预定计划执行情况,项目研究和实践情况,研究工作中取得的主要成绩和收获,研究工作有哪些不足,有哪些问题尚需深入研究,研究工作中的困难、问题和建议。(字数不限,可加页面) 预定计划执行情况 预定计划全部完成。通过6块嵌入式开发板成功搭建一个无线传感网,其中一块作为Sink节点,其余作为Sensor节点,Sensor节点能采集与之相连的温度传感器上的数据,并发送给Sink节点。Sink节点通过串口向PC机上位机程序传送数据,对传送过来的温度数据和网络拓扑结构进行实时显示,对超标值进行报警,周期性地生成日志文件。 项目研究和实践情况 本项目搭建的无线传感器网络具有功耗低,传输距离远,延迟低,丢包率低的特点。Sensor节点可以按需要加入或退出网络,PC上位机可以实时反映当前网络的节点数目,拓扑结构和传感器采集的数据,对异常数据进行报警和存档,方便管理人员及时采取应对措施。下面是该项目的整体实现步骤和方案。 整体系统的组成和实现原理 本项目由PC机终端、Sink节点/Sensor节点、传感器模块构成。 整个系统的工作原理:本系统主要由1个Sink节点和5个Sensor节点构成。5个传感器模块分别与5个Sensor节点相连,负责采集烟雾浓度信号、光强信号、温度信号、火焰信号等。Sensor节点周期性地提取传感器模块采集到的数据,并对数据进行处理,加入节点编号等信息,发送给Sink节点。如果Sensor节点和Sink距离超过了发射功率所能传播的范围,Zigbee协议会启动路由机制,调用最佳路径上的节点进行路由。同时,各节点会周期性地将自己的网络地址和父节点的网络地址一并发给Sink节点。Sink节点接收到环境数据和网络拓扑信息后,将数据分类并通过串口传给PC端。PC上位机程序对数据进行分类处理,周期性地保存日志记录,在数据异常时报警,并在显示屏显示出来,至此,本系统实现了PC端对传感器网络状态的实时监控。本系统的Zigbee组网部分的整体框图如图1所示。 图1 Zigbee组网部分的整体框图 硬件电路设计 ZigBee模块选用TI公司的CC2530芯片。CC2530 是TI公司推出的符合IEEE 802.15.4标准的2.4GHz射频收发器。CC2530芯片内部集成了RF收发器、增强型的51内核、可编程闪存以及8KB的RAM,是 RF4CE和ZigBee 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的材料成本建立强大的网络节点。CC2530 具有不同的运行模式,使得它尤其适应超低功耗要求的系统。 根据器件手册,CC2530芯片内的1.8V的稳压器需用去耦电容增加其稳定性,故在40脚接一个1uf的电容。管脚22、23以及32、33用于外接晶振和电容以分别构成32MHZ、32.768KHZ的振荡电路。管脚25、26是差分信号输入脚,在使用不平衡单极子天线时,需用巴伦匹配电路进行阻抗匹配,文中选用分立电容和电感来实现。具体应用电路图如图2所示。 图2 CC2530芯片简单外围应用电路 需要注意的是:为保证电路正常工作,在布线时需保证模拟信号与数字信号的互不干扰;而且需保证模拟信号与数字信号的共地。同时在制作PCB时,外露的芯片安装衬垫必须连接到PCB的接地层,并且通过此处接地。USB接口电路如图3所示。Sink节点和Sensor节点的实物图如图4所示。 图3 USB接口电路 图4 Sink节点和Sensor节点的实物图 软件设计 本系统的软件设计主要分为硬件编程和上位机编程两部分。其中,Zibee组网部分的程序主要包括:温度数据采集程序、数据处理程序、发送函数、网络地址获取程序、任务事件响应程序、串口显示程序等,程序的编写在IAR集成开发环境中完成。软件部分的程序主要包括:数据处理程序、串口接收程序、拓扑绘制程序、日志生成程序、报警程序、刷新时间及温度上限值设置程序等。利用CC2530芯片内自带的AD转换器来实现温度数据的转换,其内部AD控制程序由函数myApp_ReadTemp()实现。ZigBee模块将采集到的温度数据通过调用ZigBee协议栈中的API——AF_DataRequest函数发送至其他ZigBee节点,实现采集数据的发送。各节点接收到触发AF_INCOMING_MSG_CMD事件,然后调用事件处理函数,根据发送方的Cluster ID不同做出不同的处理机制,并最终分别实现温度数据采集、获取网络地址和触发串口通信。接收数据的程序流程图如图5所示。 图5 接收程序流程图 PC上位机部分的程序包括:Windows.java ,SimpleRead.java ,PlaySound.java, Data.java, DP.java, myJpanel.java六个类。下面对这六个类分别进行介绍。 Windows类: 该类中的initialize()方法的作用主要是对该本程序的窗口进行设计排版。包括按钮,文本框,表格和JPanel; 其中Jpanel是用来在里面画拓扑图和警报器。在myJpanel,java类中将详细说明。表格的模型用的是new DefaultTableModel(body,head)类来实现。用的是默认的,这样容易对表格进行显示myThread,panelThread,soundThread,SimpleRead用myTableModel.setValueAt(ReadStr[i][j],i,j)方法把要显示的数据显示到表格上。用fw = new BufferedWriter(new FileWriter(fileAdress+fileName, true)); fw.write(Text); fw.newLine(); fw.flush(); 把数据写到以时间为文件名的文本中。用来以后对历史数据的分析。panelThread线程。主要是调用myJpanel类中的repaint方法对拓扑图进行动态绘画 soundThread线程是用来播放声音。当打开警报器并且温度太高时就会播放警报声。 该类的构造函数是new SimpleRead(String comName);当该类的线程启动时,会根据传过来的串口的名称。对串口的数据进行时时接收。 byte[] readBuffer = new byte[75]; while (inputStream.available() 0) { inputStream.read(readBuffer); } 该语句是把接收的数据存到readBuffer字节数组中。然后把原始数据存到 String initialData[]的数组中。当传来的数据表明是有节点的地址和父亲的节点时,进入Data类中的setPTP()方法中。 Data.java类: 该类主要是存储每个节点的相对位置。和一些警报的数据。都是用定义成静态。其中setPTP方法。是用深度优先搜索方法。对拓扑图的结构进行搜索。然后写出他们的相对位置。 主要是用来对原始数组initialData字符串的数据进行处理。以便能在表格中按照自己的格式显示出来。 PlaySound.java类: 主要是用来播放警报声,当调用其中的play()方法时就会播放。 myJpanel.java类: 在myJpanel中进行绘图。把拓扑图和警报器的图显示出来。其中拓扑图中的各个节点的坐标就是Data类中的的节点坐标。根据Data类中给的数据吧节点显示出来。 主要成绩和收获 通过本项目,小组成员对移动Ad Hoc网络技术,嵌入式技术,Java编程语言又有了更深的理解。在以往理论研究和学习的基础上,小组成员动手实际搭建无线传感器网络,可以直观地理解各个技术的细节问题。本系统最终的Java GUI界面如图6所示。可以看到,各个Sensor节点采集到的传感器可以分类在GUI上显示出来,并且数据异常时,表格中实时动态刷新的数据会以红色显示,网络拓扑图上相应的Sensor节点图标也会以红色显示,实现了对火焰蔓延趋势的判断(通过监测各项传感器的数据变化曲线),以及火焰蔓延范围的判断(拓扑图标红的区域)。当节点位置或者拓扑结构发生变化时,节点会自适应地调整,并且重新组网,JAVA GUI程序上的拓扑图也会相应地发生改变。图7和图8分别为不同拓扑结构下的JAVA GUI。 图6 Java GUI界面 图7 改变节点位置后的JAVA GUI 图8 改变节点拓扑结构后的JAVA GUI 此外,每隔一段时间(该时间可以设置,以毫秒为单位)表格中的数据会进行刷新,并且可以设置相应的温度报警上限阙值。该Java上位机程序还可以自动保存日志文件,每天创建一个新的TXT格式的文档。创建的日志文档如图9所示。 图9 日志文件 研究工作中的不足 当某一个节点退出网络后又重新加入时,PC上位机程序无法立即监测到。原因是该节点的网络地址较之前可能发生变化。此外,当Sensor节点数目过多时,PC上位机的数据显示容易发生延迟,原因是数据量过大,Sink节点无法在短时间内将所有数据传送到PC端。 研究工作中的困难、问题和建议 本项目还有很大提升空间,比如可以对Zigbee协议栈的MAC层、NWK层进行改进,对路由机制进行完善,甚至可以移植改进的路由算法到CC2530芯片上,以提升网络性能,使网络运行更加稳定。 四、经费使用情况 经费合计 10000元,其中,学校配套资助 0 元,学院(所)配套资助 0元,其他经费 0 元。 经费支出情况: 材料费(Zigbee模块、传感器套件、OpenWRT开发板等)共5184.79元; 图书资料共计522.7元; 差旅费共计619元。 五、指导教师及学院(系)审核意见 项目指导教师对结题的意见,包括对项目研究工作和研究成果的评价等。 负责人签章: 年 月 日 项目主持人所在学院(系)对结题的意见,包括对项目研究工作和研究成果的评价等 负责人签章: 年 月 日 六、学校结题审核意见 学校对项目研究的任务、目标、方法和研究成果水平等进行评价,是否结题。 年 月 日 ZigBee模块2 烟雾传感器 Sink节点 串口 PC机 ZigBee模块1 温度传感器 ZigBee模块3 光强传感器 ZigBee模块4 火焰传感器 ZigBee模块5 温度传感器 否 是 是 否 否 协议栈初始化 LCD初始化 IO口初始化 节点启动成功? 接收消息 触发事件 轮询报警机制 事件处理 接收到OTA? 事件处理完? 开始 是 串口初始化

  请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。用户名:验证码:匿名?发表评论