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

【STM32项目开源】基于STM32的智能厨房环境监控系统

目录

一、设计背景和意义

1.1设计背景

1.2设计意义

二、实物效果展示

2.1实物图片

2.2实物演示视频

三、硬件功能简介

3.1项目功能详解

3.2元器件清单

四、主框图与软件流程图

五、硬件PCB展示

六、软件程序设计

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”


一、设计背景和意义

1.1设计背景

        在智能化浪潮席卷各行各业的今天,厨房作为家庭生活中频繁使用且风险较高的空间,其安全问题越来越受到关注。根据相关统计数据显示,家庭火灾事故中相当一部分源于厨房,原因主要包括燃气泄漏、火源未熄、温度过高、电器老化等。传统厨房安全管理方式往往依赖人工巡视或单一报警器,存在反应滞后、功能单一、不可远程监控等明显弊端,无法满足现代家庭对安全、智能、便捷的高标准要求。

1.2设计意义

        课题采用STM32F103C8T6为主控平台,结合MQ-5燃气传感器、DHT11温湿度传感器、火焰传感器等多种常见传感器模块,配合ESP8266 WiFi模块接入机智云平台,具有良好的硬件适配性与平台兼容性。通过软件层面对系统逻辑的精细设计,不仅提升了系统的实用价值,也为后续拓展更多智能联动场景(如联控窗户、电磁阀等)提供了技术基础。

        从学术研究角度看,本课题涵盖了传感器数据处理、嵌入式控制、无线通信、云平台交互、状态机逻辑控制等多个计算机与电子工程交叉领域,能够有效提升学生在软硬件协同开发、系统集成设计以及项目实践中的综合能力。同时,课题选题紧贴社会需求,注重工程实践,具有较高的现实价值和推广前景,符合“以应用促科研、以科研带实践”的工程教育导向。

二、实物效果展示

2.1实物图片

2.2实物演示视频

【开源】基于STM32的智能厨房安全监控系统

三、硬件功能简介

3.1项目功能详解

  1. 传感器:检测液化气和烟雾浓度、火情、环境温湿度
  2. 数据显示:0.96OLED屏幕
  3. 执行机构:舵机(燃气阀门)、风扇(通风)、水泵(灭火)、蜂鸣器(声光报警)
  4. 云平台:通过ESP8266 WIFI联网后,接入机智云平台
  5. App远程监控:App远程监控传感器数据,控制执行机构
  6. 数据设定:系统通过按键或APP设定阈值,切换自/手动模式
  7. 手动模式:手机App或按键控制开关执行机构
  8. 自动模式:燃气浓度超过阈值,自动打开通风扇,声光报警;检测到火焰,自动开启水泵灭火,声光报警

3.2元器件清单

  1. 主控STM32F103C8T6
  2. ESP8266联网WiFi
  3. 0.96OLED显示屏幕
  4. MQ-5燃气传感器
  5. DHT11温湿度传感器
  6. 火焰传感器
  7. 舵机(模拟阀门)
  8. 风扇(通风)、水泵(灭火)
  9. 蜂鸣器+LED声光报警
  10. 按键

四、主框图与软件流程图

主框图

流程图

五、硬件PCB展示

六、软件程序设计

#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "gpio.h"
#include "OLED_I2C.h"
#include "ds18b20.h"
#include "timer.h"
#include "usart1.h"
#include "esp8266.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>extern const unsigned char BMP[];char  display[16];           //显示缓存区
short temperature=0;         //温度
u8    setTempValue  = 40;    //温度上限
u8    setSmokeValue = 60;    //烟雾上限
u8    alarmFlag = 0x00;      //蜂鸣器报警标志
u16   smoke=0;               //烟雾
u8    setn=0;                //记录设置按键按下的次数
u8 PWM=5;                   //PWM调节值,用于控制舵机bool shanshuo=0;
bool shuaxin=0;
bool sendFlag = 1;
bool flameFlag=0;void displayInitInterface(void)    //显示初始页面
{u8 i;for(i = 0;i < 6;i ++)OLED_ShowCN(i*16+16,0,i+0,0);    //显示中文: 厨房安全检测for(i = 0;i < 2;i ++)OLED_ShowCN(i*16,4,i+6,0);       //显示中文: 温度for(i = 0;i < 2;i ++)OLED_ShowCN(i*16,6,i+8,0);      //显示中文: 烟雾OLED_ShowChar(32,4,':',2,0);OLED_ShowChar(32,6,':',2,0);
}void Get_Temperature(void)       //获取温度
{temperature=ReadTemperature();if(temperature>=setTempValue){if(!(alarmFlag&0x01)){alarmFlag|=0x01;shanshuo = 0;}}else{alarmFlag&=0xFE;}if(temperature>=setTempValue && shanshuo){OLED_ShowStr(40, 4,"      ", 2,0);  }else{sprintf(display," %d",temperature);OLED_ShowStr(40, 4, (u8*)display, 2,0);//显示温度OLED_ShowCentigrade(68, 4);   //显示摄氏度}
}void Get_Smoke(void)    //获取烟雾浓度
{u16 test_adc=0;/* 获取烟雾浓度 */test_adc = Get_Adc_Average(ADC_Channel_9,10);//读取通道9的10次AD平均值smoke = test_adc*99/4096;//转换成0-99百分比if(smoke>=setSmokeValue){if(!(alarmFlag&0x02)){alarmFlag|=0x02;shanshuo = 0;}}else{alarmFlag&=0xFD;}if(smoke>=setSmokeValue && shanshuo){OLED_ShowStr(40, 6,"      ", 2,0);}else{printf(display," %02d %%",smoke);OLED_ShowStr(40, 6, (u8*)display, 2,0);//显示温度}
}void displaySetValue(void) //显示设置值
{if(setn==1){OLED_ShowChar(56,4,setTempValue%100/10+'0',2,0);//显示OLED_ShowChar(64,4,setTempValue%10+'0',2,0);//显示}if(setn==2){OLED_ShowChar(56,4,setSmokeValue%100/10+'0',2,0);//显示OLED_ShowChar(64,4,setSmokeValue%10+'0',2,0);//显示OLED_ShowChar(72,4,'%',2,0);  }	
}void keyscan(void)   //按键扫描
{u8 i;if(KEY1 == 0) //设置键{delay_ms(20);if(KEY1 == 0){while(KEY1 == 0);setn ++;if(setn == 1){OLED_CLS();//清屏for(i = 0;i < 4;i ++)OLED_ShowCN(i*16+32,0,i+10,0);//显示:设置温度OLED_ShowCentigrade(75, 4);   //显示摄氏度}if(setn == 2){for(i = 0;i < 4;i ++)OLED_ShowCN(i*16+32,0,i+14,0);//显示:设置烟雾OLED_ShowChar(80,4,' ',2,0);  }if(setn >= 3){setn = 0;OLED_CLS();//清屏displayInitInterface();}displaySetValue();}}if(KEY2 == 0) //加键{delay_ms(80);if(KEY2 == 0){if(setTempValue  < 99 && setn==1)setTempValue++;if(setSmokeValue < 99 && setn==2)setSmokeValue++;displaySetValue();}}if(KEY3 == 0) //减键{delay_ms(80);if(KEY3 == 0){if(setTempValue  > 0 && setn==1)setTempValue--;if(setSmokeValue > 0 && setn==2)setSmokeValue--;displaySetValue();}}
}int main(void)
{delay_init();	           //延时函数初始化	 NVIC_Configuration();	   //中断优先级配置I2C_Configuration();     //IIC初始化delay_ms(200); OLED_Init();             //OLED液晶初始化OLED_CLS();              //清屏OLED_ShowStr(0, 2, "   loading...   ", 2,0);//显示加载中ESP8266_Init();       //ESP8266初始化Adc_Init();           //adc初始化KEY_GPIO_Init();        //按键引脚初始化MOTOR_GPIO_Init();     //舵机初始化DS18B20_GPIO_Init();    //温度初始化DS18B20_Init();         //初始化显示OLED_CLS();              //清屏displayInitInterface(); //显示初始界面TIM3_Init(99,71);   //定时器初始化,定时100uswhile(1){ keyscan();  //按键扫描if(setn == 0){if(shuaxin == 1)   //大概300ms刷新一次数据{Get_Temperature();   //获取温度Get_Smoke();         //获取烟雾	  shuaxin = 0;}if(FLAME == 0)          //检测到火焰{delay_ms(10);if(FLAME == 0){if(flameFlag == 0){OLED_DrawBMP(88,4,120,8,(unsigned char *)BMP);  //显示火焰图片}flameFlag = 1;RELAY = 1;  //检测到有火,开启水泵}}else{if(flameFlag == 1){OLED_ShowStr(88, 4, "    ", 2,0);OLED_ShowStr(88, 6, "    ", 2,0);}flameFlag = 0;RELAY = 0;  //关闭水泵}if(temperature>=setTempValue || smoke>=setSmokeValue || flameFlag)BEEP=1;else BEEP=0;  //检测到温度烟雾超标火焰蜂鸣器报警if(temperature>=setTempValue || smoke>=setSmokeValue)FAN=1;else FAN=0;      //烟雾温度超标都开启风扇if(smoke>=setSmokeValue || flameFlag)PWM=15;else PWM=5;                    //烟雾超标或者是检测到火焰,舵机动作,模拟关闭阀门}UsartSendReceiveData();delay_ms(10);}
}

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”

http://www.dtcms.com/a/491199.html

相关文章:

  • 策略模式详情
  • 省级网站 开发建设 资质企业员工培训课程
  • VS Code settings.json配置(终端篇)
  • 好看的静态网站网页制作设计教程
  • Spring Boot API文档与自动化测试详解
  • 哈尔滨龙彩做网站多少钱做网站怎么样引流
  • Redis实战篇---添加缓存(店铺类型添加缓存需求)
  • 泸州百拓网站建设英文网站数据库如何建设
  • 河北电子商务网站建设互联网营销策略有哪些
  • 苏州专业网站设计制作公司湛江企业网站怎么建设
  • Linux Docker部署Dify使用shell脚本关闭和开启服务
  • 四川省建设信息网站从点点博客搬家到wordpress
  • 国家变电站声纹监测设备需求总结
  • Python读取Nacos配置时如何设置命名空间
  • 深入网站开发和运维 pdf网站开发文本编辑器
  • ros2—交叉编译ros bridge自定义消息
  • 修复ubuntu22.04检测不到mt7922蓝牙问题
  • C#共用体
  • 正点原子RK3568学习日志7-module_init优先级
  • 脑机接口:BCI2000框架,EEG信号解码?
  • 2025“芯星计划”华中区域启动暨长沙民政加速科技集成电路测试验证实践基地揭牌仪式圆满收官
  • 一般的学校网站怎么做网站主要的设计内容主题
  • docker后端jar包本地构建镜像
  • Spring Boot 3零基础教程,Spring Boot 日志的归档与切割,笔记22
  • 序列化的几种常见方式
  • 蜜罐技术重塑网络安全新格局
  • 做网站需要用到的符号语言基于网站开发的app
  • 企业管理咨询网站gta买办公室网站建设中
  • Python 的 typing 库介绍
  • 33. C++ cout cin 文件IO