Nゲージの模型をラズパイで動かす “らずてつ”その5――線路にセンサーを設置する:名刺サイズの超小型PC「ラズパイ」で遊ぶ(第56回)
鉄道模型の運転をラズパイで制御する仕組みに挑戦。
前回である程度は自動運転っぽいものが出来上がりました。ここからはもう一歩進めて、センサーで模型の位置を把握して、ポイントを変えたり停車させたりすることについて考えていきます。
模型の位置を把握するのはどうしたらよいでしょう。要はそこを通過したことが分かればいいので、センサーの上を模型が通過するとラズパイに知らせる、という仕組みを作ればよさそうです。
このような時に使うセンサーに「反射型フォトセンサー」(フォトリフレクター)があります。ラズパイの工作でよく見るのは、ラインを判断して自動的に進む車、などでしょうか。この場合は動く方に反射型フォトセンサーが搭載されており、白い紙の上に引かれている黒い線を反射率で判断しながら進んでいく、というものです。今回は逆に、線路上に反射型フォトセンサーを置いておき、そこを通過したときにラズパイへ知らせる、ということになります。
反射型フォトセンサーもさまざまな種類があるのですが、線路の上に置くには小さいものでないといけません。秋月電子通商では「TPR-105」という反射型フォトセンサーを販売しています。サイズも3.2(横)×2.7(縦)mmと小型なので、Nゲージの線路に置けそうです。筆者が持っているトミックスのレールにはDCフィーダーNを差すためのスペースがあり、そこに設置するとよさそうです。実際にトライしてみましたが、スペースにすっぽりとはまるのは無理でしたが、模型の通行の邪魔にならないで済みそうです。
ただしTPR-105を設置するのはちょっと面倒でした。TPR-105は線が細くてぐにゃぐにゃと曲がる上にかなり弱く、曲げたり伸ばしたりするとすぐに断線します。またDCフィーダーNの入る場所は狭いので、太いリード線は入りません。このため、手元にあった「協和ハーモネット 架橋ポリエチレン電線」を使いました。そのあと千石電商で購入した1mmの熱収縮チューブを入れて、隣り合うコードと絶縁するようにしました。加えてホットボンドを線路の下に流し込んで固定するとともに、熱収縮チューブで覆えなかった部分を絶縁しました。ただしこのやり方は非常にアナログなので、うまいやり方があったら教えていただきたいです。
ではTPR-105を使う方法について考えていきます。TPR-105はアナログ出力しか扱えませんので、途中にデジタル−アナログ(DA)コンバーターを入れる必要があります。DAコンバーターを使う方法については第40回 庭の水やりで身近なIoTを体験、自動水やりシステムの構築 〜水分センサーの取り付け〜で解説しました。基本的な測定はこれと変わらないので、参考にしつつ組み上げていきましょう。
まずTPR-105ですが、左側に赤外線LED、右側にセンサーが取り付けられており、赤外線LEDからの反射光を捉えてデータを送信します。このためLEDに取り付ける抵抗と、センサー側に取り付ける抵抗の2種類が必要になります。LED側には220Ω、センサー側には20kΩを取り付けました。
TPR-105の左側に赤外線LED、右側にフォトトランジスタが配置されています。本体で言うと、左上に切り欠きがある方が上になりますので注意しましょう。
フォトトランジスタが吐き出す信号はアナログです。これをいったんDAコンバーターに読み込ませてから、コンバーター経由でラズパイに入力します。今回使うのはMCP3008です。第40回では2チャンネル分のデータを扱えるMCP3002を使いましたが、今回は3個以上のデータを読み込む必要があるので、8チャンネルを使えるMCP3008を使います。プログラム上の基本的な扱いはそれほど変わりませんので、特に迷うこともないかと思います。
ラズパイとMCP3008、TPR-105の接続は以下の図のようになります。TPR-105の右上からMCP3008のCH0へデータを送り、そしてSPIで接続されたラズパイにデータが送られる、という仕組みです。
これを元に以下のプログラムを走らせて、ちゃんと認識するかチェックしましょう。
#!/usr/bin/env python # -*- coding: utf-8 -*- import time from gpiozero import MCP3008 Vref = 3.3 try: while True: sen01 = MCP3008(channel=0) rail1 = round(sen01.value * Vref * 100,2) print(str(rail1)) time.sleep(0.1) except: KeyboardInterrupt print("End")
コンソールから以下のコマンドを入力します。
$ python sensortest.py
すると以下のように数字が流れます。
47.56 47.23 47.56 47.23 47.56 47.23 47.23 47.23 47.23 47.56 47.23 47.56 47.56 47.56 47.56 …………
試しにセンサーの上に指をかざしてみましょう。数値が変わります。
47.56 47.56 47.88 47.56 47.56 47.23 47.23 47.56 41.43 42.72 47.23 71.09 80.12 310.98 89.47 46.91 33.69 38.53 47.56 47.56 …………
ほぼふさぐと310.98という数字に変わりました。つまり模型が通ったらセンサーをふさぐため数字が大きくなるので、数値を指定して動きを変化させればOKですね。なおセンサーから信号を受けるタイミングですが、現状は0.1秒ごとになっています。これよりも間隔を開けると数値の変化を読み取れませんでした。ただしこれはそれぞれの環境で変わると思いますので、調整してみてください。
次回は線路の上に設置したセンサーから模型を制御する方法について解説します。
関連記事
- Nゲージの模型をラズパイで動かす “らずてつ”その1――鉄道模型とラズパイをつなぐ
今回から鉄道模型の運転をラズパイで制御する仕組みに挑戦します。 - Nゲージの模型をラズパイで動かす “らずてつ”その2――制御の準備
鉄道模型の運転をラズパイで制御する仕組みに挑戦します。 - Nゲージの模型をラズパイで動かす “らずてつ”その3――ポイント切り替えを操作する
鉄道模型の運転をラズパイで制御する仕組みに挑戦します。 - Nゲージの模型をラズパイで動かす “らずてつ”その4――タイミングを合わせて車両を走らせる
鉄道模型の運転をラズパイで制御する仕組みに挑戦します。 - 部屋の二酸化炭素濃度を測定しよう ラズパイでCO2センサーを作る
ラズパイを使ってCO2を計測し、部屋の換気をする目安にしてみましょう。 - 550円の「Raspberry Pi Pico」でIoT その1:気温と湿度、気圧を測定する
独自開発のチップ「RP2040」を搭載したマイコンボード「Raspberry Pi Pico」でセンサーデバイスをテスト。 - ラズパイで「Windows 10 on ARM64」を動かす(オーバークロック編)
ラズパイにARMプロセッサ向けの「Windows 10 on ARM64」をインストールしてみた。今回はオーバークロックで快適動作を実現。 - ラズパイで「Windows 10 on ARM64」を動かす(インストール編)
ラズパイにARMプロセッサ向けの「Windows 10 on ARM64」をインストールしてみた。 - ラズパイで「Windows 10 on ARM64」を動かす(事前準備編)
ラズパイにARMプロセッサ向けの「Windows 10 on ARM64」をインストールしてみた。 - ラズパイ一体型キーボード「Raspberry Pi 400」レビュー 特例制度のWeb申請で“技適なし”を回避した
かつての“マイコン”を思わせるラズパイ一体型キーボード「Raspberry Pi 400」のレビューのファーストインプレッションをお届け。海外製品を日本国内で使うために気を付けるべきポイントも紹介。 - ラズパイ一体型キーボード「Raspberry Pi 400」の性能は? ベンチマークテストで従来モデルと比べた
かつての“マイコン”を思わせるラズパイ一体型キーボード「Raspberry Pi 400」でベンチマークテストを実施。その実力とは? - ラズパイで気温と湿度を測定、LINEで通知を受け取る 〜前編〜
今回は温湿度センサーモジュールとラズパイを組み合わせ、LINEと連携させる方法を紹介します。 - ラズパイを無線LANルーター化する 〜アクセスポイント編〜
家庭内で無線LANルータを使っている人は多いかと思います。今回はそのルーター機能をラズパイに持たせて、ラズパイを使った無線LANルーターの構築方法についてご紹介します。 - 本格的な撮影が楽しめる公式カメラモジュール「Raspberry Pi High Quality Camera」を試す
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。Raspberry Pi公式のカメラとして本格的な撮影が楽しめる「Raspberry Pi High Quality Camera」を紹介します。 - ラズパイで新型コロナウイルス解析に参加する 〜Ubuntu Serverの構築編〜
小さなマイクロコンピュータ「Raspberry Pi」(通称ラズパイ)で作る、自分だけのガジェット。今回はラズパイで。
Copyright © ITmedia, Inc. All Rights Reserved.