将HC-SR04与Raspberry Pi一起使用

Using the HC-SR04 With the Raspberry Pi

HC-SR04超声波传感器是一种流行的,具有成本效益的工具,用于测量各种DIY和专业项目的距离。当与Raspberry Pi配对时,它将开辟一个创建障碍物检测,水平测量甚至交互式安装等应用程序的可能性。这篇博客文章将指导您通过Raspberry Pi设置和使用HC-SR04传感器的过程。

HC-SR04超声波传感器是什么?

HC-SR04是一个超声波传感器模块,通过发射超声波并计算回声返回所需的时间来测量距离。它以5V的速度运行,以其在短到中距离距离测量值(通常在2 cm至400 cm之间)的准确性和可靠性而闻名。

您需要的组件

  • Raspberry Pi(任何带有GPIO引脚的模型,例如Raspberry Pi 4)
  • HC-SR04超声传感器
  • 跳线
  • 面包板
  • 10kΩ电阻(用于电压划分)
  • 可选:视觉反馈的LED和电阻器

将HC-SR04接线到Raspberry Pi

将HC-SR04连接到Raspberry Pi需要仔细处理,尤其是因为Raspberry Pi GPIO引脚在3.3V下运行,HC-SR04在5V下运行。为了防止损坏您的PI,必须在回声引脚上使用电压分隔器。

引脚连接

  • VCC hc-sr04 to 5V 覆盆子PI上的别针
  • gnd hc-sr04 to gnd 在覆盆子Pi上
  • 触发 HC-SR04的引脚到A GPIO PIN 在Raspberry Pi上(例如GPIO23)
  • 回声 HC-SR04的销钉通过电压分隔器将覆盆子Pi

设置电压分隔器

要安全地将回声引脚连接到Raspberry Pi,请使用具有10kΩ电阻器和20kΩ电阻器的电压分隔器。这将降低5V信号至约3.3V。


# Example schematic for voltage divider
# HC-SR04 Echo pin ---- 10kΩ ----> Raspberry Pi GPIO (Echo)
#                             |
#                           20kΩ
#                             |
#                           GND

安装必要的库

在编写代码之前,请确保您的Raspberry Pi是最新的,并安装了必要的库。


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python3-rpi.gpio

编写Python脚本

下面是一个简单的Python脚本,可与HC-SR04传感器接口。该脚本发送触发脉冲,等待回声,并根据回声返回的时间计算距离。


import RPi.GPIO as GPIO
import time

# GPIO Mode (BOARD / BCM)
GPIO.setmode(GPIO.BCM)

# Set GPIO Pins
TRIG = 23
ECHO = 24

print("Distance Measurement In Progress")

# Set GPIO direction (IN / OUT)
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

def distance():
    # Set TRIG to LOW
    GPIO.output(TRIG, False)
    time.sleep(2)

    # Send 10us pulse to TRIG
    GPIO.output(TRIG, True)
    time.sleep(0.00001)
    GPIO.output(TRIG, False)

    start_time = time.time()
    stop_time = time.time()

    # Save StartTime
    while GPIO.input(ECHO) == 0:
        start_time = time.time()

    # Save Time of Arrival
    while GPIO.input(ECHO) == 1:
        stop_time = time.time()

    # Time difference between start and arrival
    time_elapsed = stop_time - start_time
    # Multiply with speed of sound (34300 cm/s)
    # and divide by 2, because there and back
    distance = (time_elapsed * 34300) / 2

    return distance

if __name__ == '__main__':
    try:
        while True:
            dist = distance()
            print("Measured Distance = %.1f cm" % dist)
            time.sleep(1)
    except KeyboardInterrupt:
        print("Measurement stopped by User")
        GPIO.cleanup()

运行脚本

确保接线是正确的,然后使用Python 3运行脚本:


python3 hc-sr04.py

您应该看到以厘米为单位的测量距离。如果您使用LED进行视觉反馈,则可以在对象在一定范围内时修改脚本以点亮LED。

增强您的项目

完成基本距离测量工作后,请考虑集成其他功能:

  • LED指标: 使用LED指示不同的距离范围。
  • LCD显示: 在LCD屏幕上显示距离。
  • 数据记录: 记录距离测量随着时间的分析。
  • 警报系统: 当对象太近时触发警报或通知。

解决常见问题

使用传感器和GPIO有时可能具有挑战性。以下是一些常见问题以及如何解决这些问题:

  • 不正确的布线: 仔细检查所有连接,尤其是回声引脚上的电压分隔器。
  • 嘈杂的测量: 确保您的设置稳定,并考虑添加电容器以过滤噪声。
  • GPIO冲突: 确保没有其他脚本或服务使用相同的GPIO引脚。
  • 许可: 使用适当的权限运行脚本,使用 sudo 如有必要。

结论

HC-SR04超声波传感器是一种多功能且可靠的组件,与Raspberry Pi结合使用,可以提供从简单距离测量到复杂自动化系统的多种应用。通过遵循本指南中概述的步骤,您应该能够设置并开始在Raspberry Pi上使用HC-SR04进行实验。快乐的修补!

发表评论

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.