ESP32开发之旅-人体感应传感器HC-SR501
前言
- 你将在本文中学习HC-SR501人体感应传感器ESP本文提供了学习参考的简单示例。
- 需要注意的是,本文中ESP32是使用Micro Python(同时ESP8266也可以根据本文开发)。
- 对HC-SR熟悉501模块的朋友可以直接跳到文本部分
HC-SR501介绍
-
HC-SR501 它是一种基于热释电效应的人体热释运动传感器,人体或动物上的红外线。
[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-3oBp1KUu-1638190982962)(C:\Users\99216\AppData\Roaming\Typora\typora-user-images\image-20211129203539480.png)]
-
这个传感器模块可以通过两个旋钮调节来检测 3 ~ 7 米的范围,5秒到5分钟的延迟时间,跳线也可以选择以及。
电气参数
功能 | |
---|---|
工作电压范围 | 直流电压4.5~20V(在3.3V也可以使用,但不稳定) |
电平输出 | 移动时未检测到低电平(0V),检测到高电平的移动输出(3).3V) |
时间延迟调整 | 用于调整检测到移动后高电平输出的时间长度(0.5-200S) |
调整感应距离 | 用于调整检测范围 3米 ~ 7米 |
检测模式条件 | 可选择单次检测模式和连续检测模式 |
感应范围 | 锥角小于120度,锥角小于7米 |
时间延迟、距离调节方法
将菲涅尔透镜向上,左旋钮调整延迟,顺时针增加延迟,逆时针减少延迟。
将菲涅尔透镜朝上,右边旋钮调节感应距离长短,顺时针方向减少距离,逆时针方向增加距离。
两种触发方法(可跳线选择)
也就是说,感应输出高电平后,延迟时间段一结束,输出就会自动从高电平变为低电平;
也就是说,在感应输出高电平后,在延迟期间,如果人体在其感应范围内移动,其输出将始终保持高电平,直到人离开后才将高电平延迟至低电平(感应模块检测到人体的每一项活动后,将自动延迟一个延迟期,并将最后一项活动的时间作为延迟期的起点)
正文
所需材料
连接说明
在HC-SR501只有三个引脚,引脚对应表如下:
HC-SR501 | VCC | OUT | GND |
---|---|---|---|
ESP32/ESP8266 | 5V | P22 | GND |
在安信可的ESP32上,板载LED相应的引脚是——P2
核心代码
from machine import I2C,Pin import time Human=Pin(22,Pin.IN,Pin.PULL_UP) #构建人体红外对象 led=Pin(2,Pin.OUT) #构建 led 对象, GPIO2,输出 def fun(Human): #当检测到人时,板载LED灯亮起 print("1") led.on() time.sleep_ms(500) led.off() Human.irq(fun,Pin.IRQ_RISING) #定义中断,上升沿触发
现象
成功写入代码ESP当硬件连接正确时,可以看到以下现象:
- 当HC-SR当501检测到人体时,ESP32板载LED灯亮起。
- 当人体离开HC-SR501检测范围后,ESP32板载LED灯熄灭。
参考资料
- 《MicroPython从0到1》
- henrysbench.capnfatz.com