HOME >> 鉄道模型自動運転システム > レイアウトでの運行
■ はじめに
いよいよ最終ステップに入って来た。 まずは、モニタやマウス無しでも運転開始や終了が出来るような細工を実施すると共に、レイアウトでの運行をテストすることにしよう。
■ プログラムの自動実行とシャットダウンの設定
レイアウト上では、モニタ、キーボード、そしてマウスなどのパソコン周辺機器は接続せずにラズパイ単独で動かしたい。 これはラズパイをパソコンとしてでは無くて、組込コンピュータとして使用しようとしているからである。 このためには、ラズパイの電源を投入すると、指定したプログラムが自動的に実行するように細工しておかなければならないし、さらに、終了する時も、電源をプチンと切ってしまってはいけないのである。 必要な終了処理を実施してから電源をOFFしなければならないのだ。
このための必要な細工は、「往復運転モデルを作る その3」にてテスト済みであるので、今回の最終プログラムにはそれを組み込だけなのだ。
● プログラムの自動実行
いろいろな資料を参考にした。 まず、ターミナルを起動して
sudo leafpad /etc/rc.local
を実行してファイルを開き、そのファイルの中の exit0 の行の前に、実行するプログ名を記述を追記する。
sudo python /home/pi/TozanMode-3-3.py &
exit0
そしてファイルを保存すれば、セット完了である。
.
● 強制終了 (左のボタン)
何らかの異常が発生した場合とか、急に終了しなければならないときのために、強制終了のボタンを設定する。 これも参考資料に従ってテスト的に設定したが、ノイズなどの影響で思わぬところで勝手にシャットダウンしてしまう事態が発生していた。 そこで、ダブルチェックする内容に変更した。
GPIO.setup(25,GPIO.IN, pull_up_down=GPIO.PUD_DOWN) #Swich 1 GPIO.add_event_detect(25, GPIO.RISING, callback=my_callback, bouncetime=200) def my_callback(channel): if GPIO.input(25) == GPIO.HIGH: sleep(0.3) if GPIO.input(25) == GPIO.HIGH: args = ['sudo', 'poweroff'] subprocess.Popen(args) return
● 定位置終了 (右のボタン)
.
急に停止する必要がない場合には、次回の運転のために、電車をスタート位置に戻して置きたい。 このため、スタート位置に戻った状態で運転を終了させるスイッチも設けている。 これは、運行ダイヤを記述している最後の部分に、このボタンが押されているかどうかをチェックするようにしている。
if GPIO.input(7) == GPIO.HIGH: args = ['sudo', 'poweroff'] subprocess.Popen(args)
なお、これらの命令を実行するためには、import subprocess をヘッド部分で記述して置く必要がある。
● 一時停止 (12V電源のON/OFF)
脱線等が発生した場合には、一時的に運行を停止させ、回復処理を実施した後に運行を再開でるようにしたスイッチである。 これは単に、走行用の電源をON/OFF させているに過ぎない。 プログラムはそのままの状態で待機しているので、何ら手を加える必要は無いのだ。
■ 物置部屋のレイアウトにセットする
再度、レイアウト上にこのモジュールをセットした。 右上の写真。 操作板も手を加えた。 各ボタン類には名称を貼り付け、さらに運行する電車の速度設定ボタンの下には電車名の名札を吊り下げるようにした。 下左の写真。 走行中に速度調整する際、間違えないようにするためだ。
上右の写真は、全体の電源を投入した後の状態である。 3.3V電源も最初の段階で投入されるのでこれらのLEDはすぐに点灯する。 勿論、走行用の電源(12V電源)は、OFFの状態にしている。 そうしないといきなり電車が暴走する場合があるのだ。
次に、しばらくすると上左の写真の状態になる。 ラズパイが立ち上がるとGPIO等の電源が生きてくるので右のボタンのLEDが点灯する。 これはラズパイの起動時の既定の設定に従っており、このポートは出力がONの状態で立ち上がって来るのである。 その後、指定しておいたプログラムが走り出した後の状態が上右の写真である。 プログラムの指定に従って、右ボタンのLEDは消え、今度はメインプログラムの最初に記述したスタートボタン待ちの待機状態になる。 この時LEDが点灯するようにしているのである。
その後は、通過センサの調整や走行させる電車の速度設定などを行って、12V電源を投入し、スタートボタンを押すと電車は運行を始めるのである。
■ 試運転の実施
とにかく電車を走らせてみよう。 まず、運行ダイヤは4列車運行ダイヤを用いて、2列車だけで走らせてみた。 電車の設定の無いモードでは自動的にパスしながら運行されるのである。 上記の操作盤の写真のように、電車を入線させていないホームの速度調整ボリュームを切りの位置にしている。 すると、LEDも点灯しないのえある。 走行させる電車は、箱根登山鉄道のベルニナ号とサン・モリッツ号の2編成を選定した。
運転開始から終了までの状態を動画で紹介しよう。
この動画はラズパイの自動実行と終了処理の状態をチェックするのが主眼でしたが、途中で多くの運行トラブルが発生していましたね。 その原因が分かったので対策したのもありますが、やはりシステムの信頼性の問題の様です。
なお、電車が走行を始めるまでの部分は、操作手順が間違っていたので、再撮影した映像に取り換えています。 しかし、編集後に電車の位置が交代していることに気が付きましたが未修正のままでいます。 この点は気にせずにご覧いただければ幸いです。
サン・モリッツ号の途中での脱線は、街中(都市)駅手前の鉄橋での線路がかなり歪んでおり、軌道を修正したら脱線は解消しました。 また、登山口駅でのホーム入線時に停車してしまう現象は、エンドレールのエンドブロックの戻り不良で、こじれた状態による通電遮断状態のために電車は停止したものです。 そして、停止信号はONの状態ですから次のモードにサッサと移行してしまうので、発車する電車と接触事故を起こしています。 当初考えていた電車の有無のチェックをいれると、この問題は解決できるようであるが・・・・・・、問題はエンドブロックの信頼性ですね。
あとは、ポイントの作動不良は相変わらず発生していますね。
■ まとめ
とにかくも、このレベルまでは完成させることが出来た。 しかし、まだまだ多くの問題点が有ります。 ここまでで、出来た事と課題について、順不同で述べておこう。
今後の進め方については、まだ未定であるので、当面はこの状態で走らせて、課題や改善点を探すことにしよう。
2017/6/22 作成 M.T.