智能窗帘:基于Arduino与太阳能的自动光控系统
元器件清单
| SparkFun Arduino Pro Mini 328 - 5V/16MHz | ×1 |
| Arduino UNO(用于给 Pro Mini 烧录) | ×1 |
| LM35DZ 温度传感器 | ×1 |
| PN2907A PNP 三极管 | ×1 |
| 光敏电阻 (LDR) | ×1 |
| 10kΩ 电阻 | ×1 |
| 1kΩ 电阻 | ×1 |
| 5V 1.5W 太阳能板 | ×1 |
| 5V DC-DC 升压模块 | ×1 |
| 锂电池充电模块 (TP4056等) | ×1 |
| JST 连接器套装 | ×1 |
| 3.6V 可充电锂电池 (18650等) | ×1 |
| 18650 电池座 | ×1 |
| 舵机 (如 Tower Pro MG996R 或 Hitec HS-325HB) | ×1 |
| 舵机联轴器 | ×1 |
| 100nF 电容 | ×1 |
| 定制 PCB (OSH Park 等) | ×1 |
| 排线、杜邦线若干 | ×1 |
必备工具
- 电烙铁、焊锡丝
- 电钻、Dremel 旋转工具
- 剥线钳、剪线钳
- 万用表
- 热缩管
- 面包板/实验板
软件工具
Arduino IDE
项目背景与改进
本项目是对早期“太阳能自动水平百叶窗”的改进。原版运行约4个月后暴露出多个缺陷:
- 房屋朝向偏南偏东,冬季光照充足,夏季正午后太阳被屋顶遮挡,导致充电不足 → 解决:优化太阳能板安装位置
- 舵机待机电流高达 13mA,严重消耗电池 → 解决:用 PNP 三极管做高侧开关切断舵机供电
- 6V 太阳能板电压超出充电模块 4.5-5.5V 输入范围,导致充电关闭 → 解决:改用 5V 规格太阳能板
- 无日志记录,故障难排查 → 解决:加入 EEPROM 记录关键数据
- 电池与太阳能板无快速断接接口 → 解决:引入 JST 连接器
- 模拟参考电压未使用 Arduino 稳压 5V,导致 ADC 读数漂移 → 解决:统一使用 Pro Mini VCC 作为基准
设计目标
- 早晨开窗(转至 85°)引入自然光
- 傍晚关窗(转至 0°)保护隐私
- 温度超过 30°C 时反向关窗(165°)隔热
- 无外露线盒,通过“老婆验收测试”
- 电池续航足够长,免维护
- 成本控制在 $50 以内(不含工具与时间)
制作步骤
步骤 1:原型验证
在面包板上搭建完整电路:锂电池经充电模块接太阳能板,电池并联升压模块输出 5V 给 Arduino RAW 引脚;Arduino VCC 作为基准电压分别给 LDR 分压电路、LM35DZ、舵机信号线;舵机电源经 PN2907A 高侧开关控制(基极经 1kΩ 接 D11,发射极接升压 5V,集电极接舵机 VCC)。验证关键指标:无舵机时静态电流 ~1.5mA,接入舵机未加开关时飙升至 ~15mA,加入 PNP 开关后恢复 ~1.5mA。
步骤 2:编程与烧录
使用 Arduino UNO 作为 ISP 给 Pro Mini 烧录:拔下 UNO 芯片,连接 5V、GND、TX→TX0、RX→RXI、RESET→RST。IDE 选择 “Arduino Pro or Pro Mini” 上传。代码包含:光照/温度采集、舵机控制、低功耗睡眠、EEPROM 循环日志(每条 22 字节,共 42 条)。GitHub 提供 EEPROMLog 库 与 主程序。
步骤 3:PCB 组装
将元件焊接在定制 PCB 上,使用实心导线配合 JST 连接器延长太阳能板与电池引线,便于安装与维护。PCB 尺寸裁剪适配百叶窗顶轨内部。去掉升压模块指示灯引脚节省 ~1mA。
步骤 4:安装调试
- 拆除百叶窗原拉绳齿轮(阻力过大)
- 在面向室外一侧钻孔伸出 LDR
- 用 Dremel 开槽嵌入舵机,边缘打磨贴胶带防刮
- 将 PCB 推入顶轨,确保 LDR 对准孔位
- 舵机轴配合联轴器锁紧,上电前手动拨至 90° 对齐
- 将太阳能板固定在窗框上部中间位置,沿框走线用胶带固定
- 接上 JST 连接器,装回装饰条
运行效果
数月运行表现完美:双层楼道灯同时亮时会延迟关窗(适合演示);盛夏高温时窗框温度先于室内升高,百叶窗提前关闭隔热,室内保持舒适。
代码与原理图
代码托管于 GitHub:SmartBlinds 与 EEPROMLog。
原理图:Fritzing 文件。
制造工艺
- 智能调酒师:树莓派驱动的自动鸡尾酒机
- 智能窗帘:基于Arduino与太阳能的自动光控系统
- 自制简易红外避障传感器:IR LED + 光电二极管 + Arduino
- 智能自系鞋带鞋:内置压电发电与计步功能
- 物联网双轴太阳能跟踪器:基于 Arduino 与 Cayenne 的智能能源管理
- DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
- 校园智能体温监测系统 - 精准、实时、安全的学生健康守护方案
- 智能手语手套:柔性传感器 + 加速度计 + 蓝牙将手势转文字/语音
- 高级智能电池充电器:多路复用与数字显示
- 为Arduino构建隔离模拟输入电路
- 基于 Arduino UNO 构建可靠的智能能源监测仪——分步指南
- 用 Arduino Nano 制作可靠的 LCD 秒表 —— 无需电位器