1. 项目概述:当传统鞋柜遇上STM32
每次回家打开鞋柜,那股混合着汗水和皮革的异味总让人皱眉。传统的鞋柜只是简单的储物空间,而我们要做的,是让这个每天高频使用的家具变得"聪明"起来。基于STM32F103C8T6这款性价比极高的ARM Cortex-M3内核单片机,我们设计了一套能自动杀菌除臭、智能除湿的鞋柜控制系统。
这个项目的核心在于通过传感器网络实时监测柜内环境,当检测到湿度超标或有害气体浓度升高时,自动启动对应的处理模块。相比市面上动辄上千元的智能鞋柜,我们的方案硬件成本可以控制在200元以内,特别适合DIY爱好者和电子专业学生练手。整个系统包含五大功能模块:环境监测、杀菌除臭、湿度调节、人机交互和电源管理。
2. 硬件设计详解
2.1 核心控制器选型
为什么选择STM32F103C8T6(俗称"蓝 pill")?这款芯片具有72MHz主频、64KB Flash和20KB RAM,完全能满足我们的需求:
- 充足的GPIO接口(37个)连接各类传感器
- 内置12位ADC便于采集模拟信号
- 多个定时器支持PWM输出控制风扇转速
- 低功耗模式延长电池供电时间
c复制// 典型时钟配置代码
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
2.2 传感器网络搭建
鞋柜内部部署了三个关键传感器:
- DHT22温湿度传感器:精度±2%RH,检测柜内湿度变化
- MQ-135空气质量传感器:检测NH3、苯类等异味气体
- HC-SR501红外人体感应:检测用户靠近,触发照明
传感器布局有讲究:温湿度传感器应避开直接通风位置,距离柜底15cm为佳;气体传感器需要一定气流循环,建议安装在侧壁通风孔附近。所有传感器通过1KΩ电阻做信号上拉,防止信号干扰。
2.3 执行机构设计
杀菌除臭采用UV-C紫外线灯(275nm波长)和活性炭风扇组合方案:
- 5W UV灯管每天定时工作3次,每次10分钟
- 4028规格涡轮风扇驱动活性炭过滤
- 半导体制冷片(TEC1-12706)用于除湿
重要提示:UV-C对人体有害,必须设计安全联锁——当红外传感器检测到有人靠近时立即关闭紫外线灯!
3. 软件系统实现
3.1 主程序流程设计
系统采用状态机模式运行,主循环包含以下几个状态:
mermaid复制stateDiagram
[*] --> 初始化
初始化 --> 空闲模式
空闲模式 --> 环境检测: 定时触发
环境检测 --> 除湿模式: 湿度>65%
环境检测 --> 杀菌模式: VOC超标
除湿模式 --> 空闲模式: 湿度<55%
杀菌模式 --> 空闲模式: 完成计时
实际代码中通过枚举变量实现状态切换:
c复制typedef enum {
SYS_IDLE,
SYS_CHECKING,
SYS_DEHUMIDIFYING,
SYS_STERILIZING
} SystemState;
SystemState currentState = SYS_IDLE;
3.2 关键算法实现
自适应除湿算法根据湿度变化率动态调整工作强度:
c复制float humidityRate = (currentHumidity - lastHumidity) / CHECK_INTERVAL;
if(humidityRate > 0.5) {
// 快速除湿模式
Peltier_Power = MAX_POWER;
Fan_Speed = 100;
} else {
// 节能模式
Peltier_Power = MAX_POWER * 0.6;
Fan_Speed = 70;
}
异味检测需要软件滤波消除误报:
c复制#define SAMPLE_TIMES 5
int gasReadings[SAMPLE_TIMES];
int getFilteredGasValue() {
for(int i=0; i<SAMPLE_TIMES-1; i++){
gasReadings[i] = gasReadings[i+1];
}
gasReadings[SAMPLE_TIMES-1] = analogRead(GAS_SENSOR_PIN);
int sum = 0;
for(int i=0; i<SAMPLE_TIMES; i++){
sum += gasReadings[i];
}
return sum / SAMPLE_TIMES;
}
3.3 低功耗优化
为延长电池供电时间,我们做了以下优化:
- 传感器采样间隔从1秒调整为10秒(突发情况立即响应)
- 空闲时关闭OLED显示屏背光
- 使用STOP模式降低待机功耗
实测功耗对比:
| 工作模式 | 电流消耗 | 持续时间占比 |
|---|---|---|
| 正常运行 | 120mA | 15% |
| 空闲模式 | 25mA | 60% |
| STOP模式 | 2mA | 25% |
4. 结构设计与组装
4.1 柜体改造要点
普通木制鞋柜需要做以下改造:
- 顶部开孔安装排风扇(直径8cm)
- 侧壁打直径3mm的通风孔(间距2cm矩阵排列)
- 内部贴铝箔胶带增强UV反射
- 控制面板开孔尺寸:78mm×35mm
建议使用亚克力板制作传感器支架,用3M双面胶固定。紫外线灯管安装在柜门内侧,确保关门时能照射到所有隔层。
4.2 电路安全防护
强电部分(220V转12V电源)需要特别注意:
- 使用全封闭式电源模块
- AC端加装1A保险丝
- 所有高压线套热缩管
- 接地线连接柜体金属部分
弱电部分建议用不同颜色导线区分:
- 红色:5V电源
- 黑色:GND
- 黄色:信号线
- 绿色:PWM控制线
5. 常见问题排查
5.1 传感器读数异常
现象:DHT22偶尔返回-999错误值
解决方案:
- 检查3.3V供电是否稳定(建议并联100μF电容)
- 数据线长度不超过20cm
- 添加10K上拉电阻
- 两次读取间隔≥2s
5.2 半导体制冷片结露
现象:制冷片冷端出现水珠
处理方案:
- 调整PWM占空比不超过70%
- 增加冷端散热片面积
- 在冷热端之间加装隔热棉
- 每天最多连续工作2小时
5.3 UV灯不启动
排查步骤:
- 用万用表检测灯管两端是否有12V
- 检查光耦继电器控制信号
- 确认安全开关未被触发
- 查看程序中的定时设置
6. 项目优化方向
在实际使用三个月后,我发现几个可以改进的地方:
-
增加WiFi模块:通过ESP-01S模块连接家庭网络,实现手机APP远程控制。当检测到异常高湿度时推送报警。
-
鞋型识别:在每层隔板加装压力传感器阵列,统计不同位置鞋子重量分布,识别放入的是运动鞋还是皮鞋,自动调整护理方案。
-
太阳能供电:在柜顶集成5W太阳能板,配合18650电池组实现离网运行。
-
耗材提醒:记录活性炭滤网使用时长,当吸附效率下降时,通过OLED屏显示更换提示。
这个项目最让我惊喜的是半导体制冷片的除湿效果——在南方梅雨季,它能将柜内湿度从78%降到55%以下,有效防止了皮鞋发霉。不过要注意定期清理冷凝水收集盒,我建议在盒内加装浮球开关,水满自动报警。
