SSブログ

Nゲージレイアウト、はる記念鉄道の製作16 [鉄道模型レイアウト製作]

こんにちは。

またまた前回の記事から半年以上たってしまいました。わずかしか進捗していませんが、はる記念鉄道の状況です。
Q9184784.jpg

以前、複線の橋梁を架けていた箇所を・・・
Q2132639.jpg

あまり橋を渡っているように見えなかった(線路の下が透けて見えないのは何となく面白くなかった)ので、単線の橋梁に変更、続くトンネルも単線トンネルに変更しました。
Q9184767.jpg

徐々に草木を植え、線路のバラスト撒きを行っています。
Q9184785.jpg

バラストの固着方法は一般的なボンド水溶液を落とす方法です。レールの継ぎ目で生じるであろう接触不良を防ぐために、継ぎ目部分はあらかじめ糊を混ぜたバラストを盛るなどで対応しようとしましたが、案の定接触不良の箇所ができてしまったため、結局強制的にはんだ付けすることにしました。ま、塗装すれば目立たなくなるかな。
Q9184788.jpg

ラズベリーパイとブラウザを使ったコントローラーも少し機能アップしました。
20210919-2.jpg

経路選択ボタンを充実させました。ボタンを押すと、指定した経路になるよう、ポイントの転換、セクションの切り替えを一気に行います。
20210919-4.jpg

私はただ列車が走っていくのをニヤニヤしながら眺めているのが楽しいので、ポイントやセクションを1つずつ変える作業は、煩わしくてミスも起きるし楽しくありません。この機能で煩わしさが一気に解消できるようになり、いちばん便利な機能だと思っています。個々にポイントを切り替えるボタンもありますが、全く使わなくなりました。

また、スマホなどのブラウザとラズベリーパイとの通信は Apache 経由で、かつ非同期通信は Ajax で行っていましたが、それを WebSocket を使って、はる記念鉄道のサーバープログラムと直接通信するように変更しました。

これにより、加減速時のブラウザ画面の PWM デューティー比の表示がリアルタイムで行えるようになりました。
20210919-3.jpg

特にサーバープログラムは C 言語で作っているため、WebSocket のプログラムは こちらのサイト を参考にさせていただき、大変役に立ちました。ありがとうございます。

ただ、少し改造を行って組み込んでいます。(間違っていたらごめんなさい)

1.1 フレームずつの受信しか対応していないので、複数のフレームを一緒に受信した場合に対応できるようにした。
2.スマホの私が使っているブラウザでページ遷移したときや終了させたとき、WebSocket の close フレームが送信されないようなので、その後サーバーから送信するとサーバープログラムが落ちてしまう。これを落ちないようしたのと、そのブラウザと通信を行っていたスレッドをきちんと終了して回収するようにした。
3.複数のクライアントの情報を保持している仕組みを自分が理解できる構造へ変更した。というか特定の命令で WebSocket を終了させる仕組みを組み込んだら、メモリ不正アクセスが発生してしまい、よく分からなかったので自分が分かる形に変えた。
4.など・・・(組み込んだのが 4 月頃だったので正直忘れてしまった)

さらに、列車の加減時をどのように行うか、などを列車毎のライブラリとして定義し、それを指定できるようにしました。
20210919-5.jpg

ライブラリのファイルは現状は Excel 等で作成し、ラズベリーパイにあらかじめ登録しておく必要があります。ライブラリファイルの定義は下例のようになっています。
20210919-1.jpg

ブラウザ画面で加減速ボタンを押したとき、線路に設けたセンサーを通過したときなどの各イベントに対して、どのように挙動をするかを定義してあります。

例えば加速ボタンを押したとき「PWM デューティー比を 200ミリ秒毎に 1% ずつ、40% になるまで加算する」といった定義を書きます。「 20% まで加算後、一定時間惰行、その後さらに 40% まで加算する」といった複数要素からなる定義を行うこともできるようにしました。

どの列車ライブラリで運転しているかは、ブラウザ画面で分かるようにしました。
20210919-6.jpg

そして、まず勾配区間での速度制御を行いたく、複線の外回り線だけ勾配の開始終了位置にセンサーを設置しました。
Q9184775.jpg

センサーはフォトリフレクタを使ったモジュールになっていて、列車が通過すると約 3 秒間、ON になり、その間にラズベリーパイのサーバープログラムで検出するようにしています。

センサーモジュールをレール間に下図のように取り付け・・・
Q9184772.jpg

列車が通過すると反応します。
Q9184771.jpg

なお、確実に反応させるために車両の床下にアルミテープを貼りました。
Q9184789.jpg

実際は列車が通過すると、複数回センサーが反応することになるのですが、最初の1回目のみ採用するよう、サーバープログラム側で制御しています。

先ほどの列車ライブラリでの定義は、例えば登り勾配開始のセンサーを通過したら 「1 秒毎に 1% ずつ、現時点より +4% になるまで PWM デューティー比を加算する」、登り勾配終了のセンサーを通過したら「 1 秒経過後、500 ミリ秒毎に 1% ずつ、現時点より -4% になるまで PWM デューティー比を減算する」といった定義をしておきます。

写真が小さくて分かりにくいのと、動画じゃないので本当かよ、と思われても仕方ないですが・・・駅通過時は PWM デューティー比 43 % で走行・・・
Q9184778.jpg

登り勾配区間は PWM デューティー比 47% へ自動でアップしています。
Q9184779.jpg

この勾配区間通過時の PWM デューティー比の変化は、ブラウザ画面の加減速ボタンと重ねて適用され、たとえば加速ボタン押下による加速中に登り勾配入口を通過したら、本来の加速に加え、登り勾配開始による加速も重ねて適用されるようになっています。

これで登り勾配は自動加速、下り勾配は自動減速し、どこを走っていてもスピードをほぼ一定に保つようにする目途がたち、本来の目的である「列車の走行を眺めて楽しむ」行為でストレスがたまる要因の1つを排除することができそうです。

でも列車ライブラリを作るのは面倒なので、特性が大きく異なる列車を数種類分だけ作って、それを使いまわすことになると思います。

今回は以上ですが、さらなる拡張および 16 番ゲージにも手を出そうかと考えており(KATO の HO スターターキットを買ってしまいました)、きっとまともに完成することは無いかも知れませんが、アウトドアができない時の趣味として、はる記念鉄道の製作(と改良)を継続していきたいと思っています。


★最近のはるちゃん★

今日も元気でありがとう。
Q9194805.jpg

コスモスが咲く季節になりましたね。
Q9194810.jpg

nice!(33)  コメント(6) 
共通テーマ:趣味・カルチャー

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。