Arduino 生日提醒器:单颗纽扣电池运行 50 年的极低功耗设计
核心创新
一款**仅靠一颗 CR2450 锂纽扣电池(540 mAh)即可运行 50 年以上**的生日闹钟。ATmega168P 运行在 1 MHz / 1.8–3.3V,配合 Intersil ISL1208 超低功耗 RTC(VBAT 模式 400 nA),系统平均电流 **1.22 µAh(含电池自放电)**,理论寿命 50 年零 131 天。这是首个公开的“50 年生日提醒器”项目,所有设计文件开源。
硬件清单
- Arduino Nano 克隆版 (ATmega168P-AU) ×1 — 必须为 **P 版**(支持 picoPower)
- Intersil ISL1208 I²C RTC ×1 — 带月/日闹钟寄存器,400 nA VBAT 电流
- Renata CR2450N 锂纽扣电池 ×1 — 540 mAh,自放电 <1%/年
- 32.768 kHz 晶振 ×1 — RTC 外部时钟源
- CP2102 USB 转串口模块 ×1 — 仅供配置时通信,平时断开
- USBasp 编程器 ×1 — 烧录 fuse 与固件(无 Bootloader)
- SPST 拨码开关 ×1 — 时间设定使能引脚 (D3)
- SMD LED + 透光罩 ×1 — 生日闪烁指示
- 4.75kΩ、10kΩ 电阻、万用板、插针、4″×4″ 接线盒 若干
关键改造步骤
1. Nano 精简改造
移除 CH340G、肖特基二极管、TX/RX 1kΩ 电阻、PWR/RX/TX LED、AMS1117 稳压器,**短接稳压器输入输出焊盘** 使 3V 电池直供 MCU。保留板载 16 MHz 晶振以便初次烧录 fuse,后续改用内部 8 MHz/8 = 1 MHz。
2. Fuse 位配置 (ProgISP + USBasp)
- Low: 0x62 — 内部 8 MHz,启用 CKDIV8 → 1 MHz
- High: 0xDF — 禁用 BOD,禁用 JTAG,保留 SPIEN
- Ext: 0xF9 — 禁用 WDT,BODLEVEL=1.8V
- 签名 0x1E940B (ATmega168P-AU)
烧录后**必须用 ISP 烧录固件**,Bootloader 已失效。
3. Arduino IDE 新增板卡定义
在 boards.txt 追加 pro.menu.cpu.1MHzatmega168 变体,build.f_cpu=1000000L,重启 IDE 后选择 “Arduino Pro or Pro Mini (3.3V, 1 MHz) w/ ATmega168” 编译,Ctrl+Alt+S 导出无 Bootloader 的 .hex,再用 ProgISP 烧录。
4. ISL1208 供电优化
关键技巧:**断开 RTC VDD 引脚与 VBAT 连接**(加跳线帽控制)。配置时接上 VDD 使 I²C 工作;运行时拔开跳线,RTC 纯 VBAT 供电,**电流从 1.2 µA 降至 400 nA**。LPMOD 位置 0(禁用低功耗模式位,因 VDD=0 时该位无效)。
工作流程
- 拨码开关 ON (D3 接地) → 上电 → 串口提示
Serial Established. Ready to update time. - 发送
TYYMMDDhhmmssp#设定当前时间(12 小时制,p=0 AM/1 PM) - 发送
AMMDDhhmmssp#设定生日闹钟(无年份) - 发送
t/a校验,c取消进入睡眠 - 拨码开关 OFF → 6 秒后进入
SLEEP_MODE_PWR_DOWN - 生日到达 → RTC INT0 (D2) 250 ms 低电平唤醒 MCU → 串口打印祝福语、LED 闪烁 19 秒 → 自动回睡眠
- 随时拨码开关 ON 可唤醒查看/修改时间
功耗实测与寿命推算
| 模式 | 电流 | 时长/年 |
|---|---|---|
| 睡眠 (MCU 0.2 µA + RTC 0.4 µA) | 0.6 µA | 31,557,515 秒 |
| 活跃 (单 LED 3 mA) | 3 mA | 85 秒 (设定 60s + 生日 19s + 入睡 6s) |
平均电流 = ((3 mA × 85) + (0.6 µA × 31,557,515)) / 31,557,600 ≈ 608 nA
**不含自放电**:540 mAh / 0.608 µA ≈ **101 年**
**含 1%/年自放电 (616 nA)**:平均 1.224 µA → **50 年 131 天**
不同电池寿命表:CR2032 (225 mAh) >29 年、CR2450N (540 mAh) >50 年、CR2477N (950 mAh) >64 年。
长期可靠性对策
- PCB 涂覆三防漆,外壳放入干燥剂,密封防潮
- 选用工业级宽温元件(-40~+85℃)
- 避免机械应力、跌落、极端环境
- 电池物理/化学性能随时间退化为最大不确定因素
代码架构 (13 个函数)
setup():初始化 I²C、RTC 寄存器、中断、串口loop():检测时间设定开关,分发任务sleepNow():关闭 ADC/定时器/外设,挂载 INT0/INT1 中断,sleep_mode()alarmInterrupt()/timeUpdateInterrupt():ISR 仅清标志fetchTime()、printTime()、printAlarmTime():BCD↔十进制转换、格式化输出establishSerial()/endSerial():动态开关串口节省电流blinkLED():生日闪烁模式
改进构想
- 加装 Nokia 5110 LCD (无背光),显示倒计时/年龄
- PC 端 Processing 自动对时同步工具
- 生日闪烁次数代表年龄
- 设计专用 PCB (Eagle/KiCad)
- RTC 中断直接驱动光耦/继电器触发外部声光报警,甚至可去 MCU
项目资源
完整固件源码 (MIT 协议):GitHub
作者项目主页:vishnumaiea.in
制造工艺
- 冷装配轴承:安全精准安装的专家实操指南
- 工业4.0与IoT:塑造未来两年的八大关键趋势
- COVID-19如何持续助推网络犯罪:远程办公、疫苗供应链与间谍活动
- 发电机升级信号全解析:7 大关键指标判断更换时机
- 电机重绕三大红灯信号:精准识别避免过度更换
- 掌握零缺陷 PCB 组装的关键实践
- 从工厂到实验室:工业机器人的多面能量
- NVIDIA Jetson Nano:5W、472 GFLOPS AI 计算机,赋能创客与企业
- Kontron 推出 CP6940:面向极端环境的坚固 40GbE 交换机
- 选择完美开关的10大关键因素
- 超薄纳米涂层:亚20 nm分层实现精准色彩控制
- 纳米树枝ZnO纳米线大幅提升染料敏化太阳能电池效率