Raspberry Pi HC-SR04 Ultraschallsensor

Aus Laub-Home Wiki

Der HC-SR04 Ultraschallsensor kann dafür verwendet werden um Entfernungen mit dem Raspberry Pi zu messen. Um diesen mit dem Raspbbery Pi zu verwenden benötigt man neben dem Sensor auch noch zwei Widerstände. Zweimal einen 10k Ω. Ebenso sollte man sich Jumper Kabel und ggf. ein Breadboard zulegen.

Ich habe ebenfalls den Sensor ohne Widerstände zum Laufen gebracht. Ich beschreibe weiter unten beide Anschlusslösungen.

Hier die Links zu den Produkten, die ich verwendet habe:

Anschluss des Sensors am GPIO

hier die Belegung des GPIO Boards direkt von https://www.raspberrypi.org/documentation/usage/gpio/

Ihr bekommt die aktuelle Pin Belegung eines jeden Raspberry Pi mit dem Tool pinout:

Unser HC-SR04 hat 4 Anschlüsse VCC TRIG ECHO GND

Mit 10k Ω Widerstände

Ohne Widerstände

Verkabelung ohne Widerstände
Raspberry Pi GPIO Pin BME680 Pin
1 (3v3 power) VCC
29 (GPIO5) TRIG
31 (GPIO6) ECHO
39 (Ground) GND

Auslesen der Daten des Sensors

Zuerst installieren wir die benötigte Adafruit Library:

apt install python3-pip libgpiod2 -y
pip3 install adafruit-circuitpython-hcsr04

dann können wir mittels dem folgenden Skript die Werte des Sensors auslesen:

Download hier möglich: https://raw.githubusercontent.com/alaub81/rpi_sensor_scripts/main/hcsr04.py

/usr/local/sbin/hcsr04.py

#!/usr/bin/python3

import time
import board
import adafruit_hcsr04

sonar = adafruit_hcsr04.HCSR04(trigger_pin=board.D5, echo_pin=board.D6)

while True:
    try:
        print("Distance: %.2f cm" % sonar.distance)
    except RuntimeError:
        print("Retrying!")
    time.sleep(0.1)

dann noch dem Script herunterladen und das Execute Recht geben:

cd /usr/local/sbin
wget https://raw.githubusercontent.com/alaub81/rpi_sensor_scripts/main/hcsr04.py
chmod +x /usr/local/sbin/hcsr04.py

und einfach starten:

hcsr04.py

der Output sollte dann so aussehen:

Distance: 64.80 cm
Distance: 151.13 cm
Distance: 151.11 cm
Distance: 150.94 cm
Distance: 151.01 cm
Distance: 150.86 cm

Mit "STRG+C" kann das Script abgebrochen werden.


Falls das starten als root nicht klappt und es zu folgender Fehlermeldung kommt (hatte ich bei meinem Raspberry Pi zero w, mit der Version 2 also dem Raspberry Pi zero w 2 geht es):

Traceback (most recent call last):
  File "./hcsr04.py", line 7, in <module>
    sonar = adafruit_hcsr04.HCSR04(trigger_pin=board.D5, echo_pin=board.D6)
  File "/usr/local/lib/python3.7/dist-packages/adafruit_hcsr04.py", line 88, in __init__
    self._echo = PulseIn(echo_pin)
  File "/usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py", line 80, in __init__
    message = self._wait_receive_msg(timeout=0.25)
  File "/usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py", line 99, in _wait_receive_msg
    "Timed out waiting for PulseIn message. Make sure libgpiod is installed."
RuntimeError: Timed out waiting for PulseIn message. Make sure libgpiod is installed.

dann einfach als pi Benutzer starten:

sudo -u pi hcsr04.py

Git Repository

Alle Skripte die zu den Raspberry Pi Sensoren gehören findet ihr in diesem Repository:

Quellen