1. 项目概述:当衣柜遇上STM32
潮湿发霉的衣物和细菌滋生是每个家庭衣柜都面临的痛点。这个基于STM32的智能衣柜控制系统,通过集成温湿度监测、紫外线消毒和加热除湿三大核心功能,让传统衣柜变身智能家居终端。我在实际测试中发现,系统能在湿度超过65%时自动启动除湿模块,并在夜间无人时段进行紫外线杀菌,完美解决了南方地区梅雨季衣物护理的难题。
整套方案采用Proteus进行硬件仿真验证,配合Keil MDK开发的嵌入式程序,实现了从传感器数据采集到执行机构控制的全链路自动化。特别值得一提的是,系统加入了人体红外检测模块,确保紫外线消毒时不会误伤用户,这种安全设计在实际应用中至关重要。
2. 系统架构设计解析
2.1 硬件组成框图
核心部件选型经过多次迭代测试:
- 主控:STM32F103C8T6(72MHz主频,64KB Flash,性价比之王)
- 温湿度传感器:DHT22(±2%RH精度,0-100%量程)
- 紫外线灯管:275nm波长(杀菌效率>99%)
- PTC加热片:50W功率(配合风扇形成热风循环)
- 人体红外:HC-SR501(探测距离可调至3米)
关键经验:DHT22需加装1KΩ上拉电阻,实测响应时间从5s缩短到2s
2.2 控制逻辑流程图
系统采用状态机设计模式,主要工作流程:
- 每10秒采集温湿度数据(DHT22单次读取耗时约2s)
- 湿度>阈值时启动PTC加热,同时开启DC风扇
- 每日23:00-5:00检测到无人时,启动30分钟UV杀菌
- 异常情况触发蜂鸣器报警(如持续高湿或UV灯故障)
3. 核心电路实现细节
3.1 电源管理设计
采用两级供电方案:
- 220V转12V/2A开关电源(给PTC和UV灯供电)
- LM2596降压至5V(传感器和MCU供电)
- AMS1117-3.3V(STM32核心电压)
实测功耗数据:
| 工作模式 | 电流消耗 | 运行时长 |
|---|---|---|
| 待机 | 45mA | 持续 |
| 除湿 | 1.2A | 按需启动 |
| 消毒 | 800mA | 30分钟 |
3.2 传感器接口电路
DHT22数据线接PA1,配置为上拉输入模式:
c复制GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
紫外线灯驱动电路采用光耦隔离:
- PC13控制TLP521光耦
- 输出端接5V继电器控制UV灯
4. 软件实现关键点
4.1 温湿度PID控制算法
采用增量式PID调节加热功率:
c复制float PID_Calc(float setpoint, float actual){
static float err_last=0, err_prev=0;
float err = setpoint - actual;
float increment = Kp*(err-err_last) + Ki*err + Kd*(err-2*err_last+err_prev);
err_prev = err_last;
err_last = err;
return increment;
}
参数整定经验值:
- Kp=2.5(比例系数)
- Ki=0.1(积分系数)
- Kd=0.8(微分系数)
4.2 紫外线安全联锁
双重保护机制:
- 人体红外实时监测(中断触发)
- 柜门磁力开关检测(GPIO轮询)
触发任一保护时立即切断UV电源:
c复制void EXTI0_IRQHandler(void){
if(EXTI_GetITStatus(EXTI_Line0) != RESET){
UV_OFF();
EXTI_ClearITPendingBit(EXTI_Line0);
}
}
5. Proteus仿真要点
5.1 虚拟仪器配置技巧
- 添加DHT22模型时需要修改属性:
- 将采样间隔设为2000ms
- 湿度噪声参数设为5%
- 紫外线灯用LED替代时:
- 波长属性改为275nm
- 正向压降设为3.5V
5.2 典型仿真问题排查
常见报错及解决方法:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| DHT22无数据返回 | 时序不符合 | 调整GPIO速度至10MHz |
| UV灯无法关闭 | 光耦模型错误 | 更换4N25模型 |
| 加热片温度异常 | 未添加散热模型 | 添加Thermal Resistance属性 |
6. 实际部署优化建议
6.1 柜体结构改造
- 风道设计:顶部进风,底部回风(形成对流)
- UV灯安装:45度斜角布置(照射无死角)
- 传感器位置:远离加热源(距PTC>15cm)
6.2 系统参数调优
经过三个月实测得出的最佳参数:
- 除湿阈值:60%RH(南方建议55%)
- 加热温度:≤45℃(避免损伤衣物)
- 消毒周期:每周2-3次(根据使用频率调整)
7. 功能扩展方向
- 蓝牙/WiFi模块接入(手机APP控制)
- 增加臭氧发生器(强化杀菌效果)
- 加入衣物重量检测(智能预测护理需求)
- 语音提示功能(状态播报)
我在实际部署中发现,给STM32增加ESP8266模块后,通过MQTT协议上报数据到HomeAssistant,可以实现整个衣帽间的智能联动。当系统检测到连续雨天时,会自动延长除湿时间,这个功能在回南天特别实用。