ラズパイを使ったPC電源スイッチ

手元にないPCの電源スイッチを押すのがめんどくさい。VPNで自宅ネットワークに接続して、デスクトップPCの電源を入れたい。というような解決として、Wake on LAN を試行錯誤していたが、マザーボードの設定やWindowsの電源管理とかWoLの信号出すアプリとか、意外と面倒なので、いっそ物理電源ボタンを押す装置を作った方が早い気がしたので作ってみた。

前提

  • Raspberry Pi WHを常時起動しておく。
  • M/Bにつながっている電源スイッチを分岐させる
  • ちょっとした電子工作とスクリプト
  • PCやスマホからRaspiにログインしてスクリプトを実行させる環境

RasPiの用意

その辺にあるRasPi WHを使う。消費電力は1W以下なので、おそらく1年間電源を入れっぱなしにしても100–200円くらいにしかならない。OSはRaspberry Pi Imagerを使ってRaspberryh Pi OS Lite(32 bit)をいれた。本当は有線LANの方がいいのだろうが、面倒なので無線。
最低限の設定をして、アップデートをしておく。

マザーボードの電源スイッチの分岐

PCの自作をしたことある人なら自明の、マザーボードにつなぐ電源スイッチのケーブルの手前に分岐用のケーブルを自作して挿入しておく。「ピンケーブル 分岐 電源スイッチ」とかでググると製品が出てくるけど、単なる電源スイッチの分岐なので、手元にあるピンケーブルで自作した。一応熱収縮チューブで保護だけはした。
ちなみに電源スイッチは200Ωぐらいで短絡させると反応するようだ。

電源を短絡させるための回路

最初はGPIOだけでON・OFFしようかと思ったけど、先人がいろいろ考えてくれていて、参考にさせてもらった。( http://purose.net/fanout/index.php?Raspberry%20Pi%20で%20PC%20の電源ボタンを押す )
参考のサイトではトランジスタに2SC945を使っていたけど、手元にあったのは2SC1815なので、代用とする。

参考サイトではGPIO17(PIN11)とGND(PIN9)以外に、RasPiそのものの電源をPC内部からもらっているが、PC側の電源を触るのは面倒なのとちょっとこわいので、今回は普通にUSB電源を使った。

RasPiの電源ON・OFFのために、PIN5とPIN6にタクトスイッチもつけておいた。(図では省略)

先ほどのマザボの分岐ケーブルにGNDとコレクタのM/B PWR SWのケーブルを接続しておく。
これで、GPIO17をHighにすることでPWR SWとGNDで電流が流れてPCの物理スイッチを押したと同じことになる。

RasPiにPC用電源ON・OFFのスクリプトを書く

$ cat push.sh 
#!/bin/bash

/usr/bin/raspi-gpio set 17 op
/usr/bin/raspi-gpio set 17 pu
/usr/bin/raspi-gpio set 17 dl
/usr/bin/raspi-gpio set 17 dh
sleep 0.5
/usr/bin/raspi-gpio set 17 dl

昔はgpioというコマンドがあったのだが、非推奨になったらしい。代わりにraspi-gpioというコマンドがあるので、そちらを使う。

sleepで押す時間を調整。0.5秒は手で推した時間を想定しているが、ここを長くすれば長押しができる。
0.5秒で電源が入るのを確認できた。ちなみにPCの電源が入っているときの電源ボタンの挙動はWindows側で決められるので、同じスクリプトで起動中からスリープに入るとかもできた。

RasPiの電源ON・OFF用の設定

PIN5とPIN6を短絡させるとRasPiの電源を入れられるらしい。知らなかった。
ここにスイッチをつけておいたが、同時にシャットダウンボタンも兼ねることにする。

dtoverlay=gpio-shutdown,gpio_pin=3,debounce=3000

/boot/config に上記の設置をしておくと、3000msecの長押しでシャットダウンに入る。便利だ。

iPhone用スクリプト

ここまでで、raspiにsshでログインしてpush.shを起動すればPCの電源をONできる。でも、微妙に面倒くさい。スマホでポチッとPC電源を入れたい。

iPhoneのスクリプトの機能を使ってSSHログインしてスクリプトを実行させる。
既存の鍵を登録させるのは難しそうなので、iPhoneで作った公開鍵をraspi側の.ssh/authorized_keysに登録することにした。
これで、どこでもPCの電源が入れられるようになった。

当然だが、ルーティングできる範囲内でしか動作しない。地球の裏側からでも電源を入れたい場合はVPNの環境が必要。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください