Video
About this Project
本プロジェクトは、Ubuntu PCにESP32-C6を統合し、最新のスマートホーム規格「Matter」に対応させる試みです。 PCの電源状態を他の家電と同様にシームレスに管理・操作できるようにすることを目指しています。
Specification
1. プロジェクト概要
ESP32-C6マイコンとMatterプロトコルを使い、PCの電源をスマートホームから遠隔操作することを目指したプロジェクト。フォトカプラ(光絶縁素子)でマザーボードのPWR_SWピンを制御する構成。
使用技術・部品
- ESP32-C6-GEEK(Waveshare)/ ESP32-C6(THARED、1.47" LCD搭載)
- Matter プロトコル(ESP-IDF + esp-matter SDK)
- chip-tool(Matterコマンドラインツール)
- Hailege PC817 2chフォトカプラ基板(マザーボードとの電気絶縁)
- mDNS / IPv6(Matter over IP 接続)
- NVS(Non-Volatile Storage、WiFi認証情報の保存)
- FreeRTOS(ボタン長押し検知タスク)
経緯
① 基本設計と初期実装 PCの電源制御はプッシュボタンにより、PWR_SWを短絡することで制御している。この制御をESP32のGPIOでフォトカプラを駆動し、プッシュボタンと同等に制御を行う事こととする。 Matterの OnOffPlugInUnit エンドポイントを作成し、chip-toolから onoff toggle コマンドで制御できる構成を実装する。WiFi認証情報はNVSに保存し、起動時に自動接続。LCDには接続状態・IP・PC電源状態を表示する。
② フォトカプラのアクティブHIGH/LOWの扱い Hailege PC817基板はアクティブLOWの設計(GPIO LOW → LEDオン → スイッチ短絡)だったが、当初ファームウェアがアクティブHIGHを前提にしていた。これを検証・修正。Matterのコールバック PRE_UPDATE が正しく発火していることをログ(3秒ブロッキング遅延)で確認した。
③ GEEK基板のGPIO不良発覚 GPIO 10/11(H2コネクタ)がテスターで常時0V・変化なしと判明。要因は不明であり、利用を断念した。
④ THAREDボードに切り替え 別のESP32-C6ボード(THARED製、LCD・SDカード搭載)を入手。GPIO 3でブリンクテストを実施し、0V↔3.3Vの正常出力を確認。GPIO_PWR_SWをGPIO 3、GPIO_PWR_LEDをGPIO 4に変更。
⑤ フォトカプラのLED常時点灯問題 ファームウェアとMatterコールバックは動作していたが(ログで Pressing power button 確認済み)、フォトカプラのLEDが待機中も常時点灯。LCDでのGPIOの使用の推測、抵抗の不一致、配線ミスなどが重なり、当方では対処困難と判断。同時に基板自体も繰り返しのハンダにより損傷の可能性があると考え、フォトカプラ制御は断念することとした。
中止の判断
- 電気的なリスク(マザーボードへの誤信号)が大きい
- 問題の解決には電子回路のスキルが必要
- 資材・機材などが不足
まとめ・得られた知見
| 項目 | 結果 |
|---|---|
| Matterコミッショニング | ✅ 成功 |
| chip-toolからのコマンド受信 | ✅ 成功 |
| GPIO出力(THARED GPIO 3) | ✅ 動作確認 |
| LCD表示 | ✅ 動作確認 |
| フォトカプラ制御 | ❌ 未完(VCC電圧不一致) |
| PC電源制御 | ❌ 未達成 |
ファームウェアはMatterコミッショニングが重要なポイントであり、その他は安易な機能で十分であった事を見込んでいましたが、 実際にはフォトカプラの電気的特性やGPIOの物理的な接続問題など、ハードウェア周りの課題が発生し、当方では対応困難(リスクあり)と判断しました。
2. 筐体・設置仕様
Parts list
3. アーキテクチャ確認事項
- BIOS/UEFI設定: PCのシャットダウン状態でもESP32-C6が信号を待ち受けるためには、マザーボードの給電設定(BIOS/UEFI)が必要です。特に「ErP Ready」をDisabledにし、シャットダウン中もUSB給電を維持する設定が必要です。
- USB給電: PCがオフの時もUSBポートに給電され続けている必要があります。前述のErP設定に加え、「USB Standby Power」等の項目が有効であることを確認してください。
- 物理コネクタの適合性(重要): ESP32-C6-GEEKの画像を見ると、側面のGPIO(GP0, GP10等)は一般的なピンヘッダではなく、**小型のJST規格コネクタ(おそらくSH 1.0mmピッチ等)**になっています 。 一般的なデュポンケーブル(ブレッドボード用ワイヤ)は直接刺さりません。GEEKに付属している専用の「コネクタ付きケーブル」があるいは、そのコネクタから通常の配線へ変換する準備が必要です。
- 電源ボタンの「押し時間」の定義 : ソースには「電源ON/OFFトリガー」とあるが、プログラム側で「何秒間スイッチを短絡させるか」のロジックが必要です