プラレールの自動閉塞システムを作ってみた

##Arduinoを用いた簡易的な自動運転

Arduinoを用いて、プラレールの閉塞システムを作ってみた。目標は同一レール上でできるだけ多くの車両を走らせ、東海道新幹線のような過密な運行を再現することとした。今回のシステムにおいて、サーボやセンサーの取り付けは外付け方式とし、プラレールの製品には加工を加えないことを目指した。

##実際の動画
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">プラレールで作った自動閉塞システム<br><br>自動で退避、相互発着を繰り返します。<br><br>Arduino Unoとセンサー、自動化した部品を組み合わせて、レール上に5つの閉塞を定め、4本の車両走らせてます。車両の改造は全くしていません。<br><br>試運転の時に撮った映像です。<a href="https://twitter.com/hashtag/%E3%83%97%E3%83%A9%E3%83%AC%E3%83%BC%E3%83%AB?src=hash&amp;ref_src=twsrc%5Etfw">#プラレール</a><a href="https://twitter.com/hashtag/%E9%96%89%E5%A1%9E%E9%81%8B%E8%BB%A2?src=hash&amp;ref_src=twsrc%5Etfw">#閉塞運転</a> <a href="https://t.co/uCXJNQdLDy">pic.twitter.com/uCXJNQdLDy</a></p>&mdash; Rail_tech700 (@RTech700) <a href="https://twitter.com/RTech700/status/1304062262055825410?ref_src=twsrc%5Etfw">September 10, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


##自動運転のアルゴリズム
プラレールのレイアウト上をいくつかの閉塞に区切り、車両を走らせていく。この時、1閉塞には1車両しか入れないというルールがある。これは実際の鉄道と同じである。
理論的にはn個の閉塞を用意した時、最大n-1本の車両が走ることが可能である。閉塞の間には車両を検知するセンサーを設置し、車両の位置を検出する。車両はストップレールを用いて動きを調整する。閉塞情報は配列で管理しており、空いている閉塞があったらストップレールを操作して車両を入れるという動作を繰り返している。

　今回は5閉塞を定め、4本の車両を走らせる。レイアウト上には２つの駅を設置し、一つは通過待ちのある待避駅、もう一つは全ての列車が設置する相互発着駅とした。

**閉塞の位置**
1. 相互発着駅の1番線
2. 相互発着駅の2番線
3. 相互発着駅から退避駅までの区間
4. 待避線上
5. 退避駅から相互発着駅の区間

##製作した閉塞システムのパーツ
**1. ポイント**
　2つのポイントを作成した。複線幅広ポイントレールと単線複線ポイントレールである。安定性は悪いが、加工を加えない条件があるので、両面テープを用いてサーボの固定を行った。サーボのウィングと分岐器は針金で固定した。
![DSC01285.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/6d2358cf-54ca-3f71-83b4-5e4e5ed377c9.jpeg)
図1　簡易的に自動化した単線複線ポイントレール(レールに加工は加えていない)

![DSC01282.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/24a88787-fc76-12b1-5f45-274781e2511c.jpeg)
図2　自動化した複線幅広ポイントレール（表面）


![DSC01283.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/cc489e56-1bd1-33d4-c4e9-d6a9653368fc.jpeg)
図3　自動化した複線幅広ポイントレール（裏面）



**2. センサー**
　最も悩んだところである。暗い場所でも検知ができるようにフォトリフレクターを使用した。当初は小型のセンサーを直線レールに埋め込んでいたが、モジュール化するのに時間がかかることとセンサーの反応が悪いことにより、別のセンサーを作成した。
試行錯誤した結果、小型のブレットボード上にセンサーを取り付けることとした。使用したブレットボードはプラレールの複線橋脚の溝にはまるので固定も簡単である。これにより1つ5分以内でセンサー作成が可能となった。

![DSC01274.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/ec50c872-2e3a-cdd5-d713-02415c56a0c0.jpeg)
図4　初代のセンサレール（表面）

![DSC01276.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/cbcc0bc5-93c2-23e0-b9ea-5f07e95dddfb.jpeg)
図5　初代のセンサレール（裏面）

![DSC01277.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/ee33b4f4-d5c8-ecf9-a1ba-a376f1ca0b3c.jpeg)
図6　簡易型のセンサ

![DSC01279.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613597/75bf802a-b343-0fa4-8ae2-b9423c3bc588.jpeg)
図7　センサの取り付け例

**3. ストップレール**
　これは単純にストップレールのレバーにサーボをテープを用いて直付けしただけである。

**4. 駅**
　待避駅は乱数を用いて車両の優等に抜かされる本数を決めている。相互発着駅では車両は必ず停車し、順に出ていく。（キューのような構造）待避駅や相互発着駅では最低停車時間を定めている。→最低停車時間が長いほど車両が渋滞する原因ではある。

##レイアウト
　二つの駅を設けたレイアウトを作成した。当初は通過線上にも閉塞を定めていたため、5編成走行可能だったが、過密運転のため通過線上で止まってしまうので、なくすこととなった。レイアウトが小さいため、常に渋滞しているが、東京の過密運転のようで見ていて楽しい。

##今後の課題
　PCから自由に操作できるようにしたらさらに面白くなると思った。部品のモジュール化。渋滞の改善。ホームドアの連動など。

##使用したパーツ
* Arduino UNO
* SG-90
* フォトリフレクタLBR-127HLD
* ミニブレッドボード　25穴
など