Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Einen günstigen Laser-Entfernungsmesser für Arduino herstellen

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Elecrow OLED 0,96'' 128x64
× 1
X-40 Laserbandmaß
× 1
LM2596 DC-DC-Modul
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)
ST-LINK-Programmierer

Apps und Onlinedienste

STMicroelectronics ST-LINK-Dienstprogramm

Über dieses Projekt

Benötigen Sie ein schnelles und günstiges Laser-Entfernungsmesser-Modul für Ihr Arduino-Projekt?

Natürlich können Sie für diese Aufgabe spezialisierte Module verwenden, aber die meisten haben einen hohen Preis. VL53L0X/VL53L1X-Module sind billig, haben aber ein sehr großes Sichtfeld.

Also fand ich eine Lösung:Verwenden Sie das billige Laserbandmaß "X-40" als Laser-Entfernungsmesser. Diese Geräte kosten 20 US-Dollar und weniger und können Entfernungen bis zu 40 m mit einer Genauigkeit von ~ 3 mm messen. Aber es gibt zwei Probleme - es gibt keine Möglichkeit, Messwerte vom Band abzulesen und die Messungen sind langsam - weniger als 1 Hz.

Um diese Probleme zu lösen, habe ich dieses Laserbandmaß nachgebaut und meine eigene Firmware für die STM32-MCU des Laser-Entfernungsmessermoduls geschrieben. Die Messgeschwindigkeit war für mich wichtig und ich kann ~60 Hz erreichen, aber die maximale stabile Entfernung verringerte sich auf ~6 m (die volle maximale Reichweite beträgt 37 m, aber ich habe sie nicht getestet).

Die Genauigkeit der Entfernungsmessung kann je nach Zielfarbe und Entfernung von 1 mm bis 10 mm variieren.

Modulabmessungen:25x13x50 mm.

WICHTIGER HINWEIS:SIE VERLIEREN DIE ORIGINAL-FIRMWARE, DAS GERÄT KANN SPÄTER NICHT ALS LASERBAND-MESSUNG VERWENDET WERDEN!

Beachten Sie, dass "X-40" Laserbandmaße verschiedene Versionen des Laser-Entfernungsmessermoduls haben können und meine Firmware nur einige davon unterstützt!

"X-40" ist nicht die einzige Bezeichnung für ein Laserbandmaß mit solchen Modulen - ich weiß, dass es mehrere verschiedene chinesische Laserbandmaße mit passenden Modulen gibt.

Schritt 1:Zerlegen des Laserbandmaßes

Lassen Sie uns das Laserbandmaß zerlegen, um ein Laser-Entfernungsmessermodul daraus zu erhalten.

Sie müssen 7 Schrauben vom Gehäuse lösen:

Zerlegtes Laserbandmaß:

Im Gehäuse des Geräts ist ein kleines Laser-Entfernungsmessermodul zu sehen. Sie müssen die Flachbandkabel vom Modul trennen und das Modul aus dem Gehäuse entfernen:

Beachten Sie, dass das Modul als "701A" gekennzeichnet ist. Meine Firmware unterstützt nur die Modulversionen "512A" und "701A". Mehrere Benutzer haben bestätigt, dass auch "703A"-Module funktionieren (ich habe es nicht getestet).

UPD 11/2019:
Achtung:Es wurde festgestellt, dass neuere "x-40" Laserbandmaße mit "M88B" Modulen geliefert werden. Die Markierung ist "88B" auf der Platine in der Nähe der MCU. Diese Module basieren auf der STM32F0-MCU (sie hat das QFN-32-Paket). Diese Module werden von meiner Firmware nicht unterstützt!

UPD 10/2021:
Achtung: Unterstützung für U85B-Module hinzugefügt :siehe Link! Sie werden in modernen Laserbandmaßen verwendet.


Wenn Ihr Modul unterstützt wird, müssen Sie die Stromleitungen vom Modul ablöten.

Schritt 2:Laser-Entfernungsmesser-Modul programmieren

Sie müssen eine spezielle Firmware auf die MCU des Moduls schreiben, um die erforderliche Funktionalität zu erhalten.

1. Zuerst müssen Sie einige Drähte zum Programmieren der MCU anlöten. Pinbelegung wird im Bild angezeigt:

Verbinden Sie die Pins 7-8 des Tastaturanschlusses - er wird zum Einschalten benötigt.

Die Leitungen „GND“ und „Vbat“ müssen an die Stromquelle angeschlossen werden. Der Leistungsspannungsbereich beträgt +2,7...+3,3V. An der "Vdd"-Leitung müssen +3,5 V anliegen, wenn das Modul mit Spannung versorgt wird.

Die Leitungen „GND“, „SWDIO“, „SWCLK“, „NRST“ müssen mit dem ST-LINK Programmer verbunden werden. Die Zeile "NRST" ist sehr wichtig - die Original-Firmware der MCU ist gesperrt, daher wird diese Zeile benötigt, um die MCU in den Programmiermodus zu versetzen.

Einige Programmierer haben diese Zeile und andere (billige) nicht, aber es gibt eine Problemumgehung für dieses Problem.

Außerdem müssen einige Programmierer (wie das Original "ST-LINK/V2") die "Vbat"-Leitung mit der "VCC/TVCC"-Leitung des Programmierers verbinden.

Beispiel für Verbindungen (dieser Programmierer hat keine "NRST"-Zeile):

2. Installieren Sie das "ST-LINK-Dienstprogramm" auf dem PC. Wenn Sie keine Erfahrung mit dieser Software haben, gibt es viele Tutorials im Web.

Sie müssen das Dienstprogramm konfigurieren (Ziel -> Einstellungen):

Wenn Ihr Programmierer einen "NRST"-Ausgang hat, können Sie ihn einfach einschalten und im Dienstprogramm "Target -> Connect" drücken.

Wenn es keine solche Zeile gibt, müssen Sie die folgenden Schritte ausführen:

  • Schalte den Strom ein.
  • Leitung "NRST" des Moduls mit GND verbinden.
  • Drücken Sie im Dienstprogramm auf "Ziel -> Verbinden".
  • Trennen Sie die "NRST"-Leitung schnell von GND.
  • Das Dienstprogramm muss die Verbindung anzeigen

Yon muss ein solches Bild bekommen:

3. Der MCU-Flash ist zum Lesen gesperrt, daher müssen Sie den "Ausleseschutz" deaktivieren. Bei diesem Schritt verlieren Sie die Original-Firmware!

Öffnen Sie das Menü Ziel -> "Optionsbytes". Es muss solche Einstellungen geben:

Schalten Sie "Ausleseschutz" auf "Deaktiviert" und drücken Sie die Schaltfläche "Alle abwählen" und dann die Schaltfläche "Übernehmen". Versuchen Sie, das Modul neu zu starten (indem Sie die Stromversorgung trennen).

Drücken Sie Ziel -> Verbinden. Im Log-Fenster müssen Informationen über die erfolgreiche Verbindung stehen und Sie müssen den Speicherinhalt sehen - gefüllt mit 0xFF. Jetzt können Sie benutzerdefinierte Firmware auf die MCU laden.

4. Die benötigte Firmware wird hier platziert:https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

Wählen Sie eine geeignete HEX-Datei für Ihr Modul aus und laden Sie sie mit dem "ST-LINK-Dienstprogramm" auf den MCU-Flash herunter.

Schritt 3:Verbinden des Laser-Entfernungsmesser-Moduls mit dem Arduino

Sie müssen einen Draht oder einen Stecker an das TX-Pad an der Platine anlöten:

Siehe das Anschlussschema unten.

Zuerst müssen Sie überprüfen, ob das Entfernungsmessermodul gut funktioniert. In diesem Schritt müssen Sie das OLED-Display nicht mit dem Arduino verbinden - verbinden Sie einfach die TX-Leitung des Laser-Entfernungsmesser-Moduls mit der TX-Leitung des Arduino und die Stromleitungen des Moduls mit der +3V-Stromquelle.

Erstellen Sie eine leere Skizze und laden Sie sie in den Arduino. Öffnen Sie "Serial Monitor" in der Arduino IDE. Baudrate wählen:250000

Wenn das Entfernungsmessermodul einwandfrei funktioniert, erhalten Sie dieselben Daten:

Tatsächlich ist es besser, für diesen Test einen speziellen USB-UART-Konverter zu verwenden. Wählen Sie 256000 Baudrate in seinem Dienstprogramm (es ist die reale Baudrate von x-40 MCU).

Zweitens müssen Sie den vollständigen Schaltplan mit Anzeige zusammenbauen.

Verbinden Sie die TX-Leitung des Laser-Entfernungsmesser-Moduls mit der RX-Leitung des Arduino (Sie müssen dieses Kabel während des Ladens des Programms zum Arduino trennen).

Wenn alles gut funktioniert, erhalten Sie das gleiche Ergebnis:

Sie können das Display mit 3 Zahlen sehen:

  • "COUNT" - Zähler der empfangenen Werte
  • "AMPL" - Amplitude des Signals. Der symbolische Balken ("<--->") unten zeigt die Amplitude grafisch (in logarithmischer Skala).
  • Der größte Wert - Entfernung in Metern und Millimetern.

Schritt 4:Nullpunktkalibrierung

Nach einem ersten Start muss das Laser-Entfernungsmesser-Modul kalibriert werden.

Sie müssen ein weißes Objekt in einem bestimmten Abstand vom Modul platzieren. Eine Entfernung zu diesem Objekt wird für das Entfernungsmessermodul zu einer Nullentfernung. Um den Kalibrierungsprozess zu starten, müssen Sie die Tastatur des Laserbandmaßes anschließen und die unterste Taste drücken. Das Modul piept zweimal - zu Beginn der Kalibrierung und am Ende (die Kalibrierungsdauer beträgt ungefähr 10 Sekunden).

Jetzt können Sie dieses Laser-Entfernungsmesser-Modul verwenden.

Links:

1. Github - Reverse-Engineering-Ergebnisse und Quellcode.

2. Habr.com - Von Google übersetzter Artikel über den Reverse-Engineering-Prozess für Laserbandmaße.

Entschuldigung für mein Englisch - ich komme aus einem nicht englischsprachigen Land.

Code

  • Arduino-Skizze
Arduino-SkizzeArduino
Keine Vorschau (nur Download).
Github
Code für das Laserbandhttps://github.com/iliasam/Laser_tape_reverse_engineering

Schaltpläne

Schaltplan der Steckplatinenmontage

Herstellungsprozess

  1. Messen der Luftqualität auf OpenSensors
  2. Wofür wird ein Laserschneider verwendet?
  3. SMART-Temperaturüberwachung für Schulen
  4. 8-Bit-IO-Port-Bibliothek für Arduino
  5. 64-Tasten-Prototyping-Tastaturmatrix für Arduino
  6. TFT-Shield für Arduino Nano - Start
  7. Ein isolierter Analogeingang für Arduino
  8. Arduino Breath Controller zum günstigen Preis (USB-MIDI)
  9. Roboter für supercoole Indoor-Navigation
  10. Plädoyer für 5G in der Fertigung