APP下载

基于WSN的温室大棚环境监测系统研究与实现

2019-08-21张泽凡张文波

沈阳理工大学学报 2019年3期
关键词:子网功能模块网关

张泽凡,张文波

(沈阳理工大学 信息科学与工程学院,沈阳 110159)

自然环境通常具有较高的不可控性和不确定性,并且由于劳动力的减少和人口的增加等额外因素,使农业生产不断寻求更好更高效的方法来提高农作物出产率、优化作物生产管理方式。目前传统的农业种植方式主要包括露天种植和温室栽培。露天种植成本较低,但具有种植周期长、病虫害防御力低等缺陷[1-2];虽然温室大棚能够有效地提高农作物的产量并稳定地保证农作物产品的质量,但是管理温室大棚的传统方式依旧存在智能化水平较低的问题以及很严重的劳动力 浪费,直接导致人力成本和管理成本过高[3]。

无线传感器网络(Wireless Sensor Network,WSN)具有较为广泛的覆盖范围,动态变化的网络拓扑结构,较高的可靠性和安全性等特点[4]。在传统的农业生产中应用WSN技术,在温室中部署多个传感器节点,以多跳的方式传输数据,所有温室大棚种部署的节点组成一个移动自组织网络,通过传感器节点自动监测每个温室周围环境数据并发送给上层应用实现环境的监测和数据的收发。

在技术实现方面,许多工作者以及相关从业者对与IEEE 802.15.4标准关联的各种无线传感器网络协议进行了深入的研究,其中最具代表性的协议是6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)协议[5]。6LoWPAN网络是由IETF 6LoWPAN工作组定义的新型WSN,基于该技术构建的智能化的温室大棚监测系统可以有效改善传统温室大棚的不足。

本文针对传统温室大棚生产管理成本高、智能水平低等问题,设计监测系统的总体功能并进行功能分层。然后基于Contiki系统将传感子网接入IPv6网络,实现传感器节点数据收集以及网关数据传输功能。最后根据温室大棚环境监测系统的总体设计,实现能够处理节点数据、配置预警信息的中间功能模块以及能够远程访问的温室大棚环境实时监测系统。

1 温室大棚环境监测系统设计

1.1 系统总体设计

对温室大棚环境进行远程实时监测,所需的系统网关必须具有数据转发功能,中间功能模块程序必须集成请求、过滤、解析、持久化数据等功能。并且不仅需要传感器节点,还需要供用户远程访问的Web服务。本文以传统温室存在的缺陷以及改进需求为基础,对系统功能进行了细化,并根据功能结构对整个监测系统进行了划分。系统整体功能结构如图1所示。

图1 系统整体功能结构

实际农业生产中一般存在多个大棚,需要在每个温室大棚内都部署多个能够以多跳的方式传输数据的传感器节点。温室大棚管理站部署内容分三部分:中间功能模块、数据库以及Web后端服务。其中数据库是中间功能模块数据存储的容器和实现Web业务逻辑的数据源,中间件主要实现系统数据的驱动和中转。Web后端服务实现前端页面的业务逻辑,用户可以通过访问该系统的前端页面,远程访问监测系统从而实现对温室实时传感器节点数据的监控以及对告警信息的远程配置。温室大棚环境监测系统的总体设计如图2所示。

1.2 系统功能分层设计

为更清楚地定义系统功能分布,本文将环境监测系统的整体功能依据系统功能分层设计合理分配到感知层,传输层和应用层,感知层收集到的数据由传输层传输到应用层并由用户处理数据。

图2 系统总体设计

各类传感器节点集群构成监测系统的感知层。感知层中的传感器节点为应用层提供环境数据源。该数据源主要包括温室大棚内部的温度和光照信息,还包括节点当前的电量信息。传输层作为数据传输的中间层将感知层收集到的信息传输给应用层。传输层包括网络通信协议、通信设备和各类型网络。需要注意的是,感知层获取的环境数据需要依据一定网络传输标准才可被传输层接收,传输层需要利用现有的通信系统和移动通信网络进行数据传输,这种传输方式具有较高的安全性和可靠性。应用层作为系统的顶层,是数据传输的终点。在应用层中,应用程序对通过传输层收集到的数据进行处理和分析并基于分析后的数据为用户提供服务。系统的功能分层如图3所示。

图3 系统功能分层结构

2 传感器子网平台设计

2.1 硬件平台

本文将WSN和互联网视为一个网络整体。其中,将前者作为整个网络中的传感子网接入IPv6网络,传感器节点和网关组成传感子网的硬件平台[6]。传感器节点在MX231CC平台实现,该平台集成了SHT11温度传感器和LIGHT SENSOR环境光传感器,这两者都支持IEEE 802.15.4标准,并且都集成了Atmel RF230射频发送模块以及Atmel AVR微控制器[7]。网关硬件基于AVR-USBSTICK平台实现。本文设计了一种接入机制为传感子网接入IPv6网络,并基于IPv6网络实现节点数据多跳方式传输、网关双向数据转发、环境数据收集和数据传输和接受等多项功能。

2.2 网关功能

作为传感子网的边界,网关是把传感子网接入IPv6网络重要的一部分。结合系统构建的需求,设计一种接入机制,并采用全IP接入方式将传感子网接入IPv6网络,达到网关数据转发的目的。

6LoWPAN是适配层协议,将IPv6技术应用在传感子网中带来的MTU不一致以及应用层存储数据可用空间不足等问题均可以通过引入6LoWPAN技术得到有效的解决[8]。uIPv6是一个精简的TCP/IP协议栈,支持TCP,ICMPv6以及IPv6等协议;SLIP(Serial Line Internet Protocol)部分是指通过将AVR-USBSTICK虚拟成一张以太网卡,完成网关与IPv6主机的本地连接绑定,该网卡可以被IPv6主机识别,并按SLIP协议将IPv6数据包打包成指定格式,USB接口利用AVR-USBSTICK实现双向数据传输。传感子网接入IPv6网络的设计如图4所示。

图4 传感子网接入IPv6网络设计图

为实现传感子网的接入,选择Contiki作为接入机制的实现平台,并将其移植到网关AVR-USBSTICK平台,使网关具备数据转发的能力。并将Contiki作为节点和网关开发的依据,并且节点平台和网管平台集成了Atmel RF230射频芯片和Atmel AVR微控制器。如图5所示,微控制器选择AT90USB1287。

图5 选择微控制器

2.3 节点功能

本文传感器节点的软件部分主要有数据采集、数据收发两个模块组成,主要依据是实际生产中提炼出的功能需求。数据采集模块主要实现温室大棚环境数据的收集,该模块触发采集功能后得到的三种类型的数据作为HTTP(HyperText Transfer Protocol)协议响应体返回给中间功能模块程序,中间功能模块程序从HTTP协议响应体中解析出环境数据同时实现数据的处理和存储,所需数据的数据载体使用XML数据格式。数据收发模块对收集到的数据进行传输并提供实时响应请求服务。传感器节点内部软件模块间的协同工作时序图如图6所示。

图6 模块协同工作时序图

2.4 数据采集实现

本文采集数据的模拟量主要通过数/模转换(ADC)数据采集模块来获取,并且在采集到的不同类型的环境数据之间分别建立对应的映射关系。在环境数据获取的具体实现中使用的温度对照表由温敏电阻制造商提供,变化的模拟量和温度之间存在相应的映射关系。在环境温度数据收集过程中,需要在数组中预先存入76个制造商提供的模拟量,然后计算数组元素数值与实时获取的模拟量之间的差值,获取的实时数据需要依次与数组中每一个元素进行比较,得到两者之间最小差值对应的数组元素,该数组元素的下标就是模拟量对应的温度值。需要注意的是,由于温度数值有正负之分,但数组下标最小为0,因此采用负方向平移的方法,把模拟量最接近的数组元素的下标减去15来得到正确的温度值,最终实现模拟量与温度信息的完全映射。

在ADC数据采样之后,需要获取电压数据。实际的电压值通过建立模拟量与电压的映射关系换算来实现。与温度映射类似,由于电压数据范围与模拟量数据范围不同,不能实现直接映射。ADC采样得到的模拟量范围是0到1023,而实际电压的范围是0V到5V,因此建立映射关系:电压等于5*(ADC采样值/1024)。

下面分别给出获取温度数据的具体实现以及电压数据与映射关系的主要实现。

int16_t get_temp (){

int16_t result1 = getTemp();

int16_t result2;

result2 = find(result1,celcius_table,sizeof(celcius_table)/sizeof(int)) - 15;

return result2;}

double getVoltage(){

adc_init(ADC_CHAN_ADC30,ADC_TRIG-FREE_RUN,ADC_REF_AVCC,ADC_PS_128);

int16_t result;

adc_conversion_start();

while((result=adc_result_get(ADC_ADJ_RIGHT))==EOF){}

adc_deinit();

return 5*((double)result/1024.0);

}

2.5 数据收发实现

应用层的通信由数据收发模块实现。该模块是通过HTTP协议的通信接口,传感器子网与外部的通信由该模块实现。在温室大棚内,传感器节点会向上层发出数据采集请求,对请求的实时响应由该模块通过中间功能模块程序实现。相当于在应用层提供HTTP服务,通过在每个传感器上部署一个Web服务器实现针对HTTP请求到来时的实时响应。需要注意的是,在将Contiki移植到MX231CC平台时,应当在Contiki配置文件Contiki-conf.h中预先设定好传感器节点需要使用的各层网络协议,然后模块才能正常的运行。针对定义资源以及实现回调处理函数的问题,本文通过统一资源标识符(URI)来锁定一个资源,锁定的资源绑定唯一一个回调处理函数。在此基础上,要使HTTP请求能够被服务器实时响应,还需要启动部署在传感器节点上的引擎,并激活处理好的资源。

下面给出引擎初始化和资源激活相关的主要实现。

PROCESS(rest_sensor, "Sensors Web");

AUTOSTART_PROCESSES(&rest_sensor);

PROCESS_THREAD(rest_sensor,ev,data){

PROCESS_BEGIN();

rest_init();

est_activate_resource(&resource_sensors);

PROCESS_END();

}

3 远程监测系统设计与实现

用户通过应用层与传感子网进行交互,其稳定性与实时性也由该层提供保证。并且远程用户监测温室内部环境信息也需要应用层来提供服务。该层主要包括两部分,第一部分是中间功能模块程序,中间功能模块程序部署在连接到网关的主机上,该程序用于远程监测程序与传感子网间进行实时数据的互传,是一个消息模块,支持接收实时数据请求,对接收到的数据信息进行分析处理并对数据进行持久化,支持实时预警以及传感器节点信息管理等功能[9]。第二部分是远程实时监测程序,远程用户可以使用互联网通过远程监测程序接入监测系统,该程序的本质是应用层向用户提供的服务接口。该系统通过图表的方式对实时数据进行展示,并提供对历史数据查询和预警模块配置等功能。

3.1 中间功能模块程序

本文中间功能模块程序的设计分为四个模块,分别是数据请求模块、数据解析模块,节点管理模块和环境预警模块。

数据请求模块提供了修改数据请求频率的外部控制接口。针对该模块有可能出现的异常情况,设计了相应的异常处理机制。远程用户通过应用层中间功能模块向传感子网中某个传感器节点发出HTTP请求后,如果因为节点本身出现异常而返回错误代码,或者该传感器节点没有及时返回HTTP响应,则通过对相关代码加入异常处理机制,将HTTP请求重新发送给传感器节点。

在HTTP响应体中,解析传感器节点返回指定的数据格式并最后完成数据信息的存储是数据解析模块的主要功能。本文选择以XML作为传感器节点返回的数据格式。在明确了中间功能模块程序与传感子网之间相互传输数据的载体之后,还需要对数据进行XML解析和拼接,本文通过数据收发模块实现拼接,在数据解析模块实现解析。

传感子网中节点信息的综合管理功能以及为中间功能模块程序与传感子网之间的互联提供对接信息的功能由节点管理模块实现。该模块中,具体的传感器节点信息包括节点的编号、IP地址和端口号等信息。相关的管理人员可以查询节点信息并对节点信息进行添加、修改和删除环境预警模块负责实时预警,本系统选择以发送邮件的方式将预警信息发送给温室管理员,只要管理员可以访问网络即可随时接受预警信息。

3.2 远程实时监测系统

远程实时监测程序使用B/S(Browser/Server)结构,采用MVC开发模式,Web后端的主要实现和内部业务逻辑由Java实现,数据库使用MySQL数据库。该程序分为三个模块,包括实时数据可视化,历史数据查询和远程系统配置。

3.2.1 实时数据可视化模块

实时数据可视化模块主要负责用统计图的方式显示每个节点最近采集到的数据;历史数据查询模块以指定日期和温室大棚编号作为查询的约束条件,查询某温室大棚指定日期当天的历史数据;远程系统配置模块主要功能是对整个系统的预警信息进行配置。本文在多节点部署策略的基础上,结合感知层、传输层和应用层各模块的数据采集、请求和转发功能,实现对温室内部环境数据的可视化。图7为某个温室大棚内所有传感器节点附近的温度信息均可直观的展示给用户,便于用户查看温室内每个位置实时的环境数据信息。图8为某个温室大棚指定传感器节点附近的光照信息展示,用户能够查看温室内局部光照信息近期波动情况,便于更好管理。

图7 温度信息分布图

图8 光照走势图

3.2.2 历史数据查询模块

更好的管理温室大棚,制定正确的规划以及分析以往发生的事故都需要以历史数据为重要依据。因此本文增加历史数据查询模块,并增加约束条件,便于用户精准便捷的查询到所需数据。该模块提供温室编号和日期作为约束条件,用户不仅可以选择查看指定温室的全部历史数据,还可以选择日期作为进行筛选,查看指定温室在给定日期内的全部整点数据。历史数据查询结果如图9所示。

3.2.3 远程预警配置模块

为使用户能够远程配置预警信息,本文将中间功能模块的预警模块的预警服务配置部分分离出来,作为一个模块。该模块使告警信息的配置入口,配置信息主要包括温度、光照和电量三种类型的临界值,接收方和发送方的邮箱地址以及SMTP服务器地址,并提供修改密码的功能。在系统部署前,想要启动中间功能模块程序,管理员用户必须提前录入上述配置信息,中间功能模块会读取配置信息,完成筛选数据和发送预警邮件等功能。远程预警服务的配置信息如图10所示。

图9 历史数据查询结果

图10 远程预警服务配置信息

4 结束语

引入WSN技术,对温室大棚环境监测系统进行设计,旨在改善传统温室大棚的不足。将Contiki移植到传感子网硬件平台上,实现对传感器节点数据的处理和对外部数据请求的响应。在全IP接入模式的基础上,设计一种WSN接入机制,在Contiki下实现接入。通过把Contiki移植到网关硬件平台,在Contiki下结合6LoWPAN技术和SLIP协议,实现将WSN接入IPv6网络,即完成网关数据转发。针对传统温室大棚的不足,设计实时预警中间功能模块,实现对数据请求的响应,数据的处理和传输。针对远程管理的需求,设计远程监测系统,通过对历史数据的查询,预警信息的配置以及环境信息的可视化,更好的实现对温室大棚的管理。

猜你喜欢

子网功能模块网关
考虑荷电状态的交直流微电网多模式协调控制策略
子网划分问题研究及应用
信号系统网关设备的优化
航天器多子网时间同步系统设计与验证
基于ETC在线支付网关的停车场收费系统设计
基于ASP.NET标准的采购管理系统研究
输电线路附着物测算系统测算功能模块的研究
应对气候变化需要打通“网关”
功能模块的设计与应用研究
一种实时高效的伺服控制网关设计