ESP32开发之旅——人体感应传感器HC-SR501
前言
- 在本文中,您将学会HC-SR501人体感应传感器在ESP32中的使用,本文提供了简单的示例供学习参考。
- 需要注意的是,本文中的ESP32是使用Micro Python进行开发的,(同时ESP8266也可按照本文进行开发)。
- 对HC-SR501模块熟悉的小伙伴可以直接跳至正文部分
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米以内 |
时间延迟、距离调节方法
时间延迟调节
将菲涅尔透镜朝上,左边旋钮调节时间延迟,顺时针方向增加延迟时间,逆时针方向减少延迟时间。
距离调节
将菲涅尔透镜朝上,右边旋钮调节感应距离长短,顺时针方向减少距离,逆时针方向增加距离。
两种触发方式(可跳线选择)
不可重复触发方式
即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;
可重复触发方式
即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)
正文
所需材料
- ESP32开发板(已刷入MicroPython固件,未刷入的小伙伴可以参考我前面的教程)
- 人体感应传感器HC-SR501
- Thonny(其他支持MicroPython开发的IDE皆可)
连接说明
在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) #定义中断,上升沿触发
现象
代码成功写入ESP32后,且硬件连接无误的情况下,可以看到以下现象:
- 当HC-SR501检测到人体时,ESP32板载LED灯亮起。
- 当人体离开HC-SR501检测范围后,ESP32板载LED灯熄灭。