当サイトは広告が表示されます。

micro:bitでプラレールを制御する その4 停止制御編

Ad,micro:bit,プラレール,動画

前回記事まで、プラレール車両にmicro:bitを搭載しての前進や後退、速度の制御を行いました。今回はレール側にセンサーを取り付けて、センサー位置での停止を行ってみます。

スポンサーリンク

前回記事までの様子

前回記事では走行中のプラレールの速度を任意に変更しました。方法としてはプラレール車両に搭載したmicro:bitとは別にリモコン操作用のmicro:bitを用意し、そのリモコン側の1.micro:bitのABボタン、2.ボリューム(可変抵抗器)、3.micro:bitの傾斜センサーの3つで行いました。

「プラレール」関連記事

プラレールに関するその他の記事は、以下の「プラレール」タグの記事一覧(投稿順)より見て下さい。現在の記事とこれ以降に投稿した記事も含みます。

その他、micro:bitを使用している記事は以下の「micro:bit」タグの記事一覧(投稿順)から見て下さい。「その24」までの記事では、micro:bitの本体バージョンは「1.5」を使用しています。

プラレール車両を検出する

今回はレール側にプラレール車両が通過(到着)した事を検出する為のセンサーを取り付けますが、利用するセンサーを2種類用意しました。簡単に、安価で用意出来るセンサーとして「IR赤外線センサー」と「超音波距離センサー」です。

IR赤外線センサー

上記の赤外線センサー(5個セット)を購入しました。色々なブランドの物がありますが、おおむね作りは同じの様です。価格も10個で1000円未満の物もあり、安価で入手出来ます。

赤外線センサーはテレビやエアコンのリモコン等でも使われている仕組みで、センサーとしては送信側から出る赤外線を受信側で受け取る事でON/OFFを認識しています。上記の様に送受信が一体となっている物は反射型センサーで、送信側から出た赤外線が対象物に当たって反射し、返ってきた赤外線を受信側で受け取ります。

一方で送受信が別々となっている物もあり、こちらは透過型センサーと呼ばれます。送信側と受信側を別々に設置し、その間を対象物によって赤外線が遮断される事でON/OFFを認識します。工場の生産ラインなどでも採用されているセンサーで「光電センサー」とも呼ばれます(メーカーはオムロンやキーエンス等)。

比較的簡単に利用出来る赤外線センサーですが、小さな対象物の検出や数センチ・数ミリといった検出位置の正確性はありません。これは出される赤外線に幅(光軸幅・スポット径)がある為で、小さな対象物の検出や位置の正確性が必要な場合は、ファイバーセンサーやレーザーセンサーと呼ばれる物を使用します。これらのセンサーも工場の生産ラインで採用されていますが、光電センサーと比較すると高価です。

超音波距離センサー

もう1つ、上記の超音波距離センサー(3個セット)も購入しました。こちらも色々なブランドがありますが、多くは「HC-SR04」という型式の物です。ただしmicro:bitで利用する場合は注意が必要です(後述)。価格も5個で1000円くらいです。

超音波距離センサーはmicro:bitやArduino用のロボットキットで多く採用されているセンサーで、「ソナーセンサー」とも呼ばれています。赤外線センサーと同様に超音波を発信し、対象物に反射して戻ってきた超音波を受信しますが、発信から受信までの時間を計測する事で、対象物までの距離を逐一検出する事が可能です。赤外線センサーが単純なON/OFF(デジタル信号)に対し、超音波距離センサーは数値が変化(アナログ)します。

取付用レールを作る

まずはセンサーを任意の位置に固定する必要があります。適当にテープで止めても良いのですが、見た目が良くないので、部品を作ってしっかりと固定する事にします。

基本的にプラレール車両やレールに手は加えない事としているので、上記の様に長さが「1/4レール」と同じで、センサーを固定するブラケットが付属するレールを3Dプリンターで作りました。

超音波距離センサーは上記の様に、車止めの様な形でレールに固定出来る様にしました。

プラレール列車を止める

制御方法の基本

プラレール車両に搭載したmicro:bitの他、今回は上記の様にセンサーを接続するmicro:bitと、プラレール車両を操作する為のリモコン用micro:bitの計3台を使用して、無線でやり取りする形にしました。センサーを接続するmicro:bitには、DC5Vも利用出来るIOブレイクアウトボード(拡張ボード)を使用しています。

私が利用しているIOブレイクアウトボードは「KittenBot」というメーカーの物で、USBで電源を供給してDC5V用のセンサーも接続する事が出来ます(micro:bitはDC3V)。

赤外線センサー1個

まずは最も簡単に、赤外線センサーを1個を上記の様にレールに固定し、センサーがONになったらプラレール列車を停止させます。センサーと共に7セグのLEDディスプレイも繋がっていますが、センサー入力のON/OFF確認用です(センサー自体にもLEDが付いていますが)。

※購入した赤外線センサーの電源仕様は「DC3~5V」ですが、3Vに接続すると時々無反応になる時があり、5Vに接続すると安定しました。またセンサーには強弱調整用のボリュームがありますが、調整がとても敏感です。わずかに触る程度でも変化し、センサーによって投受光部の取付がバラバラなので、同じ様にも調整出来ません。ただしプラレール車両を検出するには、それほどシビアな調整も必要ありません。

プログラム

上記はセンサーを接続したmicro:bitのプログラムです。センサーの出力を「P0」に接続し、ONになったら「センサー」という文字列と「1」を送信、OFFでは「センサー」+「0」を送信するだけです。7セグのLEDは単に確認用ですが、利用方法については以下の記事を見て下さい。

上記はリモコン用micro:bitのプログラムです。ABボタンで前進・後退・停止のそれぞれを、文字列「進行」+「0、1、2」で送信しています。またセンサーを接続したmicro:bitから「センサー」+「1」を受信した場合もボタンを押した場合と同様に「進行」+「0」を送信します。

最後に上記は列車に搭載しているmicro:bitのプログラムです。リモコン用のmicro:bitから「進行」+「0、1、2」をそれぞれ受信した場合に、DCモーターの正転・逆転・停止を制御しています。ABボタンで「停止」にしているのは無線が受信出来ない時などの非常用です。

※スピードを「17」にしているのは、DCモーター用の拡張基盤で、供給電圧に対してモーターに17%を出力する意味になっています。DCモーター用拡張基盤にはDC9Vを接続しているので、17%で約DC1.5Vになります。詳しくはプラレールの以前の記事にて。

走行の様子

実際の走行の様子は、この記事の最後で動画を掲載していますが、赤外線センサー1個でプラレール車両を停止させると、どうしてもオーバーランしてしまいます。またmicro:bitの無線機能の送受信タイミングは一定では無い様子(プログラムによる)なので、オーバーランする距離が異なる時があります。速度を最初からゆっくりにすればオーバーランの距離も縮まりますが、それでは少々違う気もするので、次で赤外線センサーを2個使う方法を試します。

※ここでは「停止」=「DCモーターのOFF」としていますが、DCモーター用拡張基盤の中には「停止」=「ブレーキ」として、一瞬DCモーターを保持する機能がある物もあります。

赤外線センサー2個

赤外線センサー1個ではオーバーランが大きいので、今度は赤外線センサーを2個取り付けて手前のセンサーで減速、次のセンサーで停止する様にします。

プログラム

上記はセンサーを接続したmicro:bitですが、先のセンサー1個の状態からさらに端子「P1」にもう1個センサーを接続し、その出力をそれぞれ「センサー1」と「センサー2」として送信しているだけです。

リモコン用micro:bitも前進・後退・停止に「減速」を加えただけです。センサーを接続したmicro:bitから「センサー1」+「1」を受信した場合は「進行」+「3」を送信、「センサー2」+「1」を受信した場合は「進行」+「0」を送信します。

最後にプラレール列車に搭載したmicro:bitです。こちらも「進行」+「3」を受信した場合に、減速速度として「前進」よりも遅いスピードで進む様にしています。※ABボタンの非常停止用プログラムを入れ忘れました。

走行の様子

減速を行うと、さすがにセンサー位置で停止させる事が出来ます。減速速度にもよりますが、繰り返してみても停止位置のバラツキは大きくはありません。ただし停止してからリモコン用micro:bitでプラレール列車を後退させると、最初のセンサーのON/OFFで「減速前進」してしまいます。これは単に後退時の例外をプログラムしていない為です。

超音波距離センサー

次に超音波距離センサーです。数値で距離が分かるので上記の様にセンサーを固定し、センサー直前で停止させる様にしてみます。停止のみではおそらく止まり切れないので、最初から減速も含めた形で考えます。

※超音波距離センサー「HC-SR04」の電源仕様は「DC5V」です。DC3V用の超音波距離センサーもある様ですが、入手性や価格がネックです。またあまり小さな物体の検出には向いておらず、プラレール列車ではギリギリの印象です。さらに距離が数値(cm、inch等)で分かる様になっていますが、あまり正確ではありません(検出物が小さいから?)。上記で超音波の入出力部の片側にテープを貼っていますが、プラレール列車が接近しても数値が下がらない事があったので、試しにテープを貼ってみました。

プログラム

Microsoft MakeCodeでは、上記の様にソナーセンサー用の拡張機能ブロックが用意されています。センサーを接続したmicro:bitではこのブロックを利用しています。

上記はセンサーを接続したmicro:bitです。先の数値の正確性に加え、今回の形での超音波距離センサーでは数値の増減が目まぐるしく、瞬間的に「0」が出力される事もありました。従ってセンサーの読み取りに「0.1」秒の一時停止を入れ、数値が「0」となった場合は「7」に補正する形にしています。

その上でセンサー数値が「50以上」で文字列「センサー」+数値「1」、センサー数値「50~5」で「センサー」+「3」、センサー数値「5以下」で「センサー」+「0」を送信しています。

上記はリモコン用micro:bitです。ABボタン操作によるもの以外に、センサーを接続したmicro:bitから「センサー」+「0」を受信したら「進行」+「0」、「センサー」+「3」を受信したら「進行」+「3」を送信します。

プラレール列車に搭載したmicro:bitのプログラムは、赤外線センサーを2個利用した時と同じです(変更無し)。※ABボタンの非常停止用プログラムを入れ忘れました。

走行の様子

超音波距離センサーでも減速を行えば、赤外線センサーを2個利用した時と同様に停止させる事が出来ますが、やはり安定感がありません。正確な位置で停止させるには、赤外線センサーを2個利用する方法が確実の様です。

本当はプラレールの列車側に超音波距離センサーを取り付けての停止や、もう1台列車を異なる速度で走行させて、追い付いた場合に衝突せずに減速する制御などを行いたいのですが、利用しているDCモーター用拡張基盤ではDC5Vを扱う事が出来ないので、今回の様にセンサー接続用に別のmicro:bitと拡張基盤を用意しました。

ただ、その後にDC5Vも接続出来るDCモーター用拡張基盤も購入したので、またいずれ挑戦してみようと思っています(詳細は以前の記事で)。

その他

今回の停止制御は、今後にmicro:bitとサーボモーターで分岐レールの制御や、プラレール列車2台での列車交換などを予定している為に、手始めとして試してみました。ただし悩みどころとして、micro:bit複数台での無線通信時のタイムラグや、全体を制御する・主導権を持たせるmicro:bitをどれに・どうしたら良いのかなど、なかなか一筋縄にはいきそうにありません。とりあえずテーマを決めて、1つずつ試してみるつもりです。

また今回の派生として、上記の様にレール両端に赤外線センサーをそれぞれ取り付けて、折り返し運転も試してみました。この場合は単にセンサーがONしたら列車のモーターを逆転させるだけです。この様子も下記の動画内にあります。

動画

今回の内容の動画です。

ブログ記事公開後に再び同じ内容(翌年に同じ場所を走行など)の動画を作成・公開している場合があります。記事内の動画もなるべく最新を掲載する様にしていますが、最新や過去・その他の動画を見る場合はYoutubeを見て下さい。

注記

    • この記事を参考にしてのプラレールの改造は、自己判断と自己責任の下で行って下さい。事故や怪我が発生してもその責任を負う事は出来ません。
    • 記事内の内容はあくまで私の利用する製品(アプリ含む)や機器での場合です。他メーカーの製品や機器をはじめ、同じメーカーの製品・機器であってもバージョン違い等の場合もあるので、記事内容の保証や責任を負う事は出来ません。
    • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で仕様等を確認し、自己判断と自己責任の下で利用して下さい。
    • 記事内で公開しているmicro:bit用プログラムは自由に利用・改変して頂いて構いません。ただし不具合やバグもありますので、プログラムを利用した際の故障や事故等についての保証や責任を負う事は出来ません。
    • micro:bit製品やプログラミング、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
    • BBC micro:bitは、micro:bit教育財団の登録商標です。
    • プラレールは、株式会社タカラトミーの登録商標です。
    • その他のブランド名または製品名は各所有者の商標です。