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 アドレスは置き換えてください)

もう少し使い勝手にこだわりたい場合,Vue.js 等で簡単な Web アプリを書くのがおすすめです.

普段使っている rasp-shutter というアプリを github に上げています.

注意点

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

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

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

追記

レギュレータの出力に 100uF 程度のコンデンサを付けておいた方が良いようです.

付けないまま稼働していたところ,半年ほどで 2個あるうちの片方がリセットした後に反応が返ってこなくなってしまいました.部品を替えたりして色々調べたところ,レギュレータの出力にコンデンサを付けると正常動作するようになりました.

リセットからの復帰時の消費電流の急変に電源が追従できなくなっていたようです.

コメント

  1. 阿部 孝洋 より:

    興味深く拝見させていただきました。
    もう少し伺いたい事があるのですが、
    ご連絡を頂けませんでしょうか。
    宜しくお願い致します。

  2. 阿部 より:

    ご返信ありがとうございます。

    私どもは茨城県を拠点に手動窓シャッターの電動化を
    行なっている有限会社FDシステムという会社でございます。
    私は代表の阿部と申します。

    現状はメーカーからモーターなどの電動化キットを仕入れて工事まで行なっています。

    そこで、弊社オリジナルの電動シャッターキットの開発をしたいと思っております。
    ですが、電気系の知識が全くありません。

    色々とWeb上にて検索をしていましたところ、貴殿のページにたどり着きました。

    今後の商品開発等にお力添えを頂けないかと思い、ご連絡を致しました。

    貴殿がどのようなご職業なのかわからないまま、この様なご連絡、お願いを致しますのは大変失礼と存じますが、
    ご検討を頂けましたら幸甚です。
    宜しくお願いいたします。

    有限会社FDシステム 阿部
    abe@fdsystem.jp

    • kimata より:

      説明ありがとうございます.

      状況踏まえますと,まずはスイッチ基板を内製されるところから始めると良いと思います.その上で,スマホ対応を織り込んで行くのがスムーズに感じます.
      作業量的にそこそこになりますので,個人ではなく協力会社さんを探されるとよいと思います.

      • 阿部 より:

        承知致しました。
        御返答頂きありがとうございました。
        また何かありましたら宜しくお願い致します。

        • kimata より:

          お役に立てず,申し訳ありません.

          少し調べてみたら,スイッチ基板の製造元のソムフィが Connexoon Window RTS というものを出しているようですね.

          https://www.somfy.co.jp/home-automation/connexoon-window-rts

          うちの場合は,リモコン非対応の製品だったので改造しましたが,これから設置するのであればこれで十分ですね.

  3. アタ より:

    うちも全く同じリモコン非対応のスイッチ基盤なんですが、
    リモコン対応のシャッターも付いており、
    その赤外線リモコンでリモコン非対応のスイッチも操作できたら良いなと考えております。

    受光部はスイッチカバーを加工して外部に出せると思うのですが、
    基盤にどのような配線加工を行えば良いのか思案しています。

    技術的に可能だと思いますか?
    既存の赤外線リモコンの信号で動作を分けるなどは可能だと思いますか?
    宜しければアドバイス頂けると助かります。

    • kimata より:

      コメントありがとうございます.

      技術的には可能と思います.

      ESP32とかのマイコンに赤外線受信用のIF回路をくっつけてやって,信号受信時に制御するようにしてやれば良いかと思います.

  4. アタ より:

    ご回答ありがとうございます。

    各パーツへの配線場所や、
    裏面へ続く2本はどこにハンダされているのか教えて頂くことは可能でしょうか?
    実際の配線場所など、詳細はあえて記載していない感じでしょうか?
    電子に詳しいわけではないですが、自分なりに見様見真似でチャレンジしようと思います。
    まずはarduinoで既存リモコンの信号を判別をして、開閉停止の信号解析をしてから
    次のステップに進めたらと考えていますが、arduinoを利用する場合、
    どこからどのような信号を出せば良いのかアドバイス頂くことは可能でしょうか?

    • アタ より:

      失礼しました。文章で配線場所は記載せれておりますね。
      参考にさせて頂きます。
      基盤分解頁で記載されていた1mAを流せば0Vとできるという点が
      arduinoでどのように実現できるのか?アドバイス頂けますか?

  5. アタ より:

    何度もすみません。
    スイッチを分解してみたら全く構造が違うZ-02-GCJAで電源を確保できそうにありませんでした。

    下記が画像なのですが、
    これでもESP32などを動かすことは可能でしょうか?
    https://drive.google.com/file/d/1aHmszfkU1EPUsai6Q-4ZmmCCaZRCxLWw/view?usp=drive_link
    https://drive.google.com/file/d/1QayucC3llA_IOkwshRlxML6bQ1XjepNx/view?usp=drive_link
    https://drive.google.com/file/d/1DLISheKCo6yvDjMVU4Mv9gYb__mn2fOe/view?usp=drive_link

    HPの邪魔な様でした削除して下さい。

    • kimata より:

      はい.動かせると思います.コネクタ端子のどこかが5V電源になっているはずなので,そこから電源を取れば良いかと.