Time of Flight mit dem VL53L0X

Time of Flight Sensore, kurz ToF, ermöglichen es uns Abstandsmessungen durchzuführen, so wie man es bereits von Ultraschallsensoren kennt. Im Gegensatz zu einem gewöhnlichen Ultraschallsensor, ist der VL53L0X ein sehr kleiner Sensor und mit einem Anschaffungspreis von ca. 4-6€, auch nicht sehr teuer. Der Stromverbrauch ist ebenfalls sehr niedrig. Im Software Standby liegt der Verbrauch bei maximal 10 µA und bei aktiver Messung bei ca. 19mA, ideal für mein Vorhaben.

Aber was habe ich den eigentlich vor? Ich bin faul und möchte mir den unnötigen Gang zum Briefkasten ersparen 🙂 Der Sensor soll also in den Briefkasten und mich über neue Post informieren. Der Sensor miss also den Abstand zum Boden des Briefkastens, welcher durch neue Post beeinflusst werden sollte. Dafür lasse ich den Sensor alle fünf Minuten eine Messung durchführen, welche mittels LoRaWAN an TTN übermittelt wird. Ebenfalls denkbar ist eine Füllstandsanzeige für Behälter wie Mülltonnen.

 

Der Hardware-Aufbau des VL53L0X

Die Hardware basiert auf diesem Node von Charles und dessen Platinendesign. es wird ein Arduino Pro Mini in der 3.3V Variante verwendet und ein RFM95W als LoRaWAN Modem. Durch das Design ergibt sich ein sehr kompakter Node. Der VL53L0X wird per I²C angeschaltet, dadurch ist er sehr leicht anzuschließen. Das Power LED und der Spannungsregler des Pro Mini wurden entfernt um keinen unnötigen Strom zu verbrauchen.

arduino tof sensor VL53L0X

 

Die Arduino Software

Die Software basiert auf diesem Projekt von Lex und seinen Arduino Sketch. Ich habe diesen angepasst um den VL53L0X zu verwenden. Den Sketch findet ihr auf GitHub. In dem Sketch ist der HIGH_ACCURACY Modus aktiv, um genaue Messwerte zu erhalten. Damit beträgt die dauer pro Messung 200ms. Im normalen Modus sind es 20ms. Solltet ihr auf HIGH_ACCURACY verzichten können, habt ihr nochmals Einsparpotenzial was den Stromverbrauch angeht. Der Node sendet nun alle fünf Minuten seine Batteriespannung und die Entfernung in Millimeter. Den im Sketch enthaltenen Payload Decoder, müsst ihr in der TTN-Console noch eintragen.

tof payload

 

Verarbeitung der Daten mit Node-RED

Ich greife die Daten per MQTT und Node-RED ab und verarbeite sie weiter. Der erste Node-RED Flow sammelt die Daten per MQTT ein und speicher die vier Werte für Batterie, Distanz, RSSI und SNR in einer InfluxDB ab.

 

Ein zweiter Flow fragt regelmäßig die InfluxDB ab und prüft ober der letzte Messwert einen bestimmten Wert unterschreitet. Dieses ist der Wert ab dem ich eine Nachricht absetzen lasse. Die Nachricht wird danach mittels Pushover auf mein Handy weitergeleitet. Pushover ist kostenpflichtig und eine Lizenz kostet aktuell 5,49€. Damit mich Node-RED nicht mit Nachrichten überflutet, habe ich noch einen Delay Node als Rate Limit eingebaut um nur eine Mitteilung alle acht Stunden zu erhalten.


 

Data pushed

Sobald der Schwellwert erreicht ist, und der Flow dieses erkannt hat, sendet Node-RED eine Mitteilung per Pushover gesendet. Der Text ist dabei konfigurierbar.

pushover node-red

 

Das Hardware Design von Charles ist für kleine I²C Sensoren wie den BME280 oder VL53L0X geradezu ideal. Dadurch lassen sich kleine und leistungsstarke Nodes bauen, die aufgrund des LowPower Designs, auch lange durchhalten.

Schreibe einen Kommentar