Geschwindigkeit messen mit dem HC-SR04 Ultraschallsensor

Lerne, wie du mit dem Raspberry Pi Pico, einem HC-SR04 Ultraschallsensor und einem LCD-Display einfach die Geschwindigkeit messen kannst – inklusive Schaltplan und Python-Code.

Was brauchst du?

  • Raspberry Pi Pico + Micro-USB-Kabel
  • HC-SR04 Ultraschallsensor
  • 16×2 LCD-Display mit I2C-Modul
  • Breadboard & Jumperkabel
  • Optional: etwas, das sich bewegt – z. B. eine Spielzeug-Auto

Schritt 1: HC-SR04 und LCD an den Pi Pico anschließen

Hier findest du eine Übersicht, wie du die Komponenten miteinander verbindest:

HC-SR04 Ultraschallsensor:

HC-SR04 PinRaspberry Pi Pico Pin
VCC3.3V (Pin 36)
GNDGND (Pin 38)
TRIGz. B. GP2 (Pin 4)
ECHOz. B. GP3 (Pin 5)

Der VCC-Pin des HC-SR04 wird mit dem 3.3V-Pin (Pin 36) des Pi Pico verbunden, um den Sensor mit Strom zu versorgen. Der GND-Pin wird an den GND-Pin (Pin 38) des Pi Pico angeschlossen, um die Erdung herzustellen. Der TRIG-Pin wird an den GP2 (Pin 4) des Pi Pico angeschlossen, um das Ultraschallsignal zu senden. Der ECHO-Pin ist mit dem GP3 (Pin 5) verbunden, um das zurückkehrende Signal zu empfangen und die Distanz zu messen.

Du willst mehr über den HC-SR04 Ultraschallsensor erfahren? Hier findest du eine ausführliche Anleitung auf unserem Blog!

I2C LCD-Display:

LCD PinRaspberry Pi Pico Pin
VCC3.3V (Pin 36)
GNDGND (Pin 38)
SDAz. B. GP20 (Pin 26)
SCLz. B. GP21 (Pin 27)

Das VCC-Pin des I2C LCD-Displays wird ebenfalls an den 3.3V-Pin (Pin 36) des Pi Pico angeschlossen, um das Display mit Strom zu versorgen. Der GND-Pin des LCD wird mit dem GND-Pin (Pin 38) des Pi Pico verbunden, um die Erdung sicherzustellen. Die SDA- und SCL-Pins des LCD werden an die GP20 (Pin 26) bzw. GP21 (Pin 27) des Pi Pico angeschlossen, um die Kommunikation über das I2C-Protokoll zu ermöglichen, wobei SDA für die Daten und SCL für den Takt zuständig ist.

Du willst mehr über das LCD-Display erfahren? Hier findest du eine ausführliche Anleitung auf unserem Blog!

Schritt 2: Wie funktioniert die Geschwindigkeitsmessung?

Der HC-SR04 misst die Entfernung zu einem Objekt per Ultraschall. Indem wir die Entfernung in zwei zeitlich versetzten Momenten messen, können wir mit der Formel
Geschwindigkeit = Δs / Δt
die Geschwindigkeit berechnen.

Dabei ist Δs die Distanzänderung in Zentimetern und Δt die vergangene Zeit in Sekunden.

Schritt 3: Der MicroPython-Code für den Raspberry Pi Pico

Hier ist der komplette Code für das Projekt. Du kannst den Code ganz einfach z. B. mit Thonny auf den Raspberry Pi Pico laden.

from utime import sleep, sleep_us, ticks_us, ticks_diff
from machine import I2C, Pin
from machine_i2c_lcd import I2cLcd

# LCD-Display initialisieren
i2c = I2C(0, sda=Pin(20), scl=Pin(21), freq=100000)
address = i2c.scan()[0]
lcd = I2cLcd(i2c, address, 2, 16)

# HC-SR04 initialisieren
TRIG_PIN = 2
ECHO_PIN = 3
trig = Pin(TRIG_PIN, Pin.OUT)
echo = Pin(ECHO_PIN, Pin.IN)

def measure_distance():
    trig.low()
    sleep_us(2)
    trig.high()
    sleep_us(10)
    trig.low()

    # Warte auf ECHO HIGH
    while echo.value() == 0:
        pass
    signal_start = ticks_us()

    # Warte auf ECHO LOW
    while echo.value() == 1:
        pass
    signal_end = ticks_us()
    
    # Zeitdifferenz und Entfernung berechnen
    duration = ticks_diff(signal_end, signal_start)
    distance = (duration * 0.0343) / 2
    return distance

# Startwerte
last_distance = measure_distance()
last_time = ticks_us()

# Hauptschleife
while True:
    sleep(1)
    current_distance = measure_distance()
    current_time = ticks_us()
    
    # Geschwindigkeitsberechnung
    delta_distance = current_distance - last_distance
    delta_time = ticks_diff(current_time, last_time) / 1_000_000
    speed = delta_distance / delta_time
    
    # Ausgabe auf Konsole und Display
    print("Strecke: {:.2f} cm | Geschwindigkeit: {:.2f} cm/s".format(current_distance, speed))
    lcd.clear()
    lcd.putstr("Geschwindigkeit:\n{:.1f} cm/s".format(speed))

    last_distance = current_distance
    last_time = current_time

Erklärung des Codes

  • measure_distance()
    Sendet ein Ultraschallsignal über den HC-SR04 und misst die Zeit bis zum Echo. Daraus wird die Entfernung in Zentimetern berechnet.
  • ticks_us() & ticks_diff()
    Diese Funktionen messen Zeit in Mikrosekunden.
    Damit wird ermittelt, wie viel Zeit zwischen zwei Messungen vergangen ist.
  • delta_distance & delta_time
    Ermitteln die Differenz zwischen zwei aufeinanderfolgenden Messungen – also wie weit sich das Objekt bewegt hat und wie lange das gedauert hat.
  • speed = delta_distance / delta_time
    Rechnet die Geschwindigkeit in cm/s aus, indem Strecke durch Zeit geteilt wird.
  • lcd.putstr()
    Gibt die berechnete Geschwindigkeit auf dem 16×2 LCD-Display aus – lesbar in Echtzeit.

Fazit: Einfacher Einstieg in Sensorik und Echtzeitmessung

Mit diesem Projekt kannst du nicht nur lernen, wie man einen HC-SR04 Ultraschallsensor anschließt, sondern auch, wie man mit einem Mikrocontroller in Echtzeit rechnet und die Ergebnisse direkt ausgibt. Es ist ein tolles Beispiel dafür, wie man aus einfachen Komponenten ein funktionierendes System zur Geschwindigkeitsmessung mit dem Raspberry Pi Pico bauen kann.

Hier findest du weitere spannende Raspberry Pi Pico Projekte auf unserem Blog!