• Heute schauen wir uns an, wie man verschiedene Ultraschallsensoren an einem ESP8266 D1 Mini betreiben kann - Das wohl bekannteste Modul ist das HC-SR04 was sich für vielerlei Projekte durchaus gut eignet. Ich persönlich bevorzuge aber den eleganteren JSN-SR04T, bei dem der Sender und Empfänger in einem Bauteil vereint sind.

    Zusätzlich zum schlanken Sensor, hat man dabei auch noch ein Kabel in ausreichender Länge angebunden, um die Elektronik und den eigentlichen Sensor dezentral per Steckverfahren montieren zu können.

    Der JSN-SR04T ist also nicht nur praktischer in der Anwendung, sondern auch sicherer im Betrieb mit Flüssigkeiten.

    HC-SR04-JSN-SR04T-vergleich.png

    Die Produkte in diesem Tutorial habe ich in diesem Warenkorb hinterlegt.


    Kommen wir kurz zum Funktionsprinzip dieser beiden Sensoren, das trotz unterschiedlicher Bauweise identisch ist. Durch Ultrashall-Wellen im Frequenzbereich von 40 kHz, die durch den Sender ausgestrahlt und den Empfänger ausgelesen werden, kann durch Berücksichtung der Zeit eine Entfernung berechnet werden.
    Das geschieht mithilfe der Trigger-Pulsweite, die 10µs beträgt.

    Auf Grundlager der berechneten Entfernung kann man verschiedene Projekte realisieren, das wären zum Beispiel eine Füllstandsanzeige für einen Öl- oder Wassertank oder einer Zysterne. Oder auch eine einfache Abstandsnessung, wie sie in Autos beim Einparken zum Einsatz kommt.

    Auch diese Sensoren funktionieren nach dem selben Prinzip.


    Die Verdrahtung

    Die Verdrahtung sieht wie folgt aus, und ist für beide Sensor-Varianten identisch. 🎉

    esp8266_d1_mini_HC-SR04_schaltplan.png

    D1 Mini HC-SR04 / JSN-SR04T
    5V VCC
    G GND
    D0 TRIG
    D1 ECHO

    Sollest du mehrere Sensoren an einem ESP8266 D1 Mini oder Arduino betreiben wollen, kannst du den TRIG Pin an allen Modulen teilen, nur der ECHO-Pin muss dann zum Auslesen je einen eigenen Eingang bekommen. So kannst du ohne Probleme mehrere Sensoren mit der minimalen Anzahl an Pins an einem Board verwenden. 💪


    Das Programm

    Das Programm für einen Sensor sieht wie folgt aus und passt zur eben genannten Verdrahtung und auch für beide Varianten des Moduls.

    /*
      Ultraschall-Sensoren 
      HC-SR04 & JSN-SR04T
      ESP8266 D1 Mini
      Tutorial by cooper @ makesmart.net
      cc 2021
    */
    
    // ESP8266 D1 Mini
    #define ECHO 5    // D1
    #define TRIG 16   // D0
    
    long duration;  // Variable um die Zeit der Ultraschall-Wellen zu speichern
    float distance; // Variable um die Entfernung zu berechnen
    
    void setup() {
        
      Serial.begin(115200);   // Baudrate: 115200
      pinMode(TRIG, OUTPUT);  // TRIG-Pin: Output
      pinMode(ECHO, INPUT);   // ECHO-Pin: Input
      
    }
    
    
    void loop() {
      digitalWrite(TRIG, LOW);
      delayMicroseconds(2);
    
      // TRIG-Pin ist HIGH für 10 Microsekunden
      digitalWrite(TRIG, HIGH);
      delayMicroseconds(10);
      digitalWrite(TRIG, LOW);
      
      // Liest das ECHO aus und speichert die Zeit von Senden / Empfangen in Microsekunden
      duration = pulseIn(ECHO, HIGH);
    
      
      // Berechnung der Entfernung
      // Da der Weg doppel ist: Hinweg - Rückweg, muss der Wert durch 2 geteilt werden
      distance = duration * 0.034 / 2;
      
      // Anzeige der Entfernung im seriellen Monitor
      Serial.print("Entfernung: " + String(distance) + "cm");
      
    }
    

    Die Ausgabe im seriellen Monitor sieht wie folgt aus - Die Differenz kommt daher, weil ich den Sensor während der Ausgabe vom Ziel entfernt habe.

    Entfernung: 52.43cm
    Entfernung: 52.55cm
    Entfernung: 53.06cm
    Entfernung: 52.80cm
    Entfernung: 52.92cm
    [...]
    

    Trotz der bezeichnung Ultraschall-Sensor nehme ich während der Messung ein leichtes Summen wahr - wenn es außenrum still ist.

    Ein Grund für mich, den Sensor nicht in unmittelbarere Nähe meines Ohres zu platzieren. Es ist also nicht zu empfehlen, mit dem Sensor den Abstand von Gesicht bis zum Fernseher zu messen. :heh:


    Die Entfernung ist berechnet, was nun?

    Wenn man die Entfernung des Gegenstandes oder der Oberflächen erstmal erfasst hat, kann man nun weiter gehen und diverse andere Sachen berechnen. Dazu zählt, wie vorhin bereits erwähnt, zum Beispiel das Berechnen eines Füllstandes.

    Dazu verwendet man das Gesamtvolumen des Behälters mit Abzug des Volumens das leer ist - mit der Hilfe des gemessenen Abstandes…
    Aber das ist eher ein Thema der Mathematik und kein Thama der Inbetriebnahme dieser beiden Module. 🙂


    Wenn du mehr zum Thema #ESP8266, #Arduino-IDE und Co. erfahren möchstest, kannst du gerne die makesmart Community dazu nutzen. 🙂

    Die Produkte aus diesem Tutorial findet ihr hier.

Ähnliche Themen

  • 1
  • 54
  • 9
  • 1
  • 9