毕设Day1

毕设Day1-关于MQ2传感器监测的实现

对于毕设中第一个功能要求是实现对家庭室内环境(甲醇/烟雾)的监测,当数据异常时,上报手机。

传感器选择理由

对于这一功能 我在传感器方面选择了

一.MQ-2气体传感器

选择这款传感器的原因是

1)简单的驱动电路 2)高灵敏度/快速响应恢复 3)广泛的探测范围 4)优异的稳定性/寿命长

5)成本低

它非常适用于家庭或工厂的气体泄漏监测装置 适用于液化气、酒精、烟雾等监测 单价在7-8元之间

二.ESP8266开发板

1)低成本 2)运用非常广泛 3)广泛的社区支持 4)尺寸小

模块实现流程

那么对于第一个要求要实现的流程图是 检测有害气体浓度——> 传输到云平台(通过ESP8266模块实现)——>检测有害气体浓度是否过高:1)如果是将报警并输出 2)如果否则返回第一步继续对当前环境进行监测

代码实现-烟雾监测

根据这个具体流程对于MQ2模块的实现功能的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int MQ2Pin = A0; // MQ-2传感器连接的模拟输入引脚
int LED = 8; // LED灯连接到数字引脚8
int threshold = 40; // 设定的气体浓度阈值

void setup() {
pinMode(LED, OUTPUT); // 设置LED引脚为输出模式
Serial.begin(9600); // 开始串口通信
}

void loop() {
int sensorValue = analogRead(MQ2Pin); // 读取传感器值
Serial.println(sensorValue); // 输出传感器值到串口

if (sensorValue > threshold) {
// 如果传感器读数超过阈值,LED灯连续闪烁
digitalWrite(LED, HIGH); // 打开LED灯
delay(500); // 延时500毫秒
digitalWrite(LED, LOW); // 关闭LED灯
delay(500); // 延时500毫秒
} else {
digitalWrite(LED, LOW); // 如果没有超过阈值,保持LED灯关闭
}
}

在这个代码中会持续读取MQ2传感器的数值,并将读数通过串口输出。当读数超过预定值40时,通过连续闪烁LED灯来示意,如果读数低于或等于40时,LED灯将保持关闭。

但是对于读数40这个指标目前仍不能完全作为唯一指标,这是我基于该传感器说明手册而做出的数值考量,因为在正常条件下传感器的读数通常在20到30的范围内,所以我选择将报警阈值设定略高于这个数值,作为参考来监测潜在的危险气体浓度增加的情况。

传感器实现原理

这一部分实现的原因是通过MQ-2气体传感器的输出信号被连接到Arduino上的一个模拟输入引脚。在Arduino上,模拟输入引脚用于读取模拟信号,这些信号通常表示为0到1023之间的值,对应于0到5伏的电压。

当MQ-2传感器检测到特定浓度的气体时,它会产生一个与气体浓度成比例的电压信号。Arduino通过其模拟输入引脚读取这个电压信号,并将其转换为数字值。

这样,通过读取这个数字值,可以大致了解传感器检测到的气体浓度。而在代码中,使用 analogRead(MQ2Pin); 函数来读取连接到指定模拟输入引脚的传感器的值。

硬件连接模拟

由于上次商家给我发的杜邦线发错成公对公 所以目前我的模拟暂且不能实现 所以我目前只能通过软件仿真来模拟 对于软件的选择 这边我选择了在Proteus平台来进行仿真

由于我的Arduino库中的UNO芯片缺少VCC和GND 所以我选择Nano来搭建

https://ooo.0x0.ooo/2023/12/01/Orwojx.png

报警反馈功能实现(预实现)

对于当数据异常的时候上报手机这一功能的实现 根据资料收集方案有以下三种:

  1. 使用Wi-Fi或蓝牙模块:你可以将Arduino与Wi-Fi或蓝牙模块(如ESP8266或HC-05)相连。当检测到异常数据时,Arduino可以通过这些模块发送警报到手机。对于Wi-Fi模块,你可以使用HTTP请求发送数据到一个网络服务器,然后通过服务器推送通知到手机。对于蓝牙,你可以直接与手机应用通信。

  2. 使用GSM模块:GSM模块(如SIM900)可以让Arduino通过移动网络发送SMS或拨打电话。当检测到异常值时,Arduino可以自动发送警报短信或拨打预设电话号码。

  3. 集成IoT平台:使用IoT平台如BlynkThing Speak,你可以将传感器数据发送到云端,然后通过这些平台的手机应用接收通知。

    对于该系统的设计中考虑到后续要利用手机通过蓝牙或Wi-Fi模块控制报警器 我选择利用WIFI模块对其接受数据,其模块选择ESP8266开发板将MQ2传感器数据发送到手机,而对于接受和处理来自Arduino的数据设计方法有设置一个手机应用或服务器端程序,同理要想设置服务器端点来接受来自ESP8266的HTTP请求并发送警报到手机,暂时考虑为利用开发一个安卓应用程序,通过互联网从我的服务器接收数据,并在手机上显示通知。

    不过未来的方案中还可以考虑利用现有的云服务来实现。之所以有这个想法也是目前我在阿里云上有两个服务器,一个是新加坡的轻量服务器,一个是在河源的云服务器ECS。我可以利用云服务器作为接收来自ESP8266的HTTP请求的后端服务器,处理这些请求,并根据需要将警报推送到手机。

    如果要做到这一点,到时候需要在服务器上运行一个网络应用,比如使用Node.js或者Python Flask。这个应用将监听来自ESP8266的HTTP请求,处理这些请求(比如记录数据、分析数据),并且可以通过集成推送通知服务、发送电子邮件或短信等方式,将警报发送到我的手机。

改进与思路

如果要确定MQ-2传感器在检测烟雾时哪个数值表示出现火灾,需要考虑几个因素:

  1. 传感器校准:MQ-2传感器需要根据特定环境进行校准。不同的环境(例如湿度、温度、气压)可能影响传感器的读数。

  2. 阈值设定:通常情况下,烟雾传感器的阈值需要根据实际环境和需求来设定。没有一个固定的“通用”阈值可以适用于所有情况。

  3. 实验数据:建立一个准确的阈值通常需要在控制条件下进行实验,以获取传感器在正常环境和火灾情况下的读数。

  4. 参考资料:有些制造商可能会提供指导性的阈值,但这些值通常只能作为一个大致的参考。

    所以在实际应用中,在后续阶段我需要将它安装在家里的厨房中,对其定期测试和不断数据校准,才能得到一个准确可靠的阈值,要能够准确的根据实际情况出现报警需要大量的数据支撑,这些都是后续需要考虑和改进的地方。