Hier zeige ich euch wir Ihr mit einem Wemos den Wasserstand einer Zisterne überwachen könnt.
Ich habe es recht einfach gehalten, der Ultraschallsensor misst die Entfernung zur Wasseroberflache und rechnet das in ein Volumen um. Dieses kann dann über eine Intranetseite abgerufen werden. Man kann das ganze natürlich noch erweitern z.B. ab einem bestimmten Wasserstand ein Benachrichtigung via Mail zu erhalten.
So sieht das Ganze auf der Intranet Seite aus, die Bilder für die Balkenanzeige liegt auf meiner Homepage, kann man auch weglassen.

Leider habe ich vor dem Einbau keine Fotos mehr von den Bauteilen gemacht, aber ich denke das ist nicht so schwer zum nachbauen. Denn Ultraschallsensor habe ich in eine Abzweigdose aus dem Baumarkt eingebaut und mit Silikon abgedichtet. Den Wemos D1 mini habe ich in eine etwas größere Abzweigdose gepackt und das ganze mit einer 4 Adrigen Leitung verbunden. Der Wemos benötigt noch Spannung, die bei mir eh vorhanden ist durch die Wasserpume.
Die Beschaltung
Der Programmcode:
Wie Ihr den Wemos D1 mini installiert findet Ihr hier. Die Bilder für die Batterie könnt Ihr hier herunterladen.
#include <ESP8266WiFi.h>
const char* ssid = "Wifi Name";
const char* password = "Password vom Wifi";
WiFiServer server(80);
int trigger = 0;
int echo = 2;
long dauer = 0;
long entfernung = 0;
void setup() {
Serial.begin(115200);
delay(10);
Serial.println();
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
// Connect to WiFi network
WiFi.mode(WIFI_STA);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
digitalWrite(trigger, LOW);
delay(5);
digitalWrite(trigger, HIGH);
delay(10);
digitalWrite(trigger, LOW);
dauer = pulseIn(echo, HIGH);
entfernung = (dauer / 2) / 29.1;
String cmd;
cmd += """;
WiFiClient client = server.available();
client.println("HTTP/1.1 200 OK");
client.println();
client.println("<!DOCTYPE html>");
client.println("<html xmlns='http://www.w3.org/1999/xhtml'>");
client.println("<head>n<;meta charset='UTF-8'>");
client.println("<title>Wasserstand Regenwasserzisterne</title>");
client.println("</head>n<body>");
client.println("<H2>Wasserstand Regenwasserzisterne</H2>");
client.println("<h3>");
if (entfernung >= 200 || entfernung <= 0)
{
client.println("Kein Messwert");
}
else
{
entfernung = 192 - entfernung;
entfernung = entfernung * 84.7457;
client.print(entfernung);
client.println(" Liter");
}
if (entfernung >= 0 && entfernung <= 1833)
{
client.print("<br><img src=");
client.print(cmd);
client.print("http://xxx/bat_0.jpg");
client.print(cmd);
client.print(" ");
client.print("width=");
client.print(cmd);
client.print(80);
client.print(cmd);
client.println("/>");
}
if (entfernung >= 1833 && entfernung <= 3666)
{
client.print("<br><img src=");
client.print(cmd);
client.print("http://xxx/bat_emty.jpg");
client.print(cmd);
client.print(" ");
client.print("width=");
client.print(cmd);
client.print(80);
client.print(cmd);
client.println("/>");
}
if (entfernung >= 3666 && entfernung <= 5500)
{
client.print("<br><img src=");
client.print(cmd);
client.print("http://xxx/bat_2.jpg");
client.print(cmd);
client.print(" ");
client.print("width=");
client.print(cmd);
client.print(80);
client.print(cmd);
client.println("/>");
}
if (entfernung >= 5500 && entfernung <= 7332)
{
client.print("<br><img src=");
client.print(cmd);
client.print("http://xxx/bat_half.jpg");
client.print(cmd);
client.print(" ");
client.print("width=");
client.print(cmd);
client.print(80);
client.print(cmd);
client.println("/>");
}
if (entfernung >= 7332 && entfernung <= 9165)
{
client.print("<br><img src=");
client.print(cmd);
client.print("http://xxx/bat_4.jpg");
client.print(cmd);
client.print(" ");
client.print("width=");
client.print(cmd);
client.print(80);
client.print(cmd);
client.println("/>");
}
if (entfernung >= 9165 && entfernung <= 16000)
{
client.print("<br><img src=");
client.print(cmd);
client.print("http://xxx/bat_full.jpg");
client.print(cmd);
client.print(" ");
client.print("width=");
client.print(cmd);
client.print(80);
client.print(cmd);
client.println("/>");
}
client.println("</h3>");
client.print("</body>n</html>");
delay(500);
}
Die Berechnung des Volumen:
Die Zisterne fast 10000 Liter. Die 192 cm ist die Enfternung vom Sensor bis zum Boden der Zisterne. Jetzt brauchen wir den Multiplikator, die 100% sind bei mir bei 118 cm erreicht, also 10000/118=84,7457.
Das ist nun der Multiplikator aus der Sketch.
UPDATE:
Ich habe einen Wasserdichten Sensor gefunden und getestet. Der JSN-SR04T, dieser Funktioniert ohne Probleme und kann in den bestehenden Sketch eingebunden werden ohne was zu verändern. Ich habe auch den DYP-ME007Y ausprobiert, diesen habe ich jedoch nicht zum laufen bekommen. Ich hatte zwei Stück und beide haben nicht funktioniert.
Folgende Bauteile wurden verwendet:
1x Ultraschallsensor HC-SR04 https://ap-url.de/hcsr041x Ultraschallentfernungsmesser AJ-SR04M / JSN-SR04T Wasserdicht https://ap-url.de/jsnsr04t
1x D1 mini https://ap-url.de/d1mini
1x ca. 2m 4 Adrige Leitung http://amzn.to/2nqOzWs
1x Silikon http://amzn.to/2nHPqOn
1x Abzweigdose klein
1x Abzweigdose groß http://amzn.to/2nHWFpA
1x ein Stück Blech um den Sensor am Decker der Zisterne zu befestigen
65 Kommentare
Hey hallo,
ich hatte versucht den JSN-SR04T in einem 450 L Regenfass zu nutzen.
Hätte ich diese Seite früher gesehen dann hätte ich mir einiges erspart.
Ich werde wohl nun auf eine andere Messmethode umstellen denn die HC Sensoren sind ja auf Grund des Kondenswasseres auch nicht wirklich geeignet.
Aber ich bin natürlich für andere Ideen immer offen ;-)
Grüße Marko
Hallo Tobias, vielen Dank, so habe ich es jetzt auch gemacht. Habe auch gelesen, dass manche das Kabel zwischen Arduino und Sensoreinheit über 5 Meter verlegt haben und sollte wohl geklappt haben. Zur Info. Weiter So!!!
Hallo Tobias, super coole Idee welche ich gleich nachbauen möchte. Ich bin neu auf dem Arduino Gebiet. Mit der Programmierung an sich habe ich keine Probleme, da habe ich mal gelernt, aber jetzt habe ich nur ein paar praktische technische Anfängerfragen:
-Zum einen hast du bei dieser Schaltung den D1 Mini direkt mit USB angeschlossen oder bist du über ein Netzteil von 230Volt auf 5Volt gegangen und das irgendwie direkt auf die Lochplatiene gelötet?
-da mein Stromanschluss 5 Meter von der Zisterne entfernt ist, muss ich über ein Leerrohr einspeisen. An sich kein Problem, aber wie würdest du das machen? USB Kabel über ca. 5 Meter wird der Strom nicht mehr ausreichen am Ende oder? Dann bleibt nur noch die 230 Volt Geschichte mit Netzteil am Board? Kannst du hier eines empfehlen? Oder auch gleich eine Lochplatte worauf ich alles am Besten befestigen kann? Da ich das Breadboard kaum für diesen Zweck hernehmen kann oder doch?
Für Hilfe wäre ich sehr dankbar :)
Hallo…suche Ultraschallsensor oder anderen Sensor, der den Wasserstand in 8 bis 9m Tiefe in einem Brunne ( Durchmesser 1m ) messen kann. Hat jemand eine Idee ?
Gruß Paul
Hi, super tolles Projekt welches ich gerne aufgreifen und auch so umsetzen möchte. Da ich bisher mit dem D1 noch keine Erfahrungen sammeln konnte muss ich mal eine Frage loswerden. Wenn ich den Sketch auf dem D1 habe, wie / wo kann ich die ermittelten Werte ablesen um erstmal testen zu können das auch eine Messung stattfindet?