跳到主要内容

树莓派使用教程

本节介绍在树莓派上如何使用 UPS HAT (E)。

开启 I2C 接口

  • 打开树莓派终端,输入以下指令进入配置界面

    sudo raspi-config
  • 选择 Interfacing Options -> I2C -> Yes 启动 I2C 内核驱动

    开启 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。

树莓派 5 电流限制警告

方式 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

检测 I2C 地址

0x2D 为 MCU 芯片的 I2C 地址。运行以下命令读取寄存器值;其中 0x000x01 寄存器的值分别为 0x0a0x0b。寄存器定义详见 寄存器手册

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 仅用于触发关机及等待来电流程。