• 方案介绍
  • 相关推荐
申请入驻 产业图谱

基于单片机的智能家居多参数环境监测与联动报警系统设计

11小时前
143
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
  1. 基于单片机智能家居多参数环境监测与联动报警系统设计
    点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/92081430
  2. 系统功能介绍

本设计方案以单片机作为核心控制器,构建一套可用于家庭环境安全与舒适度调节的多参数监测与联动控制系统。随着智能家居的发展,现代家庭对室内空气质量、温湿度舒适度以及安全性要求越来越高。因此,对温度、湿度、烟雾、甲醛、一氧化碳及可燃气体浓度进行实时监测,并在异常情况下实现声光报警及自动联动家电控制,成为智能家居的重要功能需求。

本系统的核心功能包括六项环境参数实时检测、用户可自定义报警阈值、超标声光报警提示、智能家电自动联动控制以及使用12864液晶实时显示运行状态等。各模块协同工作,不仅提升用户的居家安全性,还帮助提高空气质量,确保室内环境保持在舒适、健康范围之内。

整套系统具有实时性高、可靠性强、扩展能力优良、操作方便等特点,可广泛应用于家庭、办公室、仓库、实验室等环境,需要对空气质量与环境安全进行实时监控的场景。本设计充分体现智能家居系统的自主感知、自主分析与自主行动能力,是现代智能家居环境监测系统的典型代表。


  1. 系统电路设计

整个系统硬件由主控模块、传感器采集模块、报警模块、联动控制模块、显示模块、按键输入模块以及电源模块组成。各模块之间通过单片机实现协调处理。


3.1 主控模块设计

本系统采用 STC89C52AT89C51 系列单片机作为主控制器,具有成本低、稳定性强、资源结构清晰等特点。其内部包含 4KB Flash、128B RAM、丰富的 I/O 通道、两个定时器/计数器串口通信模块等,足以满足多参数采集与多任务处理需求。

主控模块主要实现以下功能:

  • 定时采集各类环境传感器数据;
  • 对比设定阈值,判断是否报警;
  • 控制蜂鸣器与指示灯执行报警动作;
  • 控制多个家电联动模块;
  • 更新 12864 LCD 显示内容;
  • 响应按键输入执行设置模式;
  • 借助时间片与任务调度,保证系统实时性。

由于监测参数较多,单片机总线资源分配需合理规划,各传感器通过 ADC 或数字接口进行连接,由主程序轮询扫描或在中断中进行读取。


3.2 传感器采集模块设计

系统采集的六项环境参数分别来源于不同的传感器模块:

3.2.1 温湿度传感器模块(DHT11/DHT22)

温湿度检测采用 DHT11 或 DHT22 数字温湿度传感器。该传感器使用单总线通信方式,数据稳定度较高,能提供精确的温湿度数据。

温度检测范围 0–50℃,湿度检测范围 20–90%RH。

传感器与 MCU 通过一根数据线通信,MCU 收到完整的 40bit 数据包后进行解码。

3.2.2 烟雾浓度检测模块(MQ-2)

MQ-2 可对烟雾、甲烷等可燃性气体灵敏响应。系统中主要用于烟雾浓度监测,输出模拟电压,通过 ADC 模块读取。

模块特点:

  • 预热时间短;
  • 输出线性范围较宽;
  • 响应速度快,再恢复速度快。
3.2.3 甲醛浓度检测模块(MQ-135 或 HCHO 模块)

MQ-135 可用来检测氨气、苯系物、甲醛等有害气体。作为家居空气质量重要指标,甲醛浓度超标会造成刺激性气味并影响人体健康,因此系统需实时监测并报警。

该模块通常输出模拟量,通过 ADC 芯片(如 PCF8591)转换成数字信号后由 MCU 处理。

3.2.4 一氧化碳浓度检测模块(MQ-7)

CO 浓度超标意味着燃气燃烧不充分或通风不良。MQ-7 采用加热周期控制技术,输出与 CO 浓度相关的模拟信号

3.2.5 可燃气体(燃气)检测模块(MQ-5 / MQ-9)

该模块用于检测天然气、液化石油气、煤气等,可燃气体泄漏时能及时报警,有效防止火灾与中毒事故。

该模块响应速度快,输出模拟量。

3.2.6 传感器信号处理与 ADC 转换

由于多种气体传感器为模拟输出,而 51 单片机不具备 ADC 功能,因此使用 PCF8591 A/D 转换芯片,由 I2C 接口与 MCU 通信。

ADC 模块特点:

  • 4 路模拟输入;
  • 8 位精度;
  • 通信简单,占用 MCU 资源少;
  • 可扩展多个 ADC 芯片满足更多通道需求。

3.3 12864 液晶显示模块设计

系统使用 12864 图形点阵液晶显示屏,可显示多参数、多状态信息,例如:

  • 温度、湿度数值
  • 各气体浓度
  • 设备运行状态
  • 报警信息提示
  • 阈值设定界面

12864 支持并口和串口模式,通过 SPI 驱动可减少 IO 占用。显示模块需要单片机定时刷新,以便用户实时观察环境变化。


3.4 按键输入模块设计

按键主要用于:

  • 进入参数设置模式;
  • 设置各传感器报警阈值;
  • 切换显示界面;
  • 开启或关闭自动联动功能。

按键采用独立按键结构,每个按键对应一个单片机 I/O 口,程序中加入软件消抖功能以提高稳定性。


3.5 声光报警模块设计

报警模块由蜂鸣器与红色 LED 组成。

蜂鸣器:

LED:

  • 红色闪烁指示报警;
  • 可根据超标项目闪烁不同频率。

程序中可以加入延时停止报警或手动确认功能,避免干扰用户。


3.6 家电联动控制模块设计

通过监测当前环境状态,系统自动控制以下设备:

联动依据:

  • 温度低 → 启动加热
  • 温度高 → 启动散热设备
  • 湿度低 → 启动加湿器
  • 湿度高 → 启动除湿器
  • 有害气体浓度高 → 启动换气扇

家电控制使用继电器或 MOS 管驱动,保证与单片机隔离,提高安全性。


3.7 电源模块设计

系统统一采用 5V 电源,部分传感器可能需要 5V 或 3.3V,因此配备 AMS1117-3.3 稳压模块。依据电流需求配置合理滤波电容,避免信号干扰影响数据采集


  1. 程序设计

系统的软件设计包括主循环、任务调度、传感器读取程序、报警判定程序、联动控制程序、显示刷新程序和阈值设置程序等。


4.1 主程序结构

主程序采用循环扫描方式执行各项任务:

void main() {
    Init_System();
    while (1) {
        Read_All_Sensors();
        Threshold_Check();
        Device_Control();
        LCD12864_Display();
        Key_Process();
    }
}

4.2 传感器采集程序

4.2.1 温湿度采集
void Read_DHT11() {
    DHT11_Start();
    humi = DHT11_ReadByte();
    temp = DHT11_ReadByte();
}
4.2.2 气体浓度采集(ADC 方式)
unsigned char Read_ADC(unsigned char channel) {
    I2C_Start();
    I2C_SendByte(0x90);
    I2C_SendByte(channel);
    I2C_Start();
    I2C_SendByte(0x91);
    adc = I2C_ReceiveByte();
    I2C_Stop();
    return adc;
}

int Convert_GasValue(unsigned char adc) {
    return (int)(adc * SCALE);
}

4.3 阈值判断与报警程序

void Threshold_Check() {

    if (temp > temp_limit) {
        alarm_flag = 1;
    }
    if (co > co_limit) {
        alarm_flag = 1;
    }
    if (gas > gas_limit) {
        alarm_flag = 1;
    }

    if (alarm_flag) {
        BEEP = 1;
        LED = ~LED;
    } else {
        BEEP = 0;
        LED = 0;
    }
}

4.4 家电联动控制程序

void Device_Control() {

    if (temp > temp_high_limit)
        FAN = 1;
    else
        FAN = 0;

    if (temp < temp_low_limit)
        HEATER = 1;
    else
        HEATER = 0;

    if (humi > humi_high_limit)
        DEHUM = 1;
    else
        DEHUM = 0;

    if (humi < humi_low_limit)
        HUMIDIFIER = 1;
    else
        HUMIDIFIER = 0;

    if (gas > gas_limit || co > co_limit)
        VENT = 1;
    else
        VENT = 0;
}

4.5 按键设置程序

void Key_Process() {
    if (KEY_SET == 0) {
        Delay_ms(20);
        if (KEY_SET == 0) {
            mode = SET_MODE;
            while (!KEY_SET);
        }
    }
}

4.6 12864 显示程序

void LCD12864_Display() {
    LCD_Clear();
    LCD_Print("Temp:");
    LCD_PrintInt(temp);

    LCD_Print("Humi:");
    LCD_PrintInt(humi);

    LCD_Print("CO:");
    LCD_PrintInt(co);

    LCD_Print("Gas:");
    LCD_PrintInt(gas);
}

  1. 结论

本系统充分发挥单片机在智能家居环境监测中的应用价值,通过多种传感器对室内空气质量和环境参数进行实时监测,结合用户可设置的报警阈值,实现了声光报警与智能家电联动功能。通过 12864 显示屏,用户可随时查看各项数据及系统工作状态。该系统结构清晰、功能齐全、扩展性强,能够有效提高家庭安全性与舒适性,是一套实用的智能家居环境监测解决方案。

相关推荐