基于树莓派4B的疫情防控系统-终端:(2.1)人体检测篇-hc-sr501,hc-sr505,python

人体红外模块HC-SR501,HC-SR505的对比与调试

最开始是用501的,但是它一拿到学校就调试不出来了,而且个头大(比我斥巨资买的屏幕还大),综上所述不太适合在我的小模型上使用,换了从别人手上抢来的505,简直,短小精干,而且好调试(可能就是不用调试)。

在这里插入图片描述在这里插入图片描述

一、HC-SR501基本介绍

本部分为转载某大佬的总结,简直是全网最简单易懂的总结了

> 传送门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、HC-SR501、HC-SR505 程序驱动部分

这俩兄弟,简直无缝衔接,代码部分似乎可以通用

如不会认引脚,可参照传送门的引脚图插线

传送门

import RPi.GPIO as GPIO 
import time
 
def sr501init():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(32, GPIO.IN) 					#重点这是OUT端连的引脚,一定不要写错
    pass
def ispeople():
    if GPIO.input(32) == True:
        print("message:" + "have somebody moving")
        GPIO.cleanup()
        return 1
    else:
        GPIO.cleanup()
        #print("message:" + "no somebody moving")
        return 0
        
#time.sleep(0.5)  //测试代码
#sr501init()
#for j in range(1,500):
    #time.sleep(3)
    #print(j)
    #ispeople()
#ispeople()
#GPIO.cleanup()
### 实现 HCSR04 超声波传感器在树莓派上的测距功能 #### 硬件连接说明 HC-SR04 模块参数能够测量 3cm 至 4m 的距离,精确度可以达到 3mm[^4]。此模块包括超声波发射器、接收器以及控制电路三个主要组成部分,并配备四个引脚用于连接。 具体接线方法如下: - **VCC**:连接至 Raspberry Pi 的 5V 输出端口。 - **GND**:连接至 Raspberry Pi 地线 (GND)- **TRIG**:触发输入信号,建议连接到 BCM 编号体系下的 GPIO 引脚,例如 GPIO17。 - **ECHO**:回响输出信号,同样推荐连接到另一个可用的 GPIO 引脚,比如 GPIO27。 值得注意的是,虽然 VCC GND 可以通过外部电源供电,但是为了确保最佳性能稳定性,应当优先考虑利用 Raspberry Pi 或者其他微控制器单元(MCU)所提供的 GPIO 接口来供应电力。 #### Python编程实现 下面是一个简单的Python程序例子,展示了如何配置GPIO接口并与HC-SR04交互完成基本的距离测量任务: ```python import RPi.GPIO as GPIO import time # 设置使用的BCM编号模式 GPIO.setmode(GPIO.BCM) # 定义 TRIG ECHO 引脚对应的BCM编号 PIN_TRIGGER = 17 PIN_ECHO = 27 def setup(): # 初始化引脚方向 GPIO.setup(PIN_TRIGGER, GPIO.OUT) GPIO.setup(PIN_ECHO, GPIO.IN) def measure_distance(): try: while True: # 发送低电平脉冲持续至少10us使能传感器准备状态 GPIO.output(PIN_TRIGGER, False) time.sleep(0.5) # 向TRIG发送一个短促的高电平脉冲启动一次测量周期 GPIO.output(PIN_TRIGGER, True) time.sleep(0.00001) GPIO.output(PIN_TRIGGER, False) pulse_start_time = None pulse_end_time = None # 记录ECHO首次变为高的时刻作为起始时间戳 while GPIO.input(PIN_ECHO)==0: pulse_start_time = time.time() # 当ECHO再次变回到低的时候记录结束的时间戳 while GPIO.input(PIN_ECHO)==1: pulse_end_time = time.time() if pulse_start_time is not None and pulse_end_time is not None: duration = pulse_end_time - pulse_start_time distance = round(duration * 17150, 2) print(f"Distance: {distance} cm") finally: GPIO.cleanup() if __name__ == '__main__': setup() measure_distance() ``` 这段代码首先设置了必要的GPIO引脚为输出或输入模式,接着在一个无限循环内执行以下操作:先让`TRIG`保持一段时间的低电平以便初始化传感器;随后发出短暂的高电平脉冲激活测量过程;最后监听`ECHO`的变化情况计算往返时间从而得出目标物离传感器的实际距离。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

llllsssq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值