[电子技术]人体感应器


20141106_232805-001

原理实际上很简单,就是人体感应器触发raspberry pi播放声音。人体感应器本身会发出数字信号,不是模拟信号。所以raspberry pi也可以用。其次目标是播放一个声音文件(狗叫)。Arduino的话需要加外设。raspberry pi本身就有声音输出。简单起见,直接使用raspberry pi了。目标代码就是python。使用GPIO。

20141106_233110

人体红外传感器,感觉精度一般。

import RPi.GPIO as GPIO
import os
from time import sleep

PIN_LED = 22 
PIN_PIR = 23 

last_status = GPIO.LOW

def loop():
  global last_status
  current_status = GPIO.input(PIN_PIR)
  if current_status == GPIO.HIGH:
    GPIO.output(PIN_LED, GPIO.HIGH)
    if last_status == GPIO.LOW:
      os.system('mpg321 Dog_Woof.mp3')
  else:
    GPIO.output(PIN_LED, GPIO.LOW)
  last_status = current_status 
  sleep(0.1)

if __name__ == '__main__':
  GPIO.setmode(GPIO.BCM)
  GPIO.setup(PIN_LED, GPIO.OUT)
  GPIO.setup(PIN_PIR, GPIO.IN)

  try:
    while True:
      loop()
  except KeyboardInterrupt:
    GPIO.cleanup()