设计用于环境监测的无线传感网多跳数据采集、传输系统。在PC机上能显示当前测得的温/湿度、光照等环境信息。当光照超过一定阈值时,感知节点通过LED信号灯给以报警。

第一章 概述
1.1设计目的
1、使用韩伯感知节点、结合Sink节点,设计用于环境监测的无线传感网多跳数据采集、传输系统。在PC机上能显示当前测得的温/湿度、光照等环境信息。当光照超过一定阈值时,感知节点通过LED信号灯给以报警。
2、对tree路由的理解及应用。
1.2功能要求
实现题目的功能要求需要用到两类节点,这两类节点分别是感知节点和sink节点。
1.2.1 感知节点的功能
感知节点作为采集节点负责采集周围的数据,每20s采集一次光照,每100s采集一次温/湿度。感知节点要将采集到的温/湿度、照度值通过多跳转发给sink节点,转发过程中采用自适应树形路由策略转发数据。
1.2.2 sink节点的功能
Sink节点与PC相连,在PC终端上显示从感知节点接收到的温/湿度和光照的值。
1.3开发环境
PC机;
NotePad++;
cygwin;
SmartRFProg.exe;
Network Topology-Viewer。

第二章 系统整体设计
2.1整体架构组织
2.1.1 OscilloscopeSHT11的整体架构组织
在这里插入图片描述
OscilloscopeSHT11是实现功能一时用到的,实现在采样周期内采集温/湿度,按照题目要求把采集的数据由温/湿度变为温/湿度和照度,主要包括头文件Oscilloscope.h、配置文件OscilloscopeAppC.nc和模块文件OscilloscopeC.nc。上述框架图能够在配置文件OscilloscopeAppC.nc中体现出。 Boot接口由组件MainC提供;接口Timer由组件TimerMilliC提供;接口Read<uint16_t>由组件SensirionSht11C和组件PhotoSensor提供,在模块文件OscilloscopeC.nc中Read<uint16_t>被分别重命名为三个接口Read_Humidity,Read_Temp, Read_Photo;接口Leds由组件LedsC提供;为了串行传递Tinyos-2.x消息,需要使用SerialActiveMesssageC组件,接口AMsend、Receive、SplitControl都由组件SerialActiveMesssageC提供,其中SpliControl通过as 变更为SerialControl,进行布线,与数据有关的AMsend、Receive接口被声明为数组([AM_SOCILLOSCOPE]),区分了消息类型,为了只能在相同类型的接口间发送和接收。
2.1.2 Hanback_TestTree的整体架构组织
在这里插入图片描述
Hanback_TestTree是实现功能二时用到的,利用自适应树形路由将采集的温/湿度和照度通过多跳传输给网关节点,利用自适应树形路由转发策略,最后在PC机的通信终端上显示温/湿度和光照值。主要包括头文件Hanback_TestTree.h,配置文件Hanback_TestTreeAppC.nc,模块文件Hanback_TestTreeAppM.nc,头文件HanbackTreeRouting.h,配置文件Hanback_TreeRoutingC.nc,模块文件Hanback_TreeRoutingM.nc。上述框架图能够在模块文件Hanback_TestTreeAppC.nc中体现出。其中SensirionSht11C(),PhotoSensorC(),UltraredSensorC(),组件是为了控制韩伯节点上存在的传感器的组件;SCSuartDGBC组件为了将sink节点从无线收到的数据传给PC而使用的串行组件,该组件与SerialActiveMessage组件不同,可以直接串行传递自身想要的数据形式而非message_t结构体形式。

第三章 模块的设计和实现
3.1 OscilloscopeSHT11的模块设计和功能一的实现
3.1.1 OscilloscopeSHT11的模块设计
在OscilloscopeSHT11中是每隔0.5S通过SensirionSht11C组件从SHT11传感器收到温/湿度测量值后,根据#GET_HUMIDITY_DATA的值将温/湿度或湿度值串行传递给PC的程序。根据题目要求:每隔100S采集一次温/湿度,每隔20S采集一次光照,我对原文件进行了修改。
在头文件OscilloscopeSHT11.h中,我首先将采样周期DEFAULT_INTERVAL修改为20S;在该文件中定义了NREADINGS,该值范围从0-10,结构体oscilloscope_t 。 在配置文件OscilloscopeSHT11AppC.nc中,记录了要用的组件的声明及它们之间的连接的有关内容,我在该文件中增加了采集光照需要用到的组件new PhotoSensorC() 并更名为Sensor1及相应的接口绑定关系:OscilloscopeC.Read_Photo->Sensor1。
主要的文件是模块文件OscilloscopeC.nc,在该文件中:
1、首先声明了要用的接口并为部分接口更名,我再该部分增加了将接口 Read<uint16_t> 更名为Read_Photo;;
2、然后定义了一些需要使用的变量,在该部分我增加了turn的定义,用于计数过了多少个采样周期,声明了calc_SHT,并定义了利用LED来报告各种状态;
3、在Boot.booted函数中对一些变量进行了初始化,在该函数中我增加了turn 的初始化,其中将采样周期 DEFAULT_INTERVAL赋给了CurrentInterval;
4、在函数StartTimer()中,调用了Timer StartPeriodic(CurrentInterval)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值