我是一款树莓派电源管理控制板,能控制树莓派开机、关机(软件关机)、定时开机、定时关机、检测树莓派工作状态、测量工作电流,测量外接锂电池电压。
控制树莓派关机工作原理:
Arduino(ATmega328P)通过2个GPIO连接树莓派的两个GPIO,自定义如下通信协议:
树莓派端 | ||
树莓派GPIO (BCM) | 连接 Arduino | 逻辑功能 |
GPIO20 | PC3 | 输入,当检测到高电平时,执行关机命令,开机状态下应当检测到低 电平。 |
GPIO21 | PD7 | 输出,当输出高电平时,表示树莓派已开机,当关机后,将输出低电 平。 |
Arduino端 | ||
Arduino GPIO | 连接 树莓派GPIO (BCM) | 逻辑功能 |
PC3 | GPIO20 | 输出,当输出高电平时,树莓派检测到后将执行关机命令,开机 状态下应当输出低电平。 |
PD7 | GPIO21 | 输入,当检测到高电平时,表示树莓派已开机,关机状态 下应当检测到低电平。 |
打开树莓派终端窗口,分别执行以下命令,即可配置关机协议:
执行
- sudo wget https://github.com/waveshare/Power-Management-HAT/Power-Management-HAT-Setup.sh
执行结果如下图所示,表示下载完成:
执行
- sudo chmod a+x Power-Management-HAT-Setup.sh
执行
- sudo ./Power-Management-HAT-Setup.sh
执行结果如下图所示,当提示Would you like to reboot now? y/n时,输入y,表示重启树莓派(必须重启树莓派该操作才有效,如果树莓派未重启,必须手动重启树莓派后方生效)。
下载完成后,直接点击下一步即可安装,记住安装路径,安装路径将在下一步中用到。
器件包可以从Gihub下载地址下载,也可以从微雪官网下载,下载完成后,将下载后Power Management HAT文件夹(该文件夹还含有子文件夹Power Management HAT)复制到Arduino安装路径下的hardware文件夹下,如下图所示,执行完该步骤后则可以使用Arduino IDE来开发Power Management HAT了。
首先,重启Arduino IDE,将Power Management Hat的USB连接至电脑,选择相应的串口:
接着,选择Power Management HAT器件:
最后,即可看到关于Power Management HAT相关的例程如下图所示,后续章节将讲解相关例程的使用:
一键开关机
参数 | 含义 | 默认值 |
SHUTDOWN_TIME_MS | 长按时间超过该阈值将软件关机。 | 2000 |
CUT_POWER_TIME_MS | 长按时间超过该阈值将切断电源。 | 8000 |
USE_CURRENT_TO_CHECK_PI_STATUS | 是否使用工作电流来判断树莓派的工作状态,默认采 用软件来判断树莓派的工作状态。 | 0 |
CURRENT_THRESHOLD_MA | 工作电流小于该阈值将判定为已关机,默认无效。 | 85 |
参数 | 含义 | 默认值 |
SHUTDOWN_TIME_MS | 长按时间超过该阈值将软件关机。 | 2000 |
CUT_POWER_TIME_MS | 长按时间超过该阈值将切断电源。 | 8000 |
ο 按下电源键,树莓派将开机
ο 长按电源键2秒以上,但小于8秒,树莓派将先软件关机,软件关机后将切断树莓派电源
ο 长按电源键8秒以上,将直接切断树莓派电源
参数 | 含义 | 默认值 |
SHUTDOWN_TIME_MS | 长按时间超过该阈值将软件关机。 | 2000 |
CUT_POWER_TIME_MS | 长按时间超过该阈值将切断电源。 | 8000 |
ON_VOLTAGE_VOLT | 开机最低电压 | 6.6 |
OFF_VOLTAGE_VOLT | 低电压关机阈值 | 6.3 |
FORCE_OFF_VOLTAGE_VOLT | 紧急低电压关机阈值 | 5.8 |
LOW_VOLTAGE_TIME _MS | 低电压关机等待时间 | 30000 |
OVERRIDE_TIME _MS | 低电压续航延长时间 | 3600000 |
说明:当电压低于OFF_VOLTAGE时,如果在LOW_VOLTAGE_TIME_IN_MS时间内,按下电源按键,开机时间将延长OVERRIDE_TIME_IN_MS毫秒,但当电压低于FORCE_OFF_VOLTAGE时,将立刻让树莓派软件关机,并切断树莓派电源;当电压高于ON_VOLTAGE时,将重新供电使得树莓派开机。
注意:单节锂电池的电压在3.0V~4.2V左右,可通过锂电池电压粗略估计电池电量,4.2V的锂电池表示已充满,3.0V左右的锂电池表示电量很低,锂电池大多数时间工作在3.7V;如果单节锂电池电压低于3.0V,则可能造该锂电池永久损毁。 如果采用外接锂电池的方式给Power Management HAT供电,由于Power Management HAT不具有升压功能,则至少需要两节锂电池(包)串联,提供5V以上的电源,此时,请根据具体电池串联的数量设置相应的电压数据,可参考下表提供的数据(如果采用配套锂电池盒的方式给Power Management HAT供电,则请选择2S的参数):
1S(不支持) | 2S(1S*2) | 3S(1S*3) | 4S(1S*4) | |
ON_VOLTAGE_VOLT | 3.3 | 6.6 | 9.9 | 13.2 |
OFF_VOLTAGE_VOLT | 3.15 | 6.3 | 9.45 | 12.6 |
FORCE_OFF_VOLTAGE_VOLT | 2.9 | 5.8 | 8.7 | 11.6 |
参数 | 含义 | 默认值 |
WAKE_UP_START_HOUR | 开机时间点-小时 | 8 |
WAKE_UP_START_MINUTE | 开机时间点-分钟 | 30 |
SLEEP_START_HOUR | 关机时间点-小时 | 18 |
SLEEP_START_MINUTE | 关机时间点-小时 | 30 |
例程 | PowerOnPeriodicallyOnTimer | PowerOnPeriodicallyonAlarm |
区别 | 通过定时器唤醒树莓派 | 通过RTC闹钟定时唤醒树莓派 |
特点 | 简洁,但是定时器精度差 | 精度相对较高 |
PowerOnPeriodicallyOnTimer | ||
参数 | 含义 | 默认值 |
PERIODIC_TIMER_TIMEBASE | 周期单位 | eTB_MINUTE |
PERIODIC_TIMER_VALUE | 周期数值 | 10 |
RPI_STAY_AWAKE_TIME _MS | 开机时长 | 60000 |
PowerOnPeriodicallyOnAlarm | ||
参数 | 含义 | 默认值 |
RPI_WAKE_UP_CYCLE _MINUTE | 周期数值 | 10 |
RPI_STAY_AWAKE_TIME _MS | 开机时长 | 60000 |
CURRENT_THRESHOLD_MA | 阈值电流(工作电流低于该阈值判定为关机状态) | 110 |
PowerOnPeriodicallyOnAlarm | ||
参数 | 含义 | 默认值 |
PERIODIC_TIMER_TIMEBASE | 周期单位 | eTB_MINUTE |
PERIODIC_TIMER_VALUE | 周期数值 | 5 |
RPI_STAY_AWAKE_TIME _MS | 开机时长 | 60000 |
WAKE_UP_START_HOUR | 开机时间点-小时 | 8 |
WAKE_UP_START_MINUTE | 开机时间点-分钟 | 30 |
SLEEP_START_HOUR | 关机时间点-小时 | 18 |
SLEEP_START_MINUTE | 关机时间点-小时 | 30 |