樹莓派與傳感器
  • 前言
  • 樹莓派基礎
  • 樹莓派與Arduino
  • 樹莓派與Microbit
  • 用Python點亮LED
  • 把玩三色LED燈與PWM呼吸燈
  • 蜂鳴器
  • 按鈕開關
  • 人體移動感應器(PIR)
  • 尋線、避障與測距
  • 樹莓派:類比轉數位處理
  • 溫溼度感測器DHT11
  • 簡易的心跳偵測模組零件
  • 聲音感測器
  • 與火災相關的警報零組件
  • DS18B20溫度感測器
  • TM1638七節LED顯示器
  • MAX7219與矩陣式LED
  • 液晶顯示LCD1602
  • Django與物聯網
  • 使用VS Code遠端開發Django
  • 樹莓派與自走車
    • 控制馬達正反轉基礎
      • 自走車方向控制
    • 遠端鍵盤控制自走車+WebCam
    • 使用網路與搖桿、手機控制
  • 樹莓派與紅外線遙控器
  • 遠端GPIO:pigpio + piscope
Powered by GitBook
On this page

Was this helpful?

人體移動感應器(PIR)

Previous按鈕開關Next尋線、避障與測距

Last updated 6 years ago

Was this helpful?

人體移動感應器是很方便使用的電子模組元件,透過它可以偵測到附近是否有物體在移動,若有發現則觸發信號,電腦就可以利用這個觸發信號進行更進一步的活動,如閃燈、發出警告音等。

另外,日後的分享影音,將以gpiozero這個GPIO模組庫為主要對象,因為RPi GPIO是很底層的模組庫,要完成許多工作全部必須仰賴人工撰寫,因此在了解RPi GPIO的基本運作後,是時候離開它,並走向更方便的模組應用的時機了!

from gpiozero import LED, MotionSensor
from signal import pause

led = LED(26)
ms = MotionSensor(17)

def some_one_here(pir):
    print('有人來了', pir.pin.number)
    led.blink(1, 0.5, 3)

ms.when_motion = some_one_here

pause()

如果是純使用RPi.GPIO,程式碼會變得較為煩人,但了解其底層的運作也不錯,程式碼如下,提供參考。

import RPi.GPIO as gpio
from time import sleep

led = 26
pir = 17


def pir_checked(channel):
    print('some one here', channel)
    for i in range(3):
        gpio.output(led, gpio.HIGH)
        sleep(1)
        gpio.output(led, gpio.LOW)
        sleep(1)


gpio.setmode(gpio.BCM)

gpio.setup(led, gpio.OUT)
# 採用內建的下拉電阻
gpio.setup(pir, gpio.IN, gpio.PUD_DOWN)

try:
    # gpio.FALLING是指當電壓從高往下降時觸發事件
    # 這裡使用gpio.RISING是指當電壓從低往上升時觸發事件
    # 倒底要用哪個?會因為使用上拉或是下拉電阻的不同而不同。
    gpio.add_event_detect(pir, gpio.RISING, pir_checked, bouncetime=200)
    while True:
        sleep(1)
except KeyboardInterrupt:
    pass
gpio.cleanup()