【PR】この記事には広告が含まれています。

ラズベリーパイでは様々なセンサーをつないで信号を読み取れます。その中でも焦電型赤外線センサーは人感センサーとして使えるため、活用の幅が広いことから初心者の方にもおすすめです。

僕は秋月電子で購入しました。レーダーのようなデザインがお気に入りです。
自宅のファンヒーターにも似たような形状のセンサーが付いています。

人が近付いたら運転スイッチが入り、人がいなくなると止まる仕組みです。ラズパイでも同じようにセンサーの信号がオンになったら、LEDを点灯するなど自由にプログラムを組むことが可能です。

この記事ではPythonプログラムで焦電型赤外線センサーの信号を読み取る方法を解説します。
焦電型赤外線センサーの仕組み
まずはセンサーの仕組みを理解しましょう。
熱を発する物体は赤外線を出しています。ヒトには体温があるので、人体からは赤外線が出ています。焦電型赤外線センサーは赤外線の動きを電圧の変化としてキャッチします。

つまり、焦電型赤外線センサーは熱の動きを検知します。
人が近くにいても止まっていればセンサーは反応しません。人が動いている時だけ反応します。
センサーの感度は調整可能
センサーの裏面にツマミが3つ付いています。感度などが調整可能です。

調整項目は以下の通りです。
- DARK ADJ(調光)
- 時計回りに回すと暗い場所での感度が鈍くなります。
- SENS(感度)
- 時計周りに回すと感度が高くなります。
- DELAY_TIME(遅延時間)
- 時計周りに回すとセンサーONの時間が長くなります。
センサーの調整には手こずりました。調整がうまくできていないと、全く反応しなかったり、反応したままになったりします。
僕のセッティングを載せておきます。参考にしてください。


センサーの接続方法
ラズベリーパイと人感センサーを以下のように接続します。

線の色 | センサー側 | ラズベリーパイ側 |
---|---|---|
① 赤 | + | 5V |
② オレンジ | OUT | GPIO 18 |
③ 黒 | - | GND |


GPIOピンの配置は以下の画像を参考にしてください。

Pyhtonプログラムでセンサーの信号を取得する
センサーの信号を読み取るプログラムは以下の通りです。
import RPi.GPIO as GPIO
import time
GPIO_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN,GPIO.IN)
while True:
if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
print("反応あり!")
time.sleep( 1 )
else:
print("反応なし")
time.sleep( 1 )
プログラムを保存して実行してみましょう。

センサーの前で手を動かして「反応あり!」になれば成功です。うまくいかない場合は調整ツマミを動かしてみてください。
応用は簡単
例えば、人の動きを検知した時にLEDを点灯させたい場合は、上記のプログラム中の「print(“反応あり!”)」の下にLEDを点灯する処理を追加するだけです。
下のツイートではセンサーが反応したときに、カメラの画像を取得して保存するプログラムを組んでいます。
下記の事例はセンサーが反応した時にサーボモーターが動くようにプログラムを組んでいます。
コメント一覧
I am so grateful for your post.Thanks Again. Will entre on.
Nice post. I learn something totally new and challenging on sites I stumbleupon on a daily basis. It will always be interesting to read content from other authors and practice a little something from their web sites.
Thank you for reading the blog