【DIY】ESP32と有接点リレーで挑む!自動散水&環境モニタリング制御盤を作ってみよう!②.5 シーケンス図作成編

シーケンス図を書いてみよう!

シーケンスってそもそも何なのかから始まるんですけどね。

自動散水&環境モニタリング制御盤をESP32と有接点リレーで作成してやろう!と意気込んで、自分が今からやろうとしていることは「シーケンス制御」です。

「機械や装置を」、「あらかじめ定められた順序や条件に従って」、「段階的に」「動作させる」制御方法のことをシーケンス制御といいます。

前回までの記事を振り返ってもらうとわかると思いますが、「散水」という作業を「自動化」しようとしているわけです。しかも「条件」に従って。
まさにシーケンス制御をする(させる)ための設計を今やっている最中なわけです。

そして、その機械や装置を、電気を使ってどのように動かすかの仕組みを作ろうとしています。
その仕組みを共通の記号などの組み合わせで示したものが「シーケンス図」ということになります。

シーケンス図を書く際に、誰が見ても分かるようにルールにのっとって同じ記号を使って作成します。
「誰が見ても分かるように」…ちょっと語弊があるかもしれませんね。
…残念ながら、勉強したりして覚えた人にしかわかりません…

でも、あまり心配しなくてもいいです。
たぶん、今回やろうとしている程度なら、そんなに時間がかからずに、読めたりかけたりします。

自分はシーケンス制御の本とか、覚えたくてたくさん買いましたが、どの本を見てもだいたい同じことしか書いていません。

それはなぜか。…ルール、制御方法はそう多くはないからです。
英語の「文法」のようなものです。構文自体はそんなに多くないですよね。
文法の本は分厚いものも多くありますが、言ってみれば「例文」が多く載っているだけで、根幹部分は少ないんです。英文法そのものは30個もないはずです。

シーケンス制御も構文のようなもので、決まった形やルールを覚えると、あとはどんな機器を使うかなどの枝葉がつくだけで、基本の制御回路自体は基本回路と呼ばれるものが3つ。応用回路といわれるのが7つくらいでしょうか。

そう考えると、なんだかできそうな気がしませんか?

今回作成しようとしている制御を参考に、順に覚えていきましょう。

シーケンス図を見てみよう。

我々は「盤屋さん」ではないので、極端に言うとシーケンス図そのものも「自分がわかればいい」とも言えます。(無責任な言い方でごめんなさい…)

ざっくりわかっていれば、何とかなるものです。(思い込みかな…)

この記号は何を意味しているのかが分かればなんとなく見えてくるものです。
焦る必要はなくて、なんでもそうですが、触れている時間が多くなればそれは必然的に身についていくものです。

幸い、今やっているのは仕事ではありませんし、多少時間がかかったって誰も文句を言いません。
自分のペースでやっていけばいいのです。何も気負う必要はないのです。

とはいえ、やはり「ルール」があるので触れておきますね。

シーケンス図を書くときのルール
  • 制御電源母線は図の上下に横線で示すか図の左右に縦線で書く
  • 制御機器を結ぶ接続線は、上下の制御母線の間にまっすぐ縦にひく。左右の制御母線の場合は横にまっすぐ引く
  • 接続線は動作の順に、制御母線が上下なら左から右へ、制御母線が左右ならは上から下へ書く
  • 制御機器は休止状態でしかもすべての電源を切り離した状態で書く
  • 開閉接点を有する制御機器は、機械的関連を省略し、接点、コイルなどで表現し、各接続線に分離して示す
  • 制御機器の離れ離れになった各部分には、その制御機器名を示す文字記号を添え書き、その所属や関連を明らかにする

と、こんなふうに決められています。

シーケンス図の例

この例をもとに説明しますと、上と下の横線は制御母線になります。上が「+」で下が「-」ですね。
電気は流れていますので、上から下に電気が流れているとしてください。

真ん中に注目してもらうと、L1はランプを示しています。
上にR-bという接点があって、これは左のR(リレー)のb接点であるということです。

左のBSは押しボタンスイッチを意味していて、今はつながっていないです。
これが押されると電気が流れる道ができて、+からーへと電気が流れます。

真ん中のL1(ランプ)は上のR-b(リレーのb接点)が閉じているので、最初から電気が流れる道ができていて、ランプがついているんだなとわかります。

左のSBを押すとR(リレー)は励磁され、真ん中のR-bが開きます。すると、さっきまであった電気の通り道が遮断(分断)され電気が流れなくなります。したがってL1(ランプ)は消灯します。

一方、右のR-m(リレーのa接点…mはmake接点の頭文字)は左のR(リレー)が励磁することによって閉じますので、電気の通り道ができてL2(ランプ)は点灯します。

と、こんなふうに読み取ることができます。

これが「シーケンス図」です。

何だか知らない言葉が…という方もいると思いますので、別の記事で部品などを紹介しようと思っています。(…準備できましたら紹介しますね…)

シーケンス図を書いてみよう!

前回の記事、 「3.【動作ロジック】2系統自動散水の回路」をもとに、これから図を書いていきたいと思います。

電圧の大きさによって「ブロック分け」したのを覚えていますか?

100Vの電源を使う部分、24Vで制御対象を動作させるための電源、頭脳を動かす制御用の電源といったように分けました。

でも、シーケンス図を書くのは全体ではありません。
回路の性質(配電・動力・マイコン制御)に合わせて、それぞれ適切な図面種別(単線図、シーケンス図、ブロック図・フローチャート)を使い分けるのがの正しいアプローチです。

配電系統や電源周りは、論理の展開を示すシーケンス図ではなく、単線図や配線図・結線図で表します。
パワーリレーや電磁弁、スイッチなどの有接点回路が主となる24V動力・制御部分は、シーケンス図で表現・設計するものになります。
ESP32やセンサー類が関わる制御部分は、シーケンス図ではなくシステムブロック図やフローチャート、またはハードウェア回路図で表す領域になります。

作図の分類
  1. 線図や配線図・結線図 
    • 配電系統や電源周り
  2. シーケンス図
    • 24V動力・制御部分パワーリレーや電磁弁、スイッチなどの有接点回路が主となる24V動力・制御部分
  3. システムブロック図やフローチャート、またはハードウェア回路図
    • ESP32やセンサー類が関わる制御部分

ということは、シーケンス図に書き起こす必要があるのは「24Vの電源界隈」ということになりそうですね。

ちょっと長い話になるので…

24Ⅴ動力やパワーリレーを使って制御していく必要がある部分を書き出してみます。
実際にはそこをシーケンス図として書きだしていくのがここからの目的になります。

まず、一旦、前回記事の「⏱️ 2系統順次散水の動作フロー」を確認してみましょう。
もう少し詳しく中身を見ながら、どんな部品が欲しくて、何の電源で動かすべき内容なのかを分類していこうかなと思います。

例えば、動作を開始することを決める「トリガー」の部分は、

  • トリガー条件: どうなったら散水するか
    • 「毎日設定した時刻(例: 朝6:00)」かつ「外気温 ≧ 25℃」かつ「土壌湿度が乾燥状態」。

というように考えていました。

表にするとこんな感じですね。

条件分類検知方法
毎日設定した時間時間時計、プログラム
外気温 ≧ 25℃気温温度センサー
土壌湿度が乾燥状態土壌湿度土壌湿度センサー

と、このような条件がすべてそろっていることが「動作開始のひきがね」となっていて、それぞれがどんな検知方法、何を使って検知するかが予測・計画できます。

そうすると、この表の検知方法に入力されているものが必然的に必要な部品として分かります。

こうして「検知した情報」を使って「条件が成立しているか」を判断し、機器に指令を出す作業を担うのが「頭脳」として紹介してきた「ESP32(マイコン)」ということになります。

そして、最終的には「ソレノイドバルブ」が動作して、水を出したり止めたりするわけです。

こうやって「動き」を細分化していって、必要になりそうな部品をピックアップしていきます。
部品単体では動きませんので、どのように電気信号を伝えるか、そういったことも含めて、地味ですが、制御部分、動作部分とどんどん積み上げていくわけです。

また、この情報からわかるのは、ESP32と各センサーは確実に接続されるということです。

ESP32も電源がないと動きませんので、必然的に「電源」につながっている必要があります。
電源は家庭用の100Vを主電源として、制御盤に引き入れますが、ESP32は5Vで動作するマイコンですので、100V電源のままでは使用できません。ここも必然的に5Vまで電圧を下げるための何らかの機器が必要になってきます。

電源をどうするかを考えるのは、上記の緑の枠「作図の分類」でまとめた「1」の部分になります。

電気の使いかたは回路ごとに3種類に分けました。

AC100V、DC24V、DC5Vを確保できるような設計をしていこうと思います。

まだ確定ではありませんが、電源はなんとなくこんな感じにしようかなと思ってます。

  • 商用電源(一般100V電源)から安全ブレーカーにコンセント経由で電源を引き込み
  • ブレーカーの二次側のLからヒューズを経由して端子台のAC100V(L)に入れる
  • 端子台を経由してAC-DCのパワーサプライに給電しAC100VからDC24Vに変換
  • DC24Vは端子台を経由してDC-DCコンバーターに給電しDC24VからDC5Vに降圧

これですべての電源確保ができることになります。

電圧の前にAC、DCというアルファベットが入っていますが、別の記事で紹介していこうと思います。


さて、電源の次は制御と動作の部分に取り掛かっていきましょう。

「制御と動作」はそれぞれ別の電圧で動くことになりますが、なぜ「制御」と「動作」を一緒にしているかというと、ここでいう「制御」はスイッチやリレーなどの有接点回路を使った物理的な制御によって電磁弁を動かしていくというもの。
それらの動作に命令を出す「頭脳(ESP32)」による「制御」各機器への電子信号が不可欠です。

まずはそのつながりを可視化したほうがわかりやすいかなと思ったからです。

この部分は上記の緑の枠「作図の分類」でまとめた「2」の部分になります。
24V動力・制御部分パワーリレーや電磁弁、スイッチなどの有接点回路が主となる24V動力・制御部分は
「制御回路図(シーケンス・リレー回路図)」として表す必要があります。

自動散水と手動散水の切り替え+運転しない(OFF)の機能は確実に欲しいですね。
また、2系統に対して散水しますが、水は水道水からの供給にしますので分岐して同時に散水しようとすると水圧が不足することが考えられますので、1系統ずつ散水することにします。
また、決まった時間に散水をスタートし、決まった時間散水して動作を完了する仕組みや、土壌に十分な水分がある場合は散水しない仕組みも欲しいです。

制御にかかる部分を、前回同様、要素ごとに分類しながらみていきましょう。

項目必要な機能必要な機器
主動作自動、手動、OFFの切り替え3ノッチ切り替えスイッチ
系統選択第1系統、第2系統、停止(OFF)の切り替え3ノッチ切り替えスイッチ
散水第1系統用散水バルブの開閉ソレノイドバルブ
第2系統用散水バルブの開閉ソレノイドバルブ
手動散水開始開始用押しボタン
終了(停止)停止用押しボタン
動作の確認何の動作をしているかの表示表示ランプ※
管理・指示情報の収集・管理・機器への指示命令ESP32
外気温と湿度の測定温湿度センサー
土壌湿度の確認土壌湿度センサー
etc…

このようにして徐々に必要部品を選定していきます。
※実際の部品選定の際は、機能の詳細や定格電圧・電流(どれぐらいの電圧や電流で動作するのか)など、確認しながら実際の部品を選定していきます。

ここでのポイントは、自分が必要な機能を満たす部品(スイッチやリレーのコイル)の接点、補助接点をどのように連動して動かすかという「論理の命令系統」を集約し図式化して理解、検証をしやすくすることです。

制御設計

主動作:3ノッチスイッチ

【モードの切り替え】
  • AUTO(自動)   : ESP32による制御
  • OFF(停止)    : 全停止
  • MANUAL(手動) : ESP32をバイパス

MANUAL(手動)モードで動作させる場合はESP32の制御下から外そうとおもいます。
これは、万が一ESP32(マイコン)の機能が失われても、MANUAL(手動)回路が別の回路によって動作をすることができるようにするためです。(SW1)

系統選択:3ノッチスイッチ

【モードの切り替え】
  • ZONE1  : 第1系統への散水
  • OFF    : どちらにも散水しない
  • ZONE2  : 第2系統への散水

切り替えで散水方向を決定するために3ノッチのスイッチを使います。
どちらにも散水しないという選択肢も加えておきます。(SW2)

MANUAL(手動)モードでの散水

  • 動作の流れとして、主動作切り替えスイッチ(SW1)でMANUAL(手動)が選択されている状態
  • 散水方向が系統選択スイッチ(SW2)で選択されている状態

この2つが成立した時に散水を開始したいと思います。

MANUAL(手動)ですので、「散水開始」と「散水終了」を指示するために「押しボタン式のスイッチ」を使います。

ということで、散水開始用の押しボタンスイッチ(BS1)と、散水終了用の押しボタンスイッチ(BS2)を用意しますが、ここで一つ問題が。

押しボタン式のスイッチは仕様によって動作が違ってきますが、今回使用するのは「押している間だけ機能するタイプ」のボタンを使います。(この部分を詳しく説明しようとすると結構長い説明が必要になりますので、別の記事にしようと思います。)

何が問題かというと、選定した押しボタンスイッチは押している間だけ機能するタイプですので、手を離すとその機能は作用しないということになります。

散水開始ボタンを押している間だけしか散水しないということになります。
スイッチから手を離すと、散水が止まってしまう。

散水するためにはスイッチを押し続けなければならないので、スイッチのある場所から離れられないということになってしまいます。

それでは困るので、手を放してもボタンが押され続けている状態を作る必要があります。

そこで登場するのが自己保持回路というものです。

この回路を組み込むことで、散水開始ボタンから手を放しても継続して散水ができるようになります。

自己保持回路を成立させるためにはリレー(CR1)を使い、電気の流れを保持してあげる仕組みが必要になります。
(リレーについても説明すると長くなりますので、ここでは割愛。別の記事で詳しく説明しますね。)

あとは散水開始ボタン(BS1)を押したときに水路を開閉するソレノイドバルブ(SV1)があればオッケーです。

ここまででMANUAL(手動)操作をするために必要な部品がそろいました。
この流れをシーケンス図として書くと、以下のようになります。

…でも待てよ?このままZONE2も同じように手動回路を組もうとすると、散水開始用の押しボタンスイッチ(BS3)と、散水終了用の押しボタンスイッチ(BS4)を用意する必要がありそうです…

できれば散水開始用の押しボタンスイッチ(BS1)と、散水終了用の押しボタンスイッチ(BS2)は共有できるとスマートな感じがしますね。

もう少し考えてみますか…

これだと押しボタンスイッチは1セットでよさそうですね。

MANUAL(手動)での散水回路の設計は、とりあえずこれで進めてみましょうw
シーケンス図で表す部分はこれで終わりになります。

電気の流れとマイコン制御

AUTO(自動)モードでの散水

自動で動かすにはESP32を使ってソレノイドバルブの開閉を行っていく必要があります。

ちょっと面倒な感じなんですが、もう一度「電源」のところを見てもらう必要があります。

▶ 全体システム・電源ブロック ツリー構造図(接続・階層リファイン版)
AC100V
  │
  ▼
PS1 (AC-DC 24V)
  │
  ▼
+24V BUS (動力・駆動系統)
  │
  ├──── SV1 (第1系統電磁弁)
  ├──── SV2 (第2系統電磁弁)
  └──── LM2596 (24V ➔ 5V降圧)
         │
         ▼
        +5V BUS (制御・演算系統)
         │
         ├──── ESP32 (メイン制御マイコン)
         ├──── OLED (ディスプレイ)
         └──── DHT22 (温湿度センサ)

上の図で見てもらってわかる通り、今触ろうとしている制御が必要になっている部分は24Vの電源から下の部分になります。

AUTO(自動)モードで散水動作させるためには、SW1とSW2の「選択状態」を「信号」としてESP32に一度渡す必要があります。

このとき、SW1とSW2に供給されている電圧は24Vですが、ESP32は5Vで駆動していますので、そのまま直接選択状態の情報を渡すことができません。

フォトカプラという部品を使って24Vの信号を5Vのマイコンで使用できる信号に変換します。

ESP32はそのSW1とSW2のそれぞれの接点が何を選択されている状態なのかを信号として受け取り、それと同時に5V電源で接続されているを各種のセンサーの情報を含め、内部のプログラムで設定された散水条件と照合し、どういう出力が必要なのかを判断し、その結果を接続された機器に返します。

▶ 入力回路・スイッチ検出ツリー構造図(TLP281絶縁検出)
+24V BUS (電源母線)
  │
  ├──── S1 AUTO接点
  │      │
  │      ▼
  │     TLP281 (フォトカプラ絶縁)
  │      │
  │      ▼
  │     ESP32 GPIO18 (AUTO検出)
  │
  ├──── S2 ZONE1接点
  │      │
  │      ▼
  │     TLP281 (フォトカプラ絶縁)
  │      │
  │      ▼
  │     ESP32 GPIO19 (ZONE1検出)
  │
  └──── S2 ZONE2接点
         │
         ▼
        TLP281 (フォトカプラ絶縁)
         │
         ▼
        ESP32 GPIO5  (ZONE2検出)
📊 AUTOモード状態判定テーブル(真理値表)
GPIO18 (AUTO) GPIO19 (ZONE1) GPIO5 (ZONE2) システム動作・意味
1 (HIGH) 1 (HIGH) 0 (LOW) AUTO + ZONE1 (第1系統のみ散水)
1 (HIGH) 0 (LOW) 1 (HIGH) AUTO + ZONE2 (第2系統のみ散水)
1 (HIGH) 0 (LOW) 0 (LOW) AUTO + 順次散水 (S2=OFF位置 / SV1→SV2)
0 (LOW) × × AUTOモードではない (OFFまたはMANUAL)

ESP32からの出力信号もまた3.3Vと小さな電圧で出力されます。

今度はこれを24Vで動作するソレノイドバルブに伝える必要があります。

3.3Vのままではソレノイドバルブを動作させることができないので、今度は「MOSFET」という部品を介して信号を伝えます。

MOSFET(モスエフエーティー)はON/OFFのスイッチング動作と、流す電気の量をコントロールするという機能を持った部品です。

ESP32の信号をMOSFETのゲートで受ける → MOSFETが接点の役割も担っているのでソレノイドバルブに24Vの電気を流すといった流れになります。

▶ 出力回路・電磁弁駆動ツリー構造図(MOSFET & サージ保護)
ESP32 制御出力
  │
  ├──── GPIO25 (第1系統出力)
  │      │
  │      ▼
  │     MOSFET 1 (MOS1 IN)
  │      │
  │      ├──── +24V BUS ➔ SV1(+)
  │      ├──── (SV1) 散水動作
  │      ├──── SV1(-) ➔ MOS1 OUT ➔ 0V
  │      │
  │      └──── [保護ダイオード 1N5408] (SV1+ / SV1- 間に逆並列接続)
  │
  └──── GPIO26 (第2系統出力)
         │
         ▼
        MOSFET 2 (MOS2 IN)
         │
         ├──── +24V BUS ➔ SV2(+)
         ├──── (SV2) 散水動作
         ├──── SV2(-) ➔ MOS2 OUT ➔ 0V
         │
         └──── [保護ダイオード 1N5408] (SV2+ / SV2- 間に逆並列接続)
💡 出力回路の設計ポイント・技術コメント
構成要素・項目 設計コメント・安全対策の理由
MOSFETローサイド駆動 ESP32のGPIO出力(3.3V信号)でMOSFETのゲートを制御し、DC24Vソレノイドのマイナス側(SV-)を接地(0V)へ落として通電させるローサイドスイッチング方式を採用。マイコン側の負担を最小限に抑え、確実な大電流スイッチングを実現します。
1N5408 サージ保護ダイオード 電磁弁(コイル負荷)をOFFにした瞬間に発生する数百Vクラスの高圧逆起電力(キックバックサージ)を吸収するため、電磁弁の両端(SV+ / SV-)に3A級の耐高電流整流ダイオード「1N5408」を逆並列に接続。MOSFETの素子破壊やマイコンの誤動作(フリーズ)を防ぎます。
独立2系統排他駆動 GPIO25(第1系統)とGPIO26(第2系統)を完全独立配線とすることで、ソフトウェア制御による個別制御や時間差散水(順次散水)を柔軟に行える構造としています。

全体の流れを確認すると、以下のようになります。

▶ 主回路・ZONE切替からESP32・SV駆動までの全体工程フロー図
[Step 1] 電源・スイッチ入力部
  │
  ├─ +24V BUS (動力・制御電源母線)
  │   │
  │   └─ セレクターSW1 (AUTO) & SW2 (ZONE1/2)
  │
  ▼
[Step 2] TLP281 フォトカプラ絶縁変換
  │
  ├─ 24V信号を安全に電気絶縁
  │   │
  │   └─ ESP32 絶縁入力 (GPIO18, 19, 5)
  │
  ▼
[Step 3] ESP32 ソフトウェア論理判定
  │
  ├─ AUTOモード&ゾーン判定 (排他制御・順次タイマー制御)
  │
  ▼
[Step 4] MOSFET出力 & 電磁弁(SV)駆動
  │
  ├─ GPIO25 / GPIO26 ➔ MOSFETローサイド駆動
  │   │
  │   ├─ SV1 / SV2 通電・散水実行 (DC24V)
  │   └─ [1N5408 ダイオード] 逆起電力サージ吸収・保護
📊 全体工程のポイント解説
工程ステップ 概要
Step 1: 入力部 24V電源母線からセレクター(S1/S2)を経由して各モード・ゾーンの制御信号を生成します。
Step 2: 絶縁変換 強電24V信号をTLP281フォトカプラで完全に電気絶縁し、安全な5Vマイコン信号へ変換します。
Step 3: ソフトウェア判定 ESP32が入力状態を読み取り、個別ゾーン散水または自動順次散水の論理・タイマー処理を実行します。
Step 4: 駆動・保護 MOSFETによるローサイドスイッチングで電磁弁を駆動し、逆起電力ダイオードで回路を確実に保護します。

Step1からStep4が制御という意味で「入力」から「出力」の流れになります。
単純な構成部品のほかに、機器を保護する目的で使用する部品も一気に書き出したので「?」となってしまうかもしれませんが、これも段々慣れていけばいいと思います。

ESP32のソフトウェア制御

ESP32はプログラミングして初めて機能します。

プログラミング」と聞いて、うわー…ってなるかもしれませんが、そこはあまり心配はいりません。

というのも、ESP32を勉強しようと思ったら「参考書」という手もありますが、ものすごく大勢のユーザーがいて、「Youtube」などでいろいろな内容で機能や使い方を紹介している方々がいます。

そういったものを参考にしながら進めていくというのもアリです。

さらに、最近ではAIがプログラムを作成してくれます。
自分ですべてをやらなくても十分に進めていけます。

どんなふうに動作させたいのか、何の機器を使うのか、そういった情報がしっかりしていれば、あとはAIにプログラムを作ってもらうというのが今後の流れになると思います。

▶ ESP32 ソフトウェア制御フロー図(メインループ & 判定処理)
[起動・初期化] setup()
  │
  ├──── GPIOピンモード設定 (入力:18,19,5 / 出力:25,26)
  └──── NTP時刻同期 / タイマー初期化
  │
  ▼
[メインループ] loop()
  │
  ├──── ① GPIO18 (AUTO) 判定
  │      │
  │      ├─ 0 (LOW / OFF・手動) ───▶ 全出力OFF (GPIO25/26=LOW)
  │      │
  │      └─ 1 (HIGH / AUTO有効) ───▶ ② スイッチ・タイマー評価へ
  │                                    │
  │  ┌─────────────────────────────────┘
  │  │
  │  ├─ ZONE1指定時 (GPIO19=HIGH) ─────▶ GPIO25=HIGH (SV1のみ散水)
  │  ├─ ZONE2指定時 (GPIO5=HIGH)  ─────▶ GPIO26=HIGH (SV2のみ散水)
  │  └─ AUTO定時散水 (S2=OFF位置) ─────▶ ③ 順次散水シーケンス実行
  │                                           │
  │                                           ├─ GPIO25=HIGH (SV1 散水開始)
  │                                           ├─ タイマー待機 (指定時間経過)
  │                                           ├─ GPIO25=LOW  (SV1 停止)
  │                                           ├─ GPIO26=HIGH (SV2 散水開始)
  │                                           ├─ タイマー待機 (指定時間経過)
  │                                           └─ GPIO26=LOW  (SV2 停止・完了)
  │
  ▼
[WDTウォッチドッグクリア & ディレイ]
💡 ソフトウェア処理・実装上の工夫と解説
制御ステップ 処理内容・安全設計上の狙い
ハードウェア最優先判定 プログラムの最初に必ずGPIO18(AUTOスイッチ)の状態を確認します。OFF(0)の場合は他のどんな条件やタイマーにかかわらず即座に全電磁弁出力をOFFに固定することで、現場での緊急停止や手動切替に対応させます。
非同期タイマー処理 (millis) 順次散水時の時間待機には delay() を直接使わず、millis() 関数を用いた状態遷移ロジック(ステートマシン)で実装。散水タイマー作動中であってもスイッチの切り替えや非常停止命令を即座に検知できます。
同時通電防止(排他制御) 電源容量(DC24V電源ユニット)の負担軽減と水圧低下を防ぐため、SV1とSV2が同時にONにならないようソフトウェア側で「片方がONになる際はもう片方を確実にOFFにする」排他インターロック処理を行っています。
▶ ESP32 最終I/Oピンアサインまとめ図
ESP32 マイコンピン配置
  │
  ├──── [ 入力ピン系統 (Inputs) ]
  │      │
  │      ├──── GPIO18 ─── AUTO検出 (セレクターS1)
  │      ├──── GPIO19 ─── ZONE1検出 (セレクターS2)
  │      ├──── GPIO5  ─── ZONE2検出 (セレクターS2)
  │      ├──── GPIO32 ─── DHT22 温湿度センサ信号
  │      ├──── GPIO34 ─── 土壌水分センサ (アナログ入力)
  │      └──── GPIO23 ─── 雨滴センサ入力
  │
  └──── [ 出力・通信ピン系統 (Outputs / I2C) ]
         │
         ├──── GPIO25 ─── SV1 第1系統MOSFETドライバ制御
         ├──── GPIO26 ─── SV2 第2系統MOSFETドライバ制御
         ├──── GPIO21 ─── OLED ディスプレイ (SDAデータ)
         └──── GPIO22 ─── OLED ディスプレイ (SCLクロック)
📋 ESP32 最終I/Oアサイン定義一覧表
区分 ピン番号 信号名 役割・用途・ハードウェア概要
入力 (IN) GPIO 18 AUTO セレクターS1のAUTO位置検出(TLP281絶縁入力)
GPIO 19 ZONE1 セレクターS2のZONE1位置検出(TLP281絶縁入力)
GPIO 5 ZONE2 セレクターS2のZONE2位置検出(TLP281絶縁入力)
GPIO 32 DHT22 外気温・湿度センサー信号入力
GPIO 34 SOIL 土壌水分センサー アナログ入力(ADC1)
GPIO 23 RAIN 雨滴センサー デジタル/アナログ入力
出力 (OUT) GPIO 25 SV1 第1系統 MOSFETドライバ制御信号(電磁弁1)
GPIO 26 SV2 第2系統 MOSFETドライバ制御信号(電磁弁2)
GPIO 21 OLED SDA OLEDディスプレイ I2Cデータ通信線
GPIO 22 OLED SCL OLEDディスプレイ I2Cクロック通信線
▶ 全体システム・電源ブロック ツリー構造図(TB6配電端子台反映版)
AC100V
  │
  ▼
PS1 (AC-DC 24V)
  │
  ▼
+24V BUS (動力・駆動系統)
  │
  ├──── SV1 (第1系統電磁弁)
  ├──── SV2 (第2系統電磁弁)
  └──── LM2596 (24V ➔ 5V降圧)
         │
         ▼
        +5V BUS
         │
         ▼
        TB6 (5V配電端子台) [1-4: +5V / 5-8: GND]
         │
         ├──── ESP32-WROOM (VINへ給電 / 近傍に470~1000μFコンデンサ追加)
         ├──── SSD1306 OLEDディスプレイ (I2C接続)
         ├──── DHT22 温湿度センサ (+4.7kΩプルアップ)
         └──── TLP281 入力絶縁回路 (24V信号検出用)

ともあれ、何とかここまでたどり着きました。

これで基本的な部分の計画、設計、大まかな必要部品の洗い出しが終わりました。

次はいよいよ実際に使用する部品の選定に進みましょう!

👉 次の記事:③部品選定編 へ進む

おすすめの記事