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.