一、功能简介
项目名:智能衣柜的设计与实现
项目编号:dz-738
单片机:STM32F103C8T6
- 通过温湿度检测模块监测当前衣柜中的温度和湿度,当检测到湿度过高时进行除湿;
- 通过时钟模块获取当前时间,并可以设置消毒的时间,到达设定时间且门关闭时自动开启消毒灯;
- 通过霍尔传感器检测当前的衣柜门开关状态,当检测到门打开时自动点亮照明灯;
- 通过烟雾检测模块监测当前衣柜中的烟雾浓度,当检测到烟雾浓度过高时进行声光报警;
- 通过人体热释电感应模块检测是否有人靠近,当检测到人且门打开时自动降低衣架;
- 通过联网获取当前的温度和天气状况,当开启柜门时进行语音播报推荐;
- 通过WiFi模块将监测数据传输至手机端,手机可以远程设置参数并控制外设。
二、系统框图设计
绘制软件:VISIO
本设计以STM32F103C8T6单片机为核心控制器,结合多种传感器模块和执行模块构建智能衣柜系统。系统包含中控部分、输入部分和输出部分。中控部分采用STM32F103C8T6单片机,其主要功能是获取输入数据并控制输出部分。输入部分由以下模块组成:第一部分是温湿度检测模块,通过该模块可以监测当前衣柜中的温度和湿度;第二部分是时钟模块,通过该模块可以获取当前时间并设置消毒时间;第三部分是霍尔传感器模块,通过该模块可以检测衣柜门的开关状态;第四部分是烟雾检测模块,通过该模块可以检测衣柜内的烟雾浓度;第五部分是人体热释电感应模块,通过该模块可以检测是否有人靠近;第六部分是按键模块,用于手动设置参数;第七部分是供电模块,为整个系统提供稳定的电源支持。输出部分由以下模块组成:第一部分是继电器模块,当湿度超过设定的最大值时自动启动除湿功能、当时间到达且门关闭时自动开启消毒灯、当检测到门打开时自动点亮照明灯;第二部分是声光报警模块,当烟雾浓度超过设定的最大值时进行声光报警;第三部分是步进电机控制模块,当检测到人且门打开时自动降低衣架;第四部分是语音播报模块,当开启柜门时进行语音播报推荐。此外还有WiFi模块,用于将监测数据传输至手机端,实现远程设置参数和控制外设,并通过该模块获取当前的温度和天气状况。

三、实物图
单片机型号:STM32F103C8T6
板子为绿色PCB板,两层板,厚度1.2mm,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。
供电接口:TYPE-C

四、原理图
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图仅画出了模块的引脚图,并不是模块的内部结构原理图

五、PCB图
由原理图导出,封装很大一部分都是作者自行绘制,不提供封装库,仅提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不可见。
两层板,上下覆铜接地。

六、部分程序展示
软件版本:keil5
逻辑程序和驱动程序分开,分别位于main.c和其他.c文件中
/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
if(display_num == 0) //测量界面
{
if(time_hour_begin*60+time_min_begin > time_hour_end*60+time_min_end) //开始时间 > 结束时间
{
if((time_hour_end*60+time_min_end <= ds1302_buf[4]*60+ds1302_buf[5]) && (ds1302_buf[4]*60+ds1302_buf[5] < time_hour_begin*60+time_min_begin)) //当前时间不在设置的时间内
{
flag_time_en = 0; //不触发
}
else //否则
{
flag_time_en = 1; //触发
}
}
else if(time_hour_begin*60+time_min_begin < time_hour_end*60+time_min_end) //开始时间 < 结束时间
{
if((time_hour_begin*60+time_min_begin <= ds1302_buf[4]*60+ds1302_buf[5]) && (ds1302_buf[4]*60+ds1302_buf[5] < time_hour_end*60+time_min_end)) //当前时间在设置的时间内
{
flag_time_en = 1; //触发
}
else //否则
{
flag_time_en = 0; //不触发
}
}
else //开始时间 = 结束时间
{
flag_time_en = 0; //不触发
}
if(flag_mode == 0) //自动模式下
{
if(flag_time_en == 1 && DOOR == 0) //柜门关闭,且在定时时间范围内紫外线消毒
{
RELAY_XD = 1;
}
else //否则,关闭消毒
{
RELAY_XD = 0;
}
if(humi_value > humi_max*10) //湿度大于设置最大值,打开除湿
{
RELAY_CS = 1;
}
else //否则,关闭除湿
{
RELAY_CS = 0;
}
if(DOOR == 1) //柜门打开,打开照明,语音播报当前温度和天气状况
{
RELAY_ZM = 1;
if(flag_bb == 0)
{
if(temp_tq_value < 0)
{
if(weather.code < 9)
{
Huart2_Send_Str("推荐加厚羽绒服");
}
else
{
Huart2_Send_Str("推荐棉服或羽绒服");
}
}
else if(temp_tq_value < 10)
{
if(weather.code < 9)
{
Huart2_Send_Str("推荐厚毛衣、棉服");
}
else
{
Huart2_Send_Str("推荐棉服或羽绒服");
}
}
else if(temp_tq_value < 20)
{
if(weather.code < 9)
{
Huart2_Send_Str("推荐薄毛衣、夹克、长裤");
}
else
{
Huart2_Send_Str("推荐防风衣、薄毛衣、长裤");
}
}
else if(temp_tq_value < 30)
{
if(weather.code < 9)
{
Huart2_Send_Str("推荐短袖T恤、薄长裤或短裤");
}
else
{
Huart2_Send_Str("推荐短袖T恤、薄长裤");
}
}
else
{
if(weather.code < 9)
{
Huart2_Send_Str("推荐短袖T恤、短裤");
}
else
{
Huart2_Send_Str("推荐短袖T恤、薄长裤或短裤");
}
}
flag_bb = 1;
}
if(HUMAN == 0) //检测到有人时,自动降低衣架
{
if(flag_bujin_state == 0)
{
flag_bujin_foreward = 1;
}
}
else //否则,取消降低
{
if(flag_bujin_state == 1)
{
flag_bujin_reversal = 1;
}
}
}
else //否则,关闭照明,取消播报
{
RELAY_ZM = 0;
flag_bb = 0;
if(flag_bujin_state == 1)
{
flag_bujin_reversal = 1;
}
}
if(smog_value > smog_max) //烟雾值大于最大值,则进行声光报警
{
if(time_num % 20 == 0)
{
ALERT = !ALERT;
}
}
else //否则,取消声光报警
{
ALERT = 0;
}
}
}
else //设置界面,关闭除湿、消毒、照明及声光报警
{
RELAY_CS = 0;
RELAY_XD = 0;
RELAY_ZM = 0;
ALERT = 0;
if(flag_bujin_state == 1)
{
flag_bujin_reversal = 1;
}
}
if(flag_finish_5s == 1) //5秒上传一次数据
{
flag_begin_5s = 0;
Aliyun_Send_Data();
flag_begin_5s = 1;
}
}

雷达卡


京公网安备 11010802022788号







