小小云提示:教程作者caterpillar是来自台湾的programmer(kinda),所以在一些专有名词的使用上会和我们这边使用的不太一样啦,不过作者也有标注出英文名称,大家自行转换哟(⁎⁍̴̛ᴗ⁍̴̛⁎)
被动式红外线感应器(Passive Infrared Sensor, PIR)也经常被称为 PIR 动作感应器(PIR Motion Sensor),是一种可侦测红外线的感测器,生活中许多物品都会发出红外线,而 PIR 主要是侦测人体发出的红外线变化,来判断是否有人体移动发生。
相对于被动式红外线感应器的是主动式红外线感应器,像是洗手台的感应式水龙头,就装有主动式红外线感应器,感应器会主动发射红外线,如果有物体接近遮挡,红外线会反射,依此判断是否要供水。
认识 PIR 模组
PIR 模组外观上可以看到一个白色半球体透镜,你可以打开它,里头可看到 PIR 主要用来感测微量讯号的热电感应器(Pyroelectricity Sensor):
上图中,你可以看到热电感应器下方有两个可焊接的脚位(在 VCC 脚位上方),两个脚位间的电阻值必须够大,PIR 才会作动,你可以接上光敏电阻,当光线越暗,光敏电阻的电阻值就会越大,因此可让 PIR 在黑暗的环境中才作动。
在 PIR 的底部,可以看到 VCC、OUT 与 GND 三个脚位:
我手边的这个 PIR 模组为 DSN-FIR800,感测到红外线变化时,OUT 会输出 3.3V 的电压,并持续一段延迟时间后,再回到 0V 电压。
延迟时间可以透过下图 Tx 可变电阻(使用一字或十字起子)来调整,下图中 Sx 可变电阻,则可用来调整敏感度,对可变电阻顺时针转动 Tx,延迟时间加长(零点几秒到几十分钟),顺时针转动 Sx,可感应的距离增加(约 3 公尺到 7 公尺)。
DSN-FIR800 预设是可重复触发(在上图中左下标示为 H 与 L 的地方调整,连接中间与 H 表示可重复触发),也就是当感测到红外线变化而 OUT 输出 3.3V 电压,在延迟时间内若持续感测到红外线变化,那么就会持续保持 3.3V 电压,直到不再感测到红外线变化后一段延迟时间,才将电压降为 0V,这通常用于判断,人体是否有持续动作(或太久没动静)的场合。
有些厂商制作的模组,可以使用 Jumper 在可重复与不可重复触发之间做调整,会比较方便,不可重复触发,是当感测到红外线变化而 OUT 输出 3.3V 电压,无论延迟时间内有无感测到红外线变化,时间一到就会先降为 0V 电压。
连接 PIR 后,需要有一段几十秒的暖机时间,在这段时间内红外线变化的输出会是不稳定的状态。
感应人体动作来点亮 LED
如果想使用 mBlock 与 Arduino 来取得 PIR 的感应资料,并点亮 LED,可以如下连接电路,其中红线要实际上对应至你的感应器 VCC 脚位,黑线对应至 GND 脚位:
程式很简单,就是根据 OUT 脚位的电位,决定要不要让 LED 点亮:
程式执行后,用手试着在 PIR 前晃动一下,就会看到 LED 点亮,实际上,你可能是在感应到人体移动之后,作些额外的程式动作,而不单只是点亮 LED,因为如果单纯只是要点亮 LED(或者是搭配继电器点亮灯炮),并不需要程式,只要如下连接电路也可以:
如果你手边有光敏电阻,想要测试一下黑暗环境才使得 PIR 作动,那可以如下作暂时性的连接:
这么一来,只有在拿布盖住光敏电阻的情况下,PIR 才会作动,此时用手试着在 PIR 前晃动,LED 才会点亮。
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云