BA Barış Akın~/blog

·10 分で読めます·41 閲覧

壁埋め込みボックス用の ESP32 基板: 電力測定付きスマートコンセントと中性線あり/なしの 2 連 TRIAC スイッチ、KiCad と ESPHome のファイル

Ø60 の壁埋め込みボックスに入る非絶縁の ESP32-C3 基板。BL0937 で電力を測るリレー式コンセントモジュール、2 チャンネルの TRIAC 照明スイッチ、そしてランプ経由で給電する中性線なしのスイッチ。ESPHome で Home Assistant につながり、サーマルロックを備えています。KiCad プロジェクト、JLCPCB 向け Gerber/BOM/CPL、ESPHome の YAML をダウンロードできます。

壁埋め込みボックス用の ESP32 基板: 電力測定付きスマートコンセントと中性線あり/なしの 2 連 TRIAC スイッチ、KiCad と ESPHome のファイル

壁のコンセントと照明スイッチをスマート化するために、小さな基板を 2 枚設計しました。2 連スイッチには中性線なしのバージョンもあります。いずれも Ø60 の壁埋め込みボックスに入り、コンセントやスイッチの裏に収まります。いずれも ESP32-C3 で動き、ESPHome 経由で Home Assistant につながります。クラウドもアプリも不要です。

  • priz60: リレーモジュール。前にあるコンセントをオン/オフし、電流、電圧、電力、電力量を測定します。
  • anahtar2: リレーを使わない 2 チャンネルの照明スイッチ。ランプを TRIAC で駆動し、既存の 2 連壁スイッチはそのまま使えます。
  • anahtar2l: anahtar2 の中性線なしバージョン。スイッチボックスに中性線が来ていない建物向けで、基板はランプを通して自分に給電します。

KiCad プロジェクト、JLCPCB 向けの Gerber/BOM/CPL ファイル、ESPHome の設定は記事の最後からダウンロードできます。

priz60 (左) と anahtar2 (右) の上面 3D 表示: 中央に ESP32-C3-MINI-1、右側に電源、下に商用電源用の端子台

まず安全について

どの基板も非絶縁です。回路のグラウンド (GND) が商用電源につながっているので、ESP を含む基板上のすべての点が 230 V の電位になります。小さなサイズと低コストの代償です。絶縁電源は Ø60 のボックスに入りません。

  • 商用電源に接続している間は、基板に何もつながないでください。USB シリアル変換器も、オシロスコープのプローブも、パソコンもです。書き込みは商用電源を外した状態でテストポイント (TP1-TP6) から行います。その後の更新は Wi-Fi (OTA) で行います。
  • ケースは完全に絶縁性でなければなりません。外部への接続 (USB、センサー) はなく、あってはいけません。
  • 回路はブレーカーと 30 mA の漏電遮断器で保護されている必要があります。
  • 基板はまだ製造しておらず、試作品のテストもしていません。以下の数値はシミュレーションと計算によるものです。

商用電源を扱った経験がない場合は、これらの基板を設置しないでください。ファイルは設計を調べたり学んだりするために公開しています。

2 枚の基板の斜めからの 3D 表示: priz60 には HF32FV リレーと 4 極端子台、anahtar2 には BT136S TRIAC 2 個、X2 コンデンサ 2 個、6 極端子台

priz60: 電力測定付きリレー

端子台 (左から右): SW · N · L · O。L は商用電源から、O はコンセントへ、N は電源用に必要で、SW には壁スイッチをつなぎます。

L ── シャント 1 mΩ ── リレー COM → NO ── O (コンセント)
N ── F1 500 mA T ── バリスタ ── 10 Ω ── M7 ── π フィルタ (4.7µ / 1 mH / 4.7µ)
     → LNK306 降圧 → 5 V → AMS1117 → 3.3 V → ESP32-C3
  • リレー: Hongfa HF32FV-16 (16 A、5 V コイル)。コイルは 100 ms のあいだ定格電圧で吸着し、その後 20 kHz、50% の PWM で保持します。コイルの消費電力は 0.4 W から約 0.1 W に下がります。密閉されたボックスの中ではこの差が効きます。
  • 測定: BL0937。電流は 1 mΩ のシャントで、電圧は 4 × 470k / 1k の分圧で測ります。ESPHome の hlw8012 コンポーネント (model: BL0937) がそのまま読み取ります。
  • 電源: Power Integrations の LNK306 による降圧回路。基板の GND は L につながっていて、降圧回路は N から給電され、L に対して +5 V を作ります。
  • 壁スイッチ入力: SW → 2 × 100k (1206) → BAT54S クランプ → GPIO。スイッチが L 側に閉じると入力は LOW になります。普通のスイッチを切り替えるたびにリレーが反転します。

どれだけの電流を流せるか

リレーは 16 A 品ですが、基板はその電流を連続では流せません。簡単な差分法モデルで銅パターンの電流密度と発熱を見積もりました (周囲温度 40°C、2 oz 銅、リレー接点は 3/5/8 mΩ の 3 シナリオ)。最も熱くなるのはリレーの NO ピンです:

連続電流リレーピン (現実的なシナリオ)
8 A57°C
10 A67°C
12 A78°C
16 A108°C

つまりこの基板は連続で約 10 A までで、16 A は短時間だけです。2 kW のヒーターや洗濯機には十分ですが、3.5 kW のオーブンには向きません。

10 A における priz60 の温度分布: 最も熱いのはリレーの NO ピンと端子台へ向かう O パターンで、約 67°C

ソフトウェアによる保護

  • 電流が 16 A を超えるとリレーを解放します。
  • 基板上の NTC が 85°C を超えるとリレーを解放し、サーマルロックがかかります。ロックは停電しても残ります。ロック中は壁スイッチ、ボタン、Home Assistant のどこからもリレーをオンにできません。Home Assistant の「Termal kilidi aç」(サーマルロック解除) ボタンは、基板が 60°C 未満になったときだけロックを解除します。

anahtar2: 2 チャンネル TRIAC スイッチ

端子台: S1 · S2 · L · O1 · O2 · N。2 連の壁スイッチを S1 と S2 につなぎ、スイッチはそのまま残ります。ランプには O1 と O2 から給電します。このバージョンは中性線が必要です。

  • スイッチング: チャンネルごとに BT136S-600E TRIAC を 1 個 (TO-252、4 A / 600 V)。ランプ 1 個あたり最大 100 W で、その負荷で TRIAC の発熱は約 0.4 W です。リレーがないのでカチッという音も接点の摩耗もありません。
  • ゲート駆動: ESP → AO3400A → 330 Ω → ゲート。ゲート電流は約 12 mA で負方向 (TRIAC の第 2、第 3 象限) なので、N-MOSFET 1 個で足ります。
  • 内蔵バイパス: 各出力に O → 2 × 1k → 47 nF X2 → N。スイッチがオフのとき、LED ランプは TRIAC から漏れるわずかな電流でうっすら光ったりちらついたりします。バイパスはその電流に別の経路を作ります。別売りのバイパスモジュールは不要です。
  • 電源: priz60 と同じ部品ですが、ここでは LNK306 を負出力の昇降圧回路として使っています。L が回路の +5 V レールで、ESP の GND は L より 5 V 低くなります。TRIAC の MT1 を直接 L につなげるので、ゲート駆動が簡単になります。
  • 保護: L ラインに 2 A T ヒューズ、電源側に 500 mA T ヒューズと 275 VAC バリスタ。2 個の TRIAC の間に NTC があり、95°C を超えると両方のランプを消して、priz60 と同じようにサーマルロックがかかります (70°C 未満で解除)。

基板の裏面: priz60 では BL0937、シャント、LNK306 の周辺、anahtar2 ではヒューズ、バイパス抵抗、端子台の表記 (N, O2, O1, L, S2, S1)

anahtar2l: 中性線なしバージョン

古い建物では、スイッチボックスに中性線が来ていないことがよくあります。来ているのは活線とランプへの線だけです。anahtar2l はそのためのものです。端子台: S1 · S2 · L · O1 · O2 (6 番目は未使用)。考え方は Shelly 1L/2L と同じで、基板はランプを通して自分に給電します。

  • ランプ経由の給電: O1 と O2 を 2 個の M7 ダイオードでまとめ → 500 mA T ヒューズ → 10 Ω → π フィルタ → LNK306 昇降圧 (L に対して -3.9 V) → 470 µF ポリマーコンデンサ → ME6211 LDO → 3.3 V。ランプがオフのときは、基板が消費するわずかな電流がランプを通って流れます。
  • 給電ウィンドウ: ランプがオンで TRIAC が導通していると、基板には電圧が残りません。そのため 2 つのランプがオンのときは、チャンネル 1 を正の半周期ごとに 1.5 ms 遅らせて点弧し (charge_delay)、その間に基板が給電します。オンのランプが 1 つだけなら遅延はなく、オフのランプ側の経路から給電します。
  • ゼロクロス: O1 → 2 × 470k → 10k → IO7、BAT54S クランプ付き。ゲートをゼロクロスに合わせて駆動するために、ESPHome 用のコンポーネント (components/triac_nl) を書きました。ESP-IDF のハードウェアタイマーで 50 µs ごとに動き、TRIAC が消弧できるよう各ゼロクロスの 0.8 ms 前にゲートを放します。ゼロクロスが失われると両チャンネルともオフになります。
  • パルスゲート: ゲートは 150 Ω を通して約 18 mA で駆動しますが、点弧ウィンドウの間ずっとではなく、300 µs ごとに 100 µs のパルスを与えます。LED ドライバのせいで電流が TRIAC の保持電流を下回っても、次のパルスで再点弧します。平均ゲート電流は連続駆動の約 3 分の 1 で、ランプ経由で給電する基板ではこの差が効きます。
  • 設置条件: 各ランプの近く (天井のボックス) にバイパスを付ける必要があります。たとえば Shelly Bypass、または 47 nF X2 と 2 × 1k の直列です。バイパスがないと LED ランプはオフでもうっすら光り、基板の給電も弱くなります。ランプは少なくとも 1 つ必要で、ランプ 1 (O1) は常に接続しておく必要があります。ゼロクロスは O1 からしか取っていないので、ランプ 1 がないとどちらのチャンネルもオンにできません。ランプが 1 つだけの設置では O1 につなぎます。Home Assistant の「Sıfır geçiş」(ゼロクロス) 診断センサーでこの状態がわかります。

表面にはミーアキャットのロゴも入っています。

anahtar2l の表と裏: 表には TRIAC 2 個、6 極端子台、ミーアキャットのロゴ。裏には電源、ゼロクロス入力、「230V IZOLESIZ - NOTRSUZ」(230 V 非絶縁、中性線なし) の表記

基板設計

3 枚とも 2 層で、Ø60 の円形です。非絶縁なので「商用電源側 / 低電圧側」という一般的な区分はありませんが、商用電源の異なるノード同士には距離が必要です。KiCad のカスタムルールファイル (.kicad_dru) に 3 つのネットクラスを定義しました:

クラスネット最小クリアランス
HVN、O、S、降圧回路の入力2.5 mm
SWNLNK306 のスイッチングノード2.0 mm
HVCH直列抵抗チェーンの中間ノード1.5 mm

部品配置は Python スクリプト (scripts/place.py) で行いました。大電流の経路と商用電源の銅箔もスクリプトで描き (copper60.py、copper2t.py、copper2l.py)、残りの信号配線は自作の自動配線ツール fastroute がつなぎました。priz60 と anahtar2l では最後に、表と裏の GND 銅箔の島をビアで結合しています。3 枚とも KiCad の DRC でエラー 0、未接続パッド 0、ERC でエラー 0 です。

部品コスト (JLCPCB、2026 年 10 月の価格、基板と実装込み): priz60 は 5 枚で約 53 ドルに extended 部品の手数料 (17 × 3 ドル) が加わります。anahtar2 は 5 枚で 92 ドル、10 枚で 126 ドル、50 枚で 385 ドルです。

ESPHome

3 枚とも YAML を用意してあります。Wi-Fi の情報は secrets.yaml に書きます。最初の書き込みは商用電源を外した状態で、テストポイント TP1-TP6 (3V3、GND、TXD、RXD、IO9、EN) に USB シリアル変換器をつないで行います:

uvx esphome run priz60.yaml

Home Assistant では、priz60 はリレースイッチと、電流、電圧、電力、電力量、基板温度のセンサーとして表示されます。anahtar2 は 2 つのライト、2 つの壁スイッチ入力、TRIAC 温度として表示されます。どちらにも「Termal kilit」(サーマルロック) の状態と「Termal kilidi aç」ボタンがあります。priz60 では、最初の設置時に既知の負荷とマルチメータで BL0937 の係数を校正してください。

anahtar2l の YAML は隣に components/triac_nl フォルダが必要です (パッケージでは両方が一緒に入っています)。Home Assistant では anahtar2 と同じように表示され、さらに「Sıfır geçiş」(ゼロクロス) 診断センサーがあります。charge_delay、zero_cross_offset、ゲートパルスは YAML で設定します。

試作で確認すること

  1. LNK306 電源: 負荷時と Wi-Fi 動作時の出力電圧とリップル、SOURCE ピンの温度。測定は必ず絶縁トランス越しに行います。
  2. EMI: π フィルタで足りるかどうか。
  3. priz60: 密閉したボックス内で 10 A と 16 A を流し、リレーピンの温度を熱電対で測る試験。BL0937 の校正。
  4. anahtar2: 小さな LED ランプ (3-5 W) でのオフ時の発光とオン時のちらつき、100 W 負荷 2 つでの TRIAC 温度、LED ドライバの突入電流。
  5. anahtar2l: 2 つのランプがオンで Wi-Fi 動作中に 3.9 V レールが落ちないこと (必要なら charge_delay を増やす)。ゼロクロスの遅れをオシロスコープで測って調整すること。パルスゲートでさまざまな LED ランプでも TRIAC が毎半周期導通を保つこと。

ダウンロード

ファイル内容サイズ
priz60-kicad.zipKiCad 10 プロジェクト: 回路図、PCB、ルール、フットプリントと 3D モデル、回路図 PDF、Gerber/BOM/CPL、ESPHome YAML、配置と銅箔のスクリプト、熱シミュレーション3.5 MB
anahtar2-kicad.zipKiCad 10 プロジェクト: 回路図、PCB、ルール、フットプリントと 3D モデル、回路図 PDF、Gerber/BOM/CPL、ESPHome YAML、スクリプト3.5 MB
priz60-gerber.zipGerber + Excellon のみ。JLCPCB にそのままアップロードできます0.1 MB
anahtar2-gerber.zipGerber + Excellon のみ。JLCPCB にそのままアップロードできます0.1 MB
anahtar2l-kicad.zipKiCad 10 プロジェクト: 回路図、PCB、ルール、フットプリントと 3D モデル、回路図 PDF、Gerber/BOM/CPL、ESPHome YAML と triac_nl コンポーネント、スクリプト、ロゴ4.2 MB
anahtar2l-gerber.zipGerber + Excellon のみ。JLCPCB にそのままアップロードできます0.1 MB
priz-anahtar-esphome.zip3 枚の基板の ESPHome 設定、anahtar2l 用の triac_nl コンポーネント、セットアップメモ12 KB

JLCPCB 用の BOM と CPL ファイルは、各 KiCad パッケージの production/ フォルダにあります。実装プレビューで部品の向きを必ず確認してください。一部のパッケージでは KiCad と JLCPCB で 0° の定義が異なります。

プロジェクトファイル内のコメントと README はトルコ語です。

BA
Barış Akın

25年以上の経験を持つソフトウェアソリューションアーキテクト。FinTechと分散システム。OxiDB、Rill、Cobraの開発者。