HowTo: ESPEasy – Füllstandssensor mit VL53L0X / VL53L1X

Vor kurzem bin ich über die TOF-Abstandssensoren VL53L0X und VL53L1X gestolpert. Diese Sensoren können Entfernungen mit einem Laser millimetergenau bestimmen. Dabei haben sie eine Reichweite von bis zu 4 m (VL53L1X9) oder 2 m (VL54L0X). Ich fand die Sensoren sehr interessant und habe natürlich direkt ein paar bestellt. Ich hab gerne praktische Sachen auf Lager 🙂

Nachdem sie angekommen waren und ich etwas damit herumgespielt hatte, fiel mir auf, dass damit auch der Füllstand meiner Kaffeetasse ermittelt werden konnte. Ein schneller Test am Waschbecken und ein weiterer Test am Regenfass zeigten dann, dass dies auch mit klaren Flüssigkeiten funktionierte. Das brachte mich auf die erste Idee für den praktischen Einsatz: einen Füllstandssensor für das Regenfass.

Im folgenden Artikel ist beschrieben, was Ihr benötigt und wie Ihr beim Bau Eures eigenen Füllstandssensors vorgehen könnt. 🙂


Voraussetzungen

Hilfreiche Artikel:
Bevor ihr mit diesem Artikel startet solltet Ihr euch mit den Grundlagen des Lötens beschäftigt haben. Informationen dazu findet Ihr in dem folgenden Artikel.
Elektronik – Mein Freund der Lötkolben

Benötigtes Werkzeug:

In der folgenden Liste findet Ihr alle Werkzeuge die Ihr zur Umsetzung dieses Artikels benötigt.

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/


Benötigte Teile sammeln

Im folgenden Bild seht Ihr die benötigten Teile um einen eigenen Füllstandssensor zu bauen.

Auf dem Bild fehlt noch ein Micro-USB-Kabel und ein Streifen selbst verschweißendes Klebeband.

Die benötigten 3D-Teile drucken

Download aller benötigten STL-Dateien: ESPEasy – Füllstandssensor mit VL53L0X / VL53L1X


Gewinde in das Gehäuse schneiden

Damit das USB-Kabel für das Netzteil auch wasserdicht in das Gehäuse geführt werden kann, solltet Ihr eine Kabelverschraubung verwenden. Nur so kann dauerhaft verhindert werden, dass im Laufe der Zeit Wasser in das Gehäuse eindringt.

Um diese Kabelverschraubung im Gehäuse montieren zu können, muss zunächst ein Gewinde in das Gehäuse geschnitten werden. Das Schneiden von Innengewinden wird auch im Artikel Mechanik – Innengewinde schneiden ausführlich erläutert.

Setzt den Gewindeschneider wie üblich so gerade wie möglich an. Denkt auch daran nach jeder kompletten Umdrehung eine Umdrehung zurück zu drehen um den Span abzubrechen.

Sobald Ihr mit dem Gewindeschneider das komplette Gewinde geschnitten habt, sollte das Ganze…

… ungefähr so aussehen.

Jetzt könnt Ihr die Kabelverschraubung in das frisch geschnittene Gewinde einschrauben.

Auf diese Weise werdet Ihr auch schnell feststellen, ob das Gewinde vollständig geschnitten ist oder nicht.

Wenn Ihr den Gewindebohrer beim Schneiden des Gewindes gerade gehalten habt, könnt Ihr jetzt auch sehen, dass der Dichtring überall gleichmäßig gegen das Gehäuse gedrückt wird und somit auch gut abdichtet.

Ansicht von außen.

Ansicht von Innen.


Den Abstandssensor vorbereiten

Jetzt ist es Zeit, die Installation des eigentlichen Sensors vorzubereiten. Dieser kommuniziert mit dem Mikrocontroller über den I2C-Bus und benötigt daher insgesamt vier Leitungen.

Bereitet die Verbindungsleitung vor, indem Ihr die Enden der einzelnen Leitungen jeweils 5 mm abisoliert und mit etwas Lot verzinnt.

Anschließend kannst Du den eigentlichen Sensor vorbereiten, indem Du zuerst die Kontakte „VCC“, „GND“, „SCL“ und „SDA“ mit etwas Lot verzinnst.

An dieser Stelle könnt Ihr auch den gelblichen Schutzfilm von der Sensoroberfläche entfernen.

Jetzt könnt Ihr die Kabel wie gezeigt an die entsprechenden Kontakte anlöten.

Wenn alles vollständig vorbereitet ist, sollte es ungefähr so aussehen.


Den Abstandssensor an den Wemos D1 Mini anschließen

Jetzt muss der Sensor natürlich noch an den Mikrocontroller angeschlossen werden.

Dazu solltet Ihr zunächst wieder die Kontakte vorbereiten. Verzinnt dazu die Kontakte „5V“, „G“, „D2“ und „D1“.

Anschließend könnt Ihr das zuvor vorbereitete Verbindungskabel an den Mikrocontroller anlöten.

Fertig aufgebaut sollte das ganze…

… in etwa so aussehen.


Den Abstandssensor einbauen

Die Einheit aus Mikrocontroller und Sensor muss nun natürlich wasserdicht im Gehäuse eingebaut werden.

Positioniert dazu die M3-Muttern wie gezeigt…

… unter der Halterung im Gehäuse.

Die Muttern sollten so positioniert werden, dass sie…

… genau unter den Löchern liegen, durch die die Schrauben später eingesteckt werden.

Nun könnt Ihr den kleinen Dichtring in die Aussparung einlegen.

Auf diesen wird dann der Sensor wie abgebildet aufgelegt und mit den M3x10 Schrauben verschraubt.

Achtet dabei darauf die Schrauben nicht zu fest anzuziehen. Denn nach „fest“ kommt bekanntlich „ab“. 🙂

Jetzt könnt Ihr noch schnell überprüfen, dass der Sensor auch eine freie „Sicht“…

…nach Außen hat.


Installation des Wemos D1 Mini und des USB-Kabels

Nachdem der Sensor an der richtigen Stelle installiert wurde, müssen alle anderen Komponenten wasserdicht im Gehäuse verstaut werden.

So sollte der Sensor aktuell aussehen. 🙂

Die Größe des Micro-USB-Steckers ist etwas kritisch: Er muss nämlich klein genug sein, um durch die Mutter der Kabelverschraubung zu passen.

Bei Bedarf könnt Ihr den Anschluss auch mit einer Feile so bearbeiten, dass er durch die Mutter passt.

Sobald der Micro-USB-Stecker durch die Mutter gezogen wird…

…und Ihr anfangt die Mutter stramm zu ziehen…

…werdet Ihr schnell merken, dass dort immer noch viel Platz zwischen dem Dichtgummi der Kabelverschraubung und dem USB Kabel ist.

Dies ist eindeutig zu viel Platz, um Wasser am eindringen in das Gehäuse zu hindern.

Daher solltet Ihr die Kabelverschraubung wieder abschrauben und das USB-Kabel ca. 2 cm herausziehen. Die Stelle des Kabels die vorher in der Kabelverschraubung gelegen hat umwickelt Ihr jetzt mit ein paar Wicklungen des selbst verschweißenden Klebebands.

So könnt Ihr den Durchmesser des Kabels an der betreffenden Stelle vergrößern…

… und damit das USB-Kabel wasserdicht in der Kabelverschraubung befestigen. Jetzt sollte das USB-Kabel auch mechanisch gegen Herausziehen gesichert sein.

Ansicht von Vorne.

Jetzt könnt Ihr den Rest der Installation erledigen: Bevor der Mikrocontroller im Gehäuse verstaut wird, könnt Ihr die Kontakte des Sensors mit etwas Heißkleber gegen Kurzschlüsse sichern.

Natürlich könnt Ihr das auch später – nach einem ersten Test – tun, sobald Ihr sicher seid, dass alles richtig funktioniert.

Das selbe könnt Ihr auch mit den Kontakten des Mikrocontrollers tun.

Danach kann der Mikrocontroller mit dem Micro-USB-Kabel verbunden…

… und in das Gehäuse eingelegt werden.

Möglicherweise müsst Ihr die Überwurfmutter der Schraubtülle dazu nochmal lösen. 🙂

Fertig aufgebaut sollte das Ganze nun so aussehen. 🙂


Gehäuse wasserdicht verschließen

Der fast letzte Schritt: Nun nachdem alle Komponenten im Gehäuse verbaut sind, müsst Ihr dieses auch noch wasserdicht verschließen.

Aktuell sollte Euer Sensor so weit…

…aufgebaut sein.

An dieser Stelle dürft Ihr aber natürlich auch schon ein Kapitel weiter springen und den Mikrocontroller erstmal programmieren. Verschließen lässt sich das Gehäuse ja auch nach der Programmierung und den ersten Tests. 🙂

Um das Gehäuse zu verschließen werden nun vier M3-Muttern benötigt.

Legt diese von unten in die Vorgesehenen Montageplätze in den Ecken des Gehäuses.

Dreht das Gehäuse dann um ohne, dass die Muttern aus Ihren Montageplätzen fallen.

Dann könnt Ihr den Dichtring in die Ausbuchtung auf der Oberseite einlegen.

Legt nun die Deckelplatte auf und führt die Schrauben durch die vorgesehenen Löcher.

Beim Anziehen der Schrauben solltet Ihr immer die gegenüberliegenden Schrauben anziehen. Also zum Beispiel erst oben rechts, dann unten links, dann oben links und zum Schluss unten rechts.

Die Schrauben sollten so angezogen sein, dass der Spalt zwischen Gehäuse und Deckel überall gleich groß ist.


Programmieren der Firmware

Im Prinzip habt Ihr bei der Firmware viele Möglichkeiten. Ihr könnt den auf dem Wemos D1 Mini verbauten ESP8266 mit einer eigenen Firmware bestücken aber auch die beliebte Firmware „Tasmota“ oder „ESPEasy“ nutzen.

Ich persönlich finde ESPEasy am sympathischsten, weil man hier mehr Einstellungsmöglichkeiten hat. Für den einen oder anderen Mag aber genau dies ein Argument zu sein lieber die Tasmota-Firmware zu nutzen, welche meiner Meinung nach etwas mehr „einfach funktionierende“ Voreinstellungen mitbringt.

In diesem Absatz ist aber zunächst die Programmierung der ESP-Easy Firmware beschrieben.


Montagevorschlag

Hier ein kleiner Montagevorschlag wie Ihr den Sensor zum Beispiel an einer Regentonne montieren könntet.

Ihr solltet dabei auf jeden Fall sicher gehen, dass der Sensor bei einem Überlaufen der Regentonne nicht überspült wird. Der Sensor ist zwar sehr gut gegen Spritzwasser geschützt aber in Wasser eintauchen solltet er lieber nicht. 🙂

Der Sensor kann zum Beispiel so verbaut werden, dass er auf dem Tonnenrand aufliegt.

Falls vorhanden könnt Ihr aber auch ein Loch in den Deckel bohren und den Sensor so auf die Wasseroberfläche ausrichten. Dazu eignet sich ein Stufenbohrer sehr gut.


Auswertung in NodeRed

Es ist eine Sache den Füllstand Eurer Regentonne zu erfassen. Eine andere ist es diese Daten zu empfangen, aufzubereiten und ggf. noch umzurechnen.

Denn bisher bekommt Ihr von Eurem Sensor lediglich einen Abstand. Das ist ja noch nicht wirklich ein Volumen, welches Ihr ja eigentlich messen wollt. Deswegen muss der Wasserstand noch in ein Volumen umgerechnet werden. Dieses is abhängig von der Form und den Maßen Eurer Regentonne und nicht immer ganz Leicht zu berechnen. Deswegen hier ein paar Vorschläge und ein Flow der das ganze auch schon optisch etwas aufbereitet.


Weiterführende Informationen

https://www.hackster.io/team-protocentral/liquid-level-sensing-using-a-laser-tof-sensor-d04232
http://forum.creationx.de/forum/index.php?thread/955-f%C3%BCllstand-%C3%B6l-tank-messen/&pageNo=3
https://www.electronicspecifier.de/micros/flugzeitsensor-der-n-chsten-generation-von-stmicroelectronics
https://github.com/adafruit/Adafruit_VL53L0X

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

Fab

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com

8 Kommentare

  1. Hallo

    Vielen Dank für die gelungene Anleitung!
    Mir ist nicht ganz klar wie ich den Sensor VL53L0X ins EspEasy einbinden kann.
    Muss ich da eine bestimmte Firmware laden, (hab da noch nicht so Erfahrung)

    Wäre Ihnen sehr Dankbar wenn Sie mir hier weiterhelfen können.

    Gruss Stefan Allenspach

    1. Hallo Herr Allenspach,
      stimmt, den Teil müsste ich in der Anleitung noch mal besser erklären. Danke für den Hinweis. 🙂
      Bis dahin: In diesem Artikel (https://nerdiy.de/howto-espeasy-nerdiyspanelmeter-plugin-installieren-und-konfigurieren/#Plugin_konfigurieren) in dem Absatz „Plugin konfigurieren“ ist der Vorgang für das device „Display – Nerdiys-PanelMeter“ erklärt. Mit dem VL53L0X funktioniert dies genaus, nur dass natürlich das device „VL53L0X“ ausgewählt werden muss. Lassen Sie mich gerne wissen ob es damit geklappt hat. 🙂
      Beste Grüße
      Fabian

  2. Hallo,
    toller Artikel und hierdurch bin ich auf die Lösungsmöglichkeit mit TOF-Sensoren erst aufmerksam geworden. Eine Frage die für meinen Tank sehr wichtig ist und ich habe kein 3D-Druck zur Verfügung und muß mir ein Gehäuse „basteln“. Ist Deine gezeigte Öffnung Wasserdicht? Bei mir wird der Tank Gelegentlich 100% voll und somit kann der Sensor schon mal ein paar Tropfen abbekommen. Die Fotos zeigen ein Loch wo auch mehr als die Öffnungen für das Licht des Sensors durchgeht und somit denke ich kann hier Wasser eintreten? Ist es möglich dies mit einer kleinen Scheibe zu verschließen? Wäre für mich wichtig und denke ein entscheidender Unterschied zu Ultraschallmessung. Hier gibt es derzeit (im DIY Bereich) nur Wasserdicht mit 20cm Mindesabstand und einigen berichteten Problem in Tanks. Somit wäre die TOF Lösung ideal.
    Beste Grüße
    Ralf

    1. Hallo Ralf,
      danke. 🙂 Meine Lösung ist höchstens Spritzwassergeschützt. Und das auch nur von oben. Der Deckel sollte dank des O-Rings ziemlich dicht sein. Aber wie du schon richtig gesehen hast, ist der Sensor nicht Wasserdicht verbaut. Ich habe leider erst später gelesen, dass der Sensor auch hinter einer Glasscheibe verbaut werden kann. Im Datenblatt des Sensors kannst du bestimmt noch mehr Infos dazu finden. 🙂 Wenn ich mal Zeit habe werde ich eine neue Version des Gehäuses designen. Falls du keine Lust auf Basteln hast: Es gibt auch online-druck-services, wo man sich die Teile ausdrucken und zusenden lassen kann. 🙂
      Beste Grüße
      Fabian

  3. Hallo Fabian,
    besten Dank für Deine Rückinfo. Habe jetzt mal einen VL53L0X mit dieser Abdeckkappe bestellt und glaube ihn in etwas wie einer AP-Abzweigdose montieren/verkleben zu können. Nichts gegen Dein Gehäuse, aber bei mir käme das in einem gebuddelten Loch eines Wassertanks im Garten zum Einsatz, was nie jemand sehen würde (Wie sagt man Perlen vor die Säu..). Wenn die Funktion erfüllt ist, bin ich schon sehr happy. Setze für meine bisherigen ESP8266 Geschichten auch ESPEasy ein und möchte dies auch hier wieder tun (Alleine die Rules um ein schwankendes Messergebnis zu filtern/beruhigen wäre copy&paste). Wie mein Vorkommentator sagt, ist mir auch leider nicht ganz klar wie ich das PlugIn P0133 für das Kompilieren von ESPEasy einbinde. Dein Link hilft, jedoch scheint sich die Aktivierung von PlugIns durch Löschung der Kommentarzeichen von der Struktur in ESPEasy geändert zu haben. Vermute dort eine zentrale Verwaltungsdatei. Hinzu kommt, dass P0133 nicht mehr in der „MEGA“ Version von ESPEASY vorhanden zu sein scheint (bei P097 ist Ende). Für den VL53L0X sehe ich es noch optimistisch, dies irgendwie heraus zu bekommen, wenn das Plugin für die aktuelle Version denn noch funktioniert, aber wie geht dies für einen VL53L1X? Einfach die VL53L1X.h von Polulu ins Projekt einbinden und die ino Datei entsprechend anpassen?
    Es bleibt spannend und bleibe am Projekt dran.
    Beste Grüße
    Ralf

    1. Hi Ralf,
      Ach alles gut. Kann ich voll verstehen. Letztlich kommt es ja auf die zuverlässige Funktion an und weniger auf die Optik. 😀
      Was das Problem mit dem Plugin angeht: Ich bin aktuell bis kommenden Montag noch schwer damit beschäftigt die Dokumentation für WinDIY zu schreiben (Infos hier: https://nerdiy.de/news-sommer-2020/). Wenn ich damit durch bin, werde ich mich mal damit auseinandersetzen und ein Repository auf GitHub aufmachen, wo ich alle meine Plugins inkl. ESPEasy entsprechend konfiguriert anbiete. Dann muss man nicht mehr selber die Änderungen vornehmen und es sollte direkt funktionieren. 🙂
      Ich hoffe das ist okay. 🙂
      Beste Grüße
      Fabian

  4. Hallo Fabian,
    vielen Dank und für mich alles prima. Ali-Express liefert langsam 🙂
    Dein Repository finde ich super und würde drauf zurück greifen, jedoch bin ich auch großer Freund davon willigen Leuten das Prinzip an einem Beispiel zu erlären. Mit etwas Glück potenzieren sich so die „Wissenden“ und kommen Mini-Step per Mini-Step weiter und können auch Anderen helfen. Denke Du möchtest ja auch neue Dinge machen und nicht nur immer dasselbe Zeugs in x Ausführungen erklären 🙂
    Beste Grüße
    Ralf

    1. Hey Ralf,
      Ja da hast du recht. Ist ja eigentlich auch mein „Motto“ Sachen wenn nötig auch sehr Kleinschrittig zu beschreiben. 🙂 Sobald ich Zeit habe kümmere ich mich darum.
      Beste Grüße
      Fabian

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.