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. 🙂
Safety instructions
I know the following notes are always kind of annoying and seem unnecessary. Unfortunately, many people who knew "better" have lost eyes, fingers or other things due to carelessness or injured themselves. Data loss is almost negligible in comparison, but even these can be really annoying. Therefore, please take five minutes to read the safety instructions. Because even the coolest project is not worth injury or other trouble.
https://www.nerdiy.de/sicherheitshinweise/
Affiliate links/advertising links
The links to online shops listed here are so-called affiliate links. If you click on such an affiliate link and make a purchase via this link, Nerdiy.de will receive a commission from the relevant online shop or provider. The price does not change for you. If you make your purchases via these links, you support Nerdiy.de in being able to offer other useful projects in the future. 🙂
Requirements
Helpful articles:
Before you start with this article, you should have dealt with the basics of soldering. You can find information about this in the following article.
Required tool:
In the following list you will find all the tools you need to implement this article.
Required material:
In the following list you will find all the parts you need to implement this article.
Collect required parts
Im folgenden Bild seht Ihr die benötigten Teile um einen eigenen Füllstandssensor zu bauen.

Print the 3D parts you need
Download all the required STL files:
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.

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.
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.
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”.
Den Abstandssensor einbauen
Die Einheit aus Mikrocontroller und Sensor muss nun natürlich wasserdicht im Gehäuse eingebaut werden.

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”. 🙂
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.

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.

…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.

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

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.

… und in das Gehäuse eingelegt werden.
Möglicherweise müsst Ihr die Überwurfmutter der Schraubtülle dazu nochmal lösen. 🙂
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.

…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.
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.
Wie Ihr den VL53L0X Sensor mit ESPEasy und dem passenden Plugin auslesen könnt, ist im folgenden Artikel 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. 🙂

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.
Further information
- 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
Have fun with the project
I hope everything worked as described for you. If not or you have questions or suggestions please let me know in the comments. I will then add this to the article if necessary.
Ideas for new projects are always welcome. 🙂
PS Many of these projects - especially the hardware projects - cost a lot of time and money. Of course I do this because I enjoy it, but if you think it's cool that I share the information with you, I would be happy about a small donation to the coffee fund. 🙂
Hello
Thank you for the successful guide!
It is not entirely clear to me how I can integrate the VL53L0X sensor into the EspEasy.
Do I have to load a certain firmware (I don't have that much experience yet)
I would be very grateful if you could help me here.
Greetings Stefan Allenspach
Hello Mr. Allenspach,
That's right, I should explain that part better in the manual. Thanks for the hint. 🙂
Until then: In this article (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. 🙂
Best regards
Fabian
Hello,
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.
Best regards
Ralph
Hello Ralf,
Thanks. 🙂 My solution is at most splash-proof. And only from above. The lid should be fairly tight thanks to the O-ring. But as you have already seen correctly, the sensor is not waterproof. Unfortunately, I only read later that the sensor can also be installed behind a pane of glass. You can probably find more information about this in the data sheet for the sensor. 🙂 When I have time I will design a new version of the case. If you don't feel like tinkering: There are also online printing services where you can print out the parts and have them sent to you. 🙂
Best regards
Fabian
Hello 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?
Keep it exciting and stay tuned to the project.
Best regards
Ralph
Hi Ralph,
Oh all good. I can fully understand. Ultimately, it's all about the reliable function and less about the optics. 😀
As far as the problem with the plugin is concerned: I am currently still very busy writing the documentation for WinDIY until next Monday (information here: https://nerdiy.de/news-sommer-2020/). When I'm done with that, I'll deal with it and open a repository on GitHub, where I offer all my plugins, including ESPEasy, configured accordingly. Then you no longer have to make the changes yourself and it should work straight away. 🙂
I hope that's okay. 🙂
Best regards
Fabian
Hello
Great description, great project.
I currently have an ultrasound measurement, but it works very poorly in the well (up to 3.5 meters deep) (I've tried everything possible).
In search of an alternative, I came across the VL53L1X and your site.
Ich verwende derzeit auch ESPEasy mit dem Ultraschallsensor, bin aber wie meine Vorredner mehr der Anwender und Hoppy-Programmierer, und nicht so sehr der “Plugin-Compiler”. Wenn du uns mit dem VL53L1X und ESPEasy etwas auf die Sprunge helfen könntest wäre auch ich sehr dankbar. 🙂
Greetings
erwin
Good evening Erwin,
yes, this place is unfortunately a little sparsely documented. I just looked and couldn't find any instructions that describe it. I'll write that down and try to create instructions as soon as possible that explain how to connect the sensor and configure the plugin accordingly.
As a small workaround, I created a .bin file that can be programmed on the Wemos D1 Mini. The VL53L0X is already integrated in it. You only have to activate it later (as usual with ESPEasy) and configure it accordingly.
You can find the bin file at: https://github.com/Nerdiyde/pxlBlck/blob/main/plugin/bin/ESP8266_ESPEasy_incl_pxlBlck_4M.bin
I have summarized information on how to program this on the Wemos D1 Mini or ESP8266 here: https://nerdiy.de/howto-esp8266-mit-dem-esptool-bin-dateien-unter-windows-flashen/
I hope that helps. Otherwise please let me know. 🙂
Best regards
Fabian
Hello Fabian
Thanks for your quick and friendly help.
I ordered a couple of VL53L0X and VL53L1X a few days ago.
For safety. They will now need a little bit until they are there from China.
Then I will test your image with the VL53L0X. Unfortunately, there is almost nothing on the net about the VL53L1X 🙁 Except for approaches that are a bit too high for me.
Thank you & best regards
erwin
Good evening Erwin,
understood. I know the problem (with the long shipping time). 😀 Maybe I'll have finished the article by then. I'll try to think of it, then let you know here as well. 🙂
Best regards
Fabian
Hello Fabian
Thank you for your support. I'll try again when I've got everything together. I'll definitely let you know how it goes. if necessary I will torment you again. 😉
Thank you & best regards
erwin
Hello Ervin,
Unfortunately, the LaserSensor from AliExpress never got to me and similar to yours, results with an ultrasonic sensor, among other things, did not convince me. The measurements are very error-prone and each measurement deviates from each other even if nothing happens, ok cheap and you can work with software filters. I once ordered a fill level probe for around €20 and these are available in different versions (measuring ranges e.g. 0-5m). Since I'm already using a good piece of cable, I didn't want to use a probe with a voltage measurement signal, but 4-20mA. For the 4-20mA to 0-3.3V (ESP8266 analog input) as well as for the 24VDC supply there are ready-made modules (about 1€) at Ali-Express and I am super happy with them. Software runs ESPEasy in the standard version and simply evaluates the analog input. Greetings Ralph
Hello Ralf
Thank you for your kind reply.
I've read about that too. Is it really that good/easy?
Mich hat abgeschreckt, dass man die Werte mal “einkalibrieren” muss.
So bottom and top value. At least that's what I read somewhere.
Well, maybe I'll take up the topic again.
Thank you & best regards
erwin
Hello Fabian, hello Ralf
Thank you for all your help and ideas, I finally put aside measuring with the LaserSensor after initial attempts and tried the variant with a level probe. And I have to say: SUPER!! The hardware effort is certainly greater (but quite manageable), but it is also easy to configure in ESPEASY. It's only been running for a few days, but I'm pleasantly surprised. The measurement works without significant fluctuations. As soon as I have long-term experience, I'll be happy to share it with you.
@ Ralf how are your experiences so far.?
@Fabian: You absolutely have to try it. I followed this guide, works perfectly. https://forum.iobroker.net/assets/uploads/files/1604243665450-f%C3%BCllstandsmesser-per-pegelsonde.pdf
Cheers Erwin 🙂
Hey Ervin,
That looks interesting! Thanks for the hint. 🙂
Best regards
Fabian
Hello Fabian,
Thank you and everything is fine for me. Ali-Express is slow to deliver 🙂
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 🙂
Best regards
Ralph
Hey Ralph,
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.
Best regards
Fabian
Hi
can someone tell me which tasmota I have to flash on the esp?
Unfortunately, the sensor bin does not recognize the vl53lox, not even the latest tasmota bin
thanks in advance
hi crumbs,
I once prepared and uploaded a binary for it. You can find them at: https://github.com/Nerdiyde/NerDIYs_STLs/tree/main/STLs/water_level_sensor/binary
Best regards
Fabian
Hello,
Am I correct in saying that a TOF200C is the same sensor in a protected housing and therefore works the same way?
https://de.aliexpress.com/item/1005003694800050.html
Best regards,
Daniel
Hi Daniel,
yes, that should work too. 🙂
Best regards
Fabian
Hi,
Does anyone else have the problem that when the sensor is installed, only values below 30cm are displayed, although there should be more? As soon as it is expanded, it shows the correct distance.
The sensor actually has a clear view.
Hi, I can confirm that. In the meantime I found out that it makes a difference whether the sensor is operated indoors or outdoors. I have an experimental setup with a laptop and as soon as I step in front of the door, distances of only approx. 40 cm are recorded.
Good bye
I have the problem that no values are displayed under Tasmota (12.0.2). The VL53L0X is connected to D1 (SCL) and D2 (SDA). Tasmota is also configured in the same way (D1 - I2C SCL and D2 - I2C SDA).
When I use ESPEasy everything works.
Hi Norbert,
Sorry for the late reply. I got through your comment. The problem is probably that the VL53L0X is not supported by default. You would then have to compile the firmware yourself after you have activated the corresponding option beforehand. 🙂
Best regards
Fabian
Super Anleitung, das werde ich definitiv auch bauen. Da ich mehrere Regentonnen nebeneinander habe, die ich gerne überwachen möchte: Kann man über die Pins D3/D4, D5/D6 und D7/D8 noch drei weitere VL53L1X (also insgesamt 4 pro Wemos D1 mini) anschließen und auslesen?