Ultraschallsensoren HC-SR04 und JSN-SR04T am ESP8266 D1 Mini

ESP8266 Apr. 21, 2021
https://my.makesmart.net/topic/196/ultraschallsensoren-hc-sr04-und-jsn-sr04t-am-esp8266-d1-mini-betreiben#Das-Programm

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 MiniHC-SR04 / JSN-SR04T
5VVCC
GGND
D0TRIG
D1ECHO

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   // D0long duration;  // Variable um die Zeit der Ultraschall-Wellen zu speichernfloat distance; // Variable um die Entfernung zu berechnenvoid 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.43cmEntfernung: 52.55cmEntfernung: 53.06cmEntfernung: 52.80cmEntfernung: 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.

Community

Die makesmart Community ist der Ort, an dem du deine Ideen mitteilen und deine Erfahrungen austauschen kannst.

Großartig! Das Abonnement wurde erfolgreich abgeschlossen.
Großartig! Schließe als Nächstes die Kaufabwicklung ab, um vollen Zugriff zu erhalten.
Willkommen zurück! Du hast dich erfolgreich angemeldet.
Erfolg! Dein Konto ist vollständig aktiviert, du hast jetzt Zugang zu allen Inhalten.