Wenn Sie über Links in unseren Artikeln einkaufen, erhalten wir eine kleine Provision. Das hat weder Einfluss auf unsere redaktionelle Unabhängigkeit noch auf den Kaufpreis.
Wir beziehen zu Hause unser Wasser aus diversen Fässern und einer Zisterne, die an zwei Dachflächen vom Haus angeschlossen ist. Sie fasst einige Kubikmeter, ist aber schwer einsehbar, da sie ebenerdig und nur mit einer kleinen Öffnung versehen ist. Manchmal wissen wir deshalb nicht genau, wieviel Wasser uns noch zur Verfügung steht. Ich wollte daher eine Füllstandsanzeige konstruieren, die den Füllstand auch noch in Liter Wasser umrechnet.
Die Rechenaufgaben soll ein Arduino Nano übernehmen, die Anzeige ein OLED-Display. Mein 0,96-Zoll-OLED für den SPI-Bus ist recht klein, reicht aber aus. Softwaremäßig angebunden ist es über die Adafruit-Library für den SSD1306-Controller. Da ich hier schon einige Erfahrungen habe, setzte ich einen Ultraschallsensor (HC-SR04) zur Bestimmung des Abstands zur Wasseroberfläche ein. Der funktioniert gut in Ölbehältern, bei Wasser müsste er etwas gegen Luftfeuchtigkeit geschützt werden…
Aber Messungen mittels Schwimmer und Seilzug oder Rohrkondensator (Wasser als Dielektrikum) habe ich schnell wieder verworfen, weil das entweder zu kompliziert zu realisieren oder auf Dauer auch nicht korrosionsfest sein würde.
Blieb die Distanzmethode per US-Sensor als Alternative. Die war dank diverser Libraries zudem einfach ins eigene Arduino-Sketch zu integrieren. Zuerst habe ich die Schaltung auf einem Breadboard aufgebaut (im Bild mit Sensor, Arduino Nano V3 und Display) und das Sketch getestet.
Zur Mathematik: Der Behälter ist kreisrund, und da Durchmesser, Abstand des Überlaufs zum Boden und Einbauhöhe des Sensors bekannt sind, lässt sich alles recht leicht ausrechnen.
Den Ultraschallsensor habe ich mit einer Spange am Betondeckel befestigt, so kann ich ihn im Winter und für Wartungsaufgaben leicht wieder entfernen. Der Sensor sitzt in einer Miniverteilerdose (aus dem Handel), die Platine im Inneren ist dank Heißkleber und Lack recht gut geschützt.
Die eigentlichen Sender und Empfänger des HC-SR04 sind bisher nicht modifiziert worden. Je nachdem, wie weit die Luftfeuchtigkeit in der Zisterne das Ganze angreift, will ich auf einen abgedichteten Sensor (wie beispielsweise in Autos verbaut) ausweichen. Ein neues Modul von Sodial liegt dafür schon bereit.
Die restliche Elektronik (Nano, Display, Batterie) ist, wie im Bild ganz oben zu sehen, im Gehäuse einer LED-Leuchte untergebracht – regensicher (mit Silikon nachgeholfen) und preiswert.
Ich habe inmitten des Gartens keine Möglichkeit, ans Stromnetz zu gehen. Die Stromversorgung der Schaltung übernimmt deshalb ein 9V-Block und ja, die Anzeige ist dadurch nicht permanent in Betrieb. Der Verbrauch ist zwar moderat, aber für einen Dauerbetrieb hätte ich einen Akku tagsüber aufladen müssen. Das kleine Solarpanel der originalen Leuchte reicht dazu bei weitem nicht aus. Vielleicht entwerfe ich später mal eine Hardware mit großem 5V-Panel, und die Anlage funkt dann etwa die Messwerte permanent ins Netzwerk. Das wäre dann die nächste Ausbaustufe.
Jetzt trennt erst einmal ein Schalter. Das macht wenig Aufwand in der Bedienung, man darf nur das Ausschalten nicht vergessen. Im Bild oben ist die innere Elektronik ohne Schalter und 9V-Block zu sehen. Da ich keine weiteren externen Bauteile habe, reicht für den fertigen Aufbau eine Rasterplatine, auf der eine Fassung für den Arduino und die Verbindungskabel verlötet sind.
Das letzte Bild zeigt die am Betonrand angebrachte Spange mit dem Sensor, der im Inneren nach unten auf den Wasserspiegel zeigt. Ein Verbindungskabel geht zur Anzeigeelektronik. Deckel zu und geschafft!
Die Anzeige hat nun zwei Modi. Im Abstand von 10 Sekunden wechselnd, zeigt sie entweder die Füllmenge in Litern (siehe Abbildung Breadboard) und eine kleine Füllstandsgrafik oder aber klassisch den Füllstand in Zentimetern an (Bild ganz oben). Erreicht er die maximale Höhe, erscheint zusätzlich das Label “voll”.
Im Fehlerfall gibt es einen entsprechenden Hinweis im Display, und im Sekundenabstand wird die letzte Messung wiederholt. Ist bisher nicht aufgetreten, es gab also keine unerwünschten Reflektionen im Inneren. Aber zum Debugging sind derlei Ausgaben immer ganz hilfreich.
Nebenbei: Außerdem habe ich unsere Software recht tolerant aufgebaut. So dürfen Messungen, die über die Grenzwerte hinausgehen, auch auf ein einstellbares Maß (beispielsweise 5 cm) scheitern, dann wird auf- oder abgerundet. Recht günstig, wenn man sich mit den Zisternenmaßen beim Ausmessen etwas vertut oder beim Einbau des Sensors von der ursprünglich geplanten Höhe etwas abweicht.
Swen Hopfe hat bereits einige andere Projekte auf www.pcwelt.de/hacks vorgestellt:
So steuern Sie mit Raspberry Pi eine Infrarotkamera
Arduino-Roboter fährt allein
Hinweis für alle Bastler: Wenn auch Sie ein kreatives Projekt entwickelt haben, schreiben Sie uns. Wir würden Ihre Konstruktionen, nützlich oder einfach nur schräg, gern auf www.pcwelt.de/hacks vorstellen. Schreiben Sie an Birgit Götz – hacks@pcwelt.de.
Swen Hopfe arbeitet bei einem mittelständischen Unternehmen aus der Chipkarten-Branche und ist Experte für Smart Cards, RFID, das IoT, Raspberry Pi und Arduino.
PC för alla Schweden