1. 项目背景与核心价值
去年帮电子系的学弟改毕业设计时,在硬盘角落里翻出个尘封已久的STM32智能窗帘晾衣架方案。这个项目最吸引人的地方在于:虽然原作者没做出实物,但电路图、代码、物料清单甚至3D打印文件都完整保留着,简直就是为手头没零件但又想攒项目经验的DIY爱好者量身定制的练手方案。
这种"半成品宝藏"在创客圈其实很常见——很多人做着做着就因为毕设截止、考研复习等原因搁置了,但留下的资料往往比网上那些只给原理图的教程实用得多。就拿这个方案来说,光BOM表里标注的"某宝店铺链接"和"替代型号说明"就值回票价,更别说连步进电机减速比这种细节参数都写得明明白白。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构解析
2.1 硬件组成框架
整个系统采用经典的STM32F103C8T6最小系统板作为主控(就是那个被戏称为"蓝色药丸"的开发板),外围设备布局相当精简:
- 光敏电阻模块(检测光照强度)
- DHT11温湿度传感器
- 28BYJ-48步进电机(带ULN2003驱动板)
- 0.96寸OLED显示屏
- 限位开关(机械式,非霍尔传感器)
特别值得注意的是电机选型——作者在代码注释里坦白说最初想用42步进电机,但实测发现窗帘重量不大,这种5V供电的减速电机完全够用,还能省下驱动电路的成本。这种实战经验在正式文档里根本找不到。
2.2 软件逻辑设计
程序结构采用了状态机模式,主要工作流程如下:
- 每5分钟采集一次环境数据
- 根据预设阈值判断是否需要开合窗帘(比如光照>500lux关闭)
- 检测到降雨信号时自动收回晾衣架
- 保留手动按键控制优先级
源码里有个特别实用的设计:在motor.c文件里用宏定义封装了步进电机脉冲序列,通过修改STEP_DELAY参数就能适配不同型号电机,比那些写死延时的代码友好太多。我后来用这套驱动代码成功驱动了从某宝买的国产减速电机,完全不需要改硬件。
3. 关键实现细节
3.1 窗帘轨道改造要点
原方案建议使用IKEA窗帘轨道进行改装,这里分享几个实测有效的技巧:
- 在轨道两端钻孔安装限位开关时,先用1mm钻头定位再扩孔,避免塑料开裂
- 步进电机通过3D打印的联轴器连接轨道齿轮(作者提供了STL文件)
- 窗帘挂钩建议间隔15cm,太密会影响滑动顺畅度
