未来智讯 > 可穿戴论文 > 面向可穿戴设备的空气质量监测系统的设计与实现

面向可穿戴设备的空气质量监测系统的设计与实现

发布时间:2017-12-07 08:44:00 文章来源:未来智讯    
    关键词: 污染因子; 空气质量指数; 可穿戴设备; Android开发
    中图分类号: TN926?34; TM417 文献标识码: A 文章编号: 1004?373X(2016)01?0093?05
    0 引 言
    随着我国工业化的发展和城市化的普及,空气污染问题也变得日益严重。在一些大城市,诸如北京、天津、唐山等地,由空气污染所引起的雾霾问题正受到人们越来越多的关注。但是雾霾问题在短时间内还不能有效解决[1]。可穿戴设备在最近两三年间发展迅猛,一大批各式各样的可穿戴设备如雨后春笋般涌现。未来一段时间,可穿戴设备的热潮还会继续。同时,由于可穿戴设备的出现时间较短,市场上存在的基于可穿戴设备的应用还很稀少,其可供开发的价值也十分巨大。基于以上现状,结合可穿戴设备,设计并实现空气质量监测系统[2]。
    1 需求分析
    1.1 业务需求
    1.1.1 空气质量实时监测的需求
    本次开发的空气质量实时监测功能,也将以小时为单位进行播报。空气质量时报所监测的空气质量指标因子按照种类可分为PM2.5(粒径小于等于2.5 μm的颗粒物),PM10(粒径小于等于10 μm的颗粒物),SO2,NO2,O3和CO六种[3]。
    1.1.2 空气质量预测的需求
    空气质量预测是本次系统开发的扩展功能,也是其特色功能。在人们生活节奏加快的当下,仅仅知道实时的空气质量还不够,人们需要提前知道未来一段时间的空气质量状况,空气质量变化趋势等信息,并以此来安排自己的出行、锻炼等活动。空气质量预测是建立在统计计算学基础上对空气质量变化趋势的预估与模拟,需要用到数据挖掘和机器学习的相关知识。同时,空气质量的预测离不开对实时空气质量数据的搜集和记录,正是通过对已有的空气质量历史数据的分析,才能在此基础上建立预测模型,并对未来一段时间的空气质量指数(AQI)做出判断[4]。
    1.2 基本功能需求
    系统的功能需求主要是对系统所能提供的功能和服务进行分析。从总体分析,面向可穿戴设备的空气质量监测系统需要在可穿戴设备上为用户提供空气质量的相关信息;同时,可穿戴设备上所显示的信息还需要依赖于服务器所提供的数据处理服务。用户的操作主要集中在客户端。用户需要先在手机端进行选项设置,然后在SmartWatch2端进行后续的人机交互的操作,而SmartWatch2端给用户所呈现的数据则是由客户端通过服务器获取的[5]。服务器虽然不直接参与到与用户之间的交互,但它实现了数据的搜集、处理、存储等功能,对系统的实现至关重要。
    1.2.1 服务器功能需求
    服务器主要负责对数据的操作,由于客户端作为移动设备,其运算和续航能力受到制约,因而主要的数据处理操作都集中在服务器。服务器主要满足系统的以下需求[6]:
    (1) 空气质量数据的搜集和存储;
    (2) 空气质量指数的监测和预测。
    1.2.2 客户端功能需求
    客户端是用户与系统交互的主体,在分析其功能需求时,需要从用户与客户端交互的角度考虑。根据用户参与系统客户端交互的过程,可绘制出客户端用例图如图1所示[7]。
    在图1所示的客户端用例图中,用户主要参与两个交互功能。选项设置是用户对系统客户端的一个初始化设置。用户可以根据自己的需求选择所想要查看哪个城市的空气质量指数;同时,用户还可以选择是否开启空气质量预测的功能[8]。
    1.3 性能需求
    对于系统来说,除了基本的功能性需求外,还要考虑到系统运行的性能状况和用户的体验满意度。一个优秀的系统应该具备健壮的运行能力和良好的用户体验。
    1.3.1 系统可用性与可靠性需求
    本系统分为服务器端和客户端。服务器端是通过FlaskWeb框架搭建的,其运行在服务器端的网络爬虫脚本必须要能够随时抓取所需数据,并且当网络上访问的目标网页暂时出现问题时,能够及时中断访问程序,不至于脚本崩溃从而影响后续的运行。至于服务器上运行的空气质量预测程序,在做出预测所依据的空气质量历史数据不足时,能够跳过本次预测,并循环等待直到所需数据充足时再执行预测程序。此外,服务器必须长时间稳定运行以满足客户端随时访问的需求。客户端的主体是运行在手机端的,而手机端通过蓝牙功能与SmartWatch2智能手表保持通信。因为蓝牙通信的传输距离较短,这就要求每次断开蓝牙连接之后,在手表重新处于手机的蓝牙通信距离内时,要能够自动连接。同时,手机端运行的程序也需要保证能够在后台随时访问服务器端数据,在手机发生清理内存甚至重启时,保证监测应用能够自动开启。由于客户端需要连接服务器以获取数据,在客户端无法连接服务器时,需要客户端及时作出响应并提醒用户。
    1.3.2 预测准确度需求
    预测消耗时间:≤1 s。预测消耗的时间包含对存储在服务器数据库上的数据的访问、处理、分析,以及系统的预测模型计算出空气质量预测值等操作所占用的时间。
    预测准确度:空气质量等级预测准确率≥40%。空气质量等级即空气质量指数级别,从一级到六级一共分为6个等级,其类别依次为优、良、轻度污染、中度污染、重度污染和严重污染,每个级别的空气质量指数变化范围为从50~100不等。
         2 系统设计
    从整体上说,面向可穿戴设备的空气量检测系统可分为两个大的模块:服务器模块和客户端模块。服务器模块需要完成数据的搜集、处理、存储以及利用数据进行预测,按照功能的不同又可以分为爬虫模块、数据库模块和预测模块;客户端实际上包含了智能手机和SmartWatch2智能手表两个设备,他们所承担的功能主要是对数据的访问和显示,按照手机和手表各自的操作特点,可以分为选项设置模块、空气质量指数(AQI)监测模块和空气质量指数(AQI)预测模块。根据对系统模块的划分,可以绘制出系统的整体模块图,如图2所示。
    2.1 服务器模块的设计以及预测模型研究
    服务器模块将数据的搜集、处理等工作量较大的工程从客户端分离,减轻了客户端的工作压力。同时,搭建服务器,也保障了系统运行的可靠性以及数据的可靠性。服务器模块整体选择了Python作为开发语言,主要是因为Python在数据处理方面有着较大的优越性,同时基于Python开发的Flask服务器框架也为服务器的顺利搭建提供了保障。根据服务器各个模块之间的调用关系,可绘制如图3所示的服务器功能时序图。
    2.1.1 爬虫模块的设计
    爬虫模块将通过Python编码来实现,其原因是Python对网络爬虫有较为完善的功能类库支持;另外,搭建服务器所用的Flask框架也是基于Python实现的,因而两者之间的兼容性更容易协调。该模块通过对含有空气质量数据的网页进行解析,获取当前的空气质量状况,并将其数据存储到设计好的Python的dict类型中,dict类型有利于之后通过Json解析的技术获取存储数据。
    2.1.2 数据库设计
    因为需要存储31个城市每小时的空气质量相关数据以及北京市的空气质量预测数据,所以信息的存储规模相对较大,而且需要频繁的访问和修改,因而需要在服务器端架设数据库。SQLite数据库是一款关系型数据库,在设计数据库的表之前,先分析所需要存储的数据。
    2.2 预测模型的设计与选择
    预测模型涉及到对空气质量指数(AQI)进行计算,其基本思想是根据各个监测污染物的历史浓度,以时间为横坐标将其绘制成函数曲线,然后利用最小二乘法拟合函数,得到符合污染物浓度走向的函数模型,最后就可以根据得到的函数模型求得预测时间点的污染物浓度,并依照AQI的计算模型算出空气质量指数预测值。
    利用最小二乘法拟合函数,首先需要根据已有的函数曲线,对函数的类型进行预估。空气质量指数(AQI)的变化周期大致为24 h,而在这个周期内,AQI有极大值和极小值,依据这些变化规律,可以假设的模型函数包括一元[N]次函数(N≥3)以及三角函数,经过对比可知,三角函数模型的预测值准确度最高。因而在综合对比后可以发现,用三角函数模型来进行空气质量的预测相对来说最为准确。
    2.3 客户端模块的设计
    客户端模块所承担的主要功能是对服务器数据的获取和显示。因为客户端的开发是面向可穿戴设备的,所以在功能模块的设计中,需要充分考虑到可穿戴设备的特点,有针对性的利用其优势。在使用客户端模块时,首先需要在选项设置模块中开启用户所需的功能,系统中提供的功能包括选择监测城市和开启预测两个主要功能。然后,运行在手机上的主程序会定时访问服务器,以获取所需要的数据,手机端在获取数据并解析后,将结果通过蓝牙功能传输到SmartWatch2智能手表上,SmartWatch2在通过设计好的形式以最适合用户浏览的方式予以显示。
    2.3.1 选项设置模块
    选项设置模块中,用户可以根据自己的需求,对软件的基本功能和参数进行设置或修改。由于该模块全部功能都在手机端进行操作,其程序流程图如图4所示。
    2.3.2 空气质量监测模块
    空气质量监测模块是系统中最为基本、也是最为重要的一个模块。该模块需要以合适的方式在SmartWatch2的表盘上显示空气质量监测结果。由于SmartWatch2智能手表与智能手机不同的显示方式与交互体验,在设计SmartWatch2上的应用时,需要充分考虑到SmartWatch2作为可穿戴设备的特点,利用其人机交互方面的优势。
    2.3.3 空气质量预测模块
    空气质量预测模块是在空气质量监测模块基础上扩展出来的一个功能模块。该模块的主体功能是在服务器上实现的,SmartWatch2上负责获取服务器的计算数据,并将其合理的显示。空气质量预测模块在SmartWatch2端通过服务器可以获得的数据包括:空气质量指数(AQI)的预测值、空气质量等级、首要污染物以及预测的时间。为了将空气质量变化的趋势展现出来,可以通过比较预测数据中AQI的最高值和当前AQI值的大小,以判断AQI的趋势是上升还是下降。由于该模块所需显示的内容跟空气质量检测模块类似,因而采用相似的界面设计。
    3 系统的实现
    3.1 服务器的开发与预测算法的实现
    服务器的开发部分主要介绍Web服务器基本功能的实现,包括路由功能的实现,客户端响应的处理,网络爬虫的实现以及服务器与数据库的通信。本次搭建服务器选择了发行版本为Ubuntu 14.04的Linux操作系统。
    3.1.1 爬虫功能的实现
    通过对比各个网站公布的空气质量数据的有效性以及使用的友好度,最终选择使用PM25.in网站发布的实时城市空气质量数据。参照PM25.in网站公布的API文档,调用httplib模块中的HttpConnection类,并对其host参数赋值为“www.pm25.in”,得到HttpConnection类的实例,并调用实例的request方法,使用“GET”传参方式,通过定义参数“token”“station”和“city”完成对空气质量数据的访问。
         3.1.2 预测算法的实现
    空气质量预测算法的主要任务是对预测模型中未知参数进行求解。根据前几节的分析,在拟合模型过程中运用了非线性的最小二乘法的思想,并在其实现方式上选择了拟合效果相对更好的Levenberg?Marquardt算法。Python的Scipy类库中提供了关于最优化求解的相关算法的实现代码,根据Scipy类库的源码分析可知,其optimize包的minpack.py模块,定义了curve_fit函数和leastsq函数。这两个函数的实现方法类似,即传入含参的模型函数以及数据集,通过Levenberg?Marquardt算法求得残差的平方和最小时的参数值。
    在真实情况下,空气污染因子(如PM2.5,PM10以及CO等)的变化曲线是连续的,但受限于观测条件,目前只能监测到每小时空气污染因子的浓度,因而采集到的数据是离散的。为了对函数模型的拟合更为精确,在利用Levenberg?Marquardt算法进行拟合前,需要先对离散的样本进行细分。在leastSquare.py文件中,通过定义函数details(),对每两个观测点之间进行插值,使数据的连续性更强。
    3.2 客户端功能的实现
    客户端包含了手机和SmartWatch2智能手表两部分。因为两者的系统都是基于Android平台的,因而客户端实质上实现了一个Android的应用系统开发。虽然SmartWatch2的应用开发流程与Android应用十分类似,但两者之间也有一些不同之处。例如,SmartWatch2的应用的运行方式为常驻内存式,因而其应用的操作并没有明确的开始和结束的响应事件。
    4 系统测试与分析
    4.1 测试环境部署
    服务器是基于Linux系统搭建的,其测试环境配置如下:
    服务器的CPU型号为Intel Core2 Duo E7500,内存大小为2 GB,运行的操作系统版本为Ubuntu 14.04.1 LTS;服务器开发语言Python所选择的版本为Python 2.7.6;安装Flask框架,其Flask的版本为Flask 0.10.1;安装SQLite数据库,其版本为SQLite 3.8.2;安装Python机器学习的类库Numpy和Scipy,其版本为Numpy 1.9.2和Scipy 0.15.1。
    客户端的测试环境选用基于Android 4.4版本的手机,以及索尼的SmartWatch2智能手表。
    4.2 功能测试与界面显示
    手机端的选项设置模块主要有说明、城市选择和预测功能三个选项,如图5所示。
    图5所示的手机端设置界面中,左侧是设置模块的主界面。其中:“说明”功能用来弹出窗口以显示该应用所实现的功能;“城市选择”点击后的界面如图6的右侧所示,可以在该界面选择所要监测空气质量的城市;“预测功能”则是一个开关按钮,用来打开和关闭应用的预测功能。
    为了能在SmartWatch2手表端更方便地查看空气质量数据,在开发过程中专门针对表盘的首界面定制了显示空气质量指数的小部件。这项设计使得用户无需任何操作即可实时查看空气质量指数,同时,指数以不同的颜色显示代表了不同程度的空气污染等级。显示效果如图6中表盘右下角。
    点击SmartWatch2首界面中的空气质量指数小部件,则可直接进入空气质量检测界面,另外,在开启预测功能的情况下,点击屏幕则可以直接查看北京市未来6 h的空气质量预测情况。空气质量监测界面和空气质量预测界面的显示如图7所示。
    4.3 性能测试
    本次测试选取了2015年5月4日0时到2015年5月20日0时这一时间段内服务器所搜集并处理的数据集。经过统计,该段时间内系统作出的预测共计313次,其中能够与实际监测到的空气质量数据进行对比的预测有224次。基于这些数据作出分析对比,在以下几个方面计算预测的准确率:AQI等级准确率,AQI数值误差在50以内的准确率,AQI变化趋势准确率,首要污染物预测准确率,如表1所示。
    表1中系统的预测算法在AQI等级和AQI变化趋势方面的准确度虽然相对较低,但也都超过了47%的水平,基本符合预期。而如果把AQI的预测误差限制在50以内,可以看到系统预测的准确度提升到了82%以上;此外,在首要污染物的预测方面,系统的准确度也达到了73.66%。因此,本次系统在预测准确度上的整体表现合格。
    5 结 论
    在空气污染日益严重的当下,人们对空气质量的关心程度逐渐增加。本文立足于人们关心的这一热点问题,结合目前市场上流行可穿戴设备,设计并开发出面向可穿戴设备的空气质量监测系统,在满足了人们实时监测空气质量需求的前提下,还利用了可穿戴设备的优势,让用户体验到可穿戴设备在人机交互方面的巨大优点以及给人们生活所带来的便利。
    本文选取了基于Android系统的SmartWatch2智能手表,结合其在人机交互方面独有的便捷性优势,设计出面向可穿戴设备的空气质量监测系统。该系统不仅满足了人们对空气质量关注方面的需求,同时带给人们可穿戴设备便捷的交互体验。
    参考文献
    [1] 聂邦胜.国内外常用的空气质量模式介绍[J].海洋技术,2008,27(1):118?122.
    [2] YUAN Y. Step?sizes for the gradient method [J]. Ams Ip Studies in Advanced Mathematics, 2008, 42(2): 785?789.
    [3] BECK A, TEBOULLE M. A fast iterative shrinkage?thresholding algorithm for linear inverse problems [J]. SIAM Journal on Imaging Sciences, 2009, 2(1): 183?202.
    [4] QIAN N. On the momentum term in gradient descent learning algorithms [J]. Neural Networks, 1999, 12(1): 145?151.
    [5] GRATTON S, LAWLESS A S, NICHOLS N K. Approximate Gauss?Newton methods for nonlinear least squares problems [J]. SIAM Journal on Optimization, 2007, 18(1): 106?132.
    [6] GAVIN C H. The Levenberg?Marquardt method for nonlinear least squares curve?fitting problems [EB/OL]. [2011?02?13]. http://sourceforge.net/projects/lmfit/.
    [7] LOURAKIS M I A. A brief description of the Levenberg?Marquardt algorithm implemented by levmar [J]. Foundation of Research and Technology, 2005, 4: 1?6.
    [8] 何蕴良,耿淑琴,汪金辉.基于ZigBee无线传感的空气温湿度监测系统设计[J].现代电子技术,2015,38(18):133?136.
转载请注明来源。原文地址:https://www.7428.cn/page/2017/1207/6221/
 与本篇相关的热门内容: