HC-SR04
Das HC-SR04 zur Abstandsmessung hat einem Erfassungsbereich von 3cm bis 4m.
Das Modul besitzt vier Pins, Vcc (Versorgungsspannung), GND (GROUND), Trig und Echo.
Zusammen mit einem 330Ω und 470Ω Widerstand wird es entsprechend mit dem Raspberry Pi verkabelt.
Der 330Ω Widerstand wird zwischen Echo und dem GPIO Pin angeschlossen, der 470Ω Widerstand wird zwischen dem GPIO Pin und GROUND angeschlossen.
HC-SR04 | RASPBERRY PI |
---|---|
Vcc | Pin 2 – 5 V |
Trig | Pin 16 – GPIO 23 |
Echo | Pin 17 – GPIO 24 |
GND | Pin 6 – GROUND |
Das Modul sendet ein Ultraschall Signal und empfängt es anschliessend wieder. Mit Trig und Echo führt man eine Messung durch, Trig startet die Messung und Echo liefert einen Impulse zurück, aus der Impulsedauer kann man dann die Entfernung berechnen.
Die Entfernung kann man sich ausgeben lassen. Man kann sie auch dazu nutzen eine Entscheidung zu treffen wenn die Entfernung größer oder kleiner als erwartet ist.
Mit einem Python Skript kann man sich den Abstand ausgeben lassen.
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER = 23
GPIO_ECHO = 24
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def get_distance(trigger, echo):
""" calculates and returns distance """
GPIO.output(trigger, True)
time.sleep(0.00001)
GPIO.output(trigger, False)
start_time = time.time()
while GPIO.input(echo) == 0:
start_time = time.time()
while GPIO.input(echo) == 1:
end_time = time.time()
delta_time = end_time - start_time
distance = (delta_time * 34300) / 2
return distance
try:
while True:
distance = get_distance(GPIO_TRIGGER, GPIO_ECHO)
print("Distance: %.1f cm" % distance)
time.sleep(1)
except KeyboardInterrupt:
print("Bye...")
GPIO.cleanup()