恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【STM32开源项目】智能厨房

  • 首页
  • 资讯中心
  • /
  • 【STM32开源项目】智能厨房

相关资讯

基于微信小程序的户外徒步社交平台设计与实现(源码+lw+部署文档+讲解等) 2026/9/8 18:57:23
Text2SQL智能体实战:从Demo到内部工具的完整方案 2026/9/8 18:52:23
基于node二手车租赁信息管理系统毕业设计项目源码 2026/9/8 18:52:23

最新资讯

Modbus直连云平台失败排查:地址映射、字节序与物模型对齐指南
云克隆 Luminex 多因子检测试剂盒(IL10,IL13,IL17,MCP1,MIP1a,TGFb1,TNF-α)Th2-Th17 免疫轴标志物检测方案上市
用LLM自动切图?我这样让Figma设计稿一键导出图标和图片
FDE落地实战:开发AI应用前,如何识别真需求避开伪需求陷阱
从生成内容到生成交互:界面世界模型如何重构前端范式
工业自动化信号类型详解:从4-20mA到PLC接线与抗干扰实战

今日推荐

Redis缓存与离线预计算在大数据处理中的实战应用
Android 12热启动闪屏排查:从冷热启动差异到官方SplashScreen避坑指南
加密资产价值投资:原理、方法与实战策略

本周热门

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

【STM32开源项目】智能厨房

发布时间:2026/9/8 18:57:23
【STM32开源项目】智能厨房 目录一、项目概述二、实现功能(功能详解、清单、演示视频1、功能详解2、项目清单3、演示视频三、硬件介绍1、原理图2、PCB硬件设计四、程序设计五、项目效果图六、项目总结七、包含资料一、项目概述本项目使用STM32F103C8T6单片机开发整体设计简洁明了没有复杂的操作系统和多线程逻辑。主要实现基础的数据采集、数据显示和智能控制功能上手零压力。系统搭载了DS18B20温度传感器检测环境温度烟雾传感器检测烟雾浓度一氧化碳传感器检测CO浓度火焰传感器检测明火光电红外传感器检测人体靠近。所有数据实时显示在OLED屏幕上。系统支持自动和手动两种模式手动模式下用户通过按键直接控制水泵、风扇、LED灯和阀门舵机模拟自动模式下检测到人体自动开灯温度超标开风扇报警烟雾或CO超标开风扇、关阀门并报警检测到火焰则关阀门、开水泵灭火并报警。用户可通过按键或机智云App远程修改各参数阈值App端还可查看环境数据并下发控制指令。二、实现功能(功能详解、清单、演示视频1、功能详解主控芯片STM32F103C8T6显示功能OLED屏幕显示环境参数检测功能采集环境温湿度、烟雾浓度、一氧化碳浓度、火焰信号和人体信号模式切换通过按键切换自动模式和手动模式手动模式按键控制水泵、风扇、LED灯和阀门舵机模拟的开关自动模式a.检测到有人时开启LED灯;b.温度高于阈值时开启风扇并蜂鸣器报警;c.烟雾或一氧化碳超过阈值时开启风扇、关闭阀门、蜂鸣器报警;d.检测到火焰时关闭阀门、开启水泵、蜂鸣器报警;阈值调节通过按键进入设置界面修改各参数阈值APP控制通过WIFI连接机智云APP可查看环境数据、下发控制指令、修改阈值2、项目清单STM32F103C8T6最小系统板OLED屏幕DS18B20温度传感器光电红外传感器非接触式水位传感器TDS电导率传感器WiFi ESP8266舵机继电器风扇加热片有源蜂鸣器按键3、演示视频哔哩哔哩视频链接http:// https://www.bilibili.com/video/BV1p6jy6rEcr/?share_sourcecopy_webvd_sourcef4437c8e4429101e5bf1054c39d5474f三、硬件介绍PCB硬件设计四、程序设计#include delay.h #include sys.h #include usart.h #include control.h #include key.h #include timer.h #include oled.h #include dht11.h #include adc.h #include pwm.h #include IoData.h /**** 数据变量 ****/ int temp_door 35; //温度阈值 int mq2_door 3000; //烟雾阈值 int mq7_door 3000; //液化气阈值 int auto_mode 0; //自动模式开关 0关闭 1开启 int wind_status 0; //风扇开关状态 int water_status 0; //水泵开关状态 int valve_status 0; //燃气阀开关状态 int led_status 0; //照明开关状态 /**** 菜单变量 ****/ uint8_t keu_num 0; //按键 uint8_t page_num 1; //界面 uint8_t option 0; //选项 /**** 功能函数声明 ****/ void get_all_sensor_data(); //传感器数据采集 void Sensor_Data_Handle(); //不同模式下控制效果 void Key_event_handle(void); //按键功能函数 void All_Pin_Init(void); //系统初始化函数 void OLED_Show_OnePage(); //第一屏显示内容 void OLED_Show_TwoPage(); //第二屏显示内容 void OLED_Show_ThreePage(); //第三屏显示内容 void All_Pin_Init(void) { delay_init(); //系统延时函数初始化 OLED_Init(); //屏幕初始化 uart3_init(9600); //串口3初始化波特率9600 uart1_init(115200); //串口1初始化波特率115200 uart2_init(9600); //串口2初始化波特率9600 DHT11_Init(); //DHT11温湿度初始化 Adc_Init(); //烟雾浓度、液化气浓度、火焰检测初始化 PWM_Init(); //阀门舵机初始化 KEY_Init(); //按键初始化 TIME_Config(); //定时器初始化 Control_Init(); //声光报警风扇、水泵初始化 IoData_Init(); LED 1; } int main(void) { All_Pin_Init(); while(1) { if(Time_Period[1]1000) //Time_Period[1] 在定时器中累加 { get_all_sensor_data(); //传感器数据采集 Time_Period[1] 0; } Key_event_handle(); //按键监测 Sensor_Data_Handle(); //数据处理 if(page_num 1){ //屏幕更新 OLED_Show_OnePage(); }else if(page_num 2){ OLED_Show_TwoPage(); }else if(page_num 3){ OLED_Show_ThreePage(); } } } void Key_event_handle(void) { keu_num KEY_Scan(0); //按键扫描赋值 switch(keu_num) { case 1: //按键1按下 if(page_num1){ page_num2;option0; OLED_Clear();OLED_Show_TwoPage(); }else if(page_num2){ page_num3;option0; OLED_Clear();OLED_Show_ThreePage(); }else if(page_num3){ page_num1;option0; OLED_Clear();OLED_Show_OnePage(); } break; case 2: //按键2按下 if(page_num2){ option; if(option3){ option0; } }else if(page_num3){ option; if(option4){ option0; } } break; case 3: //按键3按下 if(page_num1){ auto_mode 1; }else if(page_num2){ if(option1)temp_door; else if(option2)mq2_door25; else if(option3)mq7_door25; }else if(page_num3){ if(auto_mode0){ if(option1){ Wind1; wind_status 1; }else if(option2){ Water1; water_status 1; }else if(option3){ PWM_SetCompare3(175); valve_status 1; }else if(option4){ LED0; led_status 1; } } } break; case 4: //按键4按下 if(page_num1){ auto_mode 0; }else if(page_num2){ if(option1)temp_door--; else if(option2)mq2_door-25; else if(option3)mq7_door-25; }else if(page_num3){ if(auto_mode0){ if(option1){ Wind0; wind_status 0; }else if(option2){ Water0; water_status 0; }else if(option3){ PWM_SetCompare3(185); valve_status 0; }else if(option4){ LED1; led_status 0; } } } break; } } void get_all_sensor_data() { DHT11_Read_Data(DHT_temp,DHT_hum); //获取温湿度数据 Get_MQ2_Value(MQ2_Value); //获取烟雾数据 Get_MQ7_Value(MQ7_Value); //获取液化气浓度数据 Get_Fire_Value(fire_status); //检测火焰状态 Get_Body_Value(body_status); //检测人体状态 } void Sensor_Data_Handle() { if(auto_mode1){ /* 自动模式下 系统检测到 有人时 开启LED 温度高于阈值 开启风扇 和 蜂鸣器报警 烟雾和一氧化碳超过阈值 开启风扇 关闭阀门并 开启蜂鸣器报警 发生火灾时 关闭阀门 开启水泵和 蜂鸣器报警 */ if(DHT_temptemp_door || MQ2_Valuemq2_door || MQ7_Valuemq7_door || fire_status1){ Beep 1; }else{ Beep 0; } if(DHT_temptemp_door || MQ2_Valuemq2_door || MQ7_Valuemq7_door){ Wind1; wind_status 1; }else{ Wind0; wind_status 0; } if(MQ2_Valuemq2_door || MQ7_Valuemq7_door || fire_status1){ PWM_SetCompare3(185); valve_status 0; } /* 检测到火焰 打开水泵灭火 */ if(fire_status1){ Water1; water_status 1; }else{ Water0; water_status 0; } if(body_status1){ LED0; led_status 1; }else{ LED1; led_status 0; } }else{ Beep 0; } } // 温(0) 湿(1) 度(2) ℃(3) 光(4) 照(5) 强(6) 度(7) 烟(8) 雾(9) 浓(10) 度(11) 空(12) 气(13) 质(14) 量(15) // 火(16) 焰(17) 状(18) 况(19) 有(20) 无(21) 阈(22) 值(23) 开(24) 关(25) 照(26) 明(27) 窗(28) 帘(29) 自(30) 手(31) // 动(32) 液(33) 化(34) 气(35) 通(36) 风(37) 水(38) 泵(39) 燃(40) 气(41) 阀(42) 人(43) 体(44) void OLED_Show_OnePage() { if(auto_mode 1){ OLED_ShowChinese(16*7,32,30,16,1); //自 OLED_ShowChinese(16*7,48,32,16,1); //动 }else{ OLED_ShowChinese(16*7,32,31,16,1); //手 OLED_ShowChinese(16*7,48,32,16,1); //动 } // OLED_ShowChinese(16*0,0,0,16,1); //温 // OLED_ShowChinese(16*1,0,2,16,1); //度 // OLED_ShowChar(16*2,0,:,16,1); OLED_ShowString(16*0,0,T:,16,1); OLED_ShowNum(16*1,0,DHT_temp,2,16,1); OLED_ShowChinese(16*2,0,3,16,1); //℃ // OLED_ShowChinese(16*0,16,1,16,1); //湿 // OLED_ShowChinese(16*1,16,2,16,1); //度 // OLED_ShowChar(16*2,16,:,16,1); OLED_ShowString(16*38,0,H: %RH,16,1); OLED_ShowNum(16*48,0,DHT_hum,2,16,1); OLED_ShowChinese(16*0,16,16,16,1); //火 OLED_ShowChinese(16*1,16,17,16,1); //焰 OLED_ShowChar(16*2,16,:,16,1); if(fire_status1)OLED_ShowChinese(16*28,16,20,16,1); //有 else OLED_ShowChinese(16*28,16,21,16,1); //无 OLED_ShowChinese(16*4,16,43,16,1); //人 OLED_ShowChinese(16*5,16,44,16,1); //体 OLED_ShowChar(16*6,16,:,16,1); if(body_status1)OLED_ShowChinese(16*68,16,20,16,1); //有 else OLED_ShowChinese(16*68,16,21,16,1); //无 OLED_ShowChinese(16*0,32,8,16,1); //烟 OLED_ShowChinese(16*1,32,9,16,1); //雾 OLED_ShowChinese(16*2,32,10,16,1); //浓 OLED_ShowChinese(16*3,32,11,16,1); //度 OLED_ShowChar(16*4,32,:,16,1); OLED_ShowNum(16*48,32,MQ2_Value,4,16,1); OLED_ShowString(16*0,48,CO,16,1); OLED_ShowChinese(16*1,48,10,16,1); //浓 OLED_ShowChinese(16*2,48,11,16,1); //度 OLED_ShowChar(16*3,48,:,16,1); OLED_ShowNum(16*38,48,MQ7_Value,4,16,1); OLED_Refresh(); } void OLED_Show_TwoPage() { uint8_t a,b,c,d; if(option1){a0;b1;c1;d1;} else if(option2){a1;b0;c1;d1;} else if(option3){a1;b1;c0;d1;} else if(option4){a1;b1;c1;d0;} else{a1;b1;c1;d1;} OLED_ShowChinese(16*0,0,0,16,1); //温 OLED_ShowChinese(16*1,0,2,16,1); //度 OLED_ShowChinese(16*2,0,22,16,1); //阈 OLED_ShowChinese(16*3,0,23,16,1); //值 OLED_ShowChar(16*4,0,:,16,1); OLED_ShowNum(16*48,0,temp_door,3,16,a); OLED_ShowChinese(16*0,16,8,16,1); //烟 OLED_ShowChinese(16*1,16,9,16,1); //雾 OLED_ShowChinese(16*2,16,22,16,1); //阈 OLED_ShowChinese(16*3,16,23,16,1); //值 OLED_ShowChar(16*4,16,:,16,1); OLED_ShowNum(16*48,16,mq2_door,4,16,b); OLED_ShowString(16*0,32,CO,16,1); OLED_ShowChinese(16*1,32,22,16,1); //阈 OLED_ShowChinese(16*2,32,23,16,1); //值 OLED_ShowChar(16*3,32,:,16,1); OLED_ShowNum(16*38,32,mq7_door,4,16,c); OLED_Refresh(); } void OLED_Show_ThreePage() { uint8_t a,b,c,d; if(option1){a0;b1;c1;d1;} else if(option2){a1;b0;c1;d1;} else if(option3){a1;b1;c0;d1;} else if(option4){a1;b1;c1;d0;} else{a1;b1;c1;d1;} OLED_ShowChinese(16*0,0,36,16,1); //通 OLED_ShowChinese(16*1,0,37,16,1); //风 OLED_ShowChar(16*2,0,:,16,1); if(wind_status1)OLED_ShowChinese(16*28,0,24,16,a); //开 else OLED_ShowChinese(16*28,0,25,16,a); //关 OLED_ShowChinese(16*0,16,38,16,1); //水 OLED_ShowChinese(16*1,16,39,16,1); //泵 OLED_ShowChar(16*2,16,:,16,1); if(water_status1)OLED_ShowChinese(16*28,16,24,16,b); //开 else OLED_ShowChinese(16*28,16,25,16,b); //关 OLED_ShowChinese(16*0,32,40,16,1); //燃 OLED_ShowChinese(16*1,32,41,16,1); //气 OLED_ShowChinese(16*2,32,42,16,1); //阀 OLED_ShowChar(16*3,32,:,16,1); if(valve_status1)OLED_ShowChinese(16*38,32,24,16,c); //开 else OLED_ShowChinese(16*38,32,25,16,c); //关 OLED_ShowChinese(16*0,48,26,16,1); //照 OLED_ShowChinese(16*1,48,27,16,1); //明 OLED_ShowChar(16*2,48,:,16,1); if(led_status1)OLED_ShowChinese(16*28,48,24,16,d); //开 else OLED_ShowChinese(16*28,48,25,16,d); //关 OLED_Refresh(); }五、项目效果图六、项目总结本系统各项功能均已实现并稳定运行具体成果如下环境感知温度、烟雾浓度、一氧化碳浓度、火焰信号、人体信号均采集准确OLED屏幕实时刷新显示。手动模式按键控制水泵、风扇、LED灯、阀门开关均响应正常操作流畅。自动模式人来灯亮、温度超标开风扇报警、烟雾/CO超标开风扇关阀门报警、火焰超标开水泵关阀门报警四项联动逻辑准确响应迅速。阈值调节按键进入设置界面修改阈值功能正常参数掉电保存。远程监控ESP8266成功接入机智云平台手机App可查看实时数据、下发控制指令、远程修改阈值。七、包含资料1本资料免费分享获取全套资料请看主页并将告诉助手需要资料的项目编号助手收到消息后会发送百度网盘链接。每人限领两份开源资料。2需要实物或者定制的小伙伴可以添加工作室微信发送项目需求可以按照需求定制项目。定制包含源码、原理图、全套实物、模块参考资料、更详细的参考资料。3重点在本工作室定制的项目提供一年的技术支持和答疑服务定制功能范围内的代码和原理图工程师一对一解疑答惑资料获取查看主页介绍“充哥单片机设计”如果需要项目源码与配套工程文件欢迎大家在评论区留言交流文章若对你有所帮助期待点赞收藏后续会持续分享各类单片机实战案例。内容仅作为学习参考有任何不妥之处欢迎大家一起探讨

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号