基于STM32的智能衣柜控制系统设计

目录

1、功能设计

2、演示视频和实物

3、系统设计框图

4、软件设计流程图

5、原理图

6、主程序

7、总结


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

设备的详细功能见网盘中的文章《4、基于STM32的智能衣柜设计》:

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

智能衣柜属于智能家居中的一部分,即保留了传统家具设计模式和基本功能又融入了现代电子技术带来的人性化和智能化,智能衣柜从功能定位上来说是一个极富创新和实用的设计产品。目前市场上很难寻觅一款真正意义上的智能家 具。因此智能衣柜凭借高科技的新颖设计必将吸引众多目光,势必造就一个巨大的市场。

1、功能设计

本次以STM32单片机为主控芯片,设计了一款智能衣柜系统,实现了衣柜内温湿度的检测、温湿度及时间的显示和除湿消毒的功能。该系统利用温湿度检测模块检测衣柜内温湿度后通过单片机与预设值相比较,当温湿度超过预设值时将进行除湿消毒并报警。按键模块用于修改当前时间,并且将在显示屏上显示时间和当前温湿度。

2、演示视频和实物

D15-基于STM32的智能衣柜控制系统

3、系统设计框图

4、软件设计流程图

在智能衣柜的系统中,主系统能够通过设定操作来调整衣柜温湿度的上限值,之后温湿度传感器会立即开始采集衣柜环境的数据。当衣柜温湿度超过预设最大值时,传感器内部对采集到的一系列数据展开处理,推断是否需要进行声光报警与打开排风换气扇。

5、原理图

6、主程序

#include "stm32f10x.h"  // 有问题和需求的,可以联系VX:lwfw123456789
#include "Delay.h"
#include "OLED.h"
#
#include "Key.h"
#include "dht11.h"
#include "Serial.h"

#include "LED.h"
#include "MyRTC.h"

uint16_t RTC_Time1[] = {7, 0, 0};    //3¸ö¶¨Ê±Ê±¼ä
uint16_t RTC_Time2[] = {11, 0, 0};
uint16_t RTC_Time3[] = {19, 0, 0};

//uint16_t MyRTC_Time[] = {2024, 2, 4, 23, 59, 55};
uint16_t RTC_Time[] = {0, 0, 0};
uint8_t KeyNum;

u8 temp, humi;

u8 i, state, state1;
uint8_t RxData;      //À¶ÑÀ½ÓÊÕµ½µÄÊý¾Ý

u8 wendufazhi = 30;
u8 shidufazhi = 50;
u8 t = 0;
int main(void)
{
    uint32_t bufe[2];
    OLED_Init();
    Key_Init();
    DHT11_Init();
    LED_Init();

    MyRTC_Init();
   OLED_ShowString(2, 5, "XX:XX:XX");
    OLED_ShowChinese(1, 2, 26);
    OLED_ShowChinese(1, 3, 27);
    OLED_ShowChinese(1, 4, 28);
    OLED_ShowChinese(1, 5, 29);
    OLED_ShowChinese(1, 6, 20);
    OLED_ShowChinese(1, 7, 21);

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



    while (1)
    {
        KeyNum = Key_GetNum();      //°´¼üɨÃè

        if (KeyNum == 1)    //Ò»¼ü¿ØÖƶàýÌå   PB10
        {
            Delay_ms(20);
            if (KeyNum == 1)
            {
                state++;
                if (state > 2)
                {
                    state = 0;
                }
            }
        }
        if (state == 0)   //ʱ¼äÏÔʾģʽ
        {
            MyRTC_ReadTime();
					
            OLED_ShowNum(2, 5, MyRTC_Time[3], 2);  //ʱ
            OLED_ShowNum(2, 8, MyRTC_Time[4], 2);//·Ö
            OLED_ShowNum(2, 11, MyRTC_Time[5], 2);//Ãë
					
            RTC_Time[0] = MyRTC_Time[3];
            RTC_Time[1] = MyRTC_Time[4];
            RTC_Time[2] = MyRTC_Time[5];
        }
        if (state == 1)   //ÐÞ¸Äʱ¼ä
        {

											if (KeyNum == 2)
											{
													Delay_ms(20);
													if (KeyNum == 2)
													{
															state1++;
															if (state1 > 2)
															{
																	state1 = 0;
															}
													}
											}
											if (state1 == 0) //ÐÞ¸Äʱ
											{
													if (KeyNum == 3)RTC_Time[0]++;
													if (KeyNum == 4)RTC_Time[0]--;
												  if(RTC_Time[0]>23 & RTC_Time[0]<100)RTC_Time[0]=0;
												  if(RTC_Time[0]>100)RTC_Time[0]=23;
													OLED_ShowNum(2, 5, RTC_Time[0], 2);  //ʱ
											}
											if (state1 == 1) //Ð޸ķÖ
											{
													if (KeyNum == 3)RTC_Time[1]++;
												  if (KeyNum == 4)RTC_Time[1]--;
												  if(RTC_Time[1]>59 & RTC_Time[1]<100)RTC_Time[1]=0;
												  if(RTC_Time[1]>100)RTC_Time[1]=59;
													OLED_ShowNum(2, 8, RTC_Time[1], 2);  //ʱ
											}
											if (state1 == 2) //ÐÞ¸ÄÃë
											{
													if (KeyNum == 3)RTC_Time[2]++;
												  if(RTC_Time[2]>59)RTC_Time[2]=0;
												  if(RTC_Time[2]>59 & RTC_Time[2]<100)RTC_Time[2]=0;
												  if(RTC_Time[2]>100)RTC_Time[2]=59;
													if (KeyNum == 4)RTC_Time[2]--;
													OLED_ShowNum(2, 11, RTC_Time[2], 2);  //ʱ
											}

        }
				if (state == 2)
				{
				     
					  MyRTC_Time[3]=RTC_Time[0];
            MyRTC_Time[4]=RTC_Time[1];
            MyRTC_Time[5]=RTC_Time[2];
					  MyRTC_SetTime();
					  state =0;
				}
        OLED_ShowNum(3, 12, wendufazhi, 2);
				OLED_ShowString(3, 14, "%");
        OLED_ShowNum(4, 12, shidufazhi, 2);
				OLED_ShowString(4, 14, "%");
        if (t % 10 == 0)
        {
            DHT11_Read_Data(&temp, &humi);  
            bufe[0] = temp;
            bufe[1] = humi;
            OLED_ShowNum(3, 6, bufe[0], 2);
            OLED_ShowString(3, 8, "%");
            OLED_ShowNum(4, 6, bufe[1], 2);
            OLED_ShowString(4, 8, "%");


        }
        t++;
        if (temp >= wendufazhi || humi >= shidufazhi)          
        {
            FengShen_ON();
            XiaoDu_ON();
            Buffer_Turn();
        }
        else
        {
            FengShen_OFF();
            XiaoDu_OFF();
            Buffer_OFF();
        }
    }
}

7、总结

设计了一种以单片机STM32为主控制器的多功能智能衣柜,实现除湿干燥和杀菌消毒等功能,主要由温湿度检测、除湿干燥和杀菌消毒等模块组成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

5132单片机设计

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

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

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

打赏作者

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

抵扣说明:

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

余额充值