Raspberry Pi Pico Wで作るMatter対応スマートプラグ:Thread/BLE/CLA併用で相互運用性確保
部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Raspberry Pi Pico W(RP2040 + CYW43439) | 1 | Wi-Fi 2.4GHz / BLE 5.2 対応 |
| HLW8032 電力計測IC | 1 | 電圧/電流/有効電力/力率/積算電力量測定 |
| リレー(16A/250VAC、ローコイル駆動) | 1 | 負荷ON/OFF制御 |
| DC-DCバックコンバータ(5V→3.3V、高効率) | 1 | Pico W + ペリフェラル給電 |
| タクトスイッチ(ペアリング/リセット用) | 1 | フロントパネル露出 |
| RGB LED(WS2812B または 3色別個) | 1 | Matterステータス表示(緑=オン、青=ペアリング、赤=エラー) |
| Varistor (MOV) + X2コンデンサ | 1セット | サージ/ノイズ対策(ACライン) |
| 難燃性プラグイン筐体(UL94 V-0) | 1 | コンセント直挿し型 |
| ACプラグ/ソケット(一体成型または端子台) | 1 | 地域仕様(JP/US/EU)に合わせ選定 |
開発環境・SDK・ライブラリ
- Matter SDK:connectedhomeip(v1.2以降推奨)
- Pico SDK:pico-sdk(C/C++ネイティブ開発)
- FreeRTOS:Matterスタック動作用(Pico SDK統合版)
- mbedTLS:暗号化/証明書管理(Matter SDK同梱)
- 開発ツール:VS Code + CMake + Ninja + OpenOCD(デバッグ)、または
piotool - 認証ツール:
chip-tool(コミッショニング/クラスタ操作)、chip-cert(証明書生成)
プロジェクト概要
Raspberry Pi Pico WをメインMCUとし、Matter 1.2/1.3仕様に準拠したスマートプラグを開発します。Matterの最大の利点は「マルチエコシステム相互運用性」:Apple HomeKit、Google Home、Amazon Alexa、Samsung SmartThings、Home Assistant等、主要プラットフォーム全てでネイティブ対応可能になります。Thread/BLE/Wi-Fiの複数トランスポートを併用し、コミッショニング(初期設定)はBLE、運用通信はWi-Fi(またはThread Border Router経由でThread)というハイブリッド構成を実装します。
対応Matterクラスタ・機能
| クラスタ | 機能 | 必須/任意 |
|---|---|---|
| OnOff (0x0006) | リレーON/OFF、ステータス報告 | 必須 |
| Electrical Power Measurement (0x0090) | 電圧、電流、有効電力、視在電力、力率、周波数 | 任意(推奨) |
| Electrical Energy Measurement (0x0091) | 積算電力量(Wh)、リセット機能 | 任意(推奨) |
| Power Source (0x002F) | 電源種別(AC主電源)、バッテリなし報告 | 必須 |
| Device Energy Management (0x0092) | 電力制限、ピークシフト制御(将来拡張) | 任意 |
| Descriptor (0x001D) | デバイスタイプ、機能リスト、部品リスト | 必須 |
| Basic Information (0x0028) | ベンダー名、製品名、ハードウェア/ソフトウェアバージョン、固有ID | 必須 |
| OTA Software Update (0x0019) | ファームウェア無線更新(Matter OTAプロバイダ対応) | 必須 |
| Wi-Fi Network Diagnostics (0x0033) | RSSI、再接続回数、パケット損失率 | 任意 |
| Thread Network Diagnostics (0x0034) | Thread接続品質指標(Thread使用時) | 任意 |
ハードウェア設計のポイント
電力計測:HLW8032
- UARTインターフェース(4800bps、パリティ偶数)でPico WのUART0/1に接続
- 外部シャント抵抗(1mΩ級)で電流検出、分圧抵抗で電圧検出
- 校正手順:既知負荷(白熱電球等)で電圧/電流/電力のゲイン調整
- サンプリングレート:約2Hz、RMS演算内蔵で高精度
- アイソレーション:HLW8032は非絶縁ICのため、MCU側は電源/信号ともにアイソレート必須(フォトカプラまたはデジタルアイソレータISO7741等)。本設計ではPico W側を「高電圧側基準」とし、USB/プログラミングインターフェースを物理分離するか、アイソレート付きプローブ使用で対応。
電源系:安全・効率・待機電力
- AC-DC:非絶縁バックコンバータ(BP5001等)または絶縁フライバック(LD5750等)で5V生成
- DC-DC:5V→3.3V、軽負荷効率重視(HT7833等LDO、またはMP2307等同期整流DC-DC)
- 待機電力目標:< 0.3W(Matter認証要件参考)
- MOV(バリスタ)でサージ吸収、X2コンデンサでコモンモードノイズ抑制
- ヒューズ(1A タイムラグ)をL線直列に配置
リレー駆動
- ローコイル電流(<10mA)のリレーを選定、Pico W GPIO(3.3V)でトランジスタ経由駆動
- フライホイールダイオード必須、スナバ回路(RC)でアーク抑制
- フェイルセーフ(通電でON)かフェイルセキュア(通電でOFF)か用途で選定。スマートプラグは通常フェイルセーフ
アンテナ・無線性能
- Pico Wオンボードアンテナ使用(基板エッジ配置、金属部品離隔)
- 金属筐体不可、プラスチック筐体でも厚み・誘電率で特性変化。実装後TRP/TIS測定推奨
- BLEコミッショニング用に近距離通信確保、Wi-Fi運用時はAPからのRSSI > -65dBm確保
ソフトウェアアーキテクチャ(Matter SDK on Pico W)
ビルドシステム構成
# CMakeLists.txt 抜粋
cmake_minimum_required(VERSION 3.13)
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)
project(pico_matter_smartplug C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
# Matter SDK をサブモジュールまたは外部参照で取り込み
add_subdirectory(${MATTER_SDK_PATH} matter_sdk)
# アプリケーション
add_executable(pico_matter_smartplug
src/main.cpp
src/app_task.cpp
src/hlw8032_driver.cpp
src/rgb_led.cpp
src/button_handler.cpp
src/power_monitor.cpp
src/ota_handler.cpp
)
target_link_libraries(pico_matter_smartplug PRIVATE
pico_stdlib
pico_cyw43_arch_lwip_threadsafe_background
pico_multicore
Matter::Matter
Matter::Platform
Matter::Crypto
Matter::Controllers
# 必要なクラスタライブラリ
Matter::Clusters::OnOff
Matter::Clusters::ElectricalPowerMeasurement
Matter::Clusters::ElectricalEnergyMeasurement
Matter::Clusters::PowerSource
Matter::Clusters::Descriptor
Matter::Clusters::BasicInformation
Matter::Clusters::OTASoftwareUpdate
)
pico_enable_stdio_usb(pico_matter_smartplug 1)
pico_enable_stdio_uart(pico_matter_smartplug 0)
pico_add_extra_outputs(pico_matter_smartplug)
メインタスク構成(FreeRTOSタスク)
- App Task (Core 0):Matterスタックイベントループ、クラスタ属性更新、コミッショニング処理、OTA処理
- Network Task (Core 0, cyw43 arch内部):Wi-Fi/BLEスタック、LwIP
- Sensor Task (Core 1):HLW8032 UART読取 → 電力パラメータ計算 → Matter属性更新(
ElectricalPowerMeasurementクラスタ) → 積算電力量累積(ElectricalEnergyMeasurement) → 閾値チェック(過電流/過電力アラート) - UI Task (Core 1):ボタン割り込み処理(長押し=ペアリングモード、短押し=トグル)、RGB LEDステータスマシン駆動
主要実装ファイル概要
main.cpp:ハードウェア初期化、FreeRTOSタスク生成、Matterスタック初期化(Matter::DeviceLayer::PlatformMgr().StartEventLoopTask())app_task.cpp:AppTaskクラス、Matterイベントハンドラ(OnDeviceEvent、OnPlatformEvent)、属性変更コールバック(OnAttributeChangeでOnOff制御受信→リレー駆動)hlw8032_driver.cpp:UARTパーサー、校正パラメータ管理、定期読取タスク、Matter属性への書込み(DataModel::WriteAttribute)power_monitor.cpp:積算電力量計算(Wh = Σ(W × Δt/3600))、フラッシュ/ RTCメモリへの定期保存(電源断対策)、リセットコマンド処理rgb_led.cpp:MatterステータスLEDパターン実装(仕様書Section 5.10準拠)button_handler.cpp:ボタンデバウンス、長押し検出、アクション割当(工場出荷リセット、ペアリングモード、ローカルトグル)ota_handler.cpp:Matter OTAイメージ検証・適用・ロールバック、ベンダー固有メタデータ対応
Matterコミッショニング・運用フロー
- 工場出荷時:デバイスは「未コミッション」状態、BLEアドバタイズ開始(
_Matter._cサービス) - ユーザー操作:ボタン長押し(3秒)でペアリングモード明示、RGB LED青点滅
- コミッショナー(スマホアプリ):QRコード/マニュアルコードスキャン → BLEでPASEセッション確立 → SPAKE2+認証 → CASEセッション確立 → アクセス制御リスト(ACL)書込み → Wi-Fi認証情報受信 → Wi-Fi接続 → Threadネットワーク参加(Border Routerある場合) → 動作開始
- 運用中:Wi-FiでMatterメッセージ交換(TCP 5540ポート)、定期電力レポート(属性通知/サブスクリプション)、OTAチェック
- リセット:ボタン超長押し(10秒)で工場出荷リセット、全資格情報消去、BLEアドバタイズ再開
セキュリティ・認証
- Device Attestation Certificate (DAC):製造時にベンダーが発行、Matterルート証明書チェーンで検証可能
- Product Attestation Intermediate (PAI):製品ロット単位の中間証明書
- 運用時証明書 (NOC/ICAC):コミッショニング時に生成、デバイス固有
- 暗号化:全MatterメッセージはAES-CCM-128で暗号化、CASEセッション鍵で保護
- セキュアブート/フラッシュ暗号化:RP2040対応(OTP鍵焼き込み、
picotoolで設定) - Matter認証取得:Connectivity Standards Alliance (CSA) 認定テストラボで相互運用性試験合格必須(商用製品の場合)
テスト・検証項目
| カテゴリ | テスト項目 | 合格基準 |
|---|---|---|
| 機能 | OnOff制御(アプリ/音声/自動化) | 応答 < 200ms、状態同期 < 1s |
| 計測 | 電力計測精度(抵抗負荷/誘導負荷) | 電力 ±2%、電流 ±3%、電圧 ±1%(IEC 62053-21準拠目標) |
| 積算 | 積算電力量リセット/継続性 | 電源断後も誤差 < 0.5Wh |
| 無線 | Wi-Fi/スループット/再接続 | RSSI -65dBm以上で切断なし、再接続 < 5s |
| 相互運用 | 主要5プラットフォームでのコミッショニング/制御 | 全プラットフォームで基本操作成功 |
| OTA | ファームウェア更新(正常/失敗/ロールバック) | 更新成功率 100%、ロールバック自動 |
| 安全 | 過電流/過熱/サージ耐量 | IEC 60884-1, UL 498A準拠 |
| 消費電力 | 待機電力、動作電力 | 待機 < 0.3W、動作 < 1W(リレー含む) |
コスト試算(小ロット・部品単価概算)
| 部品 | 単価(USD) | 備考 |
|---|---|---|
| Raspberry Pi Pico W | $6.00 | 公式価格 |
| HLW8032 + シャント/分圧網 | $1.20 | |
| リレー 16A (松下/松下系) | $0.80 | |
| DC-DC / LDO / 保護部品 | $0.60 | |
| RGB LED / スイッチ / 筐体 / 端子 | $1.50 | |
| PCB製造・実装(100枚ロット) | $2.00 | |
| 小計 (BOM + 製造) | $12.10 | |
| 認証費用分担(Matter/CSA/地域認証) | $3-5 | 数量で按分 |
| 推定製品コスト | $15-17 | 小売想定 $25-35 |
まとめと展望
Raspberry Pi Pico Wは、RP2040のデュアルコアCortex-M0+(133MHz)とCYW43439 Wi-Fi/BLEコンボチップを組み合わせ、約6ドルという破格の価格でMatterデバイス開発プラットフォームを提供します。本プロジェクトでは、電力計測IC(HLW8032)とリレーを最小限の外付け部品で接続し、Matter必須クラスタに加え、電力計測・積算クラスタを実装することで、実用的なスマートプラグとしての完成度を高めています。
技術的ハイライト:
- デュアルコア活用:Core 0でネットワーク/Matterスタック、Core 1でリアルタイム電力計測・UI制御を分離、相互干渉排除
- ハイブリッドトランスポート:BLEコミッショニング → Wi-Fi運用、Thread Border Router検出時はThread移行対応設計
- OTA対応:Matter標準OTAプロバイダ対応、ベンダー独自メタデータ(校正データ保持等)対応
- 安全設計:非絶縁電力計測ICのアイソレーション、サージ/ノイズ対策、難燃筐体、フェイルセーフリレー
今後の拡張:
- Matter 1.3のデバイスエネルギー管理(DEM)クラスタ対応で、デマンドレスポンス/ピークシフト自動制御
- Threadエンドデバイスとしての動作最適化(Wi-Fi無効化で更なる低消費電力化)
- Matter Bridge機能追加で、非Matterセンサ(BLE/Zigbee)をMatter網に統合
- RP2350 (Pico 2) 対応:Cortex-M33 + RISC-Vデュアルコア、ハードウェアセキュリティ拡張、PSRAM対応でより高度なエッジ処理可能
Matterは「統一標準」として急速に普及しつつあります。Pico Wのような低コストMCUで参照実装レベルのデバイスが作れることは、ホビイストから中小メーカーまで、Matterエコシステム参入のハードルを大きく下げます。本プロジェクトがその一助となれば幸いです。
製造プロセス
- Raspberry PiとAS3935で落雷検知: 実践ガイド
- Raspberry Piフィットネストラッカーでハムスターの日々の運動量を追跡
- IoTとMQTT入門:コード不要のESP8266チュートリアル
- ArduinoとRaspberry Pi 2のI2C連携でIoTセンサープロジェクトを実現
- コンセプトから現実へ:創造的デザインを具体的な製品に変える
- CNC複合旋削フライス加工(ミルターン)のメリットを探る
- 画期的DNAストレージが日常物を耐久データアーカイブに変換
- 人間中心のサプライチェーン変革:効率とレジリエンスを両立
- スマート旋盤:精密加工のための先進タッチスクリーン制御
- 春のコンプレッサーメンテナンスでピーク効率を維持
- OmniFibers:呼吸を調整しパフォーマンスと回復を支援するスマートファブリック