欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 基于Arduino的厨房安全检测系统:守护家庭的智能助手

基于Arduino的厨房安全检测系统:守护家庭的智能助手

2025/5/2 16:14:18 来源:https://blog.csdn.net/2301_78925693/article/details/145267009  浏览:    关键词:基于Arduino的厨房安全检测系统:守护家庭的智能助手

 

在现代生活中,厨房是家庭中不可或缺的一部分,但同时也是安全隐患较高的区域。燃气泄漏、火灾等意外事故时有发生,给人们的生命和财产安全带来威胁。为了提高厨房的安全性,我决定利用Arduino开发一套智能厨房检测管理系统,实时监测环境状态,及时发出警报,为家庭安全保驾护航。

厨房是家庭中频繁使用燃气和明火的场所,稍有不慎就可能引发火灾或燃气泄漏事故。传统的安全措施往往依赖于人工检查和简单的报警设备,这些方法不仅效率低下,而且无法实时监测和快速响应。因此,开发一个能够自动监测厨房环境、及时发现潜在危险并发出警报的智能系统显得尤为重要。

硬件连接

  1. OLED显示屏(I2C接口)

    • VCC → Arduino 5V

    • GND → Arduino GND

    • SDA → Arduino A4

    • SCL → Arduino A5

  2. DHT11温湿度传感器

    • VCC → Arduino 5V

    • DATA → Arduino 数字引脚2

    • GND → Arduino GND

  3. MQ4气体传感器

    • VCC → Arduino 5V

    • GND → Arduino GND

    • AOUT → Arduino 模拟引脚A0

  4. 火焰传感器

    • VCC → Arduino 5V

    • GND → Arduino GND

    • OUT → Arduino 数字引脚3

  5. 红色LED

    • 阳极(IN) → Arduino 数字引脚4

    • 阴极 → GND

  6. 绿色LED

    • 阳极(IN) → Arduino 数字引脚5

    • 阴极 → GND

  7. 蜂鸣器(低电平触发)

    • 正极 → Arduino 数字引脚6

    • 负极 → GND

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Wire.h>
#include <DHT.h>// 初始化OLED显示屏
#define SCREEN_WIDTH 128 // OLED显示屏幕的宽度,以像素为单位
#define SCREEN_HEIGHT 64 // OLED显示屏幕的高度,以像素为单位
#define OLED_RESET     -1 // 重置引脚;不使用时设置为 -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);// 初始化DHT11传感器
#define DHTPIN 2     // DHT11数据引脚连接到数字引脚2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);// 定义传感器和输出设备的引脚
const int gasPin = A0;       // MQ4模拟输出引脚连接到A0
const int flamePin = 3;      // 火焰传感器引脚连接到数字引脚3
const int redLedPin = 4;     // 红色LED连接到数字引脚4
const int greenLedPin = 5;   // 绿色LED连接到数字引脚5
const int buzzerPin = 6;     // 蜂鸣器连接到数字引脚6// 定义阈值
float gasThreshold = 0.5;    // 燃气浓度阈值(根据实际调整)void setup() {Serial.begin(9600);        // 初始化串口通信dht.begin();               // 初始化DHT11传感器pinMode(flamePin, INPUT);  // 设置火焰传感器引脚为输入模式pinMode(redLedPin, OUTPUT); // 设置红色LED引脚为输出模式pinMode(greenLedPin, OUTPUT); // 设置绿色LED引脚为输出模式pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式// 初始化OLED显示屏if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 地址0x3CSerial.println(F("SSD1306 allocation failed"));for (;;);}display.clearDisplay();display.setTextSize(1);                      // 设置文本大小display.setTextColor(SSD1306_WHITE);          // 设置文本颜色
}void loop() {// 读取温湿度数据float h = dht.readHumidity();float t = dht.readTemperature();if (isnan(h) || isnan(t)) {Serial.println(F("Failed to read from DHT sensor!"));return;}// 读取燃气浓度float gasValue = analogRead(gasPin) / 1023.0; // 将模拟值转换为0-1范围bool gasDetected = (gasValue > gasThreshold); // 检测燃气是否超标// 检测火焰bool flameDetected = (digitalRead(flamePin) == HIGH); // 检测火焰// 显示信息到OLEDdisplay.clearDisplay();display.setCursor(0, 10);display.print(F("Temp: "));display.print(t);  // 打印温度值display.println(F("C"));display.print(F("Humidity: "));display.print(h);  // 打印湿度值display.println(F("%"));display.print(F("Gas: "));display.println(gasDetected ? F("High") : F("Low"));display.print(F("Flame: "));display.println(flameDetected ? F("Safe") : F("Detected"));display.display();// 报警逻辑if (gasDetected || flameDetected) {digitalWrite(redLedPin, LOW);   // 关闭红色LEDdigitalWrite(buzzerPin, HIGH);  // 关闭蜂鸣器digitalWrite(greenLedPin, HIGH); // 点亮绿色LED// 如果检测到燃气泄漏或火焰,点亮红色LED并触发蜂鸣器// digitalWrite(redLedPin, HIGH);  // 点亮红色LED// digitalWrite(buzzerPin, LOW);   // 触发蜂鸣器(低电平触发)// digitalWrite(greenLedPin, LOW); // 关闭绿色LED} else {// 如果没有检测到危险情况,点亮绿色LED并关闭蜂鸣器// digitalWrite(redLedPin, LOW);   // 关闭红色LED// digitalWrite(buzzerPin, HIGH);  // 关闭蜂鸣器// digitalWrite(greenLedPin, HIGH); // 点亮绿色LEDdigitalWrite(redLedPin, HIGH);  // 点亮红色LEDdigitalWrite(buzzerPin, LOW);   // 触发蜂鸣器(低电平触发)digitalWrite(greenLedPin, LOW); // 关闭绿色LED}delay(1000); // 每秒更新一次
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词