徐锦洪 发表于 2025-2-22 05:12:59

STM32项目分享:智能厨房安全检测系统

目录
一、媒介
二、项目简介
1.功能详解
2.主要器件
三、原理图设计
四、PCB硬件设计
PCB图 
五、程序设计 
六、实验效果 
七、资料内容
项目分享
一、媒介

项目成品图片:
https://i-blog.csdnimg.cn/direct/5a7147b58bde45c68769751f7746177e.jpeg
哔哩哔哩视频链接:
   STM32智能厨房安全检测系统
(资料分享见文末) 
二、项目简介

1.功能详解

STM32智能厨房安全检测系统
功能如下:

[*]单片机STM32F103C8T6核心板
[*]OLED显示当前烟雾浓度,当前情况温湿度
[*]火焰传感器检测当前厨房是否发生火警
[*]按键可用于调治报警阈值
[*]火警、燃气泄漏、温度过高触发蜂鸣器报警
[*]报警下触发执举措作:浇水灭火、打开窗、排风等
[*]手机APP检测情况信息以及报警显示
[*]手机APP可远程设置阈值巨细
2.主要器件



[*]STM32F103C8T6最小系统板
[*]DS18B20温度传感器
[*]OLED 屏幕
[*]火焰传感器
[*]MQ-7一氧化碳传感器
[*]ESP8266-01S模块(WIFI)
[*]继电器
[*]风扇模块
[*]水泵模块
[*]舵机
三、原理图设计

https://i-blog.csdnimg.cn/direct/2d32d7a37c0e43bbbad3afbc6745c265.png​
四、PCB硬件设计

PCB图 

​https://i-blog.csdnimg.cn/direct/4751808079184a6c951851b6fdac7891.png​
https://i-blog.csdnimg.cn/direct/d0cb3f3b4c4947bcba316bd9be6624e0.png

五、程序设计 

int main(void)
{
                delay_init();                   //延时函数初始化       
    NVIC_Configuration();           //中断优先级配置
          I2C_Configuration();   //IIC初始化
                KEY_GPIO_Init();      //按键引脚初始化
          delay_ms(200);
          OLED_Init();             //OLED液晶初始化
          OLED_CLS();            //清屏
          OLED_ShowStr(0, 2, "   loading...   ", 2,0);//显示加载中
    ESP8266_Init();       //ESP8266初始化
          Adc_Init();         //adc初始化
          MOTOR_GPIO_Init();   //舵机初始化
          DS18B20_GPIO_Init();    //温度初始化
          DS18B20_Init();         //初始化显示
                delay_ms(1000);
                delay_ms(1000);
          OLED_CLS();            //清屏
          displayInitInterface(); //显示初始界面
          TIM3_Init(99,71);   //定时器初始化,定时100us
               
                Get_Temperature();   //获取温度
                delay_ms(100);
                Get_Temperature();   //获取温度
                delay_ms(1000);
                //Tout = ((arr+1)*(psc+1))/Tclk ;
                //Tclk:定时器输入频率(单位MHZ)
                //Tout:定时器溢出时间(单位us)
                while(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);
                }
} 六、实验效果 

​https://i-blog.csdnimg.cn/direct/4696e91d467142f48773d0ca64f2c648.jpeg
https://i-blog.csdnimg.cn/direct/5b448a45f5f0469bb3fe2f63cc4eca19.jpeg
七、资料内容

https://img-blog.csdnimg.cn/direct/73286180786c44a4b72d74b300213cf2.png​
项目分享


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: STM32项目分享:智能厨房安全检测系统