1、项目概述与硬件准备
大家好,我是你们的嵌入式工程师老张。今天咱们正式开搞这个《ESP32人体红外感应与智能灯光联动系统》。说实话,这个项目我特别喜欢,因为它特别实用——你想想看,晚上回家不用摸黑找开关,走廊灯自动亮起,是不是很有科技感?
这个项目说白了就是:人来了灯亮,人走了灯灭。核心逻辑并不复杂,但涉及到的硬件知识和电路搭建,却是嵌入式开发的入门必修课。我当年带团队做智能家居项目时,第一个练手的小样就是这个。嗯,咱们一步步来。
1.1 系统整体架构
先看大局。整个系统由四个核心模块组成:
- 感知层:HC-SR501人体红外传感器,负责检测人体移动
- 控制层:ESP32开发板,大脑中枢,处理信号并做出决策
- 执行层:继电器模块,控制强电通断
- 负载层:LED灯带,最终的执行对象
工作流程是这样的:传感器检测到人体红外辐射变化 → 输出高电平信号给ESP32 → ESP32读取到信号后,控制继电器吸合 → 继电器导通,LED灯带点亮。人离开后,传感器输出低电平,ESP32延时一段时间后断开继电器,灯灭。
核心要点:这个系统本质上是「传感器→控制器→执行器」的经典嵌入式架构。搞懂了这个,很多物联网项目你都能触类旁通。
1.2 ESP32开发板
ESP32这块板子,我用了好几年了。它最大的优势就是自带Wi-Fi和蓝牙,而且价格便宜。咱们这个项目虽然暂时用不到无线功能,但后续如果你想做远程控制、手机App联动,ESP32直接就能升级,不用换板子。
咱们选用的ESP32开发板,关键参数如下:
| 参数 | 规格 |
|---|---|
| 主控芯片 | ESP32-D0WDQ6,双核32位 |
| 工作电压 | 3.3V(注意,IO口也是3.3V逻辑) |
| GPIO数量 | 可用约20个 |
| 供电方式 | USB 5V 或 外部7-12V |
| 典型功耗 | 约80mA(运行状态) |
我的小经验:ESP32的GPIO口虽然多,但有些引脚有特殊功能。比如GPIO0是下载模式引脚,GPIO2是板载LED。我建议新手先避开这些特殊引脚,用GPIO4、GPIO5、GPIO16这些常规引脚,省得踩坑。
1.3 HC-SR501人体红外传感器
这个传感器,说白了就是检测人体发出的红外线。人体体温大约37度,会持续向外辐射特定波长的红外线。HC-SR501内部有一个热释电元件,当红外线变化时,它会产生微弱的电压信号。
我刚开始接触这个传感器时,总觉得它很神秘。后来拆开看过,其实原理并不复杂。它有三个关键参数需要你注意:
- 感应距离:默认约3-7米,可调节
- 感应角度:约100度锥角
- 延时时间:触发后输出高电平的持续时间,默认约2-3秒
HC-SR501背面有两个可调电位器:一个调距离(Sx),一个调延时(Tx)。我个人习惯把延时调到最短,因为后续咱们会在代码里做更精确的延时控制。
注意:HC-SR501工作电压是5V,但输出信号也是5V。而ESP32的GPIO只能承受3.3V。直接连接会烧坏引脚!解决办法是用电阻分压,或者用电平转换模块。咱们这个项目里,我推荐用两个电阻分压:一个10KΩ串联,一个20KΩ下拉到GND,这样5V信号就被分压到约3.3V了。
1.4 继电器模块
继电器的作用,就是用ESP32的小信号去控制大电流。ESP32的GPIO只能输出几毫安,而LED灯带可能需要几百毫安甚至更大。继电器就是中间的「大力士」。
咱们选用的继电器模块,通常是低电平触发的。什么意思呢?就是GPIO输出低电平时,继电器吸合;输出高电平时,继电器断开。这一点和直觉相反,很多新手在这里翻车。
我曾经带过一个实习生,他写代码让GPIO输出高电平去控制继电器,结果灯死活不亮。排查了半天才发现,是触发逻辑搞反了。嗯,这里你要记住:低电平触发,高电平断开。
| 继电器状态 | GPIO电平 | LED灯带状态 |
|---|---|---|
| 吸合(导通) | 低电平(0V) | 点亮 |
| 断开(不导通) | 高电平(3.3V) | 熄灭 |
1.5 LED灯带
LED灯带咱们选普通的12V灯带就行,不需要RGB可寻址的那种。注意灯带的工作电流,一般每米约0.5-1A。如果灯带较长,建议用外部12V电源单独供电,不要从ESP32取电。
继电器模块的触点额定电流一般是10A,驱动几米灯带绰绰有余。但要注意:继电器控制的是火线,零线直通。这是安全规范,别搞反了。
1.6 硬件电路搭建
好了,理论说完了,咱们动手。电路连接其实不复杂,我按信号流向给你捋一遍:
- 供电部分:ESP32用USB供电(5V),HC-SR501从ESP32的5V引脚取电,继电器模块从ESP32的5V引脚取电,LED灯带用外部12V电源。
- 信号部分:HC-SR501的OUT引脚 → 经过分压电阻 → ESP32的GPIO4(输入模式)。
- 控制部分:ESP32的GPIO5(输出模式) → 继电器模块的IN引脚。
- 负载部分:继电器模块的COM端接12V电源正极,NO端接LED灯带正极,灯带负极接12V电源负极。
避坑指南:我曾经犯过一个低级错误——把继电器的COM和NO接反了。结果灯带一直亮着,继电器怎么控制都没用。记住:COM是公共端,NO是常开端。继电器吸合时,COM和NO导通。
电路搭好后,先别急着上电。用万用表测一下各点电压:
- ESP32的3.3V引脚输出是否正常
- HC-SR501的VCC引脚是否有5V
- 分压后的信号引脚电压是否在3.3V以内
确认无误后,再上电测试。嗯,硬件准备这块就差不多了。下一章咱们开始写代码,让这个系统真正跑起来。
我的建议:第一次搭建时,先用面包板做原型验证。等逻辑跑通了,再焊接到洞洞板上。这样调试方便,也避免反复焊接损坏元件。