指定時刻にラズパイ/Jetsonの電源をON/OFF (RPZ-PowerMGR)

RPZ-PowerMGRを使って、指定時刻にRaspberry Pi(ラズパイ)やJetson Nanoの電源ON/OFFする方法の解説です。決まった時間だけ起動して消費電力を抑えることが可能で、モバイルバッテリーやソーラーシステムでの運用に最適です。

更新日 : 2023年11月13日

Raspberry Pi/Jetson電源の課題

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

  • USBケーブルを抜き差ししないと電源をON、OFFできない
  • 決まった時間だけ起動して消費電力を抑えたい
  • モバイルバッテリーで長時間運用したい

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

指定日時に電源ON、OFF

あらかじめ登録した日時、時刻に電源ON、OFFできます。必要なときだけ電源をONすれば省電力でRaspberry Pi/Jetsonを運用できます。モバイルバッテリーで長期間の稼働が可能になります。

月、日、曜日、時、分を自由に指定でき、毎週、毎日、毎時のような指定も可能です。例えば以下のようなスケジュールが簡単に作成できます。

  • 毎時0分に電源ON、10分に電源OFF
  • 毎日8:15に電源ON、17:40に電源OFF
  • 毎週月、水、金の20:00に電源ON
  • 毎月15日の0:00に電源ON
  • 1月15日の9:00に電源ON
  • 現在時刻から10分後に電源OFF、60分後に電源ON

他社製品の多くはRTCのアラーム機能を使う構成です。そのためスケジュールを同時に1個しか登録できず、起動するたびに次の時刻を登録するプログラムを記述しなければなりません。

一方、RPZ-PowerMGRは専用開発したスケジューラーを搭載しています。そのためスケジュールを最大250個登録可能で、複雑なスケジュールに対応できます。一度登録しておけばRaspberry Pi/Jetson側からの管理は不要です。CSVファイルインポート、エクスポート機能もあるので表計算ソフトを使ってスケジュール作成、管理でき、同じ設定を複数台に展開できます。

超低消費電力

超低消費電力のIC、回路設計により、Raspberry Pi/Jetson電源OFF時の消費電力をわずか5uA以下に抑えました。長期間の省電力運用を可能にします。(これとは別にモバイルバッテリー側の電圧供給回路での電力消費が生じる場合があります。)

指定時刻のON/OFF以外にも、RPZ-PowerMGRには電源管理、省電力運用に必要な機能が搭載されていて便利です。

電源を制御する仕組み

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

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

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

RPZ-PowerMGRは、搭載しているスケジューラーが指定時刻になると自動的に電源ON/OFFします。OFFする際は安全にRaspberry Pi/Jetsonをシャットダウンしてから電源を落とす仕組みになっています。

電源ON/OFFの流れ

詳細な電源ON/OFFの流れは、トリガーが時刻に変わるだけでスイッチによる電源ON/OFFと共通です。スイッチによる電源ONの流れ、電源OFFの流れの記事を参照してください。本記事では時刻(スケジュール)の指定方法について解説します。




セットアップ

RPZ-PowerMGRのセットアップの全手順は製品ページを参照してください。本記事では指定時刻に電源をON/OFFする方法について解説します。

指定時刻に電源ON

RPZ-PowerMGRのスケジュール(電源ON/OFF時刻)の表示、変更はコントロールツールから可能です。「sc」サブコマンドを指定するとスケジュール関連の操作になります。

まず、最初の例として毎日8時15分に電源ONするスケジュールを登録してみましょう。以下のコマンドを実行します。(代替I2Cアドレス0x22を使っている場合は「-a」オプションの指定が必要です)

$ cgpmgr sc 8:15 on
スケジュールを登録しました
登録されているスケジュールが1個あります. 
  #001 ON  Repeat  **/**  08:15

スケジュールが登録され、登録済みのスケジュールの一覧が表示されました。

「#001」はスケジュール番号で、削除する際に指定します。

「ON」は電源ONするスケジュールを示します。

「Repeat」は何回も繰り返し実行するスケジュールを意味します。

「**/**」は月と日がワイルドカードとなり、すべての月と日に実行されることを意味しています。今回の例では月、日を省略したのでワイルドカードになりました。

指定時刻に電源OFF

先程は電源ONするスケジュールだったので、次は毎日17:40分に電源OFFするスケジュールを登録してみましょう。以下のコマンドを実行します。

$ cgpmgr sc 17:40 off
スケジュールを登録しました
登録されているスケジュールが2個あります. 
  #001 ON  Repeat  **/**  08:15
  #002 OFF Repeat  **/**  17:40

「#002」に登録できました。これで毎日8:15から17:40までの間だけ電源ONする運用ができます。スケジュールは最大250個まで登録できます。

スケジュールを削除

スケジュールを削除するには「-R」オプションに続けて削除したい番号を指定します。次の例では「1」を指定しました。

$ cgpmgr sc -R 1
スケジュール#001を削除しました. 
登録されているスケジュールが1個あります. 
  #001 OFF Repeat  **/**  17:40

#001の8:15のスケジュールが削除されたことがわかります。#002の17:40のスケジュールが繰り上がって#001になりました。

スケジュールを登録、削除すると、登録済みのスケジュール一覧から次のON/OFF時刻を計算する処理が入ります。次のON/OFFスケジュール時刻まで10秒を切っている状況だと、安全のためスキップされる場合がありますのでご注意ください。




登録済みスケジュール一覧を表示

以下のように「sc」サブコマンドだけを指定すると、現在登録済みスケジュールの一覧を表示できます。

$ cgpmgr sc

1度だけ実行されるスケジュールを登録

特に指定しない場合、スケジュールはRepat(繰り返し)モードになり、何度も実行されます。一方、「-o」オプションを指定するとOne Time(1回のみ)になり、1度実行されると自動的に削除されます。

$ cgpmgr sc -o 8:15 on
スケジュールを登録しました
登録されているスケジュールが1個あります. 
  #001 ON  OneTime **/**  08:15

3つめの項目が「OneTime」の表記になっているのがわかります。1度8:15に電源ONが実行されるとスケジュールは削除され、翌日以降は実行されません。

なお、8:15にすでに電源ONだった場合はスケジュールは実行されず、削除もされません。

毎時実行されるスケジュールを登録

時間にワイルドカード「*」を指定することで、毎時実行されるスケジュールを登録できます。以下のように実行すると毎時0分にONして10分にOFFするようになります。分をワイルドカードにすることはできません。

$ cgpmgr sc *:0 on
$ cgpmgr sc *:10 off

月、日を指定したスケジュールを登録

「-D」オプションに続けて「月/日」を指定できます。以下は1月15日の9:00にONする例です。

$ cgpmgr sc -D 1/15 9:00 on

月をワイルドカード「*」にすることもできます。以下は毎月15日の0:00に電源ONする例です。

$ cgpmgr sc -D */15 0:00 on

ファームウェアVersion 1.3以降では月、日、時のうち、好きなものについてワイルドカード指定が可能です。例えば、以下のように指定すると、4月の間は毎日毎時0分に電源ONします。古いファームウェアでは指定に制限がある場合があります。その場合、アップデート手順を参照してファームウェアを最新のものに更新して下さい。

$ cgpmgr sc -D 4/* *:00 on

日は日付以外に曜日を指定することができます。曜日はアルファベット3文字で指定します。

  • 日曜日: Sun
  • 月曜日: Mon
  • 火曜日: Tue
  • 水曜日: Wed
  • 木曜日: Thu
  • 金曜日: Fri
  • 土曜日: Sat

以下は毎週月曜日の20:00に電源ONする例です。

$ cgpmgr sc -D */Mon 20:00 on



n分後にスケジュール登録

「-l」オプションを使うと現在からn分後にスケジュールを登録できます。以下は今から10分後にOFFして、60分後にONする例です。

$ cgpmgr sc -l 60 on
$ cgpmgr sc -l 10 off

nは0から999の範囲で指定できます。なお、秒は切り上げとなるので、1分後を指定した場合は最短1分、最長1分59秒後に実行されます。

「-l」オプションで登録したスケジュールはOne Time(1回のみ)となります。

csvファイルのエクスポート

「-f」オプションに続けてファイル名を入力すると、登録済みスケジュール一覧をcsvファイルにエクスポートできます。以下は「sch.csv」ファイルにエクスポートする例です。

$ cgpmgr sc -f sch.csv

csvファイルの書式

エクスポートされたcsvファイルを表計算ソフトで開くと、以下のような書式になっています。

csvファイルの書式

1行目はヘッダーとなります。2行目以降にスケジュールが記述されています。

A列は電源ONかOFFを指定します。小文字でも構いません。

B列はRepeatかOneTimeかを指定します。「R」、「O」だけの指定も可能で、大文字と小文字を区別しません。

C、D、E、F列に月、日、時、分を指定します。「*」か「**」でワイルドカードになります。曜日はSun、Mon、Tue、Wed、Thu、Fri、Satで指定できます。

この書式に従って自分でcsvファイルのスケジュールを編集、追加した後、インポート機能でRPZ-PowerMGRに登録することができます。多数のスケジュール管理や、複数台のRaspberry Pi/Jetsonへ同じスケジュールを登録するのに便利です。

csvファイルのインポート

「-i」オプションを指定した上で「-f」オプションに続けてファイル名を入力すると、csvファイルからスケジュールを登録できます。すでに登録されているスケジュールに追加されるので、必要な場合はインポート前に既存のスケジュールを削除してください。

$ cgpmgr sc -i -f sch.csv



タイムゾーンの変更

Raspberry Pi/JetsonはRTCに協定世界時(UTC)の時刻を設定して動作します。そのため、ローカル時刻を計算するためにRPZ-PowerMGRにはUTCからの差分を分で設定する機能が備わっています(タイムゾーン設定)。

出荷時には日本に合わせた540分(+9時間)がセットされているため変更の必要はありません。日本以外で使用するなどの特殊な事情がある場合は、コンフィグ変更サブコマンド「cf」と「-z」オプションで変更できます。

以下はローカル時間の差分を0に設定する例です。

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

まとめ

RPZ-PowerMGRを使って、指定時刻にRaspberry Pi(ラズパイ), Jetson Nanoの電源ON/OFFする方法の解説は以上です。決まった時間だけ起動して消費電力を抑えることが可能で、モバイルバッテリーやソーラーシステムでの運用に最適です。

これ以外にも、RPZ-PowerMGRには電源管理に便利な様々な機能が搭載されています。そちらの記事も参考にしてみて下さい。

CO2濃度に応じてLEDの色を変化させ、リレーで外部機器をON/OFFする

Raspberry PiとRPZ-CO2-Sensorを使ってCO2(二酸化炭素)濃度を測定し、LEDの色を変化させる応用例です。LEDを見ることで、換気の必要性がひと目でわかります。濃度が一定以上になったらリレーで換気ファンなどの外部機器をONすることも可能です。

静音モードでステッピングモーターの動作音を抑える (Raspberry Pi + RPZ-Stepper)

ステップ角単位で回転するという仕組み上、ステッピングモーターは振動や音が大きくなりやすい特徴があります。RPZ-Stepperは静音モードを搭載しており、特に低速回転時において振動と音を低減できます。静かな環境で動作させるアプリケーションに最適です。

RPZ-Stepper (Raspberry Pi用 高機能ステッピングモータードライバー)

ステッピングモーターを制御できるRaspberry Pi(ラズパイ)用拡張基板です。位置や角度、回転数などを指示すれば、自動で目標までモーターを動かしてくれます。加減速、静音モード、省電力モード、電流測定などの機能を搭載しています。ものを動かしたり回転させるシステムが実現できます。