1. SR501模块基础认知与硬件连接
第一次接触SR501人体红外模块时,我把它误当成了普通光电传感器。直到深夜调试时发现它能隔着窗帘检测到我的存在,才真正理解它的独特价值。这个火柴盒大小的模块内部其实藏着精妙的设计——它通过菲涅尔透镜聚焦人体发出的10μm左右红外线,配合BISS0001信号处理芯片实现生物移动识别。
模块背面三个镀金引脚清晰标注着VCC(3.3-5V供电)、OUT(数字信号输出)和GND。实测中发现个有趣现象:用杜邦线直接连接树莓派时偶尔会出现误触发,后来改用带屏蔽的导线问题立即消失。这提醒我们,虽然模块本身抗干扰能力不错,但在工业环境中建议使用双绞线连接。
两个蓝色电位器分别控制着模块的延时调节和灵敏度。顺时针旋转左边电位器,模块触发后的保持时间可从3秒延长到300秒;右边电位器则影响探测距离(实测可调范围约3-7米)。有个实用技巧:调试时先用螺丝刀将灵敏度调到最小,然后慢慢增大直到能稳定检测目标,这样可以有效避免环境干扰。
硬件连接示意图:
code复制树莓派GPIO14 —— SR501 OUT
树莓派3.3V —— SR501 VCC
树莓派GND —— SR501 GND
特别注意:不同开发板的GPIO电压可能不同。我曾不小心将5V的RK3568开发板直接连接模块,导致输出信号异常。后来用万用表测量才发现问题——虽然模块标称支持5V,但实际3.3V供电时稳定性更好。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 设备树配置实战详解
现代Linux嵌入式开发离不开设备树这个"硬件描述语言"。为SR501添加节点时,需要先确认GPIO控制器的寄存器布局。以瑞芯微RK3568为例,通过查阅芯片手册发现其GPIO控制器分为4组(GPIO0-GPIO3),每组32个引脚。
在设备树源文件(.dts)中添加如下节点:
c复制sr501: sr501@0 {
compatible = "my,sr501";
gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>;
interrupt-parent = <&gpio4>;
interrupts = <19 IRQ_TYPE_EDGE_BOTH>;
};
这段配置有几个关键点:
compatible属性必须与驱动
