基于STM32的除湿杀菌鞋柜设计

发布时间:2025-03-01 06:17

智能鞋柜:配备电子设备,可自动除湿、杀菌,延长鞋子寿命。 #生活技巧# #收纳技巧# #鞋柜收纳方案#

大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是加湿器。设备的详细功能见网盘中的文章《13、基于STM32的除湿杀菌鞋柜设计》:

 设备的详细功能见网盘中的文章《13、基于STM32的除湿杀菌鞋柜设计》:

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

提取码:5132

1、系统功能

本系统由STM32F103CT6作为主控,通过自动模式、手动模式、蓝牙模式、语音模式和定时模式控制鞋柜,其中DHT11温湿度传感器用来采集温度和湿度。输出设备由加湿器、风扇和紫外线杀菌模块组成。

1、自动模式:通过温度控制加湿器,温度控制排风扇,两者共同控制杀菌灯。

2、手动模式:通过三个按键控制加湿器、风扇和紫外线杀菌模块。

3、蓝牙模式:通过蓝牙模块原创控制加湿器、风扇和紫外线杀菌模块。

4、语音模式:通过LD3320A语音识别模块控制加湿器、风扇和紫外线杀菌模块。

2、演示视频和实物

基于单片机的智能杀菌除湿鞋柜控制系统(LD3320A+HC05)---已开源,三连+关注获取资料

3、系统设计框图

4、原理图

7、主程序

#include "stm32f10x.h" //定制单片机联系VX:lwfw123456789

#include <stdio.h>

#include <string.h>

/***********************************************************************************************

同学好!我们是5132单片机设计,定制单片机设计,实物和说明书均可定制,欢迎大家咨询。VX:lwfw123456789

其他项目演示视频和说明请大家移步哔哩哔哩、CSDN和公众号等。

哔哩哔哩:5132单片机设计

CSDN: 5132单片机设计

公众号: 5132单片机设计

抖音 : 5132单片机设计

小红书: 5132单片机设计

咸鱼: 5132单片机设计

************************************************************************************************/

uint16_t RTC_Time1[] = {7, 0, 0}; //3个定时时间

uint16_t RTC_Time2[] = {11, 0, 0};

uint16_t RTC_Time3[] = {19, 0, 0};

uint16_t AD0, AD1, AD4, AD5, AD6; //存储5路ADC值

uint8_t KeyNum; //存储按键值

uint8_t RxData; //蓝牙接收到的数据

uint32_t bufe[4]; //存储温湿度

u8 temp, humi;

u8 t = 0; //温湿度读取值的间隔

u8 state = 1; //设备开关

u8 state1 = 1; //模式选择

u8 state2,state3,state4,state5; //模式选择

u8 WenYu=30,ShiYu=50; //湿度阈值

void YuYingMode() //先说小杰唤醒,然后说打开窗户和关闭窗户

{

if (Serial2_RxFlag == 1) //串口接收到数据包的标志位,若是收到数据包,会置1

{

if (strcmp(Serial2_RxPacket, "JUN_ON") == 0)

{

ShaJun_ON();

}

else if (strcmp(Serial2_RxPacket, "JUN_OFF") == 0)

{

ShaJun_OFF();

}

if (strcmp(Serial2_RxPacket, "FENG_ON") == 0)

{

FengShan_ON();

}

else if (strcmp(Serial2_RxPacket, "FENG_OFF") == 0)

{

FengShan_OFF();

}

if (strcmp(Serial2_RxPacket, "JIASHI_ON") == 0)

{

JiaShi_ON();

}

else if (strcmp(Serial2_RxPacket, "JIASHI_OFF") == 0)

{

JiaShi_OFF();

}

Serial2_RxFlag = 0; //将标志位清零,不清零就接收不到下一个数据包了

}

}

void ctrlue()

{

/*****门关的情况下,温度大于设定阈值,打开杀菌和风扇*****/

if ( bufe[1] > ShiYu)

{

JiaShi_OFF();

}

/*****门开的情况下或者温度小于设定阈值,关闭杀菌和风扇*****/

if ( bufe[1] < ShiYu)

{

JiaShi_ON();

}

/*****门关的情况下,湿度大于设定阈值,打开杀菌和加湿器*****/

if ( bufe[0] > WenYu)

{

FengShan_ON();

}

/*****门关的情况下,湿度大于设定阈值,打开杀菌和加湿器*****/

if ( bufe[0] < WenYu)

{

FengShan_OFF();

}

/*****门开的情况下关闭杀菌和加湿器,打开照明灯*****/

if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)

{

if(bufe[2] < 50)

{

LED_ON();

}

}else

{

LED_OFF();

}

if(( bufe[1] > ShiYu)||( bufe[0] > WenYu))

{

ShaJun_ON();

}else

{

ShaJun_OFF();

}

if (KeyNum == 2)

{

state5++;

if (state5 > 1)

{

state5 = 0;

}

}

if (state5 == 1)

{

if (KeyNum == 3) WenYu++;

if (KeyNum == 4) WenYu--;

}

if (state5 == 0)

{

if (KeyNum == 3) ShiYu++;

if (KeyNum == 4) ShiYu--;

}

}

void shoudong()

{

Buzzer_OFF();

LED_OFF();

if (KeyNum == 2 ) //手动模式控制风扇

{

delay_ms(20);

if (KeyNum == 2)

{

state2++;

if (state2 > 1)

{

state2 = 0;

}

}

}

if (state2 == 1)

{

FengShan_ON();

}

if (state2 == 0)

{

FengShan_OFF();

}

if (KeyNum == 3 ) //手动模式控制加湿器

{

delay_ms(20);

if (KeyNum == 3)

{

state3++;

if (state3 > 1)

{

state3 = 0;

}

}

}

if (state3 == 0)

{

JiaShi_ON();

}

if (state3 == 1)

{

JiaShi_OFF();

}

if (KeyNum == 4 ) //手动模式控制加湿器

{

delay_ms(20);

if (KeyNum == 4)

{

state4++;

if (state4 > 1)

{

state4 = 0;

}

}

}

if (state4 == 1)

{

ShaJun_ON();

}

if (state4 == 0)

{

ShaJun_OFF();

}

}

void LanYa()

{

if (Serial_GetRxFlag() == 1) //蓝牙接收部分

{

RxData = Serial_GetRxData(); //蓝牙接收

switch (RxData) //蓝牙控制选择

{

case 1:

ShaJun_ON(); //

break;

case 2:

ShaJun_OFF();//

break;

case 3: //

LED_ON();

break;

case 4: //

LED_OFF();

break;

case 5: //

FengShan_ON();

break;

case 6: //

FengShan_OFF();

break;

case 8: //

JiaShi_ON();

break;

case 7: //

JiaShi_OFF();

break;

case 9: //

WenYu++;

break;

case 10: //

WenYu--;

break;

case 11: //

ShiYu++;

break;

case 12: //

ShiYu--;

break;

default:

break;

}

}

}

void dingshi()

{

if ((MyRTC_Time[3] == RTC_Time1[0]) && (MyRTC_Time[4] == RTC_Time1[1]) && (MyRTC_Time[5] == RTC_Time1[2]))//开启时间

{

ShaJun_ON();

delay_ms(1000);

ShaJun_OFF();

}

if ((MyRTC_Time[3] == RTC_Time3[0]) && (MyRTC_Time[4] == RTC_Time3[1]) && (MyRTC_Time[5] == RTC_Time3[2])) //关闭时间

{

ShaJun_ON();

delay_ms(1000);

ShaJun_OFF();

}

}

int main(void) //主函数

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组为组2:2位抢占优先级,2位响应优先级

delay_init(); //延时函数初始化

SystemInit();

Key_Init(); //按键初始化

LED_Init();

OLED_Init();

Buzzer_Init();

DHT11_Init();

AD_Init();

Serial2_Init(); //串口2初始化(语音识别模块)

OLED_ShowString(1, 5, "XX:XX:XX"); //显示时间

OLED_ShowChinese(2, 1, 3); //显示湿度

OLED_ShowChinese(2, 2, 4);

OLED_ShowString(2, 5, ":");

OLED_ShowString(3, 10, "W_Y:");

OLED_ShowChinese(3, 1, 2); //显示温度

OLED_ShowChinese(3, 2, 4);

OLED_ShowString(3, 5, ":");

OLED_ShowString(2, 10, "S_Y:");

OLED_ShowChinese(4, 1, 16); //显示光强

OLED_ShowChinese(4, 2, 17);

OLED_ShowString(4, 5, ":");

MyRTC_Init();

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

Serial3_Init(); //串口2初始化(语音)

while (1)

{

MyRTC_ReadTime();

OLED_ShowNum(1, 5, MyRTC_Time[3], 2);

OLED_ShowNum(1, 8, MyRTC_Time[4], 2);

OLED_ShowNum(1, 11, MyRTC_Time[5], 2);

OLED_ShowNum(3, 14, WenYu, 2);

OLED_ShowNum(2, 14, ShiYu, 2);

if (t % 10 == 0)

{

DHT11_Read_Data(&temp, &humi); //读取温湿度并显示在OLED上

bufe[0] = temp; //温度

bufe[1] = humi; //湿度

OLED_ShowNum(2, 6, bufe[1], 2);

OLED_ShowString(2, 8, "%");

OLED_ShowNum(3, 6, bufe[0], 2);

OLED_ShowString(3, 8, "%");

printf("\r\nWen=%d", bufe[0]); //蓝牙上传数据

printf("\r\nShi=%d\r\n", bufe[1]);

AD0 = AD_GetValue(ADC_Channel_0); //光照传感器 PA0

if (AD0 > 4000)AD0 = 4000;

bufe[2] = (u8)(100 - (AD0 / 40));

OLED_ShowNum(4, 6, bufe[2], 2);

}

KeyNum = Key_GetNum(); //按键检查

if (KeyNum == 1 )

{

delay_ms(20);

if (KeyNum == 1)

{

state1++;

if (state1 > 4)

{

state1 = 0;

}

}

}

if (state1 == 1) //自动模式

{

ctrlue(); // 开

OLED_ShowChinese(4, 7, 30);

OLED_ShowChinese(4, 8, 31);

}

if (state1 == 0) //手动模式

{

shoudong();

OLED_ShowChinese(4, 7, 29);

OLED_ShowChinese(4, 8, 31);

}

if (state1 == 2) //定时模式

{

dingshi();

OLED_ShowChinese(4, 7, 68);

OLED_ShowChinese(4, 8, 69);

}

if (state1 == 3) //蓝牙模式

{

LanYa();

OLED_ShowChinese(4, 7, 62);

OLED_ShowChinese(4, 8, 63);

}

if (state1 == 4) //蓝牙模式

{

YuYingMode();

OLED_ShowChinese(4, 7, 54);

OLED_ShowChinese(4, 8, 55);

}

if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14) == 0)

{

OLED_ShowChinese(1, 8, 13);

if(bufe[2] < 50)

{

LED_ON();

}

}else

{

OLED_ShowChinese(1, 8, 12);

LED_OFF();

}

}

}

8、总结

本系统由STM32F103CT6作为主控,通过自动模式、手动模式、蓝牙模式、语音模式和定时模式控制鞋柜,其中DHT11温湿度传感器用来采集温度和湿度。输出设备由加湿器、风扇和紫外线杀菌模块组成。

网址:基于STM32的除湿杀菌鞋柜设计 https://www.yuejiaxmz.com/news/view/800376

相关内容

基于STM32的智能换气除湿杀菌鞋柜
基于STM32的智能鞋柜设计与实现
【杀菌除臭鞋柜】杀菌除臭鞋柜好不好
基于STM32单片机智能鞋柜 智能鞋盒 换气除湿控制系统 语音识别 红外感应 无线传输 DIY成品 实物+源程序+原理图+仿真+其它资料
基于物联网的智能鞋柜系统设计
一种除湿杀菌鞋柜的制作方法
基于stm32单片机智能衣柜 杀菌消毒除湿通风蓝牙换气红外感应系统
【开源项目】之智能鞋柜(STM32)
基于STM32的智能衣柜系统设计
基于stm32单片机多功能智能鞋柜

随便看看