HOME >> 鉄道模型実験室 > 登山鉄道レイアウトとモニタ式操作盤 ESP32モジュールを取付ける
登山鉄道レイアウトの操作盤について、以前検討したモニタ方式の操作画面からWiFiを使った通信によって、操作できないか検討をしている。 通信モジュールESP32の使い方をひと通り学習したので、いよいよ登山鉄道レイアウトに応用することにした。
.
.
■ ESP32モジュールの準備
通信モジュールESP32の使い方をひと通り学習したので、いよいよ応用することにしました。 モジュールはESP32-DevKitCというESP32WROOM開発ボードとして入手していますが、このままではレイアウトにそのまま取り付けることが出来ません。
まず、ArduinoMEGA のGPIO ポートとは、安全のために1KΩの抵抗を介して接続させます。 さらに、信号がない場合の浮きの状態を避けるために、15KΩを使ってプルダウン回路を形成しました。 何時もは10KΩを使うのですが、手持ちが無かったので15Kとしています。
また、供給電源は安定化電源からのDC5volt から供給するようにし、USB使用時の電源干渉を避けるために、スイッチを設けています。 この場合の回路図を右に示します。
通信モジュールESP32は39本のピンヘッダが取付られていますので、これにあわせて、ピンホルダをユニバーサルボードに取付けて、セットするようにしました。 下の写真参照。
抵抗はチップ抵抗を使用しています。 下左の写真は、プルダウン回路を追加する前の状態です。
■ レイアウトへの取付
作成したユニットをレイアウトボードの裏側に取付けました。 ノイズを嫌って機器類と少し離れた場所に設置し、配線も実施しました。 何時もの様に、行き当たりバッタリの工作ですので配線がグチャグチャです。 固定のためにはテープを多用していますが、応急処置のようなじょうたいです・・・・・・・・・・。見えない見えない!
下左の写真は、5voltを供給する安定化電源で、出力ターミナルにもぐりこませています。
Arduinoとの接続は、ピンヘッダを使って接続しています。 下右の写真は、スケッチを書込む時の状態です。
void loop(){ aut = digitalRead(AUT); //自動運転スイッチをチェック mnt = digitalRead(PTS3); if (aut==LOW){ //手動運転モード if (mnt == LOW){ //パネル操作 pts1 = digitalRead(PTS1); //スイッチ類のチェック pts2 = digitalRead(PTS2); dswr = digitalRead(DSWR); dswl = digitalRead(DSWL); vol1 = analogRead(VOL1); duty=(vol1-500)/2; } else { //モニタ操作 pts1 = digitalRead(4); //スイッチ類のチェック pts2 = digitalRead(3); dswr = digitalRead(9); dswl = digitalRead(10); spd = digitalRead(8); if (spd == HIGH){ //速度の設定 duty = duty + 5 ; if (duty >= 100 ){ duty = 100; } } else if (spd == LOW){ duty = duty - 5 ; if (duty <= 0){ duty = 0; } } } ledhyoji(); //パネル表示 if (pts1==HIGH){ //ポイント1操作 p1han_i(); delay(100); } else { p1tei_i(); delay(100); } if (pts2==HIGH){ //ポイント2操作 p2han_i(); delay(100); } else { p2tei_i(); delay(100); } if (dswr==HIGH){ //進行方向右設定 digitalWrite(DIRR,HIGH); } else { digitalWrite(DIRR,LOW); } if (dswl==HIGH){ //進行方向左設定 digitalWrite(DIRL,HIGH); } else { digitalWrite(DIRL,LOW); } analogWrite(MPWM,duty); //速度指示 } else if (aut==HIGH){ //自動運転モード********* 以下省略 *******
■ 制御用スケッチの追加と修正
制御用マイコンであるArduinoMEGAのスケッチも追加修正が必要となります。
● 制御に関する情報の流れ
まず、スケッチの記述を追加修正するにあたって、ボタン操作から作動デバイスまでの、情報記号の関係を整理しておきましょう。
ボタン | GET信号 | ESPポート | MEGAポート | スケッチの制御変数 |
---|---|---|---|---|
ポイント1定位 | point1 = off | GPIO 12 LOW | GPIO 4 LOW | pts1 = LOW |
ポイント1反位 | point1 = on | GPIO 12 HIGH | GPIO 4 HIGH | pts1 = HIGH |
ポイント2定位 | point2 = off | GPIO 14 LOW | GPIO 3 LOE | pts2 = LOW |
ポイント2反位 | point2 = on | GPIO 14 HIGH | GPIO 3 HIGH | pts2 = HIGH |
右方向 | direction = right | GPIO 25 HIGH | GPIO 9 HIGH | dswr = HIGH |
停止 | direction = stop | GPIO 25&26 LOW | GPIO 9&10 LOW | dswr & dswl = LOW |
左方向 | direction = left | GPIO 26 HIGH | GPIO 10 HIGH | dswl = HIGH |
UP | speed = up | GPIO 32 HIGH | GPIO 8 HIGH | spd = HIGH |
DOWN | speed = down | GPIO 32 LOW | GPIO 8 LOW | spd = LOW |
こうすると、制御変数の取扱について、間違いが少なくなります。
● スケッチの追加と修正
まず、元となったスケッチは、「ポイントのスローアクション駆動 レイアウトへの組込み」(2022/10/14)で紹介した 「ポイントのスローアクション駆動 レイアウトへの組込みスケッチ」 です。
追加・修正した内容を箇条書きにしました。
上記の内容をスケッチに記述した部分を右に示す。 当然ですが、ポートの指定は先頭部分で設定しているが、ポート名は面倒なので直接数字での記述として手抜きしている。
■ テスト運転の実施
ArduinoMEGA のスケッチを書込み、テストを実施した。 IPアドレスの固定化などで、いくつかのトラブルがあったものの、無事に作動させることが出来たが、その内容は次回に報告しよう。
2022/11/4