当前位置: 首页 > article >正文

基于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)) { // 地址0x3C
    Serial.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); // 检测火焰

  // 显示信息到OLED
  display.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);   // 关闭红色LED
    digitalWrite(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); // 点亮绿色LED
    digitalWrite(redLedPin, HIGH);  // 点亮红色LED
    digitalWrite(buzzerPin, LOW);   // 触发蜂鸣器(低电平触发)
    digitalWrite(greenLedPin, LOW); // 关闭绿色LED
  }

  delay(1000); // 每秒更新一次
}


http://www.kler.cn/a/518167.html

相关文章:

  • StarRocks 3.4 发布--AI 场景新支点,Lakehouse 能力再升级
  • MiniMax 稀宇科技
  • Go的内存逃逸
  • Redis数据库笔记——数据结构类型
  • Android程序中使用FFmpeg库
  • 大模型语料库的构建过程 包括知识图谱构建 垂直知识图谱构建 输入到sql构建 输入到cypher构建 通过智能体管理数据生产组件
  • 【论文+源码】Difformer在文本生成嵌入空间上增强扩散模型
  • RV1126画面质量一:视频基础
  • 【Linux系统】—— 动静态库
  • ORB-SLAM2源码学习:Initializer.cc(13): Initializer::ReconstructF用F矩阵恢复R,t及三维点
  • 【力扣Hot 100】矩阵1
  • go replay流量重放[详细教程]
  • JS 正则表达式 -- 分组【详解】含普通分组、命名分组、反向引用
  • 豆包 MarsCode + 开源 = ?AI 助力开源社区新人成长
  • JVM学习指南(48)-JVM即时编译
  • 2025美赛数学建模ICM问题F:网络强大?(Problem F: Cyber Strong?)完整文章 模型 数据 源代码 结果分享
  • Jenkins下线实例报错
  • 罗永浩的“最后一次创业”:从AR到AI大模型的战略转型
  • Spring 源码学习(七)——注解后处理器-2
  • SpringBoot支持动态更新配置文件参数