基于51单片机的配电室远程监控系统设计与环境检测GSM报警系统
1. 系统功能介绍
本设计是一种基于 STC89C51/STC89C52 单片机 的智能配电室环境监控与报警系统。该系统将温湿度检测、水位检测、烟雾检测、入侵检测与风扇、水泵控制相结合,同时配合 SIM900 GSM 模块 实现远程短信报警功能。系统能够实时监测配电室环境参数,并根据设定阈值自动触发报警与设备控制,从而有效防止因环境异常引发的事故。
主要功能如下:
- 环境监测与显示:通过温湿度传感器、烟雾传感器、水位检测模块、红外检测模块等,实时采集配电室环境数据,并在 OLED 屏幕上显示。
- 温湿度报警:当温度或湿度超出设定阈值时,系统触发蜂鸣器报警,并通过 GSM 模块向管理人员发送短信提醒。
- 水位报警与水泵控制:当水位超过设定值时,系统触发蜂鸣器报警,并自动开启水泵排水,直至水位恢复正常。
- 烟雾报警与风扇控制:当检测到烟雾浓度超过阈值时,蜂鸣器报警,并自动开启风扇进行排风,待烟雾浓度下降后关闭风扇。
- 入侵检测与报警:通过红外传感器检测非法入侵情况,一旦触发,立即启动蜂鸣器并发送短信报警。
- 远程短信通知:利用 SIM900 GSM 模块,系统在检测到环境异常时自动向预设手机号发送报警短信,确保管理人员第一时间获知。
- 参数阈值可调:系统提供按键功能,用户可设置温湿度、水位和烟雾的报警阈值,增强系统灵活性。
该系统广泛适用于配电室、机房、仓库等需要实时监控的环境,具有实用性和推广价值。
2. 系统电路设计
本系统电路由 单片机核心电路、检测电路、显示电路、控制电路、报警电路、按键电路 和 通信电路 七个部分组成。
2.1 单片机核心电路
主控芯片采用 STC89C51/STC89C52 单片机:
- 内部带有丰富的 I/O 资源,适合多传感器输入和外设控制。
- 通过复位电路与晶振电路保证系统稳定运行。
- 与外设之间采用 GPIO、ADC、UART 等接口通信。
2.2 温湿度检测电路
温湿度检测模块可选用 DHT11/DHT22 或者通过 PCF8591 ADC 转换读取模拟信号。
- 温湿度数据实时上传至单片机并显示在 OLED 屏幕。
- 若数据超出阈值,触发蜂鸣器报警,并通过 GSM 模块发送短信。
2.3 水位检测电路
水位传感器通过电压变化反映水位高度:
- 模拟信号经 PCF8591 转换为数字信号输入单片机。
- 当水位超标,单片机控制继电器启动水泵,排水直至水位恢复正常。
2.4 烟雾检测电路
采用 MQ-2/MQ-5 烟雾传感器:
- 输出模拟电压信号,经 PCF8591 转换后送至单片机。
- 超过设定值时,蜂鸣器报警并启动风扇排风。
2.5 红外入侵检测电路
采用 人体红外传感器(PIR) 检测是否有人进入配电室:
- 一旦检测到异常,蜂鸣器启动,同时通过 GSM 模块发送入侵报警短信。
2.6 OLED 显示电路
OLED 液晶用于显示实时采集数据,包括:
- 温度、湿度、水位、烟雾浓度。
- 当前阈值设定和报警状态。
2.7 控制电路(风扇与水泵)
- 通过 继电器驱动电路 控制风扇与水泵的开关。
- 当检测值恢复正常后,自动关闭设备,节省能耗。
2.8 蜂鸣器报警电路
蜂鸣器用于本地报警,提醒管理人员现场检查。
2.9 GSM 短信报警电路
采用 SIM900 GSM 模块,通过 UART 串口与单片机通信:
- 发送短信至指定手机号码,告知具体报警原因。
- 支持多条短信报警,保障远程监控的及时性。
2.10 按键电路
按键用于阈值设置,包含:
- 模式键:切换阈值设置模式。
- 加键/减键:调整对应参数的报警阈值。
3. 程序设计
程序采用模块化设计,包括 主程序、传感器数据采集模块、显示模块、阈值设置模块、报警模块、GSM 短信通信模块。
3.1 主程序框架
#include <reg52.h>
#include "oled.h"
#include "dht11.h"
#include "pcf8591.h"
#include "gsm.h"
#include "key.h"
#include "buzzer.h"void main()
{System_Init(); // 系统初始化while(1){Sensor_Read(); // 采集温湿度、水位、烟雾、入侵数据Display_Data(); // OLED 显示Key_Scan(); // 按键检测,更新阈值Alarm_Check(); // 报警判断}
}
3.2 传感器采集模块
void Sensor_Read(void)
{temp = DHT11_ReadTemp(); humi = DHT11_ReadHumi(); smoke = PCF8591_Read(0); water = PCF8591_Read(1); pir = PIR_Read();
}
3.3 OLED 显示模块
void Display_Data(void)
{OLED_ShowString(0,0,"Temp:");OLED_ShowNum(40,0,temp,3);OLED_ShowString(0,2,"Humi:");OLED_ShowNum(40,2,humi,3);OLED_ShowString(0,4,"Smoke:");OLED_ShowNum(60,4,smoke,3);OLED_ShowString(0,6,"Water:");OLED_ShowNum(60,6,water,3);
}
3.4 阈值设置模块
void Key_Scan(void)
{if(Key_Mode_Pressed()) mode = (mode+1)%4; // 循环切换阈值设置if(Key_Add_Pressed()){if(mode==0) temp_th++;else if(mode==1) humi_th++;else if(mode==2) smoke_th++;else if(mode==3) water_th++;}if(Key_Dec_Pressed()){if(mode==0) temp_th--;else if(mode==1) humi_th--;else if(mode==2) smoke_th--;else if(mode==3) water_th--;}
}
3.5 报警与控制模块
void Alarm_Check(void)
{if(temp > temp_th){Buzzer_On();GSM_Send("温度超标报警!");}if(humi > humi_th){Buzzer_On();GSM_Send("湿度超标报警!");}if(smoke > smoke_th){Buzzer_On();Fan_On();GSM_Send("烟雾超标,风扇已启动!");}else Fan_Off();if(water > water_th){Buzzer_On();Pump_On();GSM_Send("水位超标,水泵已启动!");}else Pump_Off();if(pir == 1){Buzzer_On();GSM_Send("警告!检测到入侵!");}
}
3.6 GSM 短信模块
void GSM_Send(char *msg)
{UART_SendString("AT+CMGF=1\r"); // 设置短信模式Delay_ms(100);UART_SendString("AT+CMGS=\"1234567890\"\r"); // 目标手机号Delay_ms(100);UART_SendString(msg);UART_Send(0x1A); // Ctrl+Z 结束符
}
4. 总结
本系统以 STC89C52 单片机 为核心,整合了温湿度检测、水位检测、烟雾检测与入侵检测,并通过 OLED 屏幕进行数据可视化。同时,系统利用 继电器控制风扇和水泵,在检测到环境异常时进行自动处理。配合 SIM900 GSM 模块,系统实现了远程短信报警功能,确保在无人值守的情况下依旧能保障配电室的安全。
该系统具备 多参数监测、自动化控制、远程报警、阈值可调 等优势,既能满足日常配电室的安全管理需求,也可扩展至机房、仓库、实验室等场景,具有良好的实用性和推广价值。