PiPowerを使ってRaspberry Piの安全なシャットダウンを実現¶
PiPowerボードには、Raspberry Piの安全なシャットダウンなどの機能を有効化するために利用できるいくつかの拡張ピンが装備されています。 以下は、これらのピンとその機能に関する詳細な説明です。

GND: アース接続。
BT_LV: バッテリー電圧を示し、実際のバッテリー電圧の1/3です。
IN_DT: USB電源が接続されているかどうかを判断します。USB電源が検出されると高出力します。
CHG: デバイスが充電中であることを示します。
LO_DT: バッテリーの低電圧状態を示します。低電圧が検出された場合、高出力します。
EN: スイッチ信号として機能します。外部スイッチに接続し、接地するとPiPowerがオフになります。これは、オンボードスイッチがアクティブな場合のみ有効です。
LED: 電源状態を示します。電源がオンの場合、5Vを出力します。外部LEDを接続する場合、電流制限抵抗が必要です。
注釈
これらのピンははんだ付けされていません。はんだごてではんだ付けする必要があります。
このプロジェクトでは、 IN_DT 、 CHG 、および LO_DT ピンに焦点を当て、 外部バッテリーが存在するか、USB充電ケーブルが接続されているか、バッテリーが低いかを判断します。 これにより、バッテリーのレベルが低い場合、Raspberry Piは安全にシャットダウンします。
警告
外部バッテリーと内蔵バッテリーを同時に接続しないでください!
配線
このテーブルは、PiPowerがRaspberry Piにどのように接続されるべきかを示しています:
PiPower |
Raspberry Pi |
---|---|
IN_DT |
GPIO17 |
CHG |
GPIO18 |
LO_DT_PIN |
GPIO27 |
GND |
GND |
ダウンロードとテスト
安全なシャットダウンのためのサンプルコードが提供されています:
PiPower Github からダウンロードするか、以下のようにクローンします。
git clone https://github.com/sunfounder/pipower.git
examplesディレクトリに移動します。
cd pipower/examples
Raspberry Piが電源状態を正確に読み取れるか確認するためにテストプログラムを実行します。
python3 read_all.py
USBケーブルを抜く、バッテリーを取り外す、またはRaspberry Piのピン接続を変更することで、異なる電源状態をシミュレートできます。 表示されるメッセージで電源状態がわかります。 例えば、電源がバッテリーのみから供給されている場合、以下のメッセージが表示されます:
外部電源が切断されました 充電されていません バッテリー正常
警告
外部バッテリーと内蔵バッテリーを同時に接続しないでください!
安全なシャットダウンの設定
安全なシャットダウン機能を有効にするには:
pipower/examples
ディレクトリで以下を実行します:sudo bash enable_safe_shutdown.sh
Raspberry Piを再起動します:
sudo reboot
この設定により、充電していない場合やバッテリーが低い場合、Raspberry Piは自動的にシャットダウンします。
高度な設定
さらなるカスタマイズを希望する方は、 safe_shutdown.py
に追加のアクションを追加できます。
# シャットダウン前に実行する操作
の下に、シャットダウンする前に特定の操作を実行するための任意のコードを挿入します。
たとえば、スマートフォンに通知を送ったり、特定のサービスをシャットダウンしたりします。
safe_shutdown.py
を変更した場合、 enable_safe_shutdown.sh
を再実行してください。
sudo bash enable_safe_shutdown.sh