Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.
Warum beitreten?
Expertenunterstützung: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Sneak Peeks.
Sonderrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Bereit, mit uns zu entdecken und zu gestalten? Klicken Sie auf [here] und treten Sie noch heute bei!
4.3 Rückfahrwarnsystem
Einführung
Das sichere Einparken eines Autos in eine Garage erfordert besonders auf engem Raum eine präzise Orientierung. In diesem Projekt erstellen Sie ein Rückfahrwarnsystem mit einem Ultraschallsensor und einem Summer. Dieses System ahmt die Funktionsweise eines echten Einparksensors nach und gibt akustisches Feedback über den Abstand zu Hindernissen.
Was Sie benötigen
Nachfolgend sind die für dieses Projekt erforderlichen Komponenten aufgeführt:
KOMPONENTENBESCHREIBUNG |
KAUFLINK |
|---|---|
- |
|
Raspberry Pi |
- |
Schaltplan
Das System verwendet einen Ultraschallsensor, um den Abstand zu Hindernissen zu messen. Der Summer gibt je nach Abstand Warntöne mit unterschiedlicher Frequenz aus.
Verdrahtungsdiagramm
Folgen Sie diesem Verdrahtungsdiagramm, um Ihr System aufzubauen:
Beispiel ausführen
Der gesamte in diesem Tutorial verwendete Beispielcode befindet sich im Verzeichnis ai-lab-kit.
Führen Sie die folgenden Schritte aus, um das Beispiel auszuführen:
cd ~/ai-lab-kit/python/
sudo python3 4.3_ReversingAlarm.py
Dieses Python-Skript kombiniert einen Ultraschall-Distanzsensor mit einem Summer, um ein Echtzeit-System zur Abstandüberwachung zu erstellen. Bei der Ausführung:
Abstandsmessung: Der Ultraschallsensor misst den Abstand zum nächstgelegenen Objekt vor ihm und rechnet den Wert in Zentimeter um.
Summerwarnungen: Basierend auf dem gemessenen Abstand:
Mehr als 50 cm: Kein Summerton.
Zwischen 20 cm und 50 cm: Der Summer piept zweimal mit kurzem Intervall.
20 cm oder weniger: Der Summer gibt schnelle Pieptöne aus, um die Nähe eines Hindernisses anzuzeigen.
Code
Hier ist der Python-Code für dieses Projekt:
#!/usr/bin/env python3
import time
from fusion_hat.modules import Ultrasonic, Buzzer
from fusion_hat.pin import Pin
# Ultrasonic sensor: Trig -> GPIO 27, Echo -> GPIO 22
sensor = Ultrasonic(trig=Pin(27), echo=Pin(22))
# Buzzer connected to GPIO 17
buzzer = Buzzer(Pin(17))
def get_distance():
"""
Read distance from ultrasonic sensor and print it.
Returns distance in centimeters.
"""
dis = sensor.read()
print(f"Distance: {dis:.2f} cm")
return dis
def beep(times, on_time, off_time):
"""
Make the buzzer beep with given timing.
"""
for _ in range(times):
buzzer.on()
time.sleep(on_time)
buzzer.off()
time.sleep(off_time)
def loop():
"""
Continuously measure distance and control buzzer frequency.
"""
while True:
dis = get_distance()
if dis >= 50:
# Far distance: buzzer silent
time.sleep(0.5)
elif 20 < dis < 50:
# Medium distance: slow beeping
beep(times=2, on_time=0.05, off_time=0.2)
else:
# Close distance (<= 20 cm): fast beeping
beep(times=5, on_time=0.05, off_time=0.05)
time.sleep(0.3) # Measurement interval
try:
loop()
except KeyboardInterrupt:
buzzer.off()
print("\nProgram stopped, buzzer turned off.")
Code verstehen
Abstandsmessung: Der Ultraschallsensor berechnet den Abstand.
def get_distance(): """ Read distance from ultrasonic sensor and print it. Returns distance in centimeters. """ dis = sensor.read() print(f"Distance: {dis:.2f} cm") return dis
Akustische Warnungen: Die Frequenz des Summers ändert sich abhängig von der Entfernung zum Hindernis:
>50 cm: Kein Ton.
20–50 cm: Zwei Pieptöne mit mittlerem Abstand.
≤20 cm: Schnelle Pieptöne als dringende Warnung.
def loop(): while True: dis = get_distance() if dis >= 50: # Far distance: buzzer silent time.sleep(0.5) elif 20 < dis < 50: # Medium distance: slow beeping beep(times=2, on_time=0.05, off_time=0.2) else: # Close distance (<= 20 cm): fast beeping beep(times=5, on_time=0.05, off_time=0.05) time.sleep(0.3) # Measurement interval
Fehlerbehebung
Abstand wird nicht gemessen:
Ursache: Falsche Verdrahtung oder ein defekter Sensor.
Lösung:
Stellen Sie sicher, dass die
echo- undtrigger-Pins des Ultraschallsensors mit GPIO 22 bzw. GPIO 27 verbunden sind.Testen Sie den Sensor separat, um sicherzustellen, dass er ordnungsgemäß funktioniert.
Summer gibt keinen Ton aus:
Ursache: Der Summer ist nicht angeschlossen oder defekt.
Lösung:
Überprüfen Sie, ob der Summer mit GPIO 17 und GND verbunden ist.
Testen Sie den Summer manuell:
buzzer.on() time.sleep(1) buzzer.off()
Erweiterungsideen
Anpassbare Warnschwellen: Ermöglichen Sie es dem Benutzer, eigene Abstandsschwellen für die Summerwarnungen festzulegen.
Datenprotokollierung: Speichern Sie Abstandsmessungen in einer Datei zur späteren Analyse:
with open("distance_log.txt", "a") as log_file: log_file.write(f"{time.time():.3f}, {dis:.2f} cm\n")
Visuelle Warnanzeigen: Verwenden Sie LEDs in verschiedenen Farben, um Entfernungsstufen anzuzeigen (z. B. Grün = sicher, Gelb = Vorsicht, Rot = Gefahr).
Fazit
Dieses Projekt zeigt eine praktische Anwendung von Ultraschallsensoren, bei der akustisches Feedback für ein intuitives Rückfahrwarnsystem genutzt wird. Solche Systeme sind sowohl in Fahrzeugen als auch in der Robotik nützlich und bieten einen guten Einstieg in Abstandserkennung und IoT-Integration. Sie können die Funktionalität weiter ausbauen und an Ihre eigenen Ideen anpassen!