基于STM32的厨房环境检测控制系统
该系统能够实时监测厨房内的温湿度、烟雾、燃气浓度和明火状态,并根据预设逻辑自动控制排烟扇和报警器,同时支持本地按键和手机APP远程控制燃气灶(模拟)开关,有效提升了厨房的安全性和智能化水平,预防事故发生。该芯片资源丰富,提供多路ADC用于读取模拟传感器(MQ-2, MQ-5),多个UART用于连接Wi-Fi模块,I2C用于驱动OLED,以及充足的GPIO控制执行器和读取数字传感器,性价比极高,完全
若该文为原创文章,转载请注明原文出处。
一、引言
厨房是家庭安全事故的高发区域,燃气泄漏、火灾和油烟污染是主要隐患。传统厨房设备缺乏智能监测和联动控制能力。本项目设计一款以STM32为核心的厨房环境检测控制系统。该系统能够实时监测厨房内的温湿度、烟雾、燃气浓度和明火状态,并根据预设逻辑自动控制排烟扇和报警器,同时支持本地按键和手机APP远程控制燃气灶(模拟)开关,有效提升了厨房的安全性和智能化水平,预防事故发生。
二、系统总体设计
(一)系统架构
本系统采用分层模块化设计,STM32作为核心控制器。
-
感知层:负责采集厨房环境数据,包括温湿度、烟雾、燃气浓度和火焰信号。
-
控制层:STM32,负责数据处理、阈值判断、执行自动控制逻辑。
-
执行层:包括排烟扇、报警蜂鸣器、LED灯(模拟燃气灶),根据控制指令行动。
-
交互层:OLED显示屏用于状态显示,按键用于本地设置和控制。
-
通信层:Wi-Fi模块,连接云平台,实现手机APP的远程监控与控制。
(二)功能模块划分
-
环境监测模块:多传感器数据采集与预处理。
-
显示模块:实时刷新显示所有环境参数和系统状态。
-
自动控制模块:核心安全逻辑,根据环境数据自动控制排烟扇和报警。
-
设备控制模块:管理燃气灶(LED)的开关状态,响应本地和远程指令。
-
通信模块:负责与手机APP进行数据交换和指令传输。
三、硬件设计与实现
(一)系统硬件框架图

(二)主控模块选型及介绍
核心控制器采用STM32F103C8T6。该芯片资源丰富,提供多路ADC用于读取模拟传感器(MQ-2, MQ-5),多个UART用于连接Wi-Fi模块,I2C用于驱动OLED,以及充足的GPIO控制执行器和读取数字传感器,性价比极高,完全满足本系统需求。
(三)传感器模块选型及电路设计
-
DHT11:数字温湿度传感器,单总线协议,连接普通GPIO,需上拉电阻。
-
MQ-2(烟雾):模拟输出,连接STM32的ADC引脚(如PA0),对烟雾、油烟敏感。
-
MQ-5(燃气):模拟输出,连接另一路ADC引脚(如PA1),对天然气、液化气敏感。
-
*注意:MQ-2和MQ-5工作时需加热,建议采用5V供电,其模拟输出口与3.3V ADC兼容。*
-
-
火焰传感器:使用其数字输出(DO)引脚,直接连接STM32的GPIO。检测到火焰时输出低电平。调节板上电位器可改变灵敏度。
(四)执行模块选型及驱动电路
-
排烟扇/LED灯:采用5V继电器模块进行控制。继电器模块输入侧为低电平有效,直接连接STM32 GPIO即可。输出侧接220V排烟扇或LED灯。
-
重要: 控制220V强电部分必须严格规范,防止触电危险!建议使用现成的、带有塑料外壳的继电器模块。
-
-
蜂鸣器:采用有源蜂鸣器,只要通电就会响。连接STM32 GPIO,通过三极管(如S8050)驱动,因为STM32的GPIO驱动电流可能不足。
(五)通信模块选型
采用ESP-01S ESP8266模块。通过UART(如USART2)与STM32连接。STM32通过AT指令控制其连接家庭Wi-Fi并接入云平台(如阿里云、OneNET),实现与手机APP的数据透传。
四、软件设计与实现
(一)开发环境搭建
-
IDE:Keil uVision 5。
-
配置工具:使用STM32CubeMX进行硬件初始化配置,生成HAL库代码工程。
-
库移植:移植OLED、DHT11、ESP8266的驱动程序库。
(二)系统软件流程图

(三)核心代码逻辑
// 定义全局变量
int smoke_threshold = 300;
int gas_threshold = 300;
uint8_t stove_state = 0; // 0: OFF, 1: ON
void main() {
// 初始化...
while(1) {
// 1. 读取传感器
temp = DHT11_GetTemperature();
humi = DHT11_GetHumidity();
smoke_val = ADC_Read(MQ2_CHANNEL);
gas_val = ADC_Read(MQ5_CHANNEL);
fire_detected = (HAL_GPIO_ReadPin(FLAME_GPIO_Port, FLAME_Pin) == GPIO_PIN_RESET);
// 2. OLED显示
OLED_ShowString(0, 0, "T:");
OLED_ShowNumber(20, 0, temp);
OLED_ShowString(0, 2, "Smoke:");
OLED_ShowNumber(60, 2, smoke_val);
// ... 显示其他数据和控制状态
// 3. 自动安全逻辑
// 3.1 排烟扇控制 (烟雾或火焰)
if (smoke_val > smoke_threshold || fire_detected) {
FAN_RELAY_ON();
} else {
FAN_RELAY_OFF();
}
// 3.2 燃气报警控制
if (gas_val > gas_threshold) {
BUZZER_ON();
FAN_RELAY_ON(); // 燃气泄漏也强制开扇通风
} else {
BUZZER_OFF();
// 注意: 排烟扇不会因为燃气恢复正常而关闭, 因为它可能因烟雾而开启
}
// 4. 处理通信 (上传数据和执行远程指令)
if (time_to_send_data()) {
sprintf(json_buffer, "{\"temp\":%d,\"humi\":%d,\"smoke\":%d,\"gas\":%d,\"stove\":%d}",
temp, humi, smoke_val, gas_val, stove_state);
ESP8266_SendToCloud(json_buffer);
}
// 串口中断中解析的APP指令会设置变量如 `stove_state`
// 主循环中根据最终状态控制LED
HAL_GPIO_WritePin(STOVE_LED_GPIO_Port, STOVE_LED_Pin, stove_state ? GPIO_PIN_SET : GPIO_PIN_RESET);
HAL_Delay(1000); // 每秒检测一次
}
}
// 在串口中断回调函数中解析APP指令
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart == &huart2) { // 假设ESP8266连接在USART2
if (strstr((char*)rx_buffer, "stove=on")) {
stove_state = 1;
} else if (strstr((char*)rx_buffer, "stove=off")) {
stove_state = 0;
}
// ... 解析其他控制指令,如直接控制风扇
}
}
五、系统测试与优化
(一)测试方案
-
功能测试:
-
烟雾测试:点燃一支吹灭的香烟产生烟雾,靠近MQ-2,观察排烟扇是否自动启动。
-
燃气测试:向MQ-5喷射少量打火机气体,观察是否触发蜂鸣器报警并启动排烟扇。
-
火焰测试:用打火机在火焰传感器前方点燃,观察排烟扇是否启动。
-
远程控制测试:通过APP点击开关按钮,观察LED灯(模拟燃气灶)是否相应地点亮或熄灭。
-
-
可靠性测试:
-
防误报测试:在正常烹饪(产生油烟、水蒸气)时运行系统,观察是否有误报警。
-
网络稳定性测试:测试Wi-Fi断开重连后,系统是否能自动重新连接云平台。
-
六、结论与展望
(一)未来展望
本系统是厨房智能化的基础平台,未来可进行多项升级:
-
机械手自动关阀:在发生燃气泄漏时,可联动一个舵机模拟关闭燃气管道阀门,从根源上切断气源,安全性更高。
-
多设备联动:与家庭其他智能设备联动,如发生火灾时,可通过智能插座自动切断厨房电器的电源。
-
云平台与大数据:将数据上传至更强大的云平台,实现历史数据查询、趋势分析和多用户共享(让家人共同监控)。
-
语音提示与报警:集成语音合成模块(如SYN6288),在报警时不仅蜂鸣,更用语音说明报警类型,如“警告!燃气泄漏!”。
-
电池备用电源:加入18650锂电池和充放电管理电路,在市电断电时维持系统运行一段时间,提升安全性。
如有侵权,或需要完整代码,请及时联系博主。
更多推荐



所有评论(0)