Raspberry Pi HC-SR04 Ultraschallsensor
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
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
- https://tutorials-raspberrypi.de/entfernung-messen-mit-ultraschallsensor-hc-sr04/
- https://raspberrypi.stackexchange.com/questions/84012/how-to-wire-an-hc-sr04-without-a-breadboard
- https://learn.adafruit.com/ultrasonic-sonar-distance-sensors/python-circuitpython
- https://circuitpython.readthedocs.io/projects/hcsr04/en/latest/api.html