Arduino 项目优化供电方案:从按键开关到电池监测与数据记录
组件与物料
| Adafruit PowerBoost Charger Shield | ×1 |
| 可充电锂聚合物电池 (3.7–4.2V) | ×1 |
| Arduino UNO | ×1 |
项目简介
Arduino 类单片机通常无需特殊电源管理:接电即运行,断电即停,不像树莓派有 SD 卡损坏风险。但某些场景需要托管式电源管理:如远程传感记录温度,电池耗尽导致日志中断时,无法区分是电量耗尽还是软硬件故障;便携设备需知晓剩余电量与充电时机。
本项目提供多种 Arduino 电源管理方案,含电路、软件与说明,复杂度递增:从简单的按键开关、电池电压监测、低压关机、带电池状态的数据记录,到面向无人值守环境监测的完整记录系统。可按需选用子系统。所有方案统一在标准 setup()/loop() 中添加 arduinoPowerSetup() 与 arduinoPowerMonitor() 两个函数。
思路源自 LiPoPi 与 Pi Power 树莓派电源项目。
概览
系统提供功能:
- 按键开机/关机(长按开、短按关)
- ADC 监测电池电压
- 低压自动关机
- 关机前记录电压与关机信息到文件
- 红/绿 LED 指示电量状态
核心硬件:可充电 LiPo 电池 + Adafruit PowerBoost Charger Shield(充电并升压至 5V)。Adafruit 有三款 PowerBoost,本文以 Shield 版为主,文末简述 Breakout 板用法。
PowerBoost Shield 准备
参考官方指南:焊接排针,**不焊自带滑动开关**;向 Enable 引脚焊接 4 英寸 22AWG 实心线;桥接底部 A0 焊盘以接入电池电压检测。
按键开关电路
长按开机:按下瞬时按钮 → PowerBoost 使能 → Arduino 上电启动 → 程序运行。再次按下并释放 → Arduino 拉低 Enable → PowerBoost 断电 → Arduino 关机。详见原文链接。原理图如下:

注: 若不需记录关机日志,可直接用 Shield 自带滑动开关,但会硬性切电无法执行关机前代码。
监测电池电压
Arduino 6 路 ADC (A0–A5) 量程 0–5V 对应 0–1023。PowerBoost Shield 桥接 A0 后可读取电池电压 (Vbat)。LiPo 满电 ~4.25V,放电截止 ~3.7V。
float maxVoltage = 4.25;
float minVoltage = 3.75;
float arduinoPowerVoltage = float(analogRead(A0)) / 1024.0 * 5.0;
float fractionalVoltage = (arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage);
LiPo 放电非线性,但线性近似足以估算剩余电量。通过 RGB LED 指示:绿>50%、黄 20–50%、红<20% 充电。RGB LED 共阳极接法:

实测发现电压读数有抖动,临界点会导致 LED 闪烁。对策:在 A0 与 GND 并联 0.1µF 电容 滤波。

示例草图 arduino_2_voltage_led 实现开关机与 LED 电量指示。代码中拉低 LED 对应引脚点亮,拉高熄灭。取消注释 Serial 调试可观测实测电压(首次读数异常忽略)。
电压数据记录至 SD 卡
使用 Adafruit Data Logging Shield (带 RTC) 以 CSV 格式记录电压与时间戳。保留 LED 指示作为即时反馈。关键点:
- 记录关机日志,区分正常关机与异常复位。
- 监测电压跌破阈值时安全关机并记录原因。
草图 arduino_3_voltage_logging 含时间戳格式化工具函数,无卡时红灯闪烁提示。完整堆叠:UNO + Data Logging Shield + PowerBoost Shield + 面包板。

电压数据示例
约 20 小时放电曲线,近似线性下降。加 0.1µF 电容后(紫线)抖动显著降低,未加电容(蓝线)波动明显。


环境数据记录扩展
计划制作无人值守花园监测箱(温度、土壤湿度等),需检测箱内湿度、极端温度。选用廉价 DHT22 传感器(数字引脚用 5 避开开关中断脚 2)。代码 arduino_4_voltage_temp_humidity_logging 已在面包板验证,后迁移至 Adafruit Proto Shield。DHT22 体积大,可考虑其他厂商小体积模组。
Arduino 低功耗优化
下一阶段将降低功耗延长续航,参考 Adafruit Tony DiCola 的《Low Power Datalogging》教程。
代码与参考
本项目 GitHub
https://github.com/craic/arduino_power
LiPoPi 参考
https://github.com/NeonHorizon/lipopi
Pi Power 参考
https://github.com/craic/pi_power
制造工艺