目录
🤞大家好,这里是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为主控制器的多功能智能衣柜,实现除湿干燥和杀菌消毒等功能,主要由温湿度检测、除湿干燥和杀菌消毒等模块组成。