Site icon image rpine lab Blog

プログラミングや電子工作系の記事を投稿しています。

🔧 RaspberryPiでミニPCを遠隔操作する 2 ー PiKVM自作・ミニPCの改造

はじめに

本記事ではPiKVMの構築手順について説明していきます。前回の記事で揃えた部品を使用して、実際の組み立てを行っていきます。

不明点は公式ハンドブック(https://docs.pikvm.org/v2/)を併せて参照してください。

ミニPCの改造

PiKVMの電源制御機能を使う際の問題

PiKVMの電源制御機能を使うためには、デスクトップPCのマザーボードのピンに繋いである電源スイッチ(電源SW)用のケーブル2本の信号を分岐してくる必要があります。この2本の信号線を短絡すると電源スイッチが押されたことになるので、別途作る制御回路を使ってラズパイのGPIOから制御することで、電源スイッチがラズパイから擬似的に操作できるようになります。

ミニPCの場合はマザボから電源SWに繋がっているケーブルが存在しないので普通はこの機能が使えないのですが、今回はどうにか頑張ってミニPCの電源制御信号の取り出しにトライしてみようと思います。

ミニPCの調査

手元のミニPCを分解して確認してみると、電源ボタンの裏側にタクトスイッチが実装されていました(写真参照)。当初の考えとしてはタクトスイッチの端子から信号を抜き出す予定だったのですが、恐らく表面実装になっていて表に端子が出ていませんでした。

Image in a image block
ミニPCの基板(電源ボタン裏)

タクトスイッチの上部に金属部分が2つ出ているのですが、もしやと思いテスターを使って調べてみたところタクトスイッチを押した際に導通したので、端子の信号がそのまま上部の金属部分にも繋がっているみたいです。

ということでこのタクトスイッチ上部の金属部分から無理やり電源スイッチ信号を取り出すことにします。

⚠️
注意事項

この改造によってメーカー保証は恐らく無効になります。また、改造に失敗したら最悪の場合PCが故障するので、もし同じことをするのであれば全て自己責任で実施してください。

電源スイッチ信号の取り出し作業

  1. 配線の接続

    タクトスイッチの上に出ている金属部分に頑張って単芯の被覆電線をはんだ付けします。はんだ付けを想定した端子ではなくはんだが乗りづらいので、予備はんだをしつつどうにか接続します。電線をハンダ付けできたら、電源スイッチを押した際に電線同士がきちんと導通するかをテスターでチェックします。

    Image in a image block
    電源SWに導線をはんだ付け
  2. 外部への配線取り出し

    導線をケースの排気口から外に出します。このままでは電線を引っ張った瞬間に外れてしまうので2箇所をホットボンドで固めます。はんだ付け部分とケースから外に出る所を固めることで、外から電線を引っ張った際にスイッチ側にテンションが掛からないようにします。

    Image in a image block
    ホットボンドを2箇所で固める
  3. この後で使いやすいように、電線の先にピンヘッダをはんだ付けします。熱収縮チューブではんだ付けした根元を隠しておきます。
    Image in a image block
    電線の先にピンヘッダをはんだ付け

電源制御回路の制作

電源スイッチ信号をコントロールするための制御回路を作成します。

作成する回路図を以下に示します:

Image in a image block
電源制御回路の回路図

メインとなる部品はフォトリレーという素子で、この素子の入力側に信号を入れると出力側が導通します。一般的なフォトカプラと違って双方向に電流を流せるので出力側の極性は無視して問題ありません。

使う素子はフォトリレー1個と抵抗1個だけなので、簡易的にミニブレッドボード上に回路を組んでしまいます。この回路によって、ラズパイのGPIO23ピンを制御することでPCの電源スイッチを操作できるようになります。

Image in a image block
ミニブレッドボードに組んだ電源制御回路:青い電線はラズパイのGPIOピンヘッダから引っ張ってきた信号線(左:GNDピン・右:GPIO23ピン)、白黒の線はミニPCの電源スイッチから引き出した電源制御信号

USBケーブルの加工

USB-CのY字スプリッタケーブルのデータ側にUSB Type-C to Type-Aケーブルを差してPCに接続するのですが、このままだとラズパイと接続先PCの両方からUSBの電源ライン(VBUS)に5Vが供給されてしまうため、どこかでUSBのVBUS信号線をカットする必要があります。

そこで、USB Type-C to Type-Aケーブルを加工して電源がカットされたケーブルを作成します。方法としては、USBケーブルの被覆を剥いてVBUS線(恐らく赤色の線)を切断したものを作るだけです。ただしケーブルの再利用性を考えるとこの方法は微妙なので、USBケーブルとPC間に挟み込んで使う電源カット基板的なものを、オス・メスのUSBコネクタを買ってきて作った方がいいかもしれません。

Image in a image block
Type-C to Type-Aケーブルの加工(電源ラインカット)

(綺麗に作れなかったので加工したケーブルの写真は省略)

システム全体の接続

作成した電源制御回路とその他購入したパーツを使って、ラズパイをミニPCと以下の図のように接続します。

graph LR
  B <-- 電源カット済み<br/>USB C-Aケーブル --> PcUsb
  C <--> AC[USB-C 電源アダプタ]
  subgraph pc[制御対象PC]
	  PcUsb[USB TypeA ポート]
	  PcHdmi[HDMIポート]
	  PcPwrSw[電源スイッチ信号]
  end
  subgraph RasPi[ラズパイ4]
	  RasPiC["USB-C ポート"]
	  RasPiCsi["CSIポート"]
	  RasPiGpioPins[GPIOポート]
  end
  subgraph Splitter[USB-C Y字ケーブル]
	  direction LR
	  A[USB-C オス]
	  A -- データ--> B[USB-C メス]
	  A -- 電源 --> C[USB-C メス]
  end
	RasPiC <--> A
  subgraph HdmiModule[CSI-HDMIモジュール]
	  direction LR
	  HdmiModuleCSI[CSIポート]
	  HdmiModuleHdmi[HDMIポート]
	  HdmiModuleCSI ~~~ HdmiModuleHdmi
  end
  RasPiCsi -- フラットケーブル --> HdmiModuleCSI
  HdmiModuleHdmi --> PcHdmi
  subgraph PowerController[電源制御回路]
	  PwrInput[信号入力]
	  PwrOutput[フォトリレー出力]
	  PwrInput ~~~ PwrOutput
  end
  RasPiGpioPins -- GND --> PwrInput
  RasPiGpioPins -- GPIO23 --> PwrInput
  PwrOutput --> PcPwrSw
  PwrOutput --> PcPwrSw
各コンポーネントの接続関係

すべて接続すると、次の写真のようになります。

Image in a image block
システム全体を接続した様子

映像入力

CSI-HDMIモジュールを使ってPCの画面出力を取り込みます。そのためミニPCとCSI-HDMIモジュールをHDMIケーブルで接続します。また、モジュールとラズパイ4のCSIポート(一般的にはカメラモジュールの接続に使うところ)をフラットケーブルで接続します。

電源制御機能

ラズパイのピンヘッダからGPIO23ピンとGNDピンを引き出して電源制御回路に入力します。ピンの位置は間違えやすいのできちんと確認しましょう。そして制御回路の出力をミニPCから引き出した電源スイッチ信号線に接続します。

USB制御(マウス・キーボード)

ラズパイのUSB-Cポートを電源供給とUSB OTGで同時に利用するため、Y字ケーブルの電源側に電源アダプタを、データ(アクセサリ)側に電源カット加工したUSB C-AケーブルのTypeC側をそれぞれ差します。そしてUSB C-AケーブルのTypeA側をミニPCに接続します。

まとめ

これでPiKVMの組み立ては完了です。次回は構築したハードウェアを使ってPiKVMを起動するためのセットアップ手順を解説します。

参考サイト

広告