from machine import Pin, PWM
from time import sleep, time
wait_close = False
open_time = None
# GPIO14引脚连接人体红外运动传感器PIR
pir = Pin(14, Pin.IN, Pin.PULL_UP)
# GPIO12引脚连接继电器控制指示灯
light = Pin(12, Pin.OUT)
# GPIO13连接继电器控制门锁
door_Relay = Pin(13, Pin.OUT)
# 25引脚做输入
serve_open_door = Pin(25, Pin.IN, Pin.PULL_UP)
# 27引脚:开门按键输入
open_door = Pin(27, Pin.IN, Pin.PULL_UP)
# 26引脚:关门按键输入
close_door = Pin(26, Pin.IN, Pin.PULL_UP)
# ✅ 初始化蜂鸣器:接在 GPIO32
buzzer = PWM(Pin(32))
buzzer.duty(0) # 默认不响
while True:
# door_Relay.value(1)
if serve_open_door.value() == 0:
print('serve_open_door',door_Relay.value())
door_Relay.value(1)
open_time = time()
if open_door.value() == 0:
door_Relay.value(1)
print('open_door',door_Relay.value())
open_time = time()
if close_door.value() == 0:
door_Relay.value(0)
print('close_door',door_Relay.value())
open_time = None
# print(serve_open_door.value(),open_door.value(),close_door.value(),door_Relay.value())
wait_close = True if door_Relay.value() else False
# ✅ 判断是否开门超过 5 秒,响蜂鸣器
if open_time and wait_close:
elapsed = time() - open_time
if elapsed > 5:
print("门已开启超过 5 秒,响蜂鸣器提醒")
buzzer.freq(623) # 设定频率 1kHz
buzzer.duty(512) # 设定响度(0~1023,512 是一半)
else:
buzzer.duty(0) # 不响
else:
buzzer.duty(0) # 不响
light.value(1 if pir.value() else 0)
sleep(0.01)
人体红外运动检测指示灯
人体红外运动传感器PIR