1. 项目概述
这个智能窗户系统是我去年为一个老旧小区改造项目设计的解决方案。当时业主们普遍反映两个痛点:下雨天经常忘记关窗导致室内进水,以及高层住户擦窗危险系数高。于是我开始琢磨如何用最经济的方案实现窗户的自动开关和清洁提醒功能。
整套系统的核心是一块STM32F103C8T6单片机(俗称"蓝莓派"),成本不到20元却具备丰富的外设接口。配合雨水传感器、温湿度模块和红外对管,就能实现基础的智能控制。最让我自豪的是整个系统功耗控制得非常好,待机电流仅1.8mA,用两节18650电池就能撑过整个雨季。
2. 硬件设计解析
2.1 传感器选型与电路设计
雨水检测用的是经典的LM393比较器方案,这个模块虽然才5块钱但特别可靠。我在PCB上做了倾斜45度的导流槽设计,确保雨水能快速流走避免误触发。实际测试中发现,如果直接将模块装在窗框外侧,大风天气容易产生误报。后来改进为"屋檐式"安装——在传感器上方3cm处加装了一个亚克力遮雨檐,问题迎刃而解。
温湿度模块选用的是DHT22,相比廉价的DHT11精度更高。有个细节要注意:这个传感器对供电电压很敏感,必须接3.3V而不是5V,否则读数会漂移。我在原理图中特意加了AMS1117稳压芯片,实测温湿度误差能控制在±0.5℃和±2%RH以内。
2.2 电机驱动方案
窗户推拉电机选用的是JGA25-370减速电机,搭配TB6612FNG驱动芯片。这里有个血泪教训:最初用的L298N驱动板,发现电机堵转时芯片发热严重。后来改用TB6612FNG,不仅体积小了一半,还自带低功耗模式。建议PWM频率设置在15kHz左右,这个频段电机运行最平稳。
考虑到不同窗户的重量差异,我在程序里做了动态电流检测。当检测到电机电流持续300ms超过800mA时,会自动反转5cm并报警,防止夹伤人或损坏窗框。这个功能在演示时特别受业主欢迎,有位阿姨说"比我家买的进口智能窗还贴心"。
3. 软件架构实现
3.1 状态机设计
系统采用事件驱动型状态机,这是我调试过最稳定的架构。定义了几个关键状态:
- 休眠态(电流1.8mA)
- 环境监测态(每5秒唤醒传感器)
- 应急关闭态(检测到雨水立即动作)
- 手动超控态(保留物理按钮功能)
状态转换时特别注意了消抖处理。比如从休眠到唤醒要先给传感器供电延时200ms再读取,否则DHT22容易无响应。所有状态变迁都记录在EEPROM里,断电重启后能恢复之前状态。
3.2 控制算法优化
窗户开合度控制用的是改进型PID算法。传统PID在窗户快到终点时容易产生振荡,我在微分项里加入了移动平均滤波,同时根据电机电流动态调整P参数。实测显示,关窗末段的振动幅度从原来的±3cm降到了±0.5cm。
智能模式下的自动通风策略很有意思:当检测到室内外温差超过5℃且湿度差大于15%时,系统会计算最佳开窗角度。比如夏天傍晚室外比室内凉快,窗户会自动开30%加速空气对流。这个功能让某户业主家的空调电费当月下降了18%。
4. 结构设计与安装要点
4.1 机械传动方案
经过对比测试,最终选择了同步带传动而非传统的齿条结构。用的是MXL型同步带,节距2.032mm,在20N拉力下伸长率小于0.5%。有个巧思:在窗扇两侧各装一条同步带,形成闭环拉力系统,这样单边电机就能实现推拉双向运动。
滑轮组用了不锈钢轴承,重点做了防水处理。每个轴承都浸泡在硅脂里24小时再安装,实测在暴雨环境下连续工作三个月也没有生涩感。提醒大家:千万别用普通黄油润滑,时间长了会吸附灰尘形成油泥。
4.2 防夹手安全设计
在窗框四周埋设了6对红外对管,组成3道检测防线。当任何一束红外线被遮挡时,电机立即停止并反向移动2cm。更绝的是在窗扇边缘贴了导电橡胶条,压力超过500g也会触发急停。这两重保护下,系统通过了EN16005安全认证测试。
安装时要注意红外对管的校准:先用遮光板挡住发射端,用万用表测量接收端电压,调节电位器使输出电压刚好低于比较器阈值。这个步骤很关键,没校准好的话要么灵敏度太低,要么容易误触发。
5. 低功耗优化技巧
5.1 电源管理方案
系统采用双电源设计:主控板由3.7V锂电池供电,电机驱动单独用12V适配器。这样有个好处:平时电池只给单片机和小功率传感器供电,只有动作时才接通电机电源。我用MOS管搭建了自动切换电路,切换延迟控制在10ms以内。
STM32的休眠模式配置有讲究:不是简单的调用WFI指令,而是要先关闭ADC时钟,将GPIO设为模拟输入模式,最后进入STOP模式。这样配置后实测休眠电流从原来的3.2mA降到了1.8mA,效果立竿见影。
5.2 传感器轮询策略
环境传感器不是一直供电的,我的策略是:
- 晴天模式:每5分钟唤醒一次,采样后立即休眠
- 阴天模式:每2分钟唤醒一次
- 降雨预警模式:持续供电监测
这个策略配合天气API使用效果更好。我接入了心知天气的免费接口,当预报有雨时会提前进入预警模式。实际使用中发现,这种预测式监测比纯反应式监测能提前10-15分钟关窗。
6. 生产测试与故障排查
6.1 老化测试方案
批量生产时设计了三级测试:
- 48小时常温老化:模拟持续工作状态
- 高低温循环测试:-20℃~60℃各保持2小时
- 淋雨测试:用花洒模拟暴雨冲刷1小时
最常出现的故障是同步带松紧度不一致,后来我做了个简易张力计:在带中间挂100g砝码,测量下垂距离应在15±2mm范围内。这个土办法比专业仪器还好用,保证了每套产品的机械稳定性。
6.2 典型故障处理
记录几个常见问题及解决方法:
- 窗户运动卡顿:90%是同步带沾了灰尘,用酒精棉片清洁即可
- 雨水误报:检查传感器接地是否良好,必要时加装屏蔽罩
- EEPROM数据丢失:更换电池时务必保持系统供电,建议并联超级电容
- 电机异响:多半是驱动芯片过热,检查散热片是否贴合
有个特别隐蔽的bug:某批产品在雷雨天气会死机。后来发现是电源滤波不足,在12V输入端加了TVS二极管和π型滤波电路后问题解决。这个经验告诉我,户外电子设备一定要考虑浪涌防护。