5ドル!ラズパイ・ゼロ(Raspberry pi Zero)でIoT (31) 距離センサ2 TSSP77038

正面60cm以内に何かいる?

 VishayのTSSP77038を搭載する赤外線距離センサ・モジュールをスイッチサイエンスで入手しました。赤外線の反射を利用します。この製品は、60cm以内に物体が存在しているかどうかを判断して知らせます。測定器のような距離を測る使い方のセンサではありません

 ピンヘッダをはんだ付けして利用します。60cmは初期状態の設定です。

TSSP77038モジュールのスペック

  • 動作電圧 3.3~5 V
  • 最大検出距離 60cm
  • サンプリング周波数 1kHz

Out端子を観測

 5Vに設定した実験用電源をつなぎ、机の角に、下を向けて貼り付けました。机は約70cmの高さがあるので、何も検出しないはずです。電源を入れると基板にある緑色のLEDが点灯します。これは赤外線LEDと並列につながっています。

 モジュールと物体との距離を変えながら、オシロスコープでOutに出てくる波形を観測しました。検出しないときは約5Vで、クロックが少し乗ることもあります。検出すると約0Vになります。

 検出すると、基板上にある赤色LEDが点灯します。

 製造元の説明では、周囲の光の干渉を受けることと、検出面がセンサと平行でなかったりするときは、検出がうまく行われないと書かれています。38kHzに変調されているので、蛍光灯や太陽光の影響はある程度軽減できるとは思いますが、利用する場所で検出の特徴を把握することが大切だと思います。

 TSSP77038のデータシートにありますが、検知範囲は正面だけではありません。プリント基板上に実装されているので陰になる部分もありますが、横は約30cmで検知しました。

接続

TSSP77038 ラズパイ
Out 29番ピン(GPIO5)
Vdd 2番ピン(5V)
GND 6番ピン
Enable -

プログラム

 60cm内に物体を検出すると出力OutがLowになるので、タクト・スイッチを押したときと同様のプログラムを作りました。

 センサのOutはGPIO5につなぎます。検知したときGPIO26につながったLEDを点灯させます。データシートの内部ブロック図を見るとセンサの出力にトランジスタが入っているので、Outからの距離は数m延長しても動作するかもしれません(未検証)。

 メインのプログラムは、カウントアップしているnを印字しています。button関数は非同期なので、センサの検出が行われればその時点で「found it」と表示し、LEDを点灯します。光センサLLS05-Aのプログラムと同じです。

#!/usr/bin/env python
from gpiozero import LED,Button
import time

led = LED(26)
button = Button(5)
led.off()
print ("start")

def message():
print("found it")
led.on()

button.when_pressed = lambda:message()
button.when_released = led.off

#main
n=0
while 1:
print (n)
n=n+1
time.sleep(0.1)

 このPololuのセンサは、検出距離が30 cmの製品もあります。

 実行している様子です。

※執筆時点;2017-11-29をダウンロードし、sudo apt-get update と sudo apt-get upgrade -y および sudo rpi-update で更新し、カーネルは、uname -a で確認。4.9.66でした。

※プログラムを仮にtssp77038.pyと/home/piに保存すると、sudo chmod 755 tssp77038.py で実行権を付け、ターミナルから、python tssp77038.pyで実行します。
 プログラム・リストは、表示の関係でTabキーが無視されるので、スペースに代えてあります。また、リスト中を2回クリックすると全選択になるので、CTRL-Cでコピーし、テキスト・エディタにCTRL-Vで貼り付けて利用してください。ラズパイに持っていくと、リターン・コードなどが化けていることがあるので、一度消して、ラズパイのテキスト・エディタで改行してください。