ESP32 で電動シャッターを自動制御

電動シャッターは便利なのですが,毎日手動で開け閉めするのがだんだん手間になってきたので,ESP32 を使って制御できるようにしてみました.

背景

スイッチ操作を自動化する方法として,次のようなアイテムが販売既に販売されていますが,リビング等に設置するにはやや見た目が気になります.

そこで,スイッチ内部に回路を追加することで,見た目を一切変えずに自動化を実現することにしました.

改造するのは,次のスイッチです.LIXIL の電動シャッター(イタリヤ 電動タイプPRS仕様)に付属しているものになります.

(実は写真は改造後に撮ったものです)

使用するのは ESP32 です.ESP32 は,単一電源で動作し,無線 LAN 接続もできるのでこのような用途にぴったりです.

必要な部品

AliExpress で入手するもの

ESP-WROOM-32

格安の WiFi 対応マイコンです.スイッチに内蔵するため,ESP32-DevKitC とかではなく,ESP-WROOM-32 を使います.

秋月でも買えますが,AliExpress だと送料考慮しても $3 以下で買えます.届くまでに日数かかるので,まとめ買いして在庫しておくのがお勧めです.


ESP32 test board ESP32-WROVER small batch burn fixture for ESP-32 module ESP-WROOM-32 ESP 32 module

ESP-WROOM-32 にソフトを書き込むための装置です.1 台手元にあると重宝します.


秋月電子 で入手するもの

三端子DC/DCレギュレータ 3.3V BP5293-33

小型の電源モジュールです.全体がモールドされているのでショートの心配が少なく,既存の装置の中に組み込みやすいのでお勧めです.


ソフト

最初に次の機能を実現する ESP32 のソフトを作って書き込んでおきます.

  • 無線 LAN に常時接続
  • HTTP 経由でコマンドを受け付け,指定された GPIO を一定期間 L 出力に制御
  • 無線 LAN 経由でのソフト書き換え対応 (将来のソフト修正に備える)

ソフト全体は,github に置いてあります.

個々の要素については次の記事で解説していますので,適宜参照してください.

回路

改造対象のスイッチ回路は,『LIXIL の電動シャッターのスイッチ構造』で分析しています.

これを踏まえ,回路は次のようにします.

  • スイッチ基板の15V電源ラインと三端子DC/DCレギュレータの電源入力を接続.
  • 三端子DC/DCレギュレータの 3.3V 出力と EPS32 の 3V3 および EN を接続.
  • ESP32 の GPIO をスイッチ基板にあるプッシュボタンの pull up 側に接続.
  • ESP32,三端子DC/DCレギュレータ,スイッチ基板の GND を接続.

この構成だと,ESP32 はあくまで,ボタンのプッシュを代行するだけなので安全ですし,ボタン操作も従来通り行えます.15V 電源ラインの接続ポイントは電解コンデンサの足がおすすめです.

次のような配置にすると,スイッチに綺麗に収まります.

なお,基板と基板の間の方が部品を置くスペースがありますが,100V ラインに近いので避けた方が良いと思います.

動作確認

ESP32 のアドレスにアクセスすると次の画面が表示されます.ボタンをクリックするとシャッタが動いてくれると思います.

自動制御

ESP32 のソフトでは API を定義しているので,あとはそれを叩くプログラムを書いてやればどこからでも自由に制御が行えます.

朝7時半にシャッターを開け,夕方5時に閉めたい場合,/etc/crontab に次のように設定をすれば OK です.(IP アドレスは置き換えてください)

注意点

シャッターとスイッチの組み合わせは変えずに改造する必要があります.

電動シャッターのスイッチにシャッターの上下限位置が記憶されているためです.サイズが異なるシャッターと入れ替えてしまうと,シャッターを下げたときに誤って異常検知してしまいます.

LIXIL の標準のスイッチ(Z-02-GCJA)だと,リセット方法も公開されていますが,今回の改造対象の Z-02-GCSP というスイッチの場合はその方法ではリセットできないようです.