名刺サイズの超小型PC「ラズパイ」で遊ぶ(第56回)
Nゲージの模型をラズパイで動かす “らずてつ”その5――線路にセンサーを設置する
前回である程度は自動運転っぽいものが出来上がりました。ここからはもう一歩進めて、センサーで模型の位置を把握して、ポイントを変えたり停車させたりすることについて考えていきます。
模型の位置を把握するのはどうしたらよいでしょう。要はそこを通過したことが分かればいいので、センサーの上を模型が通過するとラズパイに知らせる、という仕組みを作ればよさそうです。
このような時に使うセンサーに「反射型フォトセンサー」(フォトリフレクター)があります。ラズパイの工作でよく見るのは、ラインを判断して自動的に進む車、などでしょうか。この場合は動く方に反射型フォトセンサーが搭載されており、白い紙の上に引かれている黒い線を反射率で判断しながら進んでいく、というものです。今回は逆に、線路上に反射型フォトセンサーを置いておき、そこを通過したときにラズパイへ知らせる、ということになります。
反射型フォトセンサーもさまざまな種類があるのですが、線路の上に置くには小さいものでないといけません。秋月電子通商では「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")
sensortest.py
コンソールから以下のコマンドを入力します。
$ 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秒ごとになっています。これよりも間隔を開けると数値の変化を読み取れませんでした。ただしこれはそれぞれの環境で変わると思いますので、調整してみてください。
次回は線路の上に設置したセンサーから模型を制御する方法について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
「Xが情報収集に役立たない……」熊本地震で不満の声続出 「Twitterを返して」
-
2
メルカリ、梨の転売疑惑に「盗品の出品は確認されず」 誹謗中傷には利用制限も
-
3
「こんなのに追われたら……」急斜面もやすやす爆走、中国製の車輪付き四足ロボのデモ動画が話題 最高時速20km超
-
4
検索結果に「詐欺ではありません」と表示させる詐欺手口、警視庁が注意喚起 AI要約も餌食に
-
5
Z世代に聞く次の流行、「AIイラスト」が1位に 「Claude Code」も上位
-
6
東野圭吾さん死去、Xなどで追悼相次ぐ 「ガリレオ」など数々の人気作、エンジニアから転身
-
7
NVIDIAやMicrosoftなど30社超、オープンAIの防御ツール共同開発の「Open Secure AI Alliance」設立
-
8
「あ、その情報メモしたい!」を叶えるワイヤレスイヤフォン、Nothing「Ear (3a)」
-
9
はてな、11億円流出の調査報告書を公開 偽警察、口外禁止、残業・休出200時間超、孤立……ほころびが連鎖
-
10
有識者はGoogleやX、Meta、ドワンゴを名指しで批判……総務省、偽広告や誹謗中傷に発信・拡散前の対策求める
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR