DIY Günstiger Laser-Entfernungsmesser für Arduino – Schnell, Zuverlässig & Erschwinglich
Komponenten und Zubehör
Bauteil
Menge
Arduino Nano R3
1
Elecrow OLED 0,96" 128x64
1
X-40 Laser-Entfernungsmesser (Laser Tape Measure)
1
Kostet ca. 20 $ oder weniger
LM2596 DC-DC Step-Down Modul
1
Für 3,3V Versorgung des Lasermoduls
Benötigte Werkzeuge und Maschinen
Lötkolben (generisch)
ST-LINK Programmer
Apps und Online-Dienste
STMicroelectronics ST-LINK Utility
Über dieses Projekt
Brauchst du einen schnellen, günstigen Laser-Entfernungsmesser für dein Arduino-Projekt?
Spezialisierte Module (VL53L0X/VL53L1X) sind billig, haben aber großes Sichtfeld. Die Lösung: Ein billiger „X-40“ Laser-Entfernungsmesser (Baumarkt-Gerät) als Modul nutzen. Kosten: ~20 $, Reichweite bis 40 m, Genauigkeit ~3 mm.
Zwei Probleme: 1) Kein Zugriff auf Messwerte. 2) Messrate < 1 Hz.
Lösung: Reverse Engineering des X-40, eigene Firmware für den STM32-Mikrocontroller im Lasermodul. Ergebnis: ~60 Hz Messrate, max. stabile Distanz ~6 m (volle Reichweite 37 m, nicht getestet). Genauigkeit 1–10 mm je nach Zielobjekt und Distanz.
Modulabmessungen: 25 × 13 × 50 mm.
WICHTIG: Original-Firmware geht verloren – Gerät kann danach NICHT mehr als Laserbandmaß genutzt werden!
Hinweis: X-40 Geräte haben verschiedene Modul-Revisionen. Meine Firmware unterstützt nur bestimmte Versionen!
„X-40“ ist nicht der einzige Name – es gibt diverse chinesische Laserbandmaße mit passenden Modulen.
Schritt 1: Laserbandmaß zerlegen
7 Schrauben am Gehäuse lösen:
Zerlegtes Gerät – kleines Lasermodul im Inneren sichtbar:
Flachbandkabel vom Modul lösen, Modul entnehmen:
Modul ist mit „701A“ markiert. Meine Firmware unterstützt „512A“ und „701A“. Nutzer berichten, dass „703A“ auch funktioniert (nicht selbst getestet).
Update 11/2019: Neuere X-40 haben „M88B“-Module (Markierung „88B“ bei MCU, STM32F0, QFN-32). Diese werden NICHT unterstützt!
Update 10/2021:Support für U85B-Module hinzugefügt (moderne Laserbandmaß-Typen). Siehe GitHub-Link.
Falls Modul unterstützt: Stromversorgungsleitungen am Modul verlöten.
Ohne NRST: Strom an, NRST kurz auf GND ziehen, „Target → Connect“ klicken, NRST sofort von GND trennen. Utility muss Verbindung anzeigen.
Read Out Protection deaktivieren (Original-Firmware geht verloren!):
Target → Option Bytes → „Read Out Protection“ auf „Disabled“, „Unselect all“, „Apply“. Modul neustarten (Strom kurz trennen). Erneut „Target → Connect“ – Speicher muss mit 0xFF gefüllt sein. Jetzt Custom Firmware flashen.
Firmware herunterladen: GitHub Firmware-Ordner. Passende HEX-Datei für dein Modul wählen und per ST-LINK Utility in Flash laden.
Schritt 3: Lasermodul an Arduino anschließen
Draht/Stecker an TX-Pad des Moduls löten:
Test ohne OLED: TX des Lasermoduls → TX des Arduino (nicht RX!), Modul an 3,3V versorgen. Leeren Sketch auf Arduino laden. Serial Monitor: 250000 Baud. Bessere Alternative: USB-UART-Adapter mit 256000 Baud (echte Baudrate des X-40 MCU).
Erwartete Ausgabe: Rohdaten vom Modul.
Vollständiger Aufbau mit OLED: TX Lasermodul → RX Arduino (beim Flashen des Arduino trennen!). Schaltbild beachten.
OLED zeigt 3 Werte:
COUNT – Zähler der empfangenen Werte
AMPL – Signalamplitude. Balken („<--- >“) zeigt Amplitude logarithmisch.
Größter Wert – Distanz in Metern und Millimetern.
Schritt 4: Nullpunkt-Kalibrierung
Nach erstem Start Kalibrierung nötig. Weißes Objekt auf bekannte Distanz platzieren → diese Distanz wird Nullpunkt. Tastatur des Laserbandmaßes anschließen, unterste Taste drücken. Modul piept 2x (Start & Ende, ~10 Sek.).