STM32实战|HC‑SR501人体红外传感器,做一个简易人体感应检测
·
✨最近在做传感器原理实训,拿STM32L431搭配HC‑SR501热释电人体红外传感器,完成人体移动检测,把踩坑和实操记录分享出来。
📌什么是HC‑SR501人体红外传感器
HC‑SR501是热释电红外传感器,它不会检测静止的人体,专门捕捉人体移动产生的红外辐射变化。
人体会向外发出特定波长的红外线,传感器感应到红外能量发生波动,OUT引脚就输出高电平;没有人体活动时输出低电平。
⚠️关键点:人站着不动不会触发,必须有移动动作才会识别;阳光、取暖器等热源也会造成误触发。
硬件接线非常简单:
- VCC:接5V
- GND:共地
- OUT:接到STM32的GPIO输入引脚
整套链路:PC通过Type‑C下载程序 → STM32L431主控板 → 智慧交通拓展板 → HC‑SR501人体红外模块。
检测结果同时输出到TFT彩色液晶屏 + SSCOM串口工具,一边看屏幕,一边看电脑串口日志。
💻软件实现思路
整体逻辑:采集电平 → 判断状态 → 屏幕显示 + 串口输出
- GPIO初始化,把传感器OUT引脚配置成输入模式,用来读取高低电平;
- 编写读取函数:读到高电平=检测到人体活动;低电平=区域无人;
- 业务函数把电平转换成文字字符串,供屏幕和串口调用;
- main主循环循环采集状态,增加软件消抖延时,避免瞬间干扰误报;
- TFT液晶屏实时刷新“检测到人体 / 区域无人”,串口同步打印状态日志。
🧪实验现象
烧录程序上电之后:
✅人走到传感器探测范围内来回走动:屏幕显示检测到人体,串口打印人员检测提示;
✅人直接离开探测区域:等待一小段延时,模块输出变低,屏幕更新为区域无人;
❌人站在原地保持静止:传感器不会触发识别。
这里踩了一个很典型的坑:无人状态下频繁误触发。
排查之后发现,环境灯光、温度波动会带来干扰。
解决办法:
- 硬件调节传感器上面的灵敏度、延时电位器;
- 软件增加多次采样滤波,连续多次读到有效电平,才判定检测结果,过滤偶然毛刺信号。


🎯可以做哪些拓展小项目
- 楼道感应灯:检测到人,单片机控制LED开启,人离开延时后关灯;
- 简易安防提醒:检测人体后蜂鸣器鸣叫报警;
- 物联网升级:把检测到的人员状态通过WiFi模块上传云平台,手机远程查看区域是否有人活动。
📝实训感悟
热释电人体红外传感器成本很低,但有它固有的局限性,对移动才敏感,容易被热源干扰。
做嵌入式传感器开发不只是写代码读电平,还要结合器件本身的物理特性去理解现象。很多时候读数异常不一定是代码bug,而是外部环境带来的影响,需要硬件调节+软件滤波配合解决。
更多推荐


所有评论(0)