4.3 Pi Motion Sensor

モーションセンサー(人感センサー)を使って、人が近づくと、LED点灯、猫がなくのような動作をする。
モーションセンサーはHC-SR501を利用する。繋げは簡単な3本結線のみ。電源2本と、真ん中データ一本はGPIO26に接続する。

点灯LEDはGPIO6に接続する。
猫の音声は、AppInventor のHalloPurrから流用。ファイルは ./Music/meow.mp3 に置く。
Raspberry Piのpythonパッケージにはpygameというモジュールがデフォルトでインストールされているそうです。それを利用して、猫の音声を再生する。
動作プログラム

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
import pygame.mixer
# 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)
pygame.mixer.init()
pygame.mixer.music.load("./Music/meow.mp3")
def motion_detected(pir_pin):
  print "検知"
  # 点灯
  GPIO.output(let_pin, GPIO.HIGH)
  pygame.mixer.music.play(1)
  # 待機
  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()
  pygame.mixer.music.stop()

出来上がったシステムの外観

参考

  • http://qiita.com/Nyanpy/items/cb4ea8dc4dc01fe56918 – Raspberry Piでwav/mp3ファイルを再生する方法(python編)
  • http://raspi.seesaa.net/article/417437441.html – Raspberry Piに赤外線センサーを付けて、動きを検知してみた