6.3 Einparkhilfe

Stellen Sie sich Folgendes vor: Sie sitzen in Ihrem Auto und möchten rückwärts in eine enge Parklücke fahren. Mit unserem Projekt haben Sie ein Ultraschallmodul am Heck Ihres Fahrzeugs montiert, das als digitales Auge fungiert. Wenn Sie den Rückwärtsgang einlegen, wird das Modul aktiviert und sendet Ultraschallimpulse aus, die von Hindernissen hinter Ihnen reflektiert werden.

Das Besondere geschieht, wenn diese Impulse zum Modul zurückkehren. Es berechnet blitzschnell die Entfernung zwischen Ihrem Auto und den Objekten und verwandelt diese Daten in eine Echtzeit-Visuelle-Rückmeldung, die auf einem lebendigen LCD-Bildschirm angezeigt wird. Sie erleben dynamische, farbkodierte Indikatoren, die die Nähe zu Hindernissen anzeigen und Ihnen so ein kristallklares Verständnis der Umgebung ermöglichen.

Aber wir haben noch mehr getan. Um Sie noch tiefer in dieses Fahrerlebnis einzutauchen, haben wir einen lebhaften Summer integriert. Nähert sich Ihr Auto einem Hindernis, intensiviert sich das Tempo des Summers und erzeugt eine akustische Symphonie der Warnungen. Es ist, als hätten Sie ein persönliches Orchester, das Sie durch die Komplexität des Rückwärtsparkens leitet.

Dieses innovative Projekt verbindet Spitzentechnologie mit einer interaktiven Benutzeroberfläche und macht Ihr Rückwärtserlebnis sicher und stressfrei. Mit dem Ultraschallmodul, dem LCD-Display und dem lebhaften Summer, die harmonisch zusammenarbeiten, fühlen Sie sich beim Manövrieren in engen Räumen ermächtigt und selbstbewusst, sodass Sie sich auf die Freude am Fahren konzentrieren können.

Benötigte Komponenten

Für dieses Projekt benötigen wir folgende Komponenten.

Es ist definitiv praktisch, ein ganzes Set zu kaufen. Hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

ESP32 Starter Kit

320+

ESP32 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

ESP32 WROOM 32E

BUY

ESP32-Kameraerweiterung

-

Steckbrett

BUY

Überbrückungsdrähte

BUY

Widerstand

BUY

Ultraschall-Modul

BUY

Summer

-

Transistor

BUY

I2C LCD1602

BUY

Schaltplan

../../_images/circuit_6.4_reversing_aid.png

Der Ultraschallsensor im Projekt sendet hochfrequente Schallwellen aus und misst die Zeit, die die Wellen benötigen, um nach dem Aufprall auf ein Objekt zurückzukehren. Durch die Analyse dieser Daten kann die Entfernung zwischen dem Sensor und dem Objekt berechnet werden. Um eine Warnung zu geben, wenn das Objekt zu nah ist, wird ein Summer verwendet, um ein hörbares Signal zu erzeugen. Zusätzlich wird die gemessene Entfernung auf einem LCD-Bildschirm zur einfachen Visualisierung angezeigt.

Verdrahtung

../../_images/6.4_aid_ultrasonic_bb.png

Code

Bemerkung

  • Sie können die Datei 6.3_reversing_aid.ino direkt unter dem Pfad esp32-starter-kit-main\c\codes\6.3_reversing_aid öffnen.

  • Nachdem Sie das Board (ESP32 Dev Module) und den entsprechenden Port ausgewählt haben, klicken Sie auf den Upload-Knopf.

  • „Unbekanntes COMxx“ wird immer angezeigt?

  • Hier wird die Bibliothek LiquidCrystal I2C verwendet, die Sie aus dem Library Manager installieren können.

Nachdem der Code erfolgreich hochgeladen wurde, wird die aktuell erkannte Entfernung auf dem LCD angezeigt. Dann ändert der Summer die Klangfrequenz je nach Entfernung.

Bemerkung

Wenn der Code und die Verdrahtung korrekt sind, das LCD jedoch weiterhin keinen Inhalt anzeigt, können Sie den Potentiometer auf der Rückseite verstellen, um den Kontrast zu erhöhen.

Wie funktioniert das?

Dieser Code hilft uns, ein einfaches Entfernungsmessgerät zu erstellen, das die Entfernung zwischen Objekten messen und Feedback über ein LCD-Display und einen Summer geben kann.

Die Funktion loop() enthält die Hauptlogik des Programms und läuft kontinuierlich. Lassen Sie uns die Funktion loop() genauer betrachten.

  1. Schleife zum Lesen der Entfernung und Aktualisieren der Parameter

    In der loop liest der Code zunächst die vom Ultraschallmodul gemessene Entfernung und aktualisiert den Intervallparameter basierend auf der Entfernung.

    // Update the distance
    distance = readDistance();
    
    // Update intervals based on distance
    if (distance <= 10) {
        intervals = 300;
    } else if (distance <= 20) {
        intervals = 500;
    } else if (distance <= 50) {
        intervals = 1000;
    } else {
        intervals = 2000;
    }
    
  2. Überprüfen, ob es Zeit zum Piepen ist

    Der Code berechnet die Differenz zwischen der aktuellen Zeit und der vorherigen Piepzeit, und wenn die Differenz größer oder gleich der Intervallzeit ist, löst er den Summer aus und aktualisiert die vorherige Piepzeit.

    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= intervals) {
        Serial.println("Beeping!");
        beep();
        previousMillis = currentMillis;
    }
    
  3. LCD-Display aktualisieren

    Der Code löscht das LCD-Display und zeigt dann „Dis:“ und die aktuelle Entfernung in Zentimetern in der ersten Zeile an.

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Dis: ");
    lcd.print(distance);
    lcd.print(" cm");
    
    delay(100);