基于云平台的校园气象站系统
2020-08-10梁泽东吴祖贤张海强
梁泽东,吴祖贤,张海强
(1.北方民族大学电气信息工程学院,银川750021;2.北方民族大学计算机科学与工程学院,银川750021;3.北方民族大学电气信息工程学院,银川750021)
0 引言
当代智慧农业、化工厂及人们的生活出行对气象数据的要求越来越高,小型气象站更加受到人们的重视。物联网技术发展使得小型气象站的信息传递和存储变得十分便捷。为了有效提高物联网产品开发的效率出现了物联网平台,这个气象站建立在阿里云物联网平台上,利用平台的接口完成App制作和网页的构建,同时还可以完成大屏展示和远程控制。相比NBIoT这个气象站连接校园网即可快速进行数据交换,又无需另外购买NB卡及套餐。气象站用AMQP协议传输数据到数据库,数据库可以实时接收数据并完成分析,比以往的Tomcat部署Web应用速度更快操作更加简单。
1 气象站工作原理
气象站可以分为硬件采集上传部分、云平台流转数据和显示与控制部分、ECS数据存储分析部分、流通协议部分。硬件采集数据后用轻量级消息传输协议MQTT[1]连接云平台,用JSON数据交换格式完成硬件与平台的信息翻译。云平台和ECS主机之间用高级消息队列协议AMQP完成平台和ECS主机之间大量的信息交流。云平台是数据的中枢,接收硬件数据也可以控制硬件。平台数据流向App和网页显示,也流向建立在云主机上的数据库进行分析。基于平台的App和网页实时显示采集数据和分析数据。
图1 气象站系统原理图
2 各部分组成及工作原理
2.1 硬件采集上传部分
主控:采用NodeMCU作为主控部分,它是ESP8266 SOC上烧录了NodeMCU固件,可以用Lua语言开发。如果熟悉Arduino可以用Arduino IDE直接开发,相当于直接操作固件调用芯片内部资源。ESP8266内置超低功耗Tensilica L106 32-bit RISC处理器,CPU时钟速度最高可达160MHz,支持完整的TCP/IP协议栈。NodeMCU连入校园网,使用阿里云提供的SDK实现MQTT协议连接物联网平台,发布和订阅的数据都用JSON格式解析。NodeMCU利用校园内便利的校园网资源,连接校园Wi-Fi发送温湿度、风力大小等天气数据,接收平台传来的控制信息,根据季节情况改变选择使用的传感器种类,合理调整上传频率节约平台流量。
温湿度检测:DHT11是数字温湿度传感器,内部自带处理芯片进行AD转化。主控模块采集的是数字信号,减轻主控芯片的数据处理压力,增加气象站系统硬件反应速度。模块内部含一个电阻式感湿元件和一个NTC测温元件,测量范围是湿度20~90%RH,温度0~50℃。检测温湿度对采集速度没有过高要求,所以传感器选择中心在于准确度[2]。DHT11不能检测零下温度,考虑到气象信息的实际情况,气象站需要进行硬件调整。云平台可以控制硬件的活动,在温度低时启用DS18B20温度传感器。
风力检测:三杯风速传感器采用优质铝合金型材,表面经电镀喷塑处理,内部经过防水处理。小型直流有刷电机连接三杯旋转轴,产生的电压近似与风速成正比。电压采集采用归一化处理之后代入公式计算风力。在气象站中风力传感器应该置于高处,所以采用RS-485远距离通讯减少误差。
输出电压与风速的关系:
风速 S(m/s),电压 V(mv)。
雨量监测:雨量传感器由一个雨滴接收板和一个电压比较电路组成,接收板连接在比较器的电阻上,雨水降落在挡板上改变电阻阻值从而改变电压。接收板面积加大,摆放时与水平面尽量平行来减小误差。雨量检测经过测试得出表1。
表1 雨量与传感器采集值关系表
PM2.5检测:采用激光PM2.5检测系统,由于激光的高方向性和高相干性,激光技术在测量及传感领域有很大的应用前景[3]。气象站的激光发生端安装风扇提供稳定的气流,掺杂各种微粒的气流经过时发生散射,接收端进行光电转化并放大电信号,经过AD处理输出数字信号。NodeMCU采集到数字信号后上传平台,平台时刻展示PM2.5数据数,数据分析对比之后发送信息给平台提示人们出门佩戴口罩的情况。
2.2 云平台流转数据和显示与控制部分
物联网平台作为数据流转中间环节,可以把实时数据流转到App、网页、数据库。硬件、平台、显示、数据库存储的基础是MQTT协议的topic[4]即数据流通的属性名。在物联网平台设计网页和App应用并链接到自己的网址下,App和网页的制作是简单的图形拼接,用不同的模块组合完成数据显示清洗功能,不涉及复杂的编程,这样在满足需求的前提下大大提高了效率。App和网页设计时都可以添加硬件控制组件,当季节变化时合理控制硬件上传频率和温度传感器的配合情况。气象站利用平台的接口把需要实时显示的数据在网页和App上显示,同时平台接收ECS数据库分析结果的信息也可以显示。人们看到信息实时变化的同时,还能看到穿衣指数、是否需戴口罩等提示。
2.3 ECS 数据存储分析部分
为了对采集的气象数据做全面的分析并能够存到本地的存储设备中,气象站把数据流转到自己的数据库中,ECS云主机上建立SQL Server数据库,配置管理权限和登录信息。基于数据库的分析程序可以随时接收、分析、发布消息,云上数据库操作和普通的数据库一样。在云主机上安装IntelliJ IDEA配置JDK1.8环境。运行Apache Qpid JMS客户端,用标准化的消息中间件AMQP协议完成平台和ECS的大量数据交换。数据存储于数据库中,使用Java持久层框架MyBatis进行数据操作,建立数学模型结合大量的数据统计出当天及以后几天的数据走势。ECS发送信息给平台在App和网页显示完成预报。PM2.5检测到的测量值较大并持续增加时,ECS发送信息给物联网平台在显示界面提示戴口罩。数据把空间存满时,把数据备份到本地并删除云端数据。
2.4 流通协议部分
交流就需要媒介,软件在网上交流摆脱了时间空间限制,用标准化的协议统一各方语言。JSON是一种轻量级的数据交换格式,为机器解析和生成提供便利,并有效地提升网络传输效率。NodeMC上传数据时把字符串转换为平台的数据格式。平台操纵硬件时,
JSON可以将JavaScript对象中表示的一组数据转换为字符串,在硬件程序中传递字符串[5]。MQTT是一种发布/订阅轻量级的消息传输协议,为网络受限设备传输数据提供有力保障。AMQP高级消息队列协议,是一个标准化的消息中间件协议。MQTT完成硬件和平台的信息交流,AMQP完成平台和ECS数据库信息交流。他们连接的两端都互为生产者和消费者,进行相互之间的交流。单片机的处理能力较差选择轻量级的MQTT协议,平台和数据库间信息交换量巨大传输速度快,选择性能较强的AMQP协议。
3 软件设计
气象站的软件有本地的Arduino IDE和云服务器上的IntelliJ IDEA及SQL Server。Arduino语言基于Wiring语言开发,简单易学[6]。硬件部分的程序包括数据采集、连接Wi-Fi、数据发布和订阅、JSON解析。风力检测、雨滴传感器用Arduino模拟量读取进行AD转化,DHT11、DS18B20和PM2.5传感器发送数字信号,NodeMCU用数字量读取。程序完成其他功能有相应的SDK,例如MQTT协议使用aliyun_mqtt.h实现。云主机上安装JDK1.8环境,打开IntelliJ IDEA创建Maven项目,添加Apache Qpid JMS客户端和其他依赖,进行数据流转。通过数学期望模型处理数据库数据,将未来天气状况进行评估。
图2 采集上传程序
4 结束
云平台为物联网应用提供便利,为合理利用平台的流量资源通过平台可以控制硬件,以不同的频率调用不同的硬件上传数据。物联网的云上气象站系统完成数据的自动采集,自动分析,实时显示。物联网技术将会在未来气象、农业、工业生产中发挥巨大的作用。物联网应用普遍分为硬件采集信号部分,硬件联网上传部分,网络端数据流转部分,应用分析部分。技术发展需要细化工作任务,云平台正式基于这个背景下的产物,物联网发展需要模块化。
图3 数据处理程序
图4 温湿度部分实时显示(网页端)