
一、项目概述
本系统以 STM32 单片机作为主控单元,完成环境温度、烟雾浓度采集,实现火灾隐患监测。系统搭载 DS18B20 温度传感器采集环境温度,配合 PCF8591 模数转换芯片读取烟雾传感器模拟信号;通过 OLED12864 显示屏实时展示温度、烟雾浓度数据;支持按键自定义报警阈值;当温度或者烟雾浓度超出设定阈值时,蜂鸣器与红色 LED 触发声光报警,继电器驱动灭火装置动作;同时通过串口将监测数据上传虚拟终端,便于上位机查看记录。本方案可用于课程设计、毕设仿真验证,在 Proteus 环境下完成全部硬件仿真,无需实物硬件即可验证整套逻辑。
系统功能:
- DS18B20 采集环境温度,烟雾传感器配合 PCF8591 采集烟雾浓度;
- OLED12864 实时显示温度、烟雾浓度数值;
- 4 个功能按键:阈值加、阈值减、设置模式、确认,自定义火灾报警阈值;
- 出现火灾隐患时,LED 亮、蜂鸣器鸣叫,继电器启动灭火装置;
- 串口输出监测数据,在虚拟终端打印温度、烟雾信息。
二、Proteus 硬件电路解析
1. STM32 主控最小系统
主控芯片 STM32,具备复位引脚、BOOT 启动配置引脚,提供完整主控运行基础,外设分别挂载到 PA、PB 端口,完成传感器、显示、按键、报警、继电器外设驱动。
2. 传感器采集电路
- DS18B20 温度传感器:单总线数字温度传感器,PB15 引脚通信,直接输出温度数字信号,外围搭配上拉电阻,完成环境温度采集。
- PCF8591 模数转换模块:I2C 通信,PB3、PB4 作为 SCL、SDA;烟雾传感器输出模拟电压送入 PCF8591 的 AIN0 通道,将模拟量转换为数字量,换算得到烟雾浓度。
3. OLED 显示电路
OLED12864C 显示屏,用来直观显示温度、烟雾浓度,界面同步展示报警阈值参数,实时刷新采集到的监测数据。
4. 按键模块
四路独立按键,实现阈值增加、阈值减少、进入设置模式、参数确认保存,用户可以自主设定温度、烟雾的报警触发门限。
5. 声光报警与灭火执行电路
三极管驱动蜂鸣器,PA15 控制;红色 LED 作为光报警;当检测到火灾条件,主控输出信号控制继电器 RL1 吸合,驱动外接灭火装置,完成应急处置。
6. 串口通信模块
PA9 (TX)、PA10 (RX) 对接 Proteus 虚拟终端,循环打印系统标题、温度、烟雾浓度数据,实现数据上传。
三、系统工作原理
- 数据采集:DS18B20 读取现场温度;烟雾传感器输出模拟电压,经 PCF8591 进行 AD 转换,计算烟雾浓度值;
- 阈值配置:按下设置按键进入参数调节模式,加减按键修改报警阈值,确认按键保存参数;
- 判断报警逻辑 :循环对比采集值和设定阈值。温度超阈值 或者 烟雾浓度超阈值,立即触发蜂鸣器、LED 声光报警,继电器闭合启动灭火机构;参数低于阈值,报警与灭火继电器关闭;
- 数据输出:OLED 刷新界面显示,串口持续上传数据至虚拟终端。
四、伪代码片段
#include "stm32f10x.h"
#include "oled.h"
#include "ds18b20.h"
#include "pcf8591.h"
uint16_t temp_val,smoke_val;
uint16_t temp_thresh=60,smoke_thresh=50; //默认报警阈值
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
//蜂鸣器、LED、继电器IO初始化
}
void USART_SendData(uint16_t t,uint16_t s)
{
printf("火灾监测报警系统设计\r\n温度:%d\r\n烟雾浓度:%d\r\n",t,s);
}
int main(void)
{
GPIO_Config();
OLED_Init();
DS18B20_Init();
PCF8591_Init();
USART_Config();
while(1)
{
temp_val = DS18B20_GetTemp();
smoke_val = PCF8591_ReadADC(0);
OLED_Show(temp_val,smoke_val);
USART_SendData(temp_val,smoke_val);
//按键阈值处理逻辑
//报警判断
if(temp_val>temp_thresh || smoke_val>smoke_thresh)
{
BEEP_ON;
LED_ON;
RELAY_ON;
}
else
{
BEEP_OFF;
LED_OFF;
RELAY_OFF;
}
}
}
五、仿真调试注意事项
- PCF8591 为 I2C 器件,注意 SCL、SDA 引脚不要接反,否则读不到 ADC 数据;
- DS18B20 单总线必须接上拉电阻,会出现温度读取错误、数据乱跳;
- OLED 屏幕 I2C 地址需要和程序保持一致,避免黑屏不显示;
- 继电器不能直接由单片机 IO 驱动,注意三极管驱动电路;
- 串口调试确认 TX、RX 引脚,对应虚拟终端,保证数据正常打印输出。
六、项目拓展方向
- 增加 ESP8266 模块,火灾报警信息上传云平台,手机远程查看监测数据;
- 添加蜂鸣器分级报警,危险程度越高鸣叫频率越快;
- 增加历史数据存储,记录发生报警时刻;
- 增加多个传感器节点,实现多点位火灾监测。
七、总结
本 STM32 火灾监测报警系统,集成温度采集、烟雾检测、OLED 显示、按键阈值设置、声光报警、继电器灭火执行、串口数据上报功能。整套系统在 Proteus 仿真环境运行稳定,电路结构清晰,适合学习 STM32 的 I2C 外设、单总线传感器、AD 采集、外设驱动开发,也可作为电子专业课程设计、毕业设计参考案例。
通过网盘分享的文件:仿真文件获取.zip 链接: https://pan.baidu.com/s/1V5zzxbpHc_fRqfGIzSdLfg?pwd=6666 提取码: 6666