广州网站关键词推广,wordpress主页显示图片,用QQ群做网站排名,中国丹阳Arduino 第十六章#xff1a;PIR 传感器练习
一、引言
在 Arduino 的众多有趣项目中#xff0c;传感器的应用是非常重要的一部分。今天我们要学习的主角是 PIR#xff08;被动红外#xff09;传感器。PIR 传感器能够检测人体发出的红外线#xff0c;常用于安防系统、自动…Arduino 第十六章PIR 传感器练习
一、引言
在 Arduino 的众多有趣项目中传感器的应用是非常重要的一部分。今天我们要学习的主角是 PIR被动红外传感器。PIR 传感器能够检测人体发出的红外线常用于安防系统、自动照明等场景。通过本次练习我们将深入了解 PIR 传感器与 Arduino 的结合使用学会如何读取传感器数据并根据数据做出相应的反应。
二、所需材料
Arduino 开发板推荐使用 Arduino Uno它是初学者常用且功能丰富的开发板。PIR 传感器常见的如 HC-SR501 型号这是一款比较容易获取且价格实惠的 PIR 传感器。杜邦线若干用于连接 Arduino 开发板和 PIR 传感器。LED 灯一个用于直观显示 PIR 传感器的检测结果。面包板方便进行电路连接和布线。
三、PIR 传感器介绍
PIR 传感器的工作原理基于人体发出的红外线。当有人进入传感器的检测范围时人体发出的红外线会使传感器内部的热释电元件产生变化从而输出一个电信号。一般来说PIR 传感器有三个引脚VCC电源正极、GND接地和 OUT信号输出。
以 HC-SR501 为例它还具有一些可调节的参数比如检测灵敏度和延迟时间。通过调节传感器上的电位器可以改变这些参数以适应不同的使用场景。
四、硬件连接
将 PIR 传感器的 VCC 引脚通过杜邦线连接到 Arduino 开发板的 5V 引脚为传感器提供电源。把 PIR 传感器的 GND 引脚连接到 Arduino 开发板的 GND 引脚实现接地。将 PIR 传感器的 OUT 引脚连接到 Arduino 开发板的一个数字引脚上比如数字引脚 2。这样传感器的输出信号就可以被 Arduino 读取。把 LED 灯的正极通过一个限流电阻例如 220 欧姆连接到 Arduino 开发板的数字引脚 13负极连接到 GND 引脚。限流电阻的作用是防止电流过大损坏 LED 灯。
五、代码编写
打开 Arduino IDE新建一个项目输入以下代码
const int pirPin 5; // 定义 PIR 传感器连接的引脚为数字引脚 5
const int ledPin 4; // 定义 LED 灯连接的引脚为数字引脚 4
int pirState LOW; // 初始化 PIR 传感器状态为低电平
int val 0; // 用于存储读取到的 PIR 传感器的值void setup() {pinMode(pirPin, INPUT); // 将 PIR 传感器引脚设置为输入模式pinMode(ledPin, OUTPUT); // 将 LED 灯引脚设置为输出模式Serial.begin(9600); // 初始化串口通信波特率为 9600
}void loop() {val digitalRead(pirPin); // 读取 PIR 传感器的值if (val HIGH pirState LOW) {// 如果检测到高电平且之前状态为低电平说明有人进入检测范围pirState HIGH;digitalWrite(ledPin, HIGH); // 点亮 LED 灯Serial.println(Motion detected!); // 通过串口打印检测到运动的信息} else if (val LOW pirState HIGH) {// 如果检测到低电平且之前状态为高电平说明人离开检测范围pirState LOW;digitalWrite(ledPin, LOW); // 熄灭 LED 灯Serial.println(Motion stopped!); // 通过串口打印运动停止的信息}delay(100); // 延迟 100 毫秒避免频繁检测
}六、代码解释
变量定义 const int pirPin 5;定义 PIR 传感器连接的引脚为数字引脚 2。const int ledPin 4;定义 LED 灯连接的引脚为数字引脚 13。int pirState LOW;初始化 PIR 传感器的状态为低电平用于记录传感器的当前状态。int val 0;用于存储从 PIR 传感器读取到的值。 setup()函数 pinMode(pirPin, INPUT);将 PIR 传感器连接的引脚设置为输入模式以便读取传感器的信号。pinMode(ledPin, OUTPUT);将 LED 灯连接的引脚设置为输出模式用于控制 LED 灯的亮灭。Serial.begin(9600);初始化串口通信设置波特率为 9600方便通过串口打印信息。 loop()函数 val digitalRead(pirPin);读取 PIR 传感器的值并将其存储在变量 val 中。if (val HIGH pirState LOW)当读取到的传感器值为高电平且之前传感器状态为低电平时说明有人进入了检测范围。此时将传感器状态更新为高电平pirState HIGH;点亮 LED 灯digitalWrite(ledPin, HIGH);并通过串口打印检测到运动的信息Serial.println(Motion detected!);。else if (val LOW pirState HIGH)当读取到的传感器值为低电平且之前传感器状态为高电平时说明人离开了检测范围。此时将传感器状态更新为低电平pirState LOW;熄灭 LED 灯digitalWrite(ledPin, LOW);并通过串口打印运动停止的信息Serial.println(Motion stopped!);。delay(100);添加一个 100 毫秒的延迟避免频繁检测减少资源消耗。
七、测试与调试
将编写好的代码上传到 Arduino 开发板。确保 PIR 传感器和 LED 灯的连接正确并且 PIR 传感器的检测范围没有被遮挡。打开 Arduino IDE 的串口监视器设置波特率为 9600。当有人进入 PIR 传感器的检测范围时LED 灯应该点亮并且串口监视器会显示“Motion detected!”的信息当人离开检测范围时LED 灯熄灭串口监视器会显示“Motion stopped!”的信息。如果程序没有按照预期运行可以检查硬件连接是否正确代码是否存在语法错误或者尝试调整 PIR 传感器的灵敏度和延迟时间。
八、拓展应用
安防报警系统将 PIR 传感器与蜂鸣器结合当检测到有人进入时不仅点亮 LED 灯还让蜂鸣器发出警报声实现简单的安防报警功能。自动照明系统在一些需要自动控制照明的场景中如走廊、卫生间等当 PIR 传感器检测到有人时自动打开灯光人离开后一段时间自动关闭灯光达到节能的目的。智能家居控制将 PIR 传感器的检测结果与其他智能家居设备如智能插座、智能窗帘等集成实现更智能化的家居控制比如当检测到有人进入房间时自动打开空调和窗帘。
通过本次对 PIR 传感器的练习相信你已经对它的工作原理和在 Arduino 中的应用有了更深入的了解。希望你能够发挥创意利用 PIR 传感器开发出更多有趣和实用的项目。