基于STM32的除湿杀菌鞋柜设计
智能鞋柜:配备电子设备,可自动除湿、杀菌,延长鞋子寿命。 #生活技巧# #收纳技巧# #鞋柜收纳方案#
大家好,这里是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单片机多功能智能鞋柜