摘要
随着计算机科学的快速发展, 以及互联网技术的发展, 人机交互技术的研究向着使人和实验室管理系统以更加舒服、更加自然、更加有效率的方式发展。智能实验室是一种自然符合实验室管理人员习惯性的管理方式, 拥有有实验室全景的直观性, 通过各种传感器, 将实验室的数据进行采集打包, 并且经过本地服务器的数据融合算法对数据处理过滤后,利用互联网将数据传输到云端服务器, 再使用客户端向云端服务器请求相应的数据, 并且显示在客户端的界面上。本系统是以Arduino开源控制板,结合传感器技术及HTTP请求对系统硬件构架,功能模块及软件设计进行研究,系统通过温湿度传感器,烟雾传感器,光照传感器等作为采集设备,进行信息采集和处理后,发送给本地服务器,本地服务器对采集的数据进行算法处理后,监测实验室内环境是否异常,如若异常而产生相应的处理措施,并且通过WiFi模块发送到云端服务器。Web客户端和手机客户端通过网络连接着云端服务器,可实时监测实验室内的环境情况。经过测试,系统部署快速简易,搭建成本较低,在扩展性、普及性、定制性和适用性方面具有较好的表现,有效的针对校园实验室环境进行监测,增强设备仪器的使用寿命
总体设计
系统由测量模块、数据采集与控制模块、数据处理与通信模块、物联网云平台模块等多个模块组成并实现了温湿度、烟感、光照等实验室环境数据信息的采集和上报.测量模块包含多种传感器对烟感、温度、湿度和光照数据进行感知测量采集,数据采集是通过Arduino控制板读取传感器数据,Arduino控制板对数据经过中位值滤波法后,进行防脉冲干扰平均滤波法处理和过滤,利用通信模块4G或WiFi网络传输数据至云端服务器,通过第三方物联网平台OneNET来实现数据的收集、处理和监控.同时,云平台的传感数据可以随时通过OneNET进行调用,实时查看实验室环境的监控信息,并可设置相应阈值实现自动报警功能,在异常环境下的设备维护需要而进行断电处理。系统以OneNET平台的Web及手机APP作为客户端,使用柱状图和折现图及仪表盘作为显示,直观的明了的展示数据的变化,通过多组传感器采集数据进行数据的对比,提高系统的可靠性,系统在环境采集的同时,也实现了远程控制设备,进而达到加强实验室的安全防范的目的。
系统具有可高度个性化采集数据节点、历史数据,可靠性强、易扩展,便携式以及成本低等特点。
所需硬件
- Arduino UNO x2
- ESP8266-01s X2
- DHT11温湿度传感器
- 4路继电器模块
- MQ-2烟雾气敏传感器模块
- RGB全彩灯
- 蜂鸣器
- 红外接收模块
- 光线传感器
- 红外遥控
Arduino UNO开发板:
ESP8266-01S:
DHT11温湿度传感器:
4路继电器模块:
MQ-2烟雾气敏传感器模块:
RGB全彩灯:
蜂鸣器:
红外接收模块:
光线传感器:
红外遥控:
Arduino UNO扩展板设计:
实物图:
功能述说
温湿度、光线、烟雾传感器作为采集节点,负责采集温度、湿度、光线、烟雾的数据,红外接收模块负责接收红外遥控的遥控信号,ESP8266 WIFI模块负责连接OneNet模块,将采集节点的数据传给OneNet服务器。当温度>50,湿度>80,烟雾>600 时,蜂鸣器发出报警,温度报警RGB彩灯发出红光,持续时间10s,如果10s内红外遥控按下ok,则关闭报警。同理,湿度报警发出蓝光,烟雾报警发出绿光
程序
Arduino UNO板1(数据上传,环境监测数据)
#include <dht11.h> //引用dht11库文件,使得下面可以调用相关参数
#include <Metro.h>
#include <IRremote.h>//红外
#include <IRremoteInt.h>
//#include <MsTimer2.h> //定时器库的头文件
#include <Adafruit_NeoPixel.h> //RGB
#include<pt.h>//声明protothread
#include<PT_timer.h>//声明pt.timer
#define MAX_LED 9
#define DHT11PIN 8 //定义温湿度针脚号为8号引脚
#define DHT11PIN2 9 //定义温湿度针脚号为9号引脚
#define MQ_2_1PIN A0 //定义烟雾1引脚为A0
#define MQ_2_2PIN A1 //定义烟雾2引脚为A1
#define BuzzerPIN A3 //定义蜂鸣器引脚A2
#define ButtonPIN 4 //定义复位按键引脚4
#define LightPIN A2 //定义光线传感器引脚A2
#define RGBPIN 5 //定义RGB灯引脚
#define SMO1PIN 7
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);//RX=2,TX=3
Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, RGBPIN, NEO_RGB + NEO_KHZ800 );//长度,引脚,类型
dht11 DHT11; //实例化一个对象
dht11 DHTT11_2;
Metro T_Hmetro = Metro(2500); //把 blink1Metro 实例化 Metro 对象 ,并设置间隔时间
Metro timermetro=Metro(1000);
PT_timer servotimer1;
PT_timer servotimer2;//定义两个计时器
PT_timer servotimer3;//继电器的定时器
IRrecv irrecv(ButtonPIN);//红外
decode_re