基于Arduino和机智云的实验室监测系统
本帖最后由 Kara 于 2022-2-23 18:35 编辑基于Arduino和机智云的实验室监测系统
实验室监测领域长期存在着耗费人力、环境数据监测查看不便及相关检测设备不易维护等问题,针对这些问题提出一种基于物联网云平台的解决方法。使用Arduino板和多种传感器对实验室进行数据采集,通过WiFi无线网络上传到机智云云服务平台,进一步发送到本地Python服务器的MySQL数据库,并在手机安卓应用端显示。实验结果表明管理员和检查员可对实验室随时随地接收异常信息提醒,查看实验室每日及每周历史数据。该实验室监测系统可以减少实验室人力、远程管理、方便维护。
引言
许多高校实验室安装了火警系统、温湿度监测系统等,这些系统大多安装后无法及时查看是否已损坏,在发生事故时系统的预警、处理等不如预期,且系统安装成本高昂,布线复杂。大多环境监测报警系统采用PC端接收查看服务器端传来的数据,当管理员外出或者不在电脑前时,便无法实时查看相关数据,对实验室的管理带来一定不便。
当前各国高度重视物联网发展带来的产业机遇,大力推进构建物联网生态。国内外利用物联网对实验室监测的有关文献不多,且没有给出详细的实施方案。文献提出利用Onenet平台管理实验室教学和预约,实验资源利用率明显提高,不足在于该平台与登录网站的连接开发难度大,系统操作步骤无图展示。
文献介绍了实验室化学品管理现状,采用人脸识别和语音交互技术实现微信智能客服,但是没有进一步具体方案说明。文献利用Arduino和传感器设计了实验台和管理员端,可以完成签到、监控,无远程管理功能。文献将实验室环境监测、设备管理、实验教学结合,提出相关设计思路,但没有系统手机端和PC端应用展示。
本文在上述研究的基础上,将传感器技术、无线通信、云平台、数据库、移动应用技术相结合,设计了一套实验室监测系统,利用Arduino上多路外设传感器模块,如实验室的温湿度、门的开合、空气质量等进行监测并采集相关数据,成本较低。通过WiFi无线通信技术将数据上传到机智云云服务平台,无需网络布线。进一步传输到本地Python服务器的MySQL数据库,轻量化,方便开发。管理员安卓手机应用连接到数据库,可随时查看动态、历史数据、报警,实现远程管理、及时处理。
1 实验室检测系统的设计1.1云服务平台的选择
微软、IBM、亚马逊、百度、阿里、华为等产业巨头先后推出物联网操作系统、云平台和大数据分析服务,例如谷歌发布Android Things,亚马逊推出Amazon AWS IOT,中国移动自主开发Onenet开放平台,京东、360等企业也在积极开展物联网平台建设,其中机智云物联网平台有着独到优势,提供了从定义产品、设备端开发调试、应用开发、产测、云端开发、运营管理、数据服务等覆盖智能硬件接入到运营管理全生命周期服务的能力。
对于各类无线通信芯片均有良好的兼容性,且在机智云淘宝店的WiFi模组中已经移植好了底层程序GAgent,可以直接使用机智云官方应用配置连接并传输数据。机智云云服务平台提供了许多方便开发的服务功能,例如可以在网页上远程监控调试设备,对于开发者来说十分便利,因此选择机智云作为云服务平台。
1.2硬件功能及设计
在硬件上由于每个实验室至少布置一个节点,高校实验室数量较多,因此需要考虑成本。节点采用Arduino Atmega328p主芯片,拥有模拟输入通道6路,数字I/O通道14路,易扩展,可以驱动多路外设传感器,来对实验室的各类环境参数进行采集。
监测温湿度的传感器选择DHT11,能够同时监测温度和湿度这两项参数。监测门开合状态选择一款可调有效距离的红外传感器,通过在一定距离下监测是否有遮挡物就可判断门的开合状态,若有遮挡物则表示门在打开,反之若没有则表示门已关闭。监测空气质量的传感器选择MQ135,在实际中广泛使用,对烟雾、硫化物、氨气、苯等有害气体较为灵敏。水位传感器、实验台电压传感器等不再赘述。设置好对应I/O口驱动,采集数据的频率,然后将采集来的数据进行矫正、封装处理。
传感器数据通过无线通信模块传输到AIoT开发平台,机智云物联网平台支持WiFi、4G、Wi-Fi +蓝牙模组,WiFi+NFC模组通信方式,例如乐鑫ESP8266、中移,移远等。考虑到通信数据量和后续功能扩展,选择ESP8266 WiFi模块实现数据转发。
机智云平台接收到数据后,传输到管理员手机应用端,进一步保存到本地服务器,因此使用固定IP地址以便手机应用端访问,数据保存在本地数据库。本地服务器对检查员发送的查询请求进行回应,并从数据库中查询相关信息返回给检查员。
1.3软件功能及设计
Python语言相较于其他编程语言,具有开发速度快、代码量少、使用方便及内部类型使用成本低等显著优势。MySQL数据库管理系统应用广泛,兼容性优良,使得搭建本地数据库并进行关联更为简便、快速。因此采用Python语言来实现本地服务器的行为逻辑,数据库采用MySQL。本地服务器主要功能:1)配置管理员和检查员账号密码,分配不同检查员到不同实验室;2)接收管理员应用发来的数据,并将数据保存到本地数据库;3)接收检查员应用查询数据请求,从本地数据库中查询相关数据并返回。安卓手机应用有两种身份权限:管理员和检查员,通过登陆账号进行区分。系统框架如图1所示。
管理员主要负责管理整个实验室监测系统硬件,功能主要为:1)与机智云平台连接,接收每一个实验室的Arduino传感器所采集到的数据;2)分辨数据来自于哪一个实验室,进行封装处理,将这些处理好的数据发送给本地服务器;3)读取本地服务器的相关数据,对这些数据进行处理并利用。
检查员主要负责查看自己所负责实验室的情况,若实验室有异常情况及时处理,功能主要为:1)访问服务器读取账号密码相关信息,成功登录后将根据账号来判断管理区域;2)查询并接收管理员传送到服务器的实验室数据,将数据进行处理,分辨属于哪一个实验室并动态显示出来;3)若数据异常,则发送报警消息提醒检查员;4)最后根据相关信息生成历史数据曲线,从而对整体情况有更好的把握。
图1 系统框架
2 实验室监测系统软件实现2.1手机应用软件
登录功能是在点击登录按钮的时候,先将填写的账号信息发送给本地服务器进行验证,之后将接收到的服务器信息作为message消息发送到handler中进行处理。账号信息错误则进行提示,若账号正确则在handler中再次向服务器发送密码信息。如此反复验证,直至账号密码皆正确则可进入下一页面,系统登录界面如图2所示。
图2 登录页面
在登录成功后,根据账号判断属于管理员还是检查员。以检查员为例,进入指定的实验室监测区域列表页面,在此页面中不断向服务器查询本人所负责的实验室信息,并将信息保存到手机,然后判断这些信息是否正常,若有异常则采用顶栏消息通知的方式对检查员进行提醒。图3所示为某检查员负责实验室选择页面,检查员账号不同,这里的选择页面也不同。
动态显示数据功能,是在进入实验室数据查看页面后,开一个新线程读取本地服务器数据库中的相关数据,将数据以message的形式发送给handler,handler接收到数据后进行处理并动态更新,在发现异常数据时,会把该数据字体变红以提醒检查员。
历史数据曲线功能是在点击实验室数据查看页面的历史数据按钮后,将进入历史数据曲线页面,然后在绘制曲线图的同时开两个线程,分别去访问服务器读取相关数据,将服务器发回的数据以message的形式保存,并在handler中进行处理,handler内主要将数据保存下来,并赋值给图表进行更新绘制,图表的绘制采用MPAndroidChart库。MPAndroidChart为目前安卓图表库中最成熟、功能最全的库之一,对于新手开发图表十分简单,缺点是引入后项目文件会变得较大。
图3 实验室选择页面
2.2本地服务器软件
本地服务器,读取本机IP地址作为服务器IP地址,然后设置端口进行通信。完成对数据库的连接及服务器设定的初始化操作后,采用循环的方式进行监听手机应用端的请求通信,根据传送过来的数据开头标识位来进行判断该请求为何种请求,并进行下一步的处理。在响应完一次请求后将断开连接,并继续监听下一次的请求。
3 实验结果分析3.1本地服务器接收数据并保存到数据库
首先测试的是本地服务器能否正常接收管理员应用数据并保存到本地数据库,通过对比数据库数据变化及服务器状态进行判断。
图4所示为数据库更新前的数据库,最后一条数据id为3 060,时间为:2020-03-28 05:59:28。
图4 本地服务器更新前的数据库
图5所示为服务器cmd运行图,服务器发送了3次“success”,代表已成功接收3条数据并存入数据库。
图6所示为数据库更新3条数据后的数据库,最后一条数据id为3 063,且时间也已更新为:2020-03-28 14:47:03。
以上实验表明服务器已能正常接收数据并保存到本地数据库中。
3.2 数据监测和显示
图7所示为实验室动态数据显示页面。这里需对数据进行解析,即对接收到的数据进行截取并对截取的部分进行检测,由于在源数据中,一些数据的有效数字前会含有“0”,例如:“023”,所以DataJX()函数还对截取的数据进行去0工作,若截取的数据的有效数字前含有“0”,则将“0”去除,若没有则直接进行输出显示。setTextColor函数修改字体颜色,异常数据字体颜色需改变,而当异常数据恢复正常时,字体则要变回原本的颜色。
图5 本地服务器成功接受数据
图6 本地服务器更新后的数据库
图7实验室动态数据查看
图8所示为应用提示异常数据消息,这里取系统时间来生成id,顶栏消息的发送依赖通道进行,而只有拥有不同的通道id,才能发送多条不同的顶栏消息。当有多实验室同时出现异常时,顶栏消息可以发送多条消息进行提醒。mVibrator.vibrate(1000)函数在发送消息的同时使手机震动,震动时间为1s。
图8异常报警提醒
使用Arduino主芯片发送模拟错误数据,温度50 ℃,图7已显示有异常数据,并颜色改变为红色,图8显示已收到异常报警信息,以上实验表明数据监测功能正常。
图9所示为历史数据图表页面,分为每日数据和每周数据两个图表。绘制每周数据图表的函数chart(),参数包括3位数据,0位数据为y轴最小值,1位数据为y轴最大值,2位数据为y轴数据最小间隔。向数据图表添加新的数据并更新绘制的函数entry_add_wc(),其第1个参数为x轴的坐标,第2个参数为y轴坐标,MPAndroidChart添加数据采用的是Entry类型数据,将x轴与y轴坐标合在一起进行传入,传入后进行更新绘制。历史数据显示完整,功能正常。
图9 历史数据曲线显示
4结论
本文系统将传感器、无线通信、云平台、数据库、移动应用技术相结合,由性价比高的Arduino板连接多传感器,降低了现有实验室监测系统的成本,采用WiFi模块和机智云平台收集并发送数据到本地数据库,安装方便,使实验室管理员能随时随地利用手机端应用,进行查看动态数据、历史数据、接收报警信息,节省了实验室管理的时间、人力成本,更好的保护实验室人员和设备。下一步,系统将摄像头接入系统,通过定时拍照、人脸识别技术判断实验室有无异常;将现有空气净化设备接入,实现新风灭菌除臭;采用数据可视化技术,使系统用户更直观了解实验室状态。
页:
[1]