名刺サイズの超小型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
GMO、ランサム被害にあった顧客に新しいPC提供へ 犯行グループは1人の顧客情報公開か
-
2
NECのルータ「Aterm」、PHP脆弱性の影響なし 設定画面URLの「.php」は無関係
-
3
GMO、不正アクセス実行犯の手がかりに懸賞金 1億5000万円規模
-
4
「楽天トラベル」に不正アクセス 顧客情報最大約260万件など流出か 予約者約3.6万件のクレカ情報も
-
5
auメールで朝から障害 全国で利用しづらい状況に
-
6
GMO、攻撃者の公開情報に「アクセスは絶対に控えて」 悪質な拡散者には法的措置を準備
-
7
So-net、会員情報約259万件が漏えい 一部メールサービスではパスワードも流出
-
8
メアドを検索→AIで“その人専用フィッシングメール”を生成する手法、クリック率が約2.7倍に 7000人以上で実験
-
9
IPO目論見書に「AIは人類の存亡リスク」「コードの9割はClaude製」 Anthropicが示した規格外の見立て
-
10
Apple、M6搭載の14インチ「MacBook Pro」発表 AI性能向上、33万9800円から
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR