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