树莓派使用教程
本节介绍在树莓派上如何使用 UPS HAT (E)。
开启 I2C 接口
-
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config -
选择
Interfacing Options->I2C->Yes启动 I2C 内核驱动
-
然后重启树莓派
sudo reboot
电池电量检测
在使用树莓派演示该例程时,需要将模块组装到树莓派底部,配合顶针使用。
输入如下命令运行程序
cd ~
sudo apt-get install python3-smbus
wget https://files.waveshare.com/wiki/UPS-HAT-E/UPS_HAT_E.zip
unzip UPS_HAT_E.zip
cd UPS_HAT_E
python3 ups.py
程序运行后会输出 Type-C 模式、电压、电流、功率,电池电压、电流、功率以及电池剩余电量百分比等数值。

- VBUS 电流负数表示 Type-C 输出电流,正数表示输入充电电流。
- 电池电流为负数表示电池输出电流(可认为是树莓派负载电流),电池电流为正数表示电池充电电流。
- 当系统负载大而电池电压低时,有可能会出现电池电流不足而导致系统不断重启的情况,这个是不希望看到的。实际应用中可以通过判断电池电压过低自动关机避免。
- 示例程序中已经添加电池电压判断,电池电压过低而没有外接电源充电时,程序会在 60 s 内发起关机指令关闭系统。
程序显示如下语句表示电池电压过低,需要及时充电,否则程序会自动关机。
Voltage Low,please charge in time,otherwise it will shut down in 58 s
电池电量图标显示
例程中提供了电池电量桌面 UI 显示程序,建议在带桌面环境的 Raspberry Pi OS 上使用。
打开终端,执行:
cd ~/UPS_HAT_E
DISPLAY=':0.0' python3 batteryTray.py
运行程序后,系统桌面右上角会出现电池标志,如果没有正常显示,请查看程序报错原因,并检查 I2C 接口以及库是否配置和安装。
如需让 UI 显示和电量检测功能在开机后自动运行,请执行以下命令:
cd ~/UPS_HAT_E
sudo chmod +x main.sh # 给脚本赋予运行权限
./main.sh # 千万不要加 sudo
sudo reboot
重启系统后,右上角出现电池图标即表示设置完成。将鼠标移动到电池图标上,可查看电池电量和电压。电量低于 5% 时会显示低电量警告,60 s 后自动关机;接入电源充电后会退出警告界面。
如果未显示电池图标,请单独运行 batteryTray.py 并检查报错信息。
树莓派 5 解除电流限制
树莓派 5 启动时会检测 Type-C 接口的 PD 协议。如果未检测到官方电源,系统可能显示如下提示,并限制 USB Type-A 输出电流为 3 A。
方式 1:解除 USB Type-A 限流
该方式仅解除 USB Type-A 限流,不消除开机界面警告。运行以下命令打开 config.txt:
sudo nano /boot/firmware/config.txt
添加以下设置,解除 USB Type-A 的 3 A 电流限制,使其提供 5 A 电流:
usb_max_current_enable=1
方式 2:解除限流并消除开机界面警告
运行以下命令打开 EEPROM 编辑界面:
sudo rpi-eeprom-config --edit
添加以下设置,解除 USB Type-A 的 3 A 电流限制,并消除开机界面警告。保存修改后重启系统:
PSU_MAX_CURRENT=5000
来电启动原理
当检测到电压过低时,可以使用程序控制树莓派保存数据后再关机,避免树莓派突然断电而导致数据丢失。来电自动启动功能由 0x40 的 BIT0 控制,默认值为 1。如果需要在低电量关机后等待来电重启,可向 0x01 写入 0x55 触发一次性关机流程;该命令不是用于启用来电自动启动。
在执行以下命令前,安装 i2c-tools:
sudo apt-get install i2c-tools
打开终端,执行以下命令检测 I2C 地址。
sudo i2cdetect -y 1
0x2D 为 MCU 芯片的 I2C 地址。运行以下命令读取寄存器值;其中 0x00、0x01 寄存器的值分别为 0x0a、0x0b。寄存器定义详见 寄存器手册。
sudo i2cget -y 1 0x2d 0x00
sudo i2cget -y 1 0x2d 0x01

向 0x01 寄存器写入 0x55 会触发一次性关机流程:MCU 将在约 30 s 后切断树莓派供电,并在约 60 s 后开始检测充电;检测到来电后,模块将重新为树莓派供电并启动树莓派。该写入不会修改 0x40 的 BIT0 配置。
执行下一条命令前,请保存树莓派上的数据。写入 0x55 后,模块会在约 30 s 后切断供电;建议写入后立即执行安全关机,避免突然断电导致数据丢失。请勿将该命令用于启用来电自动启动。
运行以下命令,触发一次性关机流程:
sudo i2cset -y 1 0x2d 0x01 0x55
0x40的 BIT0 默认值为1,表示来电自动启动已启用;0x01=0x55仅用于触发关机及等待来电流程。