1. 项目概述
这个基于STM32微控制器的智能衣物烘干与除菌系统,是我在嵌入式系统课程设计中的实践成果。作为一个经常在潮湿环境中生活的南方人,我深刻体会到传统晾衣方式的不足——衣物要么晾不干,要么被过度烘干导致变形。更糟的是,潮湿衣物容易滋生细菌和霉菌,引发皮肤过敏等问题。
系统采用STM32F103C8T6作为主控芯片,通过DHT11温湿度传感器实时监测环境参数,结合人体红外感应模块实现智能除菌控制。当检测到无人时自动开启紫外线消毒功能,有人靠近则立即关闭,确保使用安全。整套系统还支持通过WiFi模块进行远程监控和参数设置,用户可以在手机上随时查看衣物状态。
2. 硬件设计方案
2.1 核心器件选型
主控芯片选择STM32F103C8T6主要基于三点考虑:首先,72MHz的主频完全能满足实时控制需求;其次,内置的ADC和定时器资源丰富,便于传感器数据采集和PWM控制;最重要的是,这款芯片性价比极高,批量采购单价不到10元。
温湿度传感器选用DHT11而非更精确的DHT22,是因为烘干场景对绝对精度要求不高(±2℃误差可接受),而DHT11的响应速度更快(2秒/次),且价格仅为DHT22的三分之一。实际测试发现,在密闭烘干环境中,DHT11的稳定性表现超出预期。
2.2 关键电路设计
加热模块采用继电器控制1500W的PTC陶瓷加热器。这里有个重要细节:必须在继电器线圈两端并联续流二极管(1N4007),否则MCU复位时可能产生反向电动势损坏IO口。加热器功率选择经过计算:假设烘干空间为0.5m³,要使温度在10分钟内从25℃升至50℃,根据热力学公式Q=cmΔT,需要约125W功率,选择1500W是为了保证快速升温能力。
人体检测使用D203S热释电传感器,其探测角度为120°,探测距离5米。安装时要注意:传感器应朝向烘干箱门方向倾斜15°,这样可以避免误检侧面走动的人员。实测发现,在环境温度超过35℃时,传感器灵敏度会下降,因此我们在算法中加入了温度补偿。
3. 软件实现细节
3.1 主控制流程
系统采用前后台架构,主循环中通过状态机实现功能调度。一个关键设计是采用硬件定时器触发ADC采样(每500ms一次),避免轮询方式造成的CPU资源浪费。温湿度控制算法采用模糊PID,相比传统PID更能适应衣物量变化带来的系统惯性差异。
c复制void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2) { // 500ms定时器
static uint8_t cnt = 0;
if(++cnt >= 2) { // 1秒周期
cnt = 0;
DHT11_ReadData(&temperature, &humidity);
WiFi_SendData(temperature, humidity);
}
FuzzyPID_Calc(); // 模糊PID计算
}
}
3.2 安全保护机制
系统实现了三级安全防护:第一级是硬件看门狗(IWDG),超时未喂狗则自动复位;第二级是软件异常检测,连续3次ADC采样异常会触发系统保护;第三级是物理温度保险丝(85℃熔断),作为最后防线。实际调试中发现,加热继电器在频繁开关时触点容易粘连,因此增加了开关间隔保护(最小间隔30秒)。
4. 无线通信实现
4.1 WiFi模块配置
选用ESP8266-01S模块,通过AT指令与STM32通信。这里有个重要技巧:在发送AT指令前必须添加200ms延时,否则模块可能响应失败。我们采用环形缓冲区处理接收数据,避免数据丢失。
c复制void WiFi_SendCMD(const char *cmd)
{
HAL_Delay(200); // 关键延时!
HAL_UART_Transmit(&huart1, (uint8_t*)cmd, strlen(cmd), 1000);
while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET);
}
4.2 手机端交互设计
开发了简易Android APP,采用MQTT协议与设备通信。数据更新频率设置为1秒/次,这个间隔经过实测平衡了实时性和功耗。APP界面显示当前温湿度、设备状态,并提供手动控制按钮。一个实用功能是烘干完成提醒,当湿度连续5分钟低于设定阈值时推送通知。
5. 系统优化与测试
5.1 功耗优化
通过以下措施将待机功耗从3.2W降至0.8W:
- 关闭未使用的GPIO时钟
- 将OLED刷新率从60Hz降至10Hz
- WiFi模块在不操作时进入睡眠模式
- 采用PWM方式控制加热器(占空比调节)
5.2 可靠性测试
进行72小时连续运行测试,记录到的主要问题及解决方案:
- 问题:高温环境下DHT11偶尔读数异常
解决:增加软件滤波(取5次采样中值) - 问题:WiFi模块在信号弱时频繁重连
解决:设置重连间隔从1秒改为5秒 - 问题:人体传感器在强光下有误触发
解决:增加红外滤光片
6. 实用技巧与经验
-
烘干不同材质衣物的参数建议:
- 棉质:60℃ 湿度阈值30%
- 化纤:50℃ 湿度阈值25%
- 羊毛:40℃ 湿度阈值35%
-
安装位置选择:
- 避免阳光直射(影响温湿度检测)
- 距离墙面至少30cm(保证散热)
- 高度1.2-1.5米(便于操作)
-
维护建议:
- 每月清洁一次传感器探头
- 每季度检查继电器触点状态
- 紫外线灯管使用寿命约8000小时
这个项目从构思到实现历时两个月,最大的收获是认识到嵌入式开发中"细节决定成败"。比如最初没注意继电器续流问题,导致烧毁了三个IO口;又如WiFi模块的AT指令响应时间,调试了整整两天才找到最佳延时参数。建议后来者在类似项目中,一定要重视硬件保护电路的设计,同时做好充分的异常情况测试。
