基于STM32智能厨房控制系统设计

目录

1、设计要求

2、系统功能

3、演示视频和实物

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

8、总结


 

🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是基于STM32智能厨房控制系统设计

设备的详细功能见网盘中的文章《3、基于STM32智能厨房控制系统设计》:

链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132 
提取码:5132

 随着时间的推移,科技的发展,人们更加注重日常生活的安全性,特别是厨房的安全性。在如今这个厨房安全事件多发的时代,厨房安全是一个很重要的环节。这一点,就是该系统设计目标的出发点。

1、设计要求

本课题设计系统由STM32F103C8T6单片机最小系统模块、温湿度传感器模块、LCD1604显示模块、烟雾传感器模块电路、功率测量模块及电源电路组成。其中单片机最小系统模块以单片机为核心,以烟雾传感器MQ-2测量测量烟雾浓度和温湿度传感器DS18B20来检测厨房温度和湿度,功率测量模块测量厨房总功率大小,并通过显示屏显示。若有异常,蜂鸣器报警,LED灯亮,同时启动排风扇。

扩展:本系统远程控制采用的蓝牙 HC-5,还可以采用ESP8266-01S,设计详细见网盘链接。

2、系统功能

设计采用STM32F103C8T6作为主控芯片,用来接收数据,处理数据,控制输出设备。

(1)OLED显示屏:显示功能选择菜单以及各种操做流程。

(2)按键模块:用来启动设备或者模式选择

(3)蜂鸣器模块用来报警。

(4)DHT11检测厨房的温湿度。

(5)MQ-2烟雾传感器监测厨房烟雾浓度,用来判断是否着火。

(6)功率测量模块测量厨房总功率大小,防止厨房着火。

(7)排风扇用来排风排烟,把厨房产生的油烟排到室外。

(8)HC-05蓝牙模块可以远程调控各个传感器的触发阈值。远程接收传感器信息。

3、演示视频和实物

详细系统:

D18-基于STM32智能厨房控制系统设计

实物: 

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

✨下面介绍的主程序,主要是系统逻辑控制的程序编写。 

#include "stm32f10x.h"   // 有问题和需求的,可以联系VX:lwfw123456789
#include <stdio.h>
#include <string.h>
#include "sys.h"
#include "delay.h"
#include "OLED.h"
#include "Key.h"
#include "OLED.h"
#include "Serial.h"
#include "LED.h"
#include "Buzzer.h"
#include "AD.h"
#include "Buzzer.h"
#include "JiDianQi.h"
#include "MyRTC.h"

#include "dht11.h"

uint16_t RTC_Time1[] = {7, 0, 0};    //两个定时时间
uint16_t RTC_Time2[] = {19, 0, 0};
uint8_t RxData;      //蓝牙接收到的数据
uint32_t bufe[3];
uint16_t AD0, AD1, AD2, AD3;       //存储ADC的值
uint8_t KeyNum;      //存储按键值

float shi;              //存储AD模拟值转换为电压的值
u8 state = 1;  //设备开关
u8 state1 = 1; //模式选择
u8 state2 = 1; //手动模式控制水泵
u8 t = 0;
//按键控制的三个阈值
u16 wenfazhi = 30;
u8 yanfazhi = 50;
u8 gongfazhi = 100;
u8 temp,humi;


int main(void)     //主函数
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   // 设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
    delay_init();      //延时函数初始化
    SystemInit();

    Key_Init();    //按键初始化
    LED_Init();
    AD_Init();

    OLED_Init();
    Buzzer_Init();
	  DHT11_Init();

    MyRTC_Init();

//    OLED_ShowString(1, 4, "XXXX-XX-XX");
    OLED_ShowString(1, 5, "XX:XX:XX");


    OLED_ShowChinese(3, 1, 63); //土壤湿度
    OLED_ShowChinese(3, 2, 64);
    OLED_ShowChinese(3, 3, 65);
    OLED_ShowChinese(3, 4, 66);
    OLED_ShowString(3, 9, ":");

    OLED_ShowChinese(4, 1, 2);
    OLED_ShowChinese(4, 2, 4);
    OLED_ShowString(4, 5, ":");

    OLED_ShowChinese(2, 1, 69);
    OLED_ShowChinese(2, 2, 70);
    OLED_ShowString(2, 5, ":");
    OLED_ShowString(2, 10, "W");

    Serial_Init();   //串口1初始化

    JIDIANQI1_OFF();

   

    while (1)
    {
        MyRTC_ReadTime();
//        OLED_ShowNum(1, 4, MyRTC_Time[0], 4);
//        OLED_ShowNum(1, 9, MyRTC_Time[1], 2);
//        OLED_ShowNum(1, 12, MyRTC_Time[2], 2);
        OLED_ShowNum(1, 5, MyRTC_Time[3], 2);
        OLED_ShowNum(1, 8, MyRTC_Time[4], 2);
        OLED_ShowNum(1, 11, MyRTC_Time[5], 2);

        AD3 = AD_GetValue(ADC_Channel_1);    //
        if (AD3 > 4000)AD3 = 4000;
        shi = (u8)(100 - (AD3 / 40))-80;
        bufe[0] = shi;
        OLED_ShowNum(3, 10, shi, 2);    //oled显示光照强度
        OLED_ShowString(3, 12, "%");

        AD2 = AD_GetValue(ADC_Channel_0);    //功率检测
        bufe[0] = (250 * AD2) / 4096; //功率计算,计算得到的是功率在5v的电压情况下,放大1000倍的功率。
        OLED_ShowNum(2, 6, bufe[0], 4);    //oled显示光照强度
      
				if(t%10==0)
			{
			  DHT11_Read_Data(&temp,&humi);   //读取温湿度并显示在OLED上
			  bufe[1]=temp;
				 printf("yanwu=%d\r\n", bufe[0]);
            printf("wendu=%d\r\n", bufe[1]);
			  
        OLED_ShowNum(4,6,bufe[1],2);    //温度
			  OLED_ShowString(4,8,"%");					
			}
			t++;


        if (shi >= yanfazhi || bufe[1] >= wenfazhi ||bufe[0] >gongfazhi)
        {
            Buzzer_Turn();
            LED1_Turn();
        }
        else
        {
            Buzzer_OFF();
            LED1_OFF();
        }
				 if (shi >= yanfazhi || bufe[1] >= wenfazhi )
        {          
            LED2_ON();
        }
        else
        {          
            LED2_OFF();
        }
				
				 KeyNum = Key_GetNum();               //按键检查

        if (KeyNum ==3)   gongfazhi++;
        if (KeyNum == 4)   gongfazhi--;
				if (KeyNum ==2)   yanfazhi++;
        if (KeyNum == 1)   yanfazhi--;
				if (KeyNum ==5)   wenfazhi++;
        if (KeyNum == 6)   wenfazhi--;
				
        OLED_ShowNum(2, 13, gongfazhi, 3);
        OLED_ShowNum(3, 14, yanfazhi, 2);
        OLED_ShowNum(4, 14, wenfazhi, 2);
       

        if (Serial_GetRxFlag() == 1)
        {
            RxData = Serial_GetRxData();     //蓝牙接收
            switch (RxData)
            {
            case 1:
                gongfazhi++;
                break;
            case 2:
                gongfazhi--;
                break;
            case 3:
                yanfazhi ++;
                break;
            case 4:
                yanfazhi --;
                break;
						 case 5:
                wenfazhi ++;
                break;
            case 6:
                wenfazhi --;
                break;
            default:
                break;
            }
        }
    }
}

8、总结

测试结果表明,MQ-2传感器可以对厨房烟雾浓度、DHT11传感器能够对温湿度进行采集,对厨房环境进行实时监测,从而保证厨房的安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5132毕业设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值