入侵检测器

这一节需要一个HC-SR501的小元件,大概3~5元钱,某多非常给力,5元钱的东西也包邮。

在这里插入图片描述
中文说明书称之为人体感应模块,产品介绍是这样说的:

HC-SR501是基于红外线技术的自动控制模块,采用德国原装进口LHI778 探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。

先注意三个引脚的接法,标着VCC的接5V电源,标着GND为接地,中间的接针OUT为信号输出,需要接到我们的Pico的GPIO口。

在这里插入图片描述

正极接Pico的VBUS,它使用MicroUSB的5V电源,信号输出接GP28。
请添加图片描述
先直接上代码:

import machine
import utime

sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)
led = machine.Pin(15, machine.Pin.OUT)

def pir_handler(pin):
    utime.sleep_ms(100)
    if pin.value():
        print("警告!检测到入侵!")
        for i in range(20):
            led.toggle()
            utime.sleep_ms(100)

sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)

while True:
    led.toggle()
    utime.sleep(2)

程序运行之后,LED灯慢闪,检测器开始工作,中断触发方式为IRQ_RISING,当有入侵时,PIR的输出口电平从0变到1,会调用pir_handler()函数,LED快速闪烁。

再来理解PIR,它是Passive Infrared Sensor的缩写,翻译为被动红外探测器。被动红外,是指探测器本身不发射任何能量而只是被动接收、探测来自环境的红外辐射,当有人体在探测器周围活动时,人体的红外辐射经过光学系统聚焦后,可以被探测器检测到。

HC-SR501有一个旋钮可以调节距离灵敏度,顺时针降低灵敏度,检测3米内左右的范围,逆时针增加灵敏度,大概到7米。

在这里插入图片描述

另外一个调节旋钮可以设置延时的长度,左旋最小到1秒,右旋最大可到300秒。

另外还有一个可设置的跳线是触发模式:
1)不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
2)可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。

在这里插入图片描述

视频效果:

Pico连接人体感应传感器,感应到周围的人体活动时,闪烁LED灯。

推荐阅读:
树莓派Pico开发系列文章

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐