1. 项目背景与核心价值
去年帮电子系的学弟改毕业设计时,在硬盘角落里翻出个尘封已久的STM32智能窗帘晾衣架方案。这个2018年的课程设计最妙的地方在于:虽然原作者根本没做出实物,但原理图、PCB、源码、BOM清单甚至答辩PPT都完整保留着,简直就是为"零成本攒项目党"量身定制的宝藏。
这种"纸上谈兵"型项目在高校里其实很常见——学生为了应付课程设计,把方案设计得天花乱坠,最后因为预算或时间问题只交了文档。但恰恰是这种半成品,对想练手又缺零件的开发者特别友好:你既不用真的去买电机和布料,又能通过仿真验证所有技术细节,简历上还能写"基于STM32的智能家居系统开发"这样唬人的经历。
2. 系统架构解析
2.1 硬件组成框图
整个系统围绕STM32F103C8T6最小系统板搭建,成本控制在200元内:
- 环境感知层:DHT11温湿度传感器 + BH1750光照传感器
- 执行机构层:5V减速电机(模拟窗帘) + 舵机(模拟晾衣架升降)
- 人机交互层:0.96寸OLED + 红外遥控接收头
- 通信模块:ESP-01S WiFi模块(可选)
2.2 传感器选型玄机
原作者选择DHT11而非更精确的SHT30,表面看是为了省钱,实则藏着小心机:
- 答辩时老师更关注功能完整性而非精度
- DHT11的1Hz采样率足够应付窗帘控制需求
- 单总线协议比I2C的SHT30更容易调试
实测建议:若想提升逼格,可以把DHT11焊在转接板上,伪装成"SHT30改良版"
2.3 电机驱动方案对比
方案中采用L298N驱动直流电机,虽然效率低但优势明显:
- 支持PWM调速(窗帘开合速度可调)
- 自带光耦隔离(保护MCU)
- 市场均价8元/片
更优替代方案:
- 若用A4950驱动芯片,体积缩小70%
- 步进电机+TB6612方案定位更精准(但成本翻倍)
3. 核心功能实现细节
3.1 光照自适应算法
窗帘开合度与光照强度的非线性映射关系:
c复制// 光照强度lux转换窗帘开合百分比
uint8_t light_to_percent(uint16_t lux) {
if(lux < 50) return 100; // 全开
else if(lux > 10000) return 0; // 全闭
else {
// S曲线过渡(参数需实测调整)
return 100 - (uint8_t)(100.0/(1+exp(-0.001*(lux-2000))));
}
}
3.2 晾衣架防碰撞策略
通过霍尔传感器检测晾衣架升降极限位置:
- 上止点:磁铁触发AH49E霍尔传感器→立即切断电机电源
- 下止点:微动开关触发→发送警报到OLED
- 软件双重保护:电机运行时间超过15秒强制停止
3.3 红外遥控解码技巧
使用NEC协议时要注意:
- 38kHz载波用定时器PWM生成
- 下降沿触发中断采集数据
- 重复码处理要单独判断(长按按键时)
常见坑点:
- 不同品牌遥控器的引导码时长差异
- 逻辑分析仪抓包时注意信号毛刺
4. 零成本仿真方案
4.1 Proteus仿真要点
- 电机用L298模块替代,注意设置负载参数
- DHT11用"Humidity & Temperature Sensor"元件模拟
- 添加虚拟串口观察调试信息
4.2 没有实物时的"造假"技巧
- 用LED亮度变化模拟窗帘开合程度
- 蜂鸣器不同频率代表不同工作状态
- 在OLED上绘制动态进度条替代实际运动
5. 项目升级方向
5.1 低成本物联网改造
加装ESP-01S模块后:
- 通过MQTT协议对接HomeAssistant
- 微信小程序控制界面开发
- 增加雨天预测自动收衣功能(调用和风天气API)
5.2 商业化改进建议
- 改用静音导轨电机(日本信浓PG28系列)
- 增加太阳能供电模块
- 加入毫米波雷达检测人体活动
6. 毕设答辩生存指南
6.1 老师最爱问的三个问题
- "光照传感器数据波动怎么处理?"
- 答:滑动平均滤波+阈值迟滞
- "电机堵转保护怎么实现?"
- 答:电流检测+软件看门狗
- "这个方案成本多少?"
- 答:强调"教学演示版200元,量产可降至120元"
6.2 必杀技演示套路
- 准备两套代码:一套真实功能版,一套"作弊版"(预设完美数据)
- 现场演示用手机热点连接(假装是本地控制)
- 在代码里埋几个明显注释:"// 此处应优化算法"
这个项目最值得借鉴的,其实是那种"用20%成本实现80%功能"的取巧思维。当年原作者靠着这套没实物的方案拿了优秀毕设,关键就在于把所有技术细节都文档化了——哪怕电机根本转不起来,但只要你能在答辩时说清楚L298N的H桥工作原理,老师反而会觉得你理论基础扎实。
