はじめに
Raspberry Pi 5 を使って、別端末を遠隔操作する手法を別記事で紹介しましたが、
- もし余っているWindows PCがあれば、Raspberry Pi 5 を使わなくても同等の構成が組めます。
- Windows上で、HDMIキャプチャ・画像解析・AI処理、を担当し、操作指示を Raspberry Pi Zero 2 W へ gRPC+protobuf で送ることで、別端末を自動操作する仕組みを構築できます。
Raspberry Pi Zero 2 W によるHIDエミュレーションの詳しい設定、マウスのキャリブレーションAPI、ChatGPTのプロンプトの書き方、などは別記事を参照いただき、本記事では、Windows側のSikuliX活用や構成全体の流れをメインに解説します。
できること&構成のポイント
- HDMIキャプチャで別端末の画面をWindows PCへ取り込む。
- SikuliX / Python (OpenCV) / ChatGPT Visionを使い、「ボタンをクリック」「テキスト入力」などの操作指示を作成。
- Raspberry Pi Zero 2 WがUSB HID(キーボード/マウス)として別端末に接続され、実際の入力を送る。
- HDMIキャプチャデバイスのパススルー機能を使えば、モニターにも同時出力して、手動操作やデバッグが容易。
Windows PCを使うメリットとして、豊富なツール・高い処理能力を活かせる点が挙げられます。SikuliXやOpenCVのセットアップも簡単で、Pi Zero単体で画像解析するより高速かつ拡張性が高いです。
全体構成イメージ
-
別端末
- Raspberry Pi Zero 2 W がUSB接続され、キーボード/マウスを仮想的にエミュレート
- HDMI出力をキャプチャデバイスへ
-
HDMIキャプチャデバイス
- Windows PCにUSB接続して映像を取り込み
- パススルー出力端子からモニターへも映像を同時出力
-
Windows PC
- キャプチャした映像をSikuliX / OpenCV / ChatGPT Visionで解析
- 得られた操作指示(クリック座標、入力文字列など)をPi Zero 2 Wへ送信
-
Raspberry Pi Zero 2 W
- HIDエミュレーション(マウス&キーボード)部分は別記事で詳細解説
1. WindowsでのHDMIキャプチャ
1-1. キャプチャデバイスとソフト
- 一般的なUSB接続HDMIキャプチャボード(UVC対応)をWindowsに挿す
- ドライバをインストールすれば、OBS Studioや専用ビューワソフトで画面を確認可能
- そのプレビュー画面をSikuliXが監視したり、OpenCVでフレーム取得し分析できる
1-2. パススルー出力とモニター
- HDMIキャプチャデバイスによってはパススルー端子を備え、入力された映像をそのままモニターへ出力可能
- これにより、別端末の画面をリアルタイムでモニターで見ながら、Windows PCには解析用の映像を送れる
- 手動操作やデバッグ時には大変便利
1-3. 遅延と解像度
- 一般的に数フレーム(16~100ms程度)の遅延が発生
- 1080p@60fps等の高解像度で負荷が大きい場合は、OBSやデバイス設定で解像度/フレームレートを調整する
2. SikuliX / Python(OpenCV) / ChatGPT Vision の活用
2-1. SikuliX
-
画像パターン検索が強力
- たとえば
find("login_button.png")
でボタン画像を検出し、click()
で仮想クリック
- たとえば
- OCR(Tesseractベース)の機能も搭載
- WindowsにJavaランタイムを導入し、
sikulixide-2.x.x.jar
を実行するだけで利用可能 - Pythonモードに切り替えれば、Pythonに近い文法でスクリプトが書ける
2-2. Python + OpenCV で前処理
- ノイズが多い映像や特殊な解析が必要な場合、OpenCVを活用
- 例: ノイズ除去、閾値処理、輪郭検出などで、SikuliXのマッチング精度を向上
- ChatGPT Visionへの送信用の画像を加工してOCR精度を上げる、などの使い方もある
2-3. ChatGPT Vision
- 高度なOCRやエラー文の理解に効果的
- 画面上に複雑な文章や多言語UIがあっても、自然言語で解析し、要約や座標情報を返す
- Windows上でPythonスクリプトを走らせて、HTTPリクエストで画像 + プロンプトを送信
- 応答をSikuliXスクリプトと連携し、操作フローを柔軟に分岐
3. Raspberry Pi Zero 2 W への操作指示
3-1. ネットワーク通信の実装
- Windows PCがクライアントとして「クリックしてください」「文字を入力してください」などをPi Zero 2 Wへ送る
- Pi Zero 2 Wはサーバー(HTTP, gRPC, etc.)として待ち受け、USB HID経由で別端末に入力をエミュレート
- HIDエミュレーションの具体的設定(ガジェットモードの有効化など)は別記事を参照
3-2. 操作フロー例
- WindowsのSikuliXがキャプチャ映像から「login_button.png」を見つける
-
POST /click
(x, y 座標)をPi Zeroへ送信 - Pi ZeroがUSB経由で別端末にマウス操作を実行
4. 実装サンプル(概念)
4-1. SikuliXスクリプト(Windows側)
# sikuli_main.py (Pythonモード)
from sikuli import *
import requests
API_URL = "http://raspberrypi-zero2w.local:5000" # Pi Zeroのサーバー
def click_on_image(img):
m = find(img)
center = m.getTarget()
x, y = center.x, center.y
# Pi Zeroへクリック指示
requests.post(f"{API_URL}/click", json={"x": x, "y": y})
# ログイン例
click_on_image("login_button.png")
type("username")
type(Key.TAB)
type("password")
click_on_image("submit_button.png")
-
find("login_button.png")
が画面内でボタン画像を検索 -
click_on_image()
関数でPi Zeroへ座標を送信し、USBマウス操作を代行
4-2. Pi Zero 2 W側 (別記事参照)
- FlaskやgRPCサーバーを起動し、
/click
などのAPIで操作指示を受け取り - pyusb等でUSB HIDに反映し、別端末にマウス/キーボード入力する
5. メリット & デメリット
5-1. メリット
-
SikuliXでの手軽な画像検索・操作
- GUI自動化が数行で実装可能
-
Windows環境の高い処理能力
- OpenCVやChatGPT Visionを組み合わせても処理が軽い
-
Pi Zero 2 WでUSB HID
- Windowsだけでは難しいUSBガジェットモードをPi Zeroが担当
-
余っているWindowsマシン活用
- 新たに高性能なRaspberry Piを買わなくてもOK
-
パススルー出力でモニターにも映像
- 手元で別端末の画面を直接見ながらデバッグできる
5-2. デメリット
-
ネットワーク通信の実装が必要
- Windows→Pi Zero間でHTTP/gRPCなど最低限の通信部分を自作
-
遅延
- HDMIキャプチャのフレーム遅れ + ネットワーク越しの指示 + USB HID適用、と多段遅延
-
セットアップ・検証手間
- Java環境やキャプチャドライバ、Pi ZeroでのHID設定など、初回の導入に時間がかかる
6. よくある質問(FAQ)
Q1. HIDエミュレーションの詳細はどうやるの?
A1. 別記事を参照してください。Raspberry Pi Zero 2 WでUSBマウス/キーボードをガジェットモードで有効化し、Pythonスクリプト等で入力イベントを送る方法が一般的です。
Q2. Windows PCだけでUSB HIDデバイス化できない?
A2. 基本的にWindowsはUSBホストとして動作するため、デバイス(ガジェットモード)側になるのは難しいです。よってPi Zeroのほうが現実的です。
Q3. HDMIキャプチャによる遅延はどのくらい?
A3. 製品によりますが1~数フレーム(16~100ms程度)。リアルタイム性が必要な操作には注意が必要です。
Q4. SikuliXだけでOCRも可能?
A4. はい、簡易OCRを内蔵しています。精度が足りない場合はOpenCV+TesseractやChatGPT Vision APIを検討してください。
Q5. MacやLinuxでも似た構成は可能?
A5. はい。HDMIキャプチャができれば同じアイデアで実装可能です。ここではWindows PCが余っているという想定です。
Q6. スマートフォンやタブレットを操作したい場合は?
A6. USBホスト/デバイスの対応や解像度の扱いなどで複雑になります。PCや機器向けの構成が一番スムーズです。
Q7. マウスのキャリブレーション方法やgRPCのAPI定義、ChatGPT Vision APIのプロンプト例は?
A7. これらも別記事で詳しく解説しています。座標の補正計算やメッセージ定義、自然言語プロンプトの書き方などを確認してください。
7. まとめ
-
Raspberry Pi Zero 2 W (HID) + Windows PC (SikuliX / OpenCV / ChatGPT Vision) の組み合わせで、
- 別端末の画面をHDMIキャプチャ(パススルーでモニターにも出力)
- Windowsで画像パターン検索/AI解析
-
Pi Zeroが仮想マウス/キーボードで別端末に操作入力
という分散構成が実現できます。
-
Windows PCを使うことで、SikuliXの簡単操作・OpenCVの高度解析・ChatGPT VisionのAI処理を軽快に回せるのが大きな利点です。
-
HIDエミュレーションに必要なUSBガジェットモードは、Pi Zero 2 Wが担当するため、Windowsでは難しいUSBデバイス化問題を回避できます。
余っているWindowsマシンのパワーを活かし、Pi ZeroをHIDエミュレーターとして組み合わせることで、多彩なUI自動化や遠隔操作が可能になります。ぜひお試しください!
参考リンク
- SikuliX公式サイト
- OpenCV公式サイト
- ChatGPT Vision (OpenAI公式)
- OBS Studio (WindowsでのHDMIキャプチャプレビューに便利)
-
Raspberry Pi Zero 2 W でのHIDエミュレーション
- 別記事参照
-
マウスキャリブレーション / gRPC API / ChatGPT Visionプロンプト例
- 別記事参照
以上