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?
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 Pin | Raspberry Pi Pico Pin |
---|---|
VCC | 3.3V (Pin 36) |
GND | GND (Pin 38) |
TRIG | z. B. GP2 (Pin 4) |
ECHO | z. 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 Pin | Raspberry Pi Pico Pin |
---|---|
VCC | 3.3V (Pin 36) |
GND | GND (Pin 38) |
SDA | z. B. GP20 (Pin 26) |
SCL | z. 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 FormelGeschwindigkeit = Δ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!