from machine import Pin
import utime
import dht
# ① 初始化硬體接腳
# PIR 感測器:數位輸入,接 GP28
pir = Pin(28, Pin.IN)
# 外接 LED:數位輸出,接 GP2
led = Pin(2, Pin.OUT)
# DHT22 感測器:使用 dht 函式庫,接 GP15
# (請確認你的實體接線或 Wokwi 模擬圖中 DHT22 的 Data 腳位)
sensor = dht.DHT22(Pin(15))
print(">>> 系統啟動:PIR + DHT22 環境回報系統")
print(">>> 狀態:等待偵測中...")
while True:
# ② 檢查 PIR 是否偵測到人 (輸出為 1)
if pir.value() == 1:
led.on() # 亮燈警示
try:
# 💡 填空處的正確邏輯:
sensor.measure() # 1. 觸發量測 (必要步驟)
temp = sensor.temperature() # 2. 讀取溫度
hum = sensor.humidity() # 3. 讀取濕度
print("-" * 30)
print("🔴 [警報] 偵測到移動!")
print(f"🌡️ 當前溫度:{temp:.1f}°C")
print(f"💧 當前濕度:{hum:.1f}%")
print("-" * 30)
except OSError as e:
# DHT 感測器偶爾會讀取失敗,增加此判斷避免程式崩潰
print("❌ 讀取 DHT22 感測器失敗,請檢查接線")
# ③ 延遲 3 秒,避免短時間內重複觸發,也符合 DHT22 的讀取頻率限制
utime.sleep(3)
print(">>> 恢復監測中...")
else:
led.off() # 無人移動時關燈
# ④ 小幅度暫停,節省 CPU 資源
utime.sleep_ms(200)