基于云端的车内环境监控管理系统的开发
2024-01-23倪志平覃晓飞
倪志平,覃晓飞
(1.柳州工学院 信息科学与工程学院,广西 柳州 545000;2.柳州工学院 保卫部,广西 柳州 545000)
0 引 言
为了提高环境监控信息数据的准确性、真实性、实时性,促进信息管理的智能化、精细化、网络化,为我国的环境保护事业长远、合理、科学地发展提供不竭的动力和创新思想,应顺应科学技术发展趋势,根据现有环境、现有资源采取有效措施,对我国环境监测技术进行创新升级,将环境监控与物联网技术进行有机整合,使终端系统与线上系统结合,让终端硬件系统联网,将数据送上云。通过终端系统采集数据后联网发送到云端进行处理,然后保存至云端数据库中,并通过前后端分离的后台管理系统进行展示和处理,从而实现人、机、物的泛在连接,提供信息感知、数据传输、数据处理等服务,以此促进我国环境保护事业的进步与发展[1-4]。
1 系统的总体设计
1.1 系统整体架构
本文设计的基于阿里云IoT Studio 的环境监控系统的整体结构[1]如图1 所示。终端硬件系统的传感器检测到数据后封装成阿里云IoT 支持的数据格式并发送至阿里云物联网平台;数据到达阿里云后,管理员可通过阿里云IoT 提供的网页端(IoT Studio)实时查看和显示终端硬件系统传来的温湿度数据;阿里云IoT 会将接收到的数据通过AQMP 协议转发至已准备好的服务器中,并由部署在服务器中的后台管理系统对数据进行接收和处理,同时在后台界面展示和处理数据。管理员能在任何地方联网,通过后台管理系统查看和处理从环境现场的终端硬件系统采集到的所有环境数据,从而实现环境监测系统的智能化、精细化、网络化[5]。
图1 系统整体结构
1.2 硬件终端设计
(1)NodeMCU 数据采集主控芯片
根据整体模块设计可知,NodeMCU 的整个工作流程包括温湿度传感器的数据采集、主控模块的数据处理、OLED屏显示数值以及通过WiFi 将数据上传云端等步骤。如图2 所示是本系统下位机进行单次数据采集显示并上云的工作流程。
图2 终端温湿度采集流程
(2)DHT22 温湿度传感器设计
DHT22 的驱动程序设计部分需要引入DHT 库文件,使用DHT dht(对应引脚,模式)语句实例初始化DHT22 对应的引脚和模式后即可读取温湿度,dht.readHumidity()为读取湿度值,dht.readTemperature()为读取温度值;同时需要配合DHT22 的采样周期(2 s),因此在读取温湿度值之前要设置延迟2 s。DHT22 单次数据采集工作流程如图3 所示,当读取温湿度数值失败时将直接终止程序运行。
图3 DHT22 温湿度传感器的工作流程
(3)OLED 显示模块设计
图4 为本系统OLED 刷新一次显示内容的程序流程。OLED 的驱动程序非常简单,本系统使用的驱动库为u8g2库,OLED 的初始化和一系列操作只需调用相关库方法即可。OLED 每次显示新内容都需要清屏,然后写入所显示的字体类型以及显示位置,最后写入要显示的数据。到此,OLED显示内容的工作就完成了。其中所设置的坐标是否合适非常重要,这决定最终显示的效果,同时还需要根据显示屏大小控制所显示数据的平面大小。
图4 OLED 驱动程序流程
1.3 阿里云IoT 物联网平台管理设计
硬件设备接入阿里云IoT 需要使用MQTT 协议[6],同时阿里云IoT 对于设备接入也已为我们在Arduino 库中加入了相关的SDK—AliyunIoTSDK。AliyunIoTSDK 是基于PubSubClient 底层库开发,兼容列表与PubSubClient 相同,而PubSubClient 是对MQTT 进行了封装以简化开发的第三方库。设备接入如图5 所示。
图5 硬件接入云
设备接入云所上传的数据格式还需要根据阿里云IoT 的设备接入上传数据的格式进行设计,需要上传设备的产品密钥、设备名称、设备密钥和所在的IoT Studio 区域,这些数据在阿里云物联网平台实例的设备管理中可以获取。
图6 为单次数据上传阿里云的流程。设备接入云需要在Arduino 中引入两个库,一是AliyunIoTSDK 库,另一个是PubSubClient 库。在开发前需要在阿里云IoT 平台的实例中新建产品和添加设备。新建产品步骤如图7 所示,添加设备在产品菜单项第二项中添加即可,新建产品和添加设备的具体过程还需要根据实际应用而改变。有了产品和设备后可查看设备信息,设备证书如图8 所示。根据设备信息调用AliyunIoTSDK 库函数创建一个实例IoT,在每次读取到温湿度值时通过实例IoT 调用发送函数即可将数据上传至阿里云。
图6 数据上云流程
图7 阿里云IoT 创建产品
图8 设备证书
1.4 数据转发服务器
数据转发流程如图9 所示。阿里云IoT 转发数据可在规则引擎中设置[7],如图10 所示。本系统使用服务端订阅进行数据转发,服务端订阅有两种方式:(1)AMQP 服务端订阅消息;(2)MNS 服务端订阅消息。本系统使用AMQP 服务端订阅消息。AMQP(Advanced Message Queuing Protocol)为高级消息队列协议,利用此协议可实现客户端与消息中间件之间的信息交互,而且不受客户端和中间件的不同产品、不同开发语言等条件的限制。
图9 数据转发流程
图10 规则引擎
在阿里云物联网平台配置AMQP 服务端订阅后,当对应终端硬件开始正常运行并将数据上云时,所配置的订阅会将收到的数据通过AMQP 通道推送至已准备好的服务器[8]。而在服务器中,还需要编写相应的AMQP 客户端接口及业务逻辑用于接收和回应AMQP 服务端所发送的数据。
在AMQP 客户端的应用实现方面,阿里云IoT 已经为我们提供了AMQP SDK 接入示例,我们可根据自己的需求更改[6]。
1.5 用户后台管理系统的设计
1.5.1 功能结构
后台管理系统的功能结构如图11 所示,拥有基础的登录退出功能以及登录超时自动退出功能,并提供了一些对温湿度数据进行基础操作的功能,如历史数据查询、数据导出、数据删除等[7]。
图11 功能结构
1.5.2 架构设计
用户后台管理系统为前后端分离架构,前后端分离是为了实现前后端解耦[9],将前端和后端的工作界限分清,前端专门负责页面跳转、数据的展示与人机交互;后端则负责为前端提供数据接口,返回JSON 数据,为前端处理和存储数据。应用分层如图12 所示,明确了前后端分工,使两者各司其职、互不干涉;同时,后端业务分层采用控制层、业务层、数据访问层(数据持久层、通用处理层)三层架构,以实现系统的高内聚、低耦合。
图12 架构设计
1.5.3 数据库设计
本系统需要新建3 张数据库表,分别是用户表、存储温湿度数据的环境数据表、设置预警值及判断每一刻温湿度状态的预警阈值表,数据库ER 图如图13 所示。数据库字段可根据需求自定义,即根据实际业务需求逐渐丰富和完善。由于本系统仅作为一个环境监测系统开发样例,因此只需要较少字段即可达到展示效果。
图13 数据库ER 图
2 系统的实现
2.1 设备终端实现
给下位机上电启动后,系统正常监测到了温湿度值并显示在OLED 屏幕上,如图14 所示;并且每当温度超过预警值时,蜂鸣器将会报警。
图14 设备终端的实现
2.2 阿里云IoT 数据接入与转发的实现
阿里云IoT 平台为我们提供了设备模拟器,能够模拟终端设备与云端建立MQTT 连接、上报数据、接收云端控制指令以及物模型通信等完整过程。
成功启动AMQP 客户端后,客户端程序会另开启一个进程监听10 min(为了节省资源,笔者设置为10 min),10 min 后客户端没有监听到任何数据将会结束进程。如图15所示,调试设备后启动设备模拟器,选择属性上传,填入对应属性后点击发送指令就完成了一次完整的服务流程。发送指令后可以看到右侧日志打印的信息,成功模拟了终端设备将环境数据发送至阿里云IoT,阿里云IoT 也成功将数据转发至AMQP 客户端。
图15 启动AMQP 客户端
2.3 阿里云IoT Studio 网页数据的展示
IoT Studio 网页数据的展示如图16 所示,可以在网页端实时查看温湿度数据。
图16 IoT Studio 网页数据的展示
2.4 后台管理页面的实现
首先我们在本地启动环境数据后台管理系统,打开后台界面进入登录页面,如图17 所示;输入账号和密码后进入首页,在导航栏菜单项选择进入数据监控页,如图18 所示。点击图中开关开始接收数据并进行监控,温湿度的数据能够正常显示,并且显示的颜色会随着页面下方的阈值范围而变化;同时下方的表格也会记录接收到的数据。改变温湿度适宜范围时,系统可以将数据同步至数据库并提示同步成功,如图19、图20 所示。
图17 登录页面
图18 数据监控页
图19 开始监控界面
图20 更新并同步温湿度适宜范围
在导航栏选择进入数据观测页,首先看到的是默认加载每页五条数据,并用不同颜色的标签组件标识了每条数据的不同状态,比如正常状态为绿色,异常状态为黄色,如图21所示。同时,可通过表格上方的检索框检索出想要的数据,如图22 所示,检索出状态正常、温度为25℃、湿度为81%的所有数据;也可以通过时间段检索出指定时间段的数据,如图23 所示。
图21 数据观测页
图22 状态和数值检索
图23 时间段检索
3 结 语
本系统是对个别环境监测对象(温湿度)进行监测并将数据接入阿里云IoT,阿里云IoT 将数据转发至服务器后台管理系统的工作流程及解决方案的开发案例,重点介绍和分析了下位机以及后台管理系统的设计与实现方式,如下位机各功能模块如何使用Arduino IDE 进行开发,后台管理系统页面跳转、异步数据请求和界面UI 的设计与实现等。
本系统后台管理系统所使用的的技术栈皆为目前主流技术,在行业内被大量应用于实际项目的开发。本系统的设计与实现为环境监测及物联网应用提供了一个可行且技术栈为目前主流技术的解决方案及项目实施过程[10],进一步推进我国环境监测系统的发展,增加物联网应用场景案例。