1. 课程介绍与硬件准备
大家好,欢迎来到《人体传感器实现人来灯亮》实战课。我是你们的老朋友,一个在嵌入式圈子里摸爬滚打了十几年的工程师。
这门课要做什么?说白了,就是让你亲手做出一个「人一靠近,灯就自动亮」的小系统。听起来简单,但里面涉及的东西可不少——传感器怎么检测人体?信号怎么处理?怎么控制灯泡?这些我都会带着你一步步搞定。
我个人习惯,每门课开头先把「家伙事儿」备齐。今天咱们就把硬件清单理清楚,再把开发环境搭起来。别急,慢慢来。
人体传感器(PIR)到底是个啥?
PIR,全称 Passive Infrared Sensor,被动式红外传感器。嗯,名字挺长,但原理其实不复杂。
你想想看,任何有温度的物体都会向外辐射红外线。人体大概 36-37℃,辐射的红外线波长在 9-10μm 左右。PIR 传感器就是专门「看」这个波段的红外线的。
它内部有两个感应单元。当没有人时,两个单元接收到的红外辐射量是平衡的,输出为低电平。当人走过时,红外辐射的变化打破了这个平衡,传感器就会输出高电平。
核心要点:PIR 检测的是「变化」,不是「存在」。你站在它面前不动,它反而不输出信号。所以它最适合检测「有人经过」这种场景。
我在项目中遇到过一个问题:把 PIR 装在空调出风口旁边,结果它老是误触发。为什么?因为空调吹出的冷风让传感器周围的温度快速变化,它以为有人来了。嗯,这里要注意——安装位置很关键。
硬件清单:你需要准备这些
好,咱们来看看这堂课需要哪些硬件。我列了个表,你照着买就行,别买错了。
| 序号 | 硬件名称 | 型号/规格 | 数量 | 备注 |
|---|---|---|---|---|
| 1 | Arduino 开发板 | Uno R3 或 Nano | 1 块 | 入门首选,稳定便宜 |
| 2 | PIR 人体传感器模块 | HC-SR501 | 1 个 | 最常用的型号,几块钱一个 |
| 3 | 继电器模块 | 5V 单路继电器 | 1 个 | 用来控制灯泡的通断 |
| 4 | 灯泡 | 220V 白炽灯或 LED 灯 | 1 个 | 注意功率不要超过继电器额定值 |
| 5 | 灯座 | E27 螺口灯座 | 1 个 | 配合灯泡使用 |
| 6 | 杜邦线 | 公对公、公对母 | 若干 | 建议各备 10 根 |
| 7 | 面包板 | 830 孔 | 1 块 | 方便搭建电路,不用焊接 |
| 8 | USB 数据线 | USB-A 转 USB-B | 1 根 | 给 Arduino 供电和下载程序 |
| 9 | 电源线 | 两芯护套线 | 1 米 | 连接灯泡和继电器 |
我的建议:如果你是第一次玩,直接买一套 Arduino 入门套件,里面基本都包含了。省得一个个找,还容易漏。
HC-SR501 传感器详解
这个 HC-SR501 是市面上最常见的 PIR 模块。我当年第一次用的时候,还闹过笑话——接上电发现它一直输出高电平,以为坏了。后来才发现,它有个「预热时间」。
来看看它的关键参数:
- 工作电压:5V,直接接 Arduino 的 5V 引脚就行
- 检测距离:3-7 米,可以通过电位器调节
- 检测角度:约 110°
- 输出信号:检测到人时输出高电平(3.3V),无人时输出低电平
模块上有两个电位器,一个调距离,一个调延时。还有个跳线帽,用来选择触发模式:
- H 模式(可重复触发):只要有人一直在检测范围内,输出就一直保持高电平
- L 模式(不可重复触发):检测到人后输出高电平,延时结束后自动变低,不管人还在不在
我个人习惯用 H 模式,这样人一直待在房间里,灯就不会灭。
注意:HC-SR501 上电后有 30-60 秒的初始化时间。这期间输出不稳定,可能会乱跳。等它稳定了再用。我曾经因为这个排查了半天,结果发现是没等它「醒」过来。
开发环境搭建
好,硬件说完了,咱们来搭软件环境。这一步其实很简单,别被「开发环境」四个字吓到。
第一步:下载 Arduino IDE
去 Arduino 官网(arduino.cc)下载最新版的 IDE。我建议下载 2.x 版本,界面比老版好看,功能也强一些。
第二步:安装驱动
把 Arduino 板子用 USB 线连上电脑。如果是 Uno R3,Windows 10/11 一般会自动装驱动。如果没装成功,去设备管理器里手动更新一下。
第三步:选择板子和端口
打开 Arduino IDE,按这个顺序操作:
- 点击「工具」→「开发板」→ 选择「Arduino Uno」
- 点击「工具」→「端口」→ 选择你板子对应的 COM 口
怎么知道哪个端口是你的板子?拔掉 USB 线,看看哪个端口消失了,再插上,哪个出现了,就是它。
第四步:测试一下
写个最简单的程序,让板子上的 LED 灯闪起来:
void setup() {
pinMode(13, OUTPUT); // 板载 LED 在 13 号引脚
}
void loop() {
digitalWrite(13, HIGH); // 点亮
delay(1000); // 等 1 秒
digitalWrite(13, LOW); // 熄灭
delay(1000); // 等 1 秒
}
点击上传按钮,等它编译、下载完成。如果板子上的 LED 开始一闪一闪的,恭喜你,环境搭好了。
一个小技巧:如果上传失败,检查一下端口有没有选对,或者板子有没有被其他程序占用。我遇到过有人开着串口监视器就上传,结果报错——关掉串口监视器就好了。
本章知识体系
下面这张图,把咱们这章的核心内容串起来了。你可以把它当作一个「知识地图」,后面学的时候随时回来看。
好了,这一章的内容就到这儿。硬件清单你照着买,开发环境照着搭,PIR 的原理心里有个数。下节课咱们就开始动手接线了。