【救命!这个传感器盯梢能力堪比工位监控】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
在智能家居、楼道感应灯、安防报警这些场景里,人体感应技术随处可见。今天用 STM32+AS312(HC‑SR501)热释电人体红外传感器,搭建一套完整的人体检测实验。实现屏幕显示 + 串口打印 + LED 状态指示三位一体效果,真正看懂传感器采集、软件处理、结果输出整套嵌入式开发流程。
实验平台:STM32L431 主控|华为鸿蒙实训箱|TFT‑LCD 屏幕|AS312 人体红外传感器
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是热释电人体红外传感器?
我们本次使用的 AS312 也就是大家熟悉的 HC‑SR501,属于热释电红外传感器。
人体会持续向外释放特定波长的红外热辐射,传感器内部热释电元件可以捕捉这份红外信号。
✅检测到人体活动:输出高电平 1
❌无人体活动:输出低电平 0
⚠️重要小知识点:
传感器检测到人离开后,不会立刻变回无人状态,自带硬件延时,这是传感器固有特性,不是程序 bug。
硬件电路上传感器信号引脚接到 STM32 的PC8,单片机把 PC8 配置为 GPIO 输入模式,读取引脚电平,就可以判断当前区域有没有人。
二、整体实验方案
📌实验拓扑
STM32 主控主板 ↔ 智能家居扩展板 ↔ AS312 人体红外传感器;主板同时外接 TFT‑LCD 显示屏,Type‑C 连接电脑,串口助手接收实验数据。
想要实现的效果:
- TFT 屏幕实时展示:检测到人体显示「有人」图标 + 文字;无人显示「没人」图标 + 文字
- PC 串口助手输出状态变化日志,带时间戳记录每一次状态切换
- 开发板 LED 跟随状态翻转,做硬件状态提示
- 1 秒周期定时采集传感器,防止高频读取带来的信号抖动误判
📌硬件关键引脚
表格
| 引脚 | 功能 | 模式 |
|---|---|---|
| PC8 | AS312 传感器信号输入 | GPIO 输入 |
三、软件实现思路拆解
1. 初始化
上电之后依次完成:HAL 库初始化、系统时钟配置、LCD 屏幕初始化、LED 初始化、串口初始化、人体红外传感器引脚初始化。
LCD 屏幕绘制 UI 界面,打印标题 “人体红外检测实验”,完成开机界面渲染。
代码如下(示例):
int main(void)
{
HAL_Init();
SystemClock_Config(); //系统时钟初始化
LCD_Display_Init(); //屏幕初始化显示
gpio_module_open(LEDS); //LED初始化
uart_open(uart2, 115200); //串口初始化
AS312_Init(); //人体红外传感器引脚初始化
while(1)
{
Body_Handle(); //传感器检测业务处理函数
}
}
2.软件定时采样,规避抖动
这里没有使用定时器中断,而是采用HAL_GetTick()系统滴答定时器做软件计时,设置1000ms 读取一次传感器数据。
如果读取频率太高,传感器信号轻微抖动就会造成频繁误触发;1 秒采样间隔,兼顾响应速度与系统稳定性。
代码如下(示例):
if((HAL_GetTick() - tickstart) >= 1000) //1000ms检测一次
{
tickstart = HAL_GetTick();
as312_state = Infrared_Read_State(); //读取PC8引脚电平
}
3.状态判断,屏幕刷新显示
Infrared_Read_State()函数读取 PC8 引脚电平:返回 1 代表有人,返回 0 代表无人。
根据返回状态,调用屏幕绘图函数,绘制对应的图标,使用Show_Str()打印文字;用LCD_Fill()局部填充屏幕,消除画面残影。
状态 = 1:绘制有人图标,屏幕显示文字:有人
状态 = 0:绘制无人图标,屏幕显示文字:没人
四、实验现象描述
- 上电初始化:LCD 屏幕显示实验标题,初始状态为没人;串口助手打印初始化信息,波特率 115200 正常通信。
- 人走进传感器探测范围:屏幕切换 “有人” 图标文字;串口输出
人体红外传感器数据:有人;开发板 LED 电平翻转。 - 人离开探测范围:等待传感器硬件延时结束后,输出低电平;屏幕切换为 “没人”;串口打印无人日志,LED 再次翻转。
串口助手会携带时间戳完整记录每一次有人 / 无人切换,屏幕、串口、LED 三者状态完全同步。
五、🔮脑洞拓展,还可以做什么?
- 🚨安防报警:检测到人,驱动蜂鸣器响起,简单入侵提醒。
- 💡人体感应灯:检测有人自动开灯,人离开延时关灯,复刻楼道感应灯。
- 🧹软件多次滤波:连续多次读到相同电平,才更新状态,进一步抑制误触发。
- 📶物联网上传:搭配 WiFi 模块,把人体检测状态上传云平台,远程查看现场是否有人。
- 🔢来访计数:LCD 屏幕统计检测到人体的总次数,做简易来访统计。
写在最后:小小的人体红外传感器,背后是一整套信号采集、逻辑处理、外设输出的嵌入式思维。把基础实验吃透,复杂项目就可以拆成一个个小模块去实现。
总结
本项目基于 STM32 主控搭配 AS312(HC‑SR501)热释电人体红外传感器完成人体检测实验,传感器通过 PC8 引脚输出高低电平,高电平代表检测到人体,低电平代表无人。
软件上使用HAL_GetTick()实现 1 秒定时采样,避免高频读取带来信号抖动;读取引脚电平后,在 TFT‑LCD 屏幕刷新图标与 “有人 / 没人” 文字,局部刷屏消除残影。通过变量对比前后状态,仅状态发生变化时才向串口输出日志,减少冗余打印,同时 LED 同步翻转作为硬件指示,实现屏幕、串口、LED 三者状态同步。
实验需要注意:传感器人离开后存在硬件固有延时,并非程序故障;合理设置采样周期可以提升检测稳定性。
该案例完整演示嵌入式开发流程:传感器信号采集、软件逻辑处理、多外设结果输出。可拓展实现感应灯、安防报警、来访计数、物联网云端上报等智能家居功能。
更多推荐



所有评论(0)