A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道) A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)

【目次】

50年前の鉄道模型の思い出
A3サイズ箱庭鉄道 伊予鉄道 路面電車
自動運転のシステム
  − 車両通過センサー
  − I/O構成
  − 回路図
  − プリント基板と部品
  − パワーパック
  − 電動ポイント制御
  − 3灯の信号
  − 踏切の点滅ライト
Ardiono制御/自動運転シナリオ
  − プログラム構造
ジオラマの作り込み
  − ジオラマ写真
アクリルケースに入れて机の横に飾っています
アナログなトラブル
さいごに

50年前の鉄道模型の思い出

私は子供の頃、鉄道模型で楽しい時間を過ごしました。成人してからは鉄道模型に触れることがなかったので、鉄道模型マニアというよりは素人に近い存在です。

私の鉄道模型の思い出は、小学4年生の頃のことです。当時、お年玉と父の援助で約1万円のHOゲージのセットを手に入れました。あの頃の鉄道模型は、プラスチックではなく鉄の塊のような車両や鉄製のジョイントレール、そしてシルバーアルミ製のトランス内蔵コントローラーが組み合わさった重厚なものでした。ヤフオクで写真を見つけましたが、確かこのセットでした。

中学生になってからは、もっと小さくて安価なNゲージに挑戦したくなり、A1サイズくらいのベースボードを近所のスーパー(Fuji)の2階にある資材売り場で購入し、レイアウトを作って楽しんでいました。このレイアウトでは石膏を使ってトンネルを作った記憶がありますが、小遣いが足りず中途半端な状態のまま飽きてしまい、それから45年間、鉄道模型に触れる機会はありませんでした。

その後は、バンド活動に興味を持ちギターの練習ばかりしていました。もう一つの趣味である宅録(自宅録音)での音楽制作ギターエフェクターの自作につながっています。

今年で還暦を迎え、子供の頃の楽しい経験をもう一度思い出したくなり、この箱庭鉄道を作って見ようと思い立ちました。

A3サイズ箱庭鉄道 伊予鉄道 路面電車

今回作ったのは、A3サイズに収まる最小のレイアウトです。40年以上東京/神奈川に住んでいるのですが、高校生まで住んでいた松山を題材にしよう思い、伊予鉄道の路面電車にしました。駅や風景は実際の松山の中心地を走る路面電車とは異なります。田舎だった昭和の松山を思い出して、通学途中の駅だった「古町駅」のかすかな記憶を頼りに作成しました。

父親が若い頃、伊予鉄道のバスの運転手をしており、私は近くのバス停までお弁当を届けに行った記憶があります。その思い出を再現するため、メルカリで手に入れた昭和時代の塗装の伊予鉄バスの模型を配置しました。

その他のジオラマ部分は、特に計画を立てずに思いつきで作りました。今ではヨドバシカメラやAmazonで材料を簡単に手に入れることができるので、細部にこだわることもできますが、まずは伊予鉄の路面電車が走る様子を楽しむことを優先しました。

出来上がりは↓ですが、始めたばかりの頃は、こんな感じ(ブログページ)でした。



自動運転のシステム

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道) ESP32C3私が最もやってみたかったのは、手動で運転操作を楽しむだけではなく、自動運転です。目標は、電車が駅から出発して数周した後、元の駅に戻ってくるというシステムを作ることです。

センサーとArduinoによる制御

電車の位置を検出するため、8箇所に磁石に反応するセンサースイッチを配置しました。これをArduinoで読み取り、電車の方向、速度、ポイント(分岐器)の制御を行う仕組みにしました。

パワーパックの自作

電車を自由に走らせるためには、パワーパックを制御する必要があります。これも、ArduinoのPWM(パルス幅変調)出力とモータードライバICを組み合わせて自作しました。これにより、プログラムによって自由に運転制御が可能になりました。

車両通過センサー

使用したセンサー

センサーには、磁石が近づくとONになる「リードスイッチ」(おそらく中華製)をAmazonで購入しました。試してみたところ、使えそうでしたので採用しました。動力車の先頭部分に付属の丸い磁石を取り付け、センサーが反応することを確認しました。

センサーの配置

8つのマグネットセンサー(リードスイッチ)は、下の写真の様に配置しています。TOMIXのFineTrackレールの下に埋め込んでいます。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道) センサー配置


センサーの調整

このセンサーは磁石との距離に敏感です。磁石を強化(複数個重ねる)すると反応が良くなりますが、強すぎるとポイント部分の磁石にくっついてしまい、ポイントが動いてしまう問題が発生しました。

最終的には、ポイント内の磁石の極性と反発する方向にN/S極を設定し、電車に取り付ける磁石の配置を決定しました。これにより、センサーには反応し、ポイントには影響を与えない最適なバランスを見つけることができました。この方法で、今回のレイアウトではうまく動作しますが、すべてのレイアウトに万能な方法とは言えないかもしれません。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道) マグネットセンサー

ArduinoのI/O構成

Arduino/ESP32C3を使った自動運転システムのI/Oは、以下のように設計しました。ESP32C3はIoT向けの極小マイコンのため、ポート数が11しかありません。そのため、PWM出力とアナログ入力以外の入出力は、すべてシリアルにしました。

パワーパック制御: PWM出力ポート: 2ポート使用
速度マスターコントローラ: アナログ入力ポート: 1ポート使用
LCD表示: I2Sシリアルポート: 2ポート使用
入力デバイス: HC166シリアルポート: 3ポート使用, ボタンやセンサーの入力用にHC166を3個使用
出力デバイス: HC595シリアルポート: 3ポート使用, LEDやポイント切替などの出力用にHC595を5個使用

これにより、XAIO ESP32Cの全ポートをフル活用しています。駆動基板は、レイアウトの裏に貼り付けて、センサーやLEDを配線しています。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道) ハードウエア構成

回路図

以下に基板の回路図を示します。(クリックするとPDFファイルへリンクします。)

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)回路図1

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)回路図2

プリント基板と部品

基板設計と製造

マイコンとレイアウト制御用の基板は、KiCadを使用して設計し、FusionPCBで製造しました。チップ部品用の、両面の表面実装基板です。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)プリント基板設計

基板の構成

操作部分の基板と、シリアル通信を受けて駆動する基板を別々に作成しました。駆動基板はレイアウトの裏側に貼り付けてあり、操作部分の基板とレイアウトをつなぐ配線は8線のコネクタケーブルのみです。これにより、配線が簡素化され、レイアウトの美観も保たれています。

このようにして、A3サイズの箱庭鉄道の自動運転システムを構築しました。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)基板動作確認中

部品調達

部品のほぼすべては秋月電子通商で購入しています。チップ部品を使用しているため、秋月で手に入らないものは共立エレショップで取り寄せています。

使用したマイコン

マイコンには、XIAO製のIoT向け超小型ボードESP32C3を使用しています。このボードは1,000円で購入でき、プログラム可能なギターのエフェクタを自作した際にも使用したため、使い方には慣れています。現在はプログラムはまだ実装していませんが、ESP32C3はWiFiを搭載しており、HTTPDサーバーを実装すればiPhoneなどのブラウザで操作することも可能です。

パワーパック

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)パワーパックドライバICパワーパックは、一般のパワーパックと同じ12VのPWM制御を使っています。ArduinoのPWM機能を使って20kHzのPWM信号を作り、モータドライバIC「TB6643KQ」で電車の速度を駆動しています。

PWMパルスの組み合わせで、供給電圧の極性を変えられるため、電車の進行方向もこのICだけで制御できます。思ったより簡単でした。

 

電動ポイント制御

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)電動ポイントNゲージの電動ポイントは、短時間(50msecくらい)のパルスで切り替える仕組みになっています。長時間通電すると、ポイントのコイルが焼けてしまうため、短時間のパルスで「カチッ」と動かします。

これも、Arduinoで、小型DCモーター向けのモータードライバIC「TB67H450FNG」を制御して駆動しています。

3灯の信号

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)3灯式信号Amazonで購入した3灯の信号を設置しました。実際の鉄道信号の設置方法や動作とは異なりますが、見た目を楽しむためのものです。この信号は、細かく作ってあり、かなりリアルです。

3箇所信号を設置しましたが、2箇所のポイントに連動して点灯させ、もう1箇所は、周回の進行方向に合わせて点灯させています。

ポイントや進行方向を切り替えると、赤→黄→緑、緑→黄→赤のように1秒間隔で変わるようにしてみました。

踏切の点滅ライト

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)踏切の点滅踏切は、LEDが付いたものは見つからなかったため、自作しました。メルカリで買った雑誌の付録の踏切を改造し、ライト部分に1mmの穴を開け、裏側からチップ部品の赤いLEDをつけて配線して作りました。点灯時には、Arduinoで500msec間隔で点滅するようにプログラムしています。

レイアウトの裏側

レウアウトベースボードの裏側は、凄まじいことになっています。センサー、信号LED、踏切LED、電動ポイント、ポイント通電不良対策のラッチリレーからの配線を一旦ドライバ基板に集め、シリアルでマイコンと通信しています。


Ardiono制御プログラム/自動運転シナリオ

Arduinoのソフトウエア開発は、専用のIDEが無料で提供されているため、それを使っています。Windows/Macどちらでも同じ様に使えます。ESP32C3の場合は、Type-CのUSBコード一本で接続すれば、作成したコードをマイコンのFlashに焼き込めます。Arduinoは、開発がとても簡単です。

言語はC/C++を使っています。コンパイラはGCCが使われているようですが、専用のIDEを使う限りは内部の仕組みを意識する必要はなく、未経験者でも簡単に使えます。

プログラム構造

プログラムの基本構造は、1msの周期タイマー割り込みのハンドラと、Arduinoのメインループだけで出来ています。ボタン操作や通過センサー、マスコンの速度設定などの入力を1msの周期割り込みハンドラでチェックし、操作やセンサーの変化があったときだけメインループにフラグを立てて知らせます。メインループはフラグによるイベントドリブンで動いており、フラグ通知がないときは、何もしないようになっています。

パワーパック向けのPWMは、ArduinoのPWM機能を設定すれば、非同期に勝手に動いてくれます。速度を変えるには、PWMデューティー比のパラメータを専用APIで変えれば、いつでも簡単に変えられます。

自動運転は、センサーの変化と経過時間をトリガーにして、シナリオが進むシーケンサーにより実現しています。経過時間は、1msの周期割り込みでカウントアップするカウンタで1ms精度のクロックを作って測っています。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)ソフトウエア構造

PWM制御

ESP32C3のPWM機能を使用して、パワーパックのPWM制御を行います。PWMはプログラムとは非同期に動作し、デューティー比を変えることで速度を調整します。

HC166のシリアル入力

1msecの周期割り込みのハンドラで周期的に読み取り、ボタン操作やセンサーの変化があると、フラグを立てて、メインループにイベント通知するようにしています。

LCDやHC595のシリアル出力

メインループの中でボタン操作やセンサーのイベント通知があったときだけ動作する、イベントドリブン型になっています。

自動運転のシナリオ

「センサーの通過」と「指定時間経過」をトリガーにして、「速度変更」「方向変更」「ポイント切り替え」「踏切ON/OFF」などのシナリオが進むようにしています。

例えば、「センサー1を通過」したら「速度を100にセット」、「センサー2」を通過したら「速度を0にセットし停車」、「5秒経ったら」「方向を変えて速度を50にセット」などのように、電車が走る状況をシーケンスにして、自動で動かしています。

↓ミコちゃんと一緒にシナリオデバッグ中

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)シナリオデバッグ中

ジオラマの作り込み

ジオラマは、自分だけのイメージで作り上げたものです。特に実物を忠実に再現するつもりはなく、昭和の時代に過ごした松山の思い出に基づいた要素を取り入れています。

伊予鉄道路面電車/バス

路面電車の車両は、かなり前に発売され売り切れてしまい、店舗には扱いがなかったため、メルカリで購入しました。これに動力車ユニットを付けて走らせています。バス(貸し切り観光バスみたいです)も同様で、メルカリ購入です。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)路面電車

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)バス

バラスト/パウダー/紙粘土

地面や駅周辺のバラスト(枕木の間に撒かれている小石)は、Amazonとヨドバシカメラで買いました。使うのは未経験でしたので、レイアウト以外のもので何度か試したあとで、レイアウトに使ってみました。制作過程は、結構楽しかったと思います。

バラストは、まず線路周りに撒いておき、水で薄めた水性の木工ボンドをスポイトで垂らすと、簡単にそれっぽくなります。土や草原のパウダーは、水で薄めた水性の木工ボンドそのままでは、スポイトで垂らしたときに水滴が弾いてしまい、穴が空いてしまいます。中性洗剤(キッチンのキュキュット)を1滴混ぜておくと、パウダーに染み込みやすくなります。

ホーム横の小山はTOMIYA製の「情景テクスチャー粘土」を使いました。山をつくた後で、乾いたら木工ボンドを塗りたくり、パウダーとスポンジプラント(低木)を付けて作っています。

これらはすべて、ある程度乾いたら水で薄めた水性の木工ボンドを垂らすのを何度か繰り返し、固着させることがポイントと思います。

パウダー、バラスト、スポンジプランツは、ちょっとしか使わなかったので、大量に余っています。キッチンにあった、もう使っていないZIPLOCの容器に入れています。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)ジオラマ作成材料

建物/駅舎と住宅

建物は2つだけです。住宅については、昔住んでいた自宅に似た建物(品番:4213)をTOMYTECで見つけて配置しました。駅舎についても、市販のものの中からイメージに近いものがただ1つしかなかった(品番:4202)ので、それを使用しました。ホームは、形だけを自由にデザインしました。また、線路の端に設置した車止めも、実際のものとは異なるデザインです。

街の人々

ジオラマには、TOMYTECの「ザ・人間」シリーズから選んだ人物が登場します。一般的な姿の他に、犬の散歩をする人(子どもの頃の思い出ではないですが、妻がトイプードルと散歩していたので入れました)や、中学生の頃に似たキャラクターも配置しました。

Amazonで販売している中華製の人形は価格が1/5程度でしたが、写真を見ると日本人かどうか不明でリアリティがないように感じましたので買いませんでした。一方、TOMYTEC製の人形は日本人らしい雰囲気があり、気に入っています。

人形を配置することで、ジオラマのゴーストタウン感が和らぎますが、同時に全体の雰囲気も大きく変わります。1/150スケールなので、実際には想像以上に小さいです。16体の人形を購入しましたが、配置してみても、あまり賑やかさが感じられず、むしろ田舎のローカル駅の静かな雰囲気が漂っています。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)人間

駅のホーム

駅のホームは、2mmの厚紙で作り、周りに津川洋行の石積テクスチャ(紙製)を巻いて作りました。TOMYTECの駅舎にもホームが付いていたのですが、サイズが大きすぎて配置できなかったため使っていません。駅舎に付属の白い柵を、自作のホームに立てて、それっぽくしてみました。

後になって考えてみたら、2番線には通路がないので、乗客が駅舎へ移動する方法がないのですが、まあ良しとします。

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)自作のプラットホーム

桜の木

桜の木には、中学生時代だけでなく多くの思い出が詰まっています。そのため、KATO製の最もリアルな桜の木を購入し、立ててみました。

ジオラマ写真

 

 

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道) 駅前風景

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)斜めから駅を

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)公園側から

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)駅の上から

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)駅の横公園から

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)路面電車停車中の駅

A3サイズのNゲージ箱庭鉄道模型 Arduinoで自動運転(伊予鉄道)線路から駅を

アクリルケースに入れて机の横に飾っています

インターネットで注文したアクリ屋のアクリルケースが届きました。指定したサイズにピッタリで、厚さ5mmを選びましたが、思ったよりも重厚感があります。

せっかく箱庭鉄道を作ったので飾って眺めたいのですが、飼い猫のミコがいたずらしてしまうため、このケースを作ることにしました。

価格は8000円強でしたが、ミコが上に乗っても全く問題ありません。

さらに、LEDの街灯を付けたので、部屋を暗くすると夜の景色が楽しめます。Looks GOOD!

アナログなトラブル

自動運転は基本的に問題なく動作しますが、時折、アナログ的なトラブルが発生することがあります。これらの多くは接触不良などが原因です。レールをアルコールで清掃してもすぐに同様の問題が起きるので、完全に回避するのは難しいかもしれません。

レールに電圧をかけても電車が動かない: 指でチョンと押すと動き出すことがあり、これはレールと車輪の接触不良が考えられます。また、動力車内の通電経路での車輪とモーターの接触不良も考えられます。

ポイントを切り替えてもレールに電流が通らない: ポイントを何度か動かすと通電することがあり、これは電動ポイント内部のレール通電切り替えスイッチの接触不良が原因かもしれません。TOMIXのポイントの接触不良はよく起こるそうなので、並列にリレーを付けて、確実に通電できるように改善する予定です。

速度が遅すぎるとポイントで立ち往生する: 実際の電車のようにゆっくりと動かした場合に起こりがちです。Nゲージでは難しいのかもしれません。自動運転では、ポイント通過時に、ある程度スピードを上げています。

センサーは無接触で動作していますので、その部分には接触不良の問題はありません。

鉄道模型には、このようなアナログな接触不良のトラブルが付き物であることを理解していますが、それでも何時間も安定して動作することを期待しています。

さいごに

作リながら、松山のことを思い出していました。先日、千舟町に住む母親のところに娘2人と帰省しましたが、私が子供の頃40年以上前の松山とはすっかり様子が変わってしまいました。

小学生のころクリスマスツリーを買ってもらった思い出があるダイエー千舟町店、高校生のころ足繁く通った千舟町紀伊國屋書店と銀天街のはるや書店、大好きだった銀天街のかめやうどんなど、みんな別の店舗になってしまいました。

このジオラマは、思い立ってから2ヶ月もかからず出来てしまいましたが、飼い猫のミコちゃんに壊されない様に、アクリルのケースにでも入れて、机の横において、昔の松山を思い出そうと思います。

道後温泉駅の坊っちゃん列車

道後温泉駅の坊っちゃん列車


松山のそこかしこにある「みきゃん」