2015年04月17日

Raspberry Piに赤外線センサーを付けて、動きを検知してみた


今日のゴール

RaspberryPiに赤外線センサーを付ける。
動きを検知したら、LEDを点灯させる。

必要な道具たち

・Raspberry Pi 赤外線モーションセンサー PIR Infrared Motion Sensor


・抵抗(一般的なLEDなら、120 〜 330オームぐらいの範囲でいいらしいです)
・LEDライト
・ブレッドボード
・ジャンパーピン

配線する

下記になるように配線します。

RaspberryPi <------------------->  PIR Infrared Motion Sensor
3.3V     <------------------->   VCC(+)
GND     <------------------->   GND(−)
GPIO26   <------------------->   OUT

下の写真の通りPIR Infrared Motion Sensorの「VCC」「OUT」「GND」をRaspberryPiにつなぎます。
51H3HHOH6mL.jpg

LEDライトは下記の通りにRaspberryPiにつなぎます。足の長いほうがVCC(+)です。
RaspberryPi <------------------->  LEDライト
GPIO6     <------抵抗------->  【+】(長い方)
GND      <------------------->  【−】

※今回は、GPIO6とGPIO26につないでますが、好きに変えてください。
その場合ソースコードも変更する必要があります。

全体としては、以下の図のようにつなぎます。
抵抗に、極性は無いので、どちらの向きでも大丈夫です。
自分は、220オームの抵抗をつなぎました。(※下図は220Ωではないです。)
raspi_led.png
※センサーのイラストは実物とは異なります

Pythonで実装する

配線したら、RaspberryPiでプログラムを書きます。

まず、必要なモジュールのインストールです。
$ sudo apt-get update
$ sudo apt-get install python-rpi.gpio

それでは、「motion_sensor.py」という名前でファイルを作り、実装します。
$ sudo vi motion_sensor.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO

# LEDのGPIOピンの番号、センサーのGPIOピンの番号
let_pin = 6
pir_pin = 26

sleeptime = 100000
led_light_up_time = 1

GPIO.setmode(GPIO.BCM)
GPIO.setup(pir_pin, GPIO.IN)
GPIO.setup(let_pin, GPIO.OUT)
GPIO.output(let_pin, GPIO.LOW)

def motion_detected(pir_pin):
  print "検知"

  # 点灯
  GPIO.output(let_pin, GPIO.HIGH)
  
  # 待機
  time.sleep(led_light_up_time)

  # 消灯
  GPIO.output(let_pin, GPIO.LOW)


# コールバック登録
GPIO.add_event_detect(pir_pin, GPIO.RISING, callback=motion_detected)

try:
  while True:
    print "App Start"
    print "ctrl+c  :  if you want to stop app"
    time.sleep(sleeptime)
except KeyboardInterrupt:
  print "Quit"
finally:
  print "clean up"
  GPIO.cleanup()

32行目で、イベントにコールバックメソッドを追加しています。
検知したら、コールバックに登録したメソッドが呼ばれる仕組みです。

ループしてポーリングするやり方でも実装可能ですが、コールバックを使うほうがいけてます。

動かしてみる

下記コマンドで、先ほど作ったプログラムを実行します。
$ sudo python motion_sensor.py

手をかざしたりすると、「検知」と表示されるとともに、LEDが光ります。
$ sudo python motion_sensor.py
App Start
ctrl+c  :  if you want to stop app
検知
検知
検知


終了する場合は、「ctrl+c」を押してください。




posted by Raspberry Pi at 09:57 | Raspberry Pi | このブログの読者になる | 更新情報をチェックする