什么是 PIR 传感器?
PIR 传感器,全称为“Passive Infrared Sensor”,又称“人体红外线传感器”,是一种可以探测人体热量的电子元件。它通过探测周围环境中的红外线辐射来感知人体的存在,因此通常被用作安防领域中的移动侦测器。
PIR 传感器一般由红外线探测器、信号处理器、镜头等部件组成。当有物体(通常是人体)进入传感器感知范围时,红外线探测器会感知到周围环境中的红外线辐射的变化,并将这个信号传递给信号处理器进行处理。如果处理器检测到辐射的变化达到了设定的阈值,它就会触发警报或其他预定的操作。
PIR 传感器广泛应用于各种领域,包括安防、智能家居、自动化控制等。在安防领域,PIR 传感器常常被用于探测入侵者,可以配合其他安防设备,如报警器、监控摄像头等,提高整个安防系统的效能。
PIR 传感器能检测到什么?
PIR 传感器主要用于检测人体的存在,具体来说,它可以检测到发出红外线辐射的物体,包括人体、动物、车辆等。当一个物体进入传感器的感知范围内,它就会感知到这个物体发出的红外线辐射的变化,并据此判断是否有人体或动物等物体进入。
需要注意的是,PIR 传感器对红外线辐射的灵敏度非常高,因此它还可以检测到一些在室温下发出的较强的红外线辐射的物体,例如热水器、电视等电器设备。这些设备在运行时会产生较大的热量,PIR 传感器可以通过感知它们发出的辐射来判断它们的状态。
需要注意的是,PIR 传感器并不会直接探测物体的形状、大小或颜色等特征,而是仅仅依靠红外线辐射的变化来判断物体的存在。因此,在使用 PIR 传感器时需要合理安置和调节,以避免误判和漏判。
Grove – mini PIR 人体运动传感器
Grove – mini PIR 人体运动传感器是一种紧凑、低功耗且经济高效的 PIR 传感器(尺寸:20mmx20mmx12mm),适用于检测距离要求相对较小的应用场景。
理论检测距离可达3m至5m,但是,推荐最佳检测距离2m,最佳温度25°C。
传感器的灵敏度是可调的,电路板背面有一个预留的引脚,以便您可以焊接滑动变阻器来调整灵敏度。如果您认为灵敏度不够,这里有一个技巧,将塑料盖向上拖动一点将有助于增强灵敏度。
案例:防盗入侵监测
功能介绍:利用Mini IR 运动传感器可以检测特定区域是否有人,如果有人经过则触发警报装置!
硬件清单如下:
Seeeduino Lotus
Grove - mini PIR motion sensor
Grove - Piezo Buzzer
Grove - Red LED
第一部分,硬件安装
- 将Grove-mini PIR 运动传感器连接到 Lotus主控板D2接口上,
- 将Grove - Red LED 模块连接到 Lotus主控板D4接口上,
- 将Grove - Piezo Buzzer 模块连接到Lotus主控板D5接口上,如下图所示。
第二部分,编写Arduino程序
编写Arduino程序,当有人经过时蜂鸣器和Led灯报警,代码如下:
#define PIR_MOTION_SENSOR 2 //Use pin 2 to receive the signal from the module
int BuzzerPin = 5; // set D5 as buzzer
int LED_RAD = 4; // set D4 as LED
void setup() {
Serial.begin(9600);
pinMode(PIR_MOTION_SENSOR, INPUT);
pinMode(BuzzerPin, OUTPUT);
pinMode(LED_RAD, OUTPUT);
}
void loop() {
if (digitalRead(PIR_MOTION_SENSOR)) { //判断如果有人经过
analogWrite(BuzzerPin, 100); // 让蜂鸣器发声
digitalWrite(LED_RAD, HIGH); // 让Led灯为高电平状态,并保持3秒钟
delay(3000);
analogWrite(BuzzerPin, 0); // 让蜂鸣器停止发声
digitalWrite(LED_RAD, LOW); // 让Led灯为低电平状态,并保持4秒钟
delay(4000);
}
}
这是一个简单的Arduino程序,使用一个PIR运动传感器来探测运动并使用一个蜂鸣器和LED灯来发出声音和光信号。
#define PIR_MOTION_SENSOR 2 //Use pin 2 to receive the signal from the module
此代码,定义PIR运动传感器引脚,常量PIR_MOTION_SENSOR 为2号引脚,
int BuzzerPin = 5; // set D5 as buzzer
int LED_RAD = 4; // set D4 as LED
接下来定义了两个输出引脚:一个是变量BuzzerPin,用于连接蜂鸣器,另一个是变量LED_RAD,用于连接LED灯。
void setup() {
Serial.begin(9600);
pinMode(PIR_MOTION_SENSOR, INPUT);
pinMode(BuzzerPin, OUTPUT);
pinMode(LED_RAD, OUTPUT);
}
在setup()函数中,通过调用pinMode()函数来设置每个引脚的模式。将PIR_MOTION_SENSOR引脚设置为INPUT输入模式,将BuzzerPin和LED_RAD引脚设置为OUTPUT输出模式。
void loop() {
if (digitalRead(PIR_MOTION_SENSOR)) { //判断如果有人经过
analogWrite(BuzzerPin, 100); // 让蜂鸣器发声
digitalWrite(LED_RAD, HIGH); // 让Led灯为高电平状态,并保持3秒钟
delay(3000);
analogWrite(BuzzerPin, 0); // 让蜂鸣器停止发声
digitalWrite(LED_RAD, LOW); // 让Led灯为低电平状态,并保持4秒钟
delay(4000);
}
}
在loop()函数中,使用digitalRead()函数读取PIR运动传感器引脚的状态。如果引脚状态为HIGH,则表示检测到人的运动。
在这种情况下,程序会执行以下操作:
- 使用analogWrite()函数向BuzzerPin引脚发送PWM信号,以便控制蜂鸣器的音量(在这里是100)。
- 将LED_RAD引脚设置为HIGH,点亮LED灯。
- 使用delay()函数暂停3秒钟。
- 使用analogWrite()函数将BuzzerPin引脚的PWM信号设置为0,停止蜂鸣器发声。
- 将LED_RAD引脚设置为LOW,关闭LED灯。
- 使用delay()函数延时4秒钟,然后重复检测运动。
因此,当检测到运动时,程序将发出声音和光信号,以警示用户。