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

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

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

一、媒介

项目成品图片:

哔哩哔哩视频链接:
     STM32智能厨房安全检测系统
  (资料分享见文末) 
二、项目简介

1.功能详解

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

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



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


四、PCB硬件设计

PCB图 




五、程序设计 

  1. int main(void)
  2. {
  3.                 delay_init();                   //延时函数初始化         
  4.     NVIC_Configuration();           //中断优先级配置
  5.           I2C_Configuration();     //IIC初始化
  6.                 KEY_GPIO_Init();        //按键引脚初始化
  7.           delay_ms(200);
  8.           OLED_Init();             //OLED液晶初始化
  9.           OLED_CLS();              //清屏
  10.           OLED_ShowStr(0, 2, "   loading...   ", 2,0);//显示加载中
  11.     ESP8266_Init();       //ESP8266初始化
  12.           Adc_Init();           //adc初始化
  13.           MOTOR_GPIO_Init();     //舵机初始化
  14.           DS18B20_GPIO_Init();    //温度初始化
  15.           DS18B20_Init();         //初始化显示
  16.                 delay_ms(1000);
  17.                 delay_ms(1000);
  18.           OLED_CLS();              //清屏
  19.           displayInitInterface(); //显示初始界面
  20.           TIM3_Init(99,71);   //定时器初始化,定时100us
  21.                
  22.                 Get_Temperature();   //获取温度
  23.                 delay_ms(100);
  24.                 Get_Temperature();   //获取温度
  25.                 delay_ms(1000);
  26.                 //Tout = ((arr+1)*(psc+1))/Tclk ;
  27.                 //Tclk:定时器输入频率(单位MHZ)
  28.                 //Tout:定时器溢出时间(单位us)
  29.                 while(1)
  30.                 {
  31.                            keyscan();  //按键扫描
  32.                            if(setn == 0)
  33.                                  {
  34.                                            if(shuaxin == 1)   //大概300ms刷新一次数据
  35.                                                  {
  36.                                                                  Get_Temperature();   //获取温度
  37.                                                                  Get_Smoke();         //获取烟雾
  38.                                                           
  39.                                                            shuaxin = 0;
  40.                                                  }
  41.                                                  if(FLAME == 0)          //检测到火焰
  42.                                                  {
  43.                                                                 delay_ms(10);
  44.                                                                 if(FLAME == 0)
  45.                                                                 {
  46.                                                                                 if(flameFlag == 0)
  47.                                                                                 {
  48.                                                                                                 OLED_DrawBMP(88,4,120,8,(unsigned char *)BMP);  //显示火焰图片
  49.                                                                                 }
  50.                                                                                 flameFlag = 1;
  51.                                                                                 RELAY = 1;  //检测到有火,开启水泵
  52.                                                                 }
  53.                                                  }
  54.                                                  else
  55.                                                  {
  56.                                                                 if(flameFlag == 1)
  57.                                                                 {
  58.                                                                                 OLED_ShowStr(88, 4, "    ", 2,0);
  59.                                                                                 OLED_ShowStr(88, 6, "    ", 2,0);
  60.                                                                 }
  61.                                                                 flameFlag = 0;
  62.                                                                 RELAY = 0;  //关闭水泵
  63.                                                  }
  64.                                                  if(temperature>=setTempValue || smoke>=setSmokeValue || flameFlag)BEEP=1;else BEEP=0;  //检测到温度烟雾超标火焰蜂鸣器报警
  65.                                                  if(temperature>=setTempValue || smoke>=setSmokeValue)FAN=1;else FAN=0;      //烟雾温度超标都开启风扇
  66.                                                  if(smoke>=setSmokeValue || flameFlag)PWM=15;else PWM=5;                    //烟雾超标或者是检测到火焰,舵机动作,模拟关闭阀门
  67.                            }
  68.                                  UsartSendReceiveData();
  69.                            delay_ms(10);
  70.                 }
  71. }
复制代码
六、实验效果 



七、资料内容


项目分享


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表