スイッチでRaspberry Piの電源をON/OFF (RPZ-PowerMGR)

RPZ-PowerMGRを使って、スイッチでRaspberry Pi(ラズパイ)の電源ON/OFFする方法の解説です。ケーブルの抜き挿しやログインして操作しなくても電源ON/OFFできるほか、リモートやプログラムからシャットダウンした際に自動で電源OFFすることもできます。不要な時は電源を切ることで省電力化が可能です。

Raspberry Pi OS Version 2021-05-07対応

更新日 : 2021年10月14日

Raspberry Pi電源の課題

Raspberry Piは大変便利な小型コンピューターです。しかし、電源まわりには課題もあります。Raspberry Piを使っていて、次のような悩みを持ったことはありませんか?

  • USBケーブルを抜き差ししないと電源をON、OFFできない
  • ネットワークや遠隔から電源をOFFできない

RPZ-PowerMGRを使えばこれらの問題を解決できます。具体的には次のようなことが可能です。

スイッチから電源ON、OFF

スイッチを押すだけでRaspberry Piを電源ON、OFFできます。電源OFF時はシャットダウン処理が自動的に実行され、その後安全に電源が切れます。

入力端子に外部スイッチの接続も可能です。ケーブル付きスイッチを利用すればレイアウトの幅が広がります。

スイッチの代わりにICなどから信号を入力することでも電源ON、OFFできます。

シャットダウン後に自動電源OFF

Raspberry Piのシャットダウンを検知して自動的に電源OFFできます。ネットワークや遠隔からでも電源OFFが可能になるほか、プログラムの最後にシャットダウン命令を記述しておくことで、プログラム実行後に電源OFFさせることができます。

スイッチによるON/OFF以外にも、RPZ-PowerMGRには電源管理、省電力運用に必要な機能が搭載されていて便利です。

電源を制御する仕組み

どのように電源を制御するのか、仕組みを解説します。

RPZ-PowerMGRはRaspberry Piの40ピンコネクターに装着する拡張基板(HAT)です。

下の図にあるように、外部電源がRPZ-PowerMGRに接続されており、Raspberry Pi本体への電源供給、切断をコントロールできる構成になっています。電源は40ピンコネクター経由で供給されるので、Rasbperry Pi本体の電源コネクターは使用しません。

ブロック図

電源ONの流れ

電源ONの流れを説明します。

電源ONの流れ

スイッチが押される(1)とRaspberry Pi本体へ電源が供給され(2)、Raspberry Piの起動が開始します。

同時にRaspberry Piの電源と連動しているLED2がに点灯します。また、ステータス表示用LED1が(通常起動)か水色(モバイルバッテリーWake up使用時)に点灯します。

モバイルバッテリーWake up

モバイルバッテリーWake upはスリープ状態のモバイルバッテリーを起動させる機能です。

多くのモバイルバッテリーは、消費電流が低くなるとスリープに入り電源が切断されてしまうため、間欠動作させることができません。RPZ-PowerMGRにはモバイルバッテリーWake up機能を搭載しており、スリープ状態のモバイルバッテリーを起動させることができます。

(モデルによって動作が異なる場合があるので、動作確認済モデルをご確認下さい)

スタートアップタイマー

Raspberry Piが起動するには数十秒かかります。その間に誤って電源OFFしないようにするため、電源ONから30秒間(コンフィグで変更可能)は、スイッチを押したり、別の機能である指定時刻の電源OFFが入らないようになっています。

この機能をスタートアップタイマーと呼んでいます。タイマーが終了するとLED1が消灯し、電源OFFに移行できるようになります。

電源ONタイムチャート

電源OFFの流れ

電源OFFの流れを説明します。シャットダウンを行ってから安全に電源をOFFする仕組みになっています。

電源OFFの流れ

スイッチが押される(1)とRaspberry Pi本体へシャットダウン要求信号が送信され(2)、Raspberry Piのシャットダウンが開始されます。LED1が黄色に点灯します。

Raspberry Piのシャットダウン処理が終わると、シャットダウン完了信号がRPZ-PowerMGRへ送信され(3)、電源が切断されます(4)。LED1、LED2が消灯します。

一方、Rasberry Piを操作してシャットダウンした場合は、(1)、(2)はスキップされ、(3) -> (4)の流れとなります。

デフォルトのシャットダウン要求信号はGPIO16、完了信号はGPIO26となっていますが、コンフィグで変更可能でGPIO16, 17, 26, 27、無効から選択できます。

電源OFFタイムチャート (シャットダウン完了信号)
シャットダウンタイマー

シャットダウンタイマーはRaspberry Piがフリーズした場合など、不測の事態でも確実に電源を落とす仕組みです。

スイッチが押されて(1)から150秒(コンフィグで変更可能)経過してもシャットダウン完了が検出されない(もしくは無効)場合は、強制的に電源OFFとなります。

Raspberry Piのシャットダウンにかかる時間は、稼働中のソフトウェアや状況によってばらつき、数秒で終わることもあれば1分以上かかる場合もあります。余裕を持った値にすることをおすすめします。

電源OFFタイムチャート (シャットダウンタイマー)

Raspberry Pi側の設定

RPZ-PowerMGRのセットアップの全手順は製品ページのセットアップ(ハードウェア)セットアップ(ソフトウェア)を参照してください。

要求信号を受けてシャットダウン処理を開始したり、シャットダウン終了後に完了信号を送信するにはRaspberry Pi側で設定が必要です。実は、これらの機能はRaspberry Pi OSに含まれており、/boot/config.txtファイルに以下の2行追記するだけで実現できます。

dtoverlay=gpio-shutdown,gpio_pin=16
dtoverlay=gpio-poweroff,gpiopin=26

1行目がGPIO16にLowが入力されたらシャットダウンを開始する機能です。2行目がシャットダウン完了後にGPIO26にHighを出力する機能を有効にしています。GPIO番号は16, 17, 26, 27から選択できますが、両方同じ番号にはしないで下さい。また、この後述べるRPZ-PowerMGR側のGPIO番号も合わせる必要があります。

config.txtファイルを変更したあとは再起動して反映させる必要があります。

コンフィグ

RPZ-PowerMGRのコンフィグ(設定)情報の表示、変更はコントロールツールから可能です。以下のように「cf」サブコマンドを指定するとファームウェアバージョン、および現在のコンフィグ情報が表示されます。

$ cgpmgr cf
コンフィグ情報
  ファームウェアバージョン: 1.00
  スタートアップタイマー: 30秒
  シャットダウンタイマー: 150秒
  シャットダウン要求信号: GPIO16
  シャットダウン完了信号: GPIO26
  タイムゾーン設定: 540

代替I2Cアドレス0x22を使っている場合(セットアップ時にDSW1-6をONにしている場合)は「-a」オプションの指定が必要です。

$ cgpmgr cf -a
コンフィグ情報
  ファームウェアバージョン: 1.00
  スタートアップタイマー: 30秒
  シャットダウンタイマー: 150秒
  シャットダウン要求信号: GPIO16
  シャットダウン完了信号: GPIO26
  タイムゾーン設定: 540

2021/9/5にコントロールツールを簡単にインストールできるようになり、名称がcgpmgrに変更になりました。

スタートアップタイマーの時間を変更するには「-u」オプション + 秒数(1-255)を指定します。

$ cgpmgr cf -u 45

シャットダウンタイマーの時間を変更するには「-u」オプション + 秒数(1-255)を指定します。0を指定すると無効になります。

$ cgpmgr cf -d 200

シャットダウン要求信号のGPIO番号を変更するには「-r」オプション + GPIO番号(16, 17, 26, 27)を指定します。0を指定すると無効になります。

$ cgpmgr cf -r 16

シャットダウン完了信号のGPIO番号を変更するには「-c」オプション + GPIO番号(16, 17, 26, 27)を指定します。0を指定すると無効になります。

$ cgpmgr cf -c 26

まとめ

RPZ-PowerMGRを使って、スイッチでRaspberry Pi(ラズパイ)の電源ON/OFFする方法の解説は以上です。これ以外にも、RPZ-PowerMGRには電源管理に便利な様々な機能が搭載されています。そちらの記事も参考にしてみて下さい。

RPZ-PowerMGR (Raspberry Pi用 電源管理/制御/RTC拡張基板)

スイッチで電源ON/OFF、指定時刻に電源ON/OFF、シャットダウン後自動電源OFFを可能にする拡張基板です。Raspberry Pi(ラズパイ)の電源の課題を解決し、省電力運用を可能にします。RTCで電源OFF時も時刻を保持します。USB Type-C端子を搭載し、モバイルバッテリーでも利用できます。

RPZ-IR-Sensor (Raspberry Pi用 温度/湿度/気圧/明るさ/赤外線 ホームIoT拡張ボード)

動作をプログラミング可能な、Raspberry Pi/Zero(ラズパイ)用ホームIoT拡張ボードです。温度、湿度、気圧、明るさセンサー、赤外線送受信機能を搭載。温度が上がったらエアコンをオンにする、暗くなったら照明を点灯する、外出先から家電の操作をする、気温や日照時間を記録する、といった使い方が可能です。LEDにステータスを表示したり、スイッチを押したら特定の処理をすることもできます。

Raspberry Piをスイッチでシャットダウン (LEDで完了確認)

スイッチを押すだけでRaspberry Pi(ラズパイ)をシャットダウンする方法を解説しています。また、LEDでシャットダウン完了を分かりやすく確認できるようにします。シャットダウン操作をする手間や、完了して電源を落としていいか分かりにくい問題を解決します。