设计移动环境监测系统

2015-05-30 22:57齐京
科技创新导报 2015年7期
关键词:环境监测客户端服务器

齐京

摘 要:近年来,随着高等职业教育的快速发展,高职院校开展项目设计成为潮流,加强高职院校师资队伍的建设成为各院校的重点任务。教师们在企业人员的指导下开展项目设计是一个可行的途径,这样可以使教师具备丰富的专业实践经验和专业操作技能,有助于提高教师的科技创新和设计能力,这对高职院校教师在科研能力的建设上有着深远的意义。

关键词:环境监测 传感器 服务器 客户端

中图分类号:G71 文献标识码:A 文章编号:1674-098X(2015)03(a)-0060-03

环境监测是通过对人类和环境有影响的各种物质的含量、排放量的检测,跟踪环境质量的变化,确定环境质量水平,为环境管理、污染治理等工作提供基础和保证。简单地说,了解环境水平,进行环境监测,是开展一切环境工作的前提。环境监测的目的是为了准确、及时、全面地反映环境质量现状及发展趋势,为环境管理、污染源控制、环境规划等提供科学依据。

环境监测指通过计算机、传感器、通信网络等新技术,动态实时的获取和监测环境的各项指标。本系统设计重点集中在空气质量监测,对一个区域内的能够代表空气质量的污 染物例如PM2.5等进行监测。

1 环境监测系统的组成部分

(1)客户端:客户端运行在平板电脑上,操作系统采用Android系统,用户可以通过平板电脑实时看到当前环境指标数值,比如co2浓度、PM2.5数值,空气污染等级等。

(2)服务端:服务端运行在定制实验箱硬件上,操作系统采用Android系统,服务端一方面接受客户端数据读取请求,给予响应;另一方面通过串口读取外接zigbee模块,采集到的环境指标数据。

(3)客户端与服务端连接:通过wifi网络连接。

(4)协调器:一个单片机,集成了zigbee模块,与外部各种传感器以及继电器通信,传感器以及继电器也是集成了zigbee模块。

(5)协调器与传感器连接:传感器和协调器之间通过zigbee通信。

(6)服务端与协调器:通过串口数据线连接。

2 系统架构

服务端系统主要入口在HTTPServerService, 它负责创建HttpServer和串口读线程,一旦创建完毕,后续的串口读线程周期采集(频率依赖外部串口设备),串口数据保存到内存变量中。而Http Server则负责接收来自客户端的请求,当请求到达时,创建一个线程处理该请求,线程内部首先解析请求,根据请求的参数区分进行后续的业务逻辑处理,业务逻辑处理过程会从内存变量中读取采集到的串口数据,处理完毕后构造响应消息应答客户端设备。

3 主要流程

采集串口传感数据流程,采集串口传感器数据包装在SerialportService的CO2SensorTask类中,定时任务。任务开始时,延时一秒发送外设请求,数据通过handler回传。线程循环读取外部设备数据,当读满一个采样周期完整的数据时,对该读到的数据按照接口协议进行解析,解析出每个传感数据的数值,并将原始采样数值按照约定算法进行,结果数值转换成用户可以理解的数值,处理完毕后将一个采样周期的串口数据放入内存数据结构。Http Server则负责接收来自客户端的请求,当请求到达时创建一个线程处理该请求,线程内部首先解析请求,根据请求的参数区分进行后续的业务逻辑处理,业务逻辑处理过程会从消息队列中读取采集到的串口数据,处理完毕后构造响应消息应答客户端设备。设备连接后,应用程序发送0x00, 0x31命令。外设接收到指令后,返回设备物理地址,后续发送数据,解析需要依据这些地址。

4 关键类设计

(1)MainActivity类:该类继承自Activity类,负责服务端界面的绘制,响应来自界面的用户操作,serverSwitch按钮负责打开和关闭串口和http服务。控制串口,读取串口数据有单独service控制,并与MainActivity绑定,使得系统更稳定。http服务也是有单独service控制。

(2)JasonHttpServer类:该类继承自NanoHTTPD类,负责实现android平台下的http server,在此基础上完成了客户端http请求消息的解析处理,并生成响应消息应答客户端的请求。该类主要重载了NanoHTTPD的serve方法,serve函数负责处理http请求,根据请求的uri、header等信息,解析出body,并依据这些信息获取相关数据,构造响应应答客户端。

(3)SerialportService类:该类在OnStart()处被创建,并启动串口读线程,该线程负责读取来自串口的数据并放入消息队列。同时从sqlite中读取用户之前设置的各个传感器告警阀值,启动http服务等待客户端请求。

(4)DatabaseUtil类:该类基于SQLite编写,SQLite为手机客户端提供数据存储功能,并且有常用的增删改查功能api,使用便捷。该类负责保存用户信息,提供用户登录验证和用户添加。操作串口模块采用开源项目android-serialport-api进行android平台下串口数据读写操作。

(5)http server模块:采用开源项目nanohttpd实现android平台下的http server,在此基础上完成了客户端http请求消息的解析处理,并生成响应消息应答客户端的请求。

5 CO2气体传感器

CO2气体传感器的特点:对CO2有良好的灵敏度和选择性,受温湿度的变化影响较小,具有良好的稳定性、再现性。应用领域包括:空气质量控制系统,发酵过程控制,温室CO2浓度检测。工作原理:本传感器采用固体电解质电池原理,元件加热电压由外电路提供,当其表面温度足够高时,元件相当于一个电池,其两端会输出一电压信号,其值与能斯特方程符合得较好。元件测量时放大器的阻抗须在100—1000GΩ之间,其测试电流应控制在1pA以下。

6 温湿度传感器

温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用于工业COMS过程微加工技术,确保产品具有极高的可靠性与卓越的长期稳定性。其中包括:一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D转换器以及串行接口电路在同一芯片上实现无缝连接。因此,该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。两线制串行接口和内部基准电压,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品提供表面贴片LCC(无铅芯片)或4针单排引脚封装。

7 移动客户端设计

移动客户端使用Android手机,用户通过界面点击注册按钮,输入用户名、密码、邮箱地址之后点击确定触发用户注册流程。注册将用户信息提交到服务端,持久化到sqlite数据库。

注册部分实现逻辑:

(1)注册开始。

(2)在界面上输入用户名,密码,邮件等必须信息。

(3)启动注册线程。

(4)使用用户名密码等数据构造HTTP请求和JASON BODY。

(5)向服务器端发送请求。

(6)服务器应收该请求。

(7)服务器对接到到的HTTP请求,分解JasonBody中的数据。

(8)对注册信息进行校验。通过则注册成功成功。

(9)校验不成功,是返错误代码。

登录部分功能说明:用户通过登录界面输入用户名、密码之后点击登录界面触发登录流程。

登录部分实现逻辑:

(1)用户在登录界面输入用户名,密码等信息。

(2)启动登录线程。

(3)使用用户名密码等数据构造HTTP请求和JASON BODY。

(4)向服务器端发送请求。

(5)服务器应收该请求。

(6)服务器对接到到的HTTP请求,分解JasonBody中的数据。

(7)对注册信息进行校验。通过则注册成功成功。

(8)校验不成功,是返错误代码。

空气温度监测功能说明:提供空气温度监测数值曲线显示:在环境监测主界面能够动态显示空气温度的状态曲线,显示出空气温度的变换状况。每个绘图点的高度要能够反映出所对应时间点的数值高度,在每个绘图点的上方有所对应数值显示。

空气温度监测实现逻辑:

(1)客户端初始化曲线图界面。

(2)启动一个定时线程(定时间隔可调,默认为1秒)。

(3)将空气温度查询指令构造为HTTP请求和JASON BODY。

(4)向服务端发送请求。

(5)服务端响应该请求。

(6)根据指令,读取空气温度传感器的当时数据。

(7)将空气温度传感器的当时数据构造HTTP请求和JASON BODY。

(8)将HTTP请求返回客户端。

(9)客户端接收该数据后,解析该数据,并根据当前的值在界面上画出对应的曲线。

空气湿度监测功能说明:提供空气湿度监测数值曲线显示:在环境监测主界面能够动态显示空气湿度的状态曲线,显示出空气湿度的变换状况。每个绘图点的高度要能够反映出所对应时间点的数值高度,在每个绘图点的上方有所对应数值显示。

空气湿度监测实现逻辑:

(1)客户端初始化曲线图界面。

(2)启动一个定时线程(定时间隔可调,默认为1秒)。

(3)将空气湿度查询指令构造为HTTP请求和JASON BODY。

(4)向服务端发送请求。

(5)服务端响应该请求。

(6)根据指令,读取空气湿度传感器的当时数据。

(7)将空气湿度传感器的当时数据构造HTTP请求和JASON BODY。

(8)将HTTP请求返回客户端。

(9)客户端接收该数据后,解析该数据,并根据当前的值在界面上画出对应的曲线。

土壤湿度监测功能说明:提供土壤湿度监测数值曲线显示:在环境监测主界面能够动态显示土壤湿度的状态曲线,显示出土壤湿度的变换状况。每个绘图点的高度要能够反映出所对应时间点的数值高度,在每个绘图点的上方有所对应数值显示。

土壤湿度监测实现逻辑:

(1)客户端初始化曲线图界面。

(2)启动一个定时线程(定时间隔可调,默认为1秒)。

(3)将土壤湿度查询指令构造为HTTP请求和JASON BODY。

(4)向服务端发送请求。

(5)服务端响应该请求。

(6)根据指令,读取土壤湿度传感器的当时数据。

(7)将土壤湿度传感器的当时数据构造HTTP请求和JASON BODY。

(8)将HTTP请求返回客户端。

(9)客户端接收该数据后,解析该数据,并根据当前的值在界面上画出对应的曲线。

光照强度功能说明:提供光照强度监测数值曲线显示:在环境监测主界面能够动态显示光照强度的状态曲线,显示出光照强度的变换状况。每个绘图点的高度要能够反映出所对应时间点的数值高度,在每个绘图点的上方有所对应数值显示。

光照强度实现逻辑:

(1)客户端初始化曲线图界面。

(2)启动一个定时线程(定时间隔可调,默认为1秒)。

(3)将光照强度查询指令构造为HTTP请求和JASON BODY。

(4)向服务端发送请求。

(5)服务端响应该请求。

(6)根据指令,读取光照强度传感器的当时数据。

(7)将光照强度传感器的当时数据构造HTTP请求和JASON BODY。

(8)将HTTP请求返回客户端。

(9)客户端接收该数据后,解析该数据,并根据当前的值在界面上画出对应的曲线。

二氧化碳浓度监测功能说明:提供二氧化碳浓度监测数值曲线显示:在环境监测主界面能够动态显示二氧化碳浓度的状态曲线,显示出二氧化碳浓度的变换状况。每个绘图点的高度要能够反映出所对应时间点的数值高度,在每个绘图点的上方有所对应数值显示。

二氧化碳浓度监测实现逻辑:

客户端初始化曲线图界面

(1)启动一个定时线程(定时间隔可调,默认为1秒)。

(2)将二氧化碳浓度查询指令构造为HTTP请求和JASON BODY。

(3)向服务端发送请求。

(4)服务端响应该请求。

(5)根据指令,读取二氧化碳浓度传感器的当时数据。

(6)将二氧化碳浓度传感器的当时数据构造HTTP请求和JASON BODY。

(8)将HTTP请求返回客户端。

(9)客户端接收该数据后,解析该数据,并根据当前的值在界面上画出对应的曲线。

主动报警功能说明:用户输入空气湿度上限及下限(示例中为0和100)。设置完成后点击“确定”按钮,系统记录该阈值后,当查询到的数值不在这个区间范围之内时,能主动修改报警状态,并触发对应的报警机构。

主动报警实现逻辑

(1)点击空气湿度界面“设置”按钮,弹出空气湿度阀值设置界面。

(2)输入空气湿度阈值上限及下限数据,点击确认按钮。

(3)当空气湿度超过所设定的上门限或下门限时,主界面中将显示空气湿度告警,(示例中空气湿度数值为212,已经超过上门限100,所以当前状态为“预警”)

空气湿度阀值功能说明:用户输入空气湿度阀值上限及下限(示例中为0和100)。设置完成后点击“确定”按钮,系统记录该阈值后,当查询到的数值不在这个区间范围之内时,能主动修改报警状态,并触发对应的报警机构。

空气湿度阀值实现逻辑

(1)点击空气湿度界面“设置”按钮,弹出空气湿度阀值设置界面。

(2)输入空气湿度阈值上限及下限数据,点击确认按钮。

(3)当空气湿度超过所设定的上门限或下门限时,主界面中将显示空气湿度告警,(示例中空气湿度数值为212,已经超过上门限100,所以当前状态为“预警”)。

土壤湿度的阈值功能说明:用户输入土壤湿度的阈值上限及下限(示例中为0和100)。设置完成后点击“确定”按钮,系统记录该阈值后,当查询到的数值不在这个区间范围之内时,能主动修改报警状态,并触发对应的报警机构。

土壤湿度的阈值实现逻辑:

(1)点击土壤湿度界面“设置”按钮,弹出土壤湿度阀值设置界面。

(2)输入土壤湿度阈值上限及下限数据,点击确认按钮。

(3)当土壤湿度超过所设定的上门限或下门限时,主界面中将显示土壤湿度告警,(示例中土壤湿度数值为212,已经超过上门限100,所以当前状态为“预警”)。

光照强度阀值功能说明:用户输入光照强度阀值上限及下限(示例中为0和100)。设置完成后点击“确定”按钮,系统记录该阈值后,当查询到的数值不在这个区间范围之内时,能主动修改报警状态,并触发对应的报警机构。

光照强度阀值实现逻辑:

(1)点击光照强度阀值界面“设置”按钮,弹出光照强度阀值阀值设置界面。

(2)输入光照强度阀值阈值上限及下限数据,点击确认按钮。

(3)当光照强度阀值超过所设定的上门限或下门限时,主界面中将显示光照强度阀值告警,(示例中光照强度阀值数值为212,已经超过上门限100,所以当前状态为“预警”)。

二氧化碳的阈值功能说明:用户输入二氧化碳的阈值上限及下限(示例中为0和100)。设置完成后点击“确定”按钮,系统记录该阈值后,当查询到的数值不在这个区间范围之内时,能主动修改报警状态,并触发对应的报警机构。

二氧化碳的阈值实现逻辑

(1)点击二氧化碳浓度界面“设置”按钮,弹出二氧化碳浓度阀值设置界面。

(2)输入二氧化碳浓度阈值上限及下限数据,点击确认按钮。

(3)当二氧化碳浓度超过所设定的上门限或下门限时,主界面中将显示二氧化碳浓度告警,(示例中二氧化碳浓度数值为212,已经超过上门限100,所以当前状态为“预警”)。

空气湿度、空气湿度或二氧化碳浓度触发对应的报警机构功能说明:当查询到的空气湿度、空气湿度或二氧化碳浓度数值不在这个设定的范围之内时,客户端界面上能主动修改报警状态,并触发对应的报警机构。

空气湿度、空气湿度或二氧化碳浓度触发对应的报警机构实现逻辑:

(1)定时查询到空气湿度、空气湿度或二氧化碳浓度数值时,将该值与本地存储的阀值进行对比。

(2)当查询到数值在这个期间范围之内时,在客户端界面显示“正常”,设置风扇的状态标志为“关闭”。

(3)当查询到数值不在这个期间范围之内时,在客户端界面显示“报警”。

(4)设置风扇的状态标志为“打开”。

(5)用风扇状态标志构造HTTP请求和JASON BODY。

(6)向服务端发送请求。

(7)服务端接收请求,并分析接收到的数据。

(8)服务端将接收到的状态,写入到对应的传感器状态。

光照强度触发对应的报警机构功能说明:当查询到的光照强度数值不在这个设定的范围之内时,客户端界面上能主动修改报警状态,并触发对应的报警机构。

光照强度触发对应的报警机构实现逻辑:

(1)定时查询到光照强度数值时,将该值与本地存储的阀值进行对比。

(2)当查询到数值在这个期间范围之内时,在客户端界面显示“正常”,设置LED灯的状态标志为“关闭”。

(3)当查询到数值不在这个期间范围之内时,在客户端界面显示“报警”。

(4)设置LED灯的状态标志为“打开”。

(5)用LED灯状态标志构造HTTP请求和JASON BODY。

(6)向服务端发送请求。

(7)服务端接收请求,并分析接收到的数据。

(8)服务端将接收到的状态,写入到对应的传感器状态。

土壤湿度触发对应的报警机构功能说明:当查询到的土壤湿度数值不在这个设定的范围之内时,客户端界面上能主动修改报警状态,并触发对应的报警机构。

土壤湿度触发对应的报警机构实现逻辑:

(1)定时查询到土壤湿度数值时,将该值与本地存储的阀值进行对比。

(2)当查询到数值在这个期间范围之内时,在客户端界面显示“正常”,设置水泵的状态标志为“关闭”。

(3)当查询到数值不在这个期间范围之内时,在客户端界面显示“报警”。

(4)设置水泵的状态标志为“打开”。

(5)用水泵标志构造HTTP请求和JASON BODY。

(6)向服务端发送请求。

(7)服务端接收请求,并分析接收到的数据。

(8)服务端将接收到的状态,写入到对应的传感器状态。

8 结语

通过设计环境监测系统手机客户端,使我们接触到了企业的真实项目,为我们的教学带来了新的内容,同时也提升了教师的实践能力和科研能力,可以看出项目设计是一条提升教师能力的有效途径。

参考文献

[1] 李杨,郭培源,刘波,等.基于嵌入式技术的居室健康环境监测系统[J].电子技术应用,2014(8).

[2] 陈家佳,肖丽.智能家居中环境监测系统懿研究与应用[J].世界电子元器件,2011(11).

[3] 崔曼,薛惠锋,卜凡彪,等.基于物联网与云计算的环境监测系统研究[J].西安工业大学学报,2013(7).

猜你喜欢
环境监测客户端服务器
通信控制服务器(CCS)维护终端的设计与实现
环境监测系统的数据分析与处理
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
大气污染问题的环境监测
中国服务器市场份额出炉
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
对环境监测数据造假必须零容忍