Inhaltsverzeichnis:

Entfernungsmesser mit Laser und Kamera herstellen - Gunook
Entfernungsmesser mit Laser und Kamera herstellen - Gunook

Video: Entfernungsmesser mit Laser und Kamera herstellen - Gunook

Video: Entfernungsmesser mit Laser und Kamera herstellen - Gunook
Video: Aufmaß in Sekunden! | Die neuen Bosch Laserentfernungsmesser GLM 50-27 C - GLM 50-27 CG & MeasureOn 2024, November
Anonim
Entfernungsmesser mit Laser und Kamera herstellen
Entfernungsmesser mit Laser und Kamera herstellen

Ich plane derzeit einige Innenarbeiten für das nächste Frühjahr, aber da ich gerade ein altes Haus erworben habe, habe ich keinen Hausplan. Ich habe angefangen, Wand-zu-Wand-Abstände mit einem Lineal zu messen, aber es ist langsam und fehleranfällig. Ich dachte darüber nach, einen Entfernungsmesser zu kaufen, um den Prozess zu vereinfachen, aber dann fand ich einen alten Artikel über den Bau eines eigenen Entfernungsmessers mit einem Laser und einer Kamera. Wie sich herausstellt, habe ich diese Komponenten in meiner Werkstatt.

Das Projekt basiert auf diesem Artikel:

Der einzige Unterschied besteht darin, dass ich den Entfernungsmesser mit einem Raspberry Pi Zero W, einem LCD und dem Raspberry Pi-Kameramodul bauen werde. Ich werde auch OpenCV verwenden, um den Laser zu verfolgen.

Ich gehe davon aus, dass Sie technisch versiert sind und mit Python und der Befehlszeile vertraut sind. In diesem Projekt verwende ich den Pi im Headless-Modus.

Lasst uns beginnen!

Schritt 1: Materialliste

Für dieses Projekt benötigen Sie:

  • ein billiger 6mm 5mW Laser
  • ein 220 Ω Widerstand
  • ein 2N2222A Transistor oder etwas gleichwertiges
  • ein Raspberry Pi Zero W
  • eine Raspberry Pi Kamera v2
  • ein Nokia 5110 LCD-Display oder gleichwertig
  • einige Überbrückungsdrähte und ein kleines Steckbrett

Ich benutzte meinen 3D-Drucker, um eine Vorrichtung zu drucken, die mir während der Experimente geholfen hat. Ich plane auch, den 3D-Drucker zu verwenden, um ein komplettes Gehäuse für den Entfernungsmesser zu bauen. Sie können völlig darauf verzichten.

Schritt 2: Aufbau einer Laser- und Kameravorrichtung

Aufbau einer Laser- und Kameravorrichtung
Aufbau einer Laser- und Kameravorrichtung
Aufbau einer Laser- und Kameravorrichtung
Aufbau einer Laser- und Kameravorrichtung
Aufbau einer Laser- und Kameravorrichtung
Aufbau einer Laser- und Kameravorrichtung

Das System geht von einem festen Abstand zwischen Kameraobjektiv und Laserausgang aus. Um die Tests zu erleichtern, habe ich eine Vorrichtung gedruckt, in der ich die Kamera, den Laser und eine kleine Treiberschaltung für den Laser montieren kann.

Ich habe die Abmessungen des Kameramoduls verwendet, um die Halterung für die Kamera zu bauen. Ich habe hauptsächlich einen digitalen Messschieber und ein Präzisionslineal verwendet, um die Messungen vorzunehmen. Für den Laser habe ich ein 6-mm-Loch mit etwas Verstärkung erstellt, um sicherzustellen, dass sich der Laser nicht bewegt. Ich habe versucht, genug Platz zu halten, um ein kleines Steckbrett an der Rückseite der Vorrichtung zu befestigen.

Für den Bau habe ich Tinkercad verwendet, das Modell findet ihr hier:

Zwischen der Mitte des Laserobjektivs und der Mitte des Kameraobjektivs besteht ein Abstand von 3,75 cm.

Schritt 3: Ansteuern des Lasers und des LCD

Ansteuerung des Lasers und des LCD
Ansteuerung des Lasers und des LCD
Ansteuerung des Lasers und des LCD
Ansteuerung des Lasers und des LCD

Ich bin diesem Tutorial https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi gefolgt, um das LCD-Display mit dem Raspberry Pi Zero anzusteuern. Anstatt die Datei /boot/config.txt zu bearbeiten, können Sie die SPI-Schnittstelle mit sudo raspi-config über die Befehlszeile aktivieren.

Ich verwende den Raspberry Pi Zero im Headless-Modus mit dem neuesten Raspbian Stretch. Ich werde die Installation in diesem Instructable nicht behandeln, aber Sie können dieser Anleitung folgen: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- Befehlszeile-oder-Verwendung-des-Netzwerks-97f065af722e

Um einen hellen Laserpunkt zu haben, verwende ich die 5V-Schiene des Pi. Dazu verwende ich einen Transistor (2N2222a oder gleichwertig), um den Laser mit dem GPIO anzusteuern. Ein 220 Ω Widerstand an der Basis des Transistors lässt genügend Strom durch den Laser. Ich verwende RPi. GPIO, um den Pi GPIO zu manipulieren. Ich habe die Basis des Transistors mit dem GPIO22-Pin (der 15. Pin), den Emitter mit Masse und den Kollektor mit der Laserdiode verbunden.

Vergessen Sie nicht, die Kameraschnittstelle mit sudo raspi-config über die Befehlszeile zu aktivieren.

Mit diesem Code können Sie Ihr Setup testen:

Wenn alles gut gelaufen ist, sollten Sie eine dot.jpg-Datei haben, in der Sie den Hintergrund und einen Laserpunkt sehen.

Im Code richten wir die Kamera und den GPIO ein, dann aktivieren wir den Laser, erfassen das Bild und deaktivieren den Laser. Da ich den Pi im Headless-Modus betreibe, muss ich die Bilder von meinem Pi auf meinen Computer kopieren, bevor ich sie anzeigen kann.

An dieser Stelle sollte Ihre Hardware konfiguriert sein.

Schritt 4: Erkennen des Lasers mit OpenCV

Zuerst müssen wir OpenCV auf dem Pi installieren. Sie haben grundsätzlich drei Möglichkeiten, dies zu tun. Sie können entweder die alte verpackte Version mit apt installieren. Sie können die gewünschte Version kompilieren, aber in diesem Fall kann die Installationszeit bis zu 15 Stunden betragen und das meiste davon für die eigentliche Kompilierung. Oder, mein bevorzugter Ansatz, Sie können eine vorkompilierte Version für den Pi Zero verwenden, die von einem Drittanbieter bereitgestellt wird.

Da es einfacher und schneller ist, habe ich ein Drittanbieterpaket verwendet. Die Installationsschritte finden Sie in diesem Artikel: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Ich habe viele andere Quellen ausprobiert, aber deren Pakete waren nicht auf dem neuesten Stand.

Um einen Laserpointer zu verfolgen, habe ich den Code von https://github.com/bradmontgomery/python-laser-tracker aktualisiert, um das Pi-Kameramodul anstelle eines USB-Geräts zu verwenden. Sie können den Code direkt verwenden, wenn Sie kein Pi-Kameramodul haben und eine USB-Kamera verwenden möchten.

Den kompletten Code findet ihr hier:

Um diesen Code auszuführen, müssen Sie die Python-Pakete installieren: Pillow und Picamera (sudo pip3 install Pillow Picamera).

Schritt 5: Kalibrierung des Entfernungsmessers

Kalibrierung des Entfernungsmessers
Kalibrierung des Entfernungsmessers
Kalibrierung des Entfernungsmessers
Kalibrierung des Entfernungsmessers
Kalibrierung des Entfernungsmessers
Kalibrierung des Entfernungsmessers

Im Originalartikel entwarf der Autor ein Kalibrierungsverfahren, um die erforderlichen Parameter zu erhalten, um die y-Koordinaten in eine tatsächliche Entfernung umzuwandeln. Ich benutzte meinen Wohnzimmertisch für die Kalibrierungen und ein altes Stück Kraftpapier. Alle 10 cm habe ich die x- und y-Koordinaten in eine Tabelle eingetragen: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Um sicherzustellen, dass alles richtig funktioniert, habe ich bei jedem Schritt die aufgenommenen Bilder überprüft, um zu sehen, ob der Laser wurde korrekt verfolgt. Wenn Sie einen grünen Laser verwenden oder Ihr Laser nicht richtig verfolgt wird, müssen Sie den Farbton, die Sättigung und die Wertschwelle des Programms entsprechend anpassen.

Sobald die Messphase abgeschlossen ist, ist es an der Zeit, die Parameter tatsächlich zu berechnen. Wie der Autor habe ich eine lineare Regression verwendet; tatsächlich hat Google Spreadsheet die Arbeit für mich erledigt. Ich habe dann diese Parameter wiederverwendet, um eine geschätzte Entfernung zu berechnen und sie mit der tatsächlichen Entfernung zu vergleichen.

Es ist jetzt an der Zeit, die Parameter in das Entfernungsmesserprogramm einzugeben, um Entfernungen zu messen.

Schritt 6: Abstände messen

Abstände messen
Abstände messen

Im Code: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c habe ich die Variablen HEIGHT, GAIN und OFFSET entsprechend den Kalibrierungsmessungen aktualisiert. Ich habe die Entfernungsformel im Originalartikel verwendet, um die Entfernung zu schätzen, und die Entfernung über das LCD-Display gedruckt.

Der Code richtet zuerst die Kamera und den GPIO ein, dann möchten wir die LCD-Hintergrundbeleuchtung aufleuchten, um die Messungen besser zu sehen. Der LCD-Eingang ist mit dem GPIO14 verbunden. Alle 5 Sekunden werden wir:

  1. Aktivieren Sie die Laserdiode
  2. das Bild im Gedächtnis festhalten
  3. Deaktivieren Sie die Laserdiode
  4. Verfolgen Sie den Laser mit den HSV-Bereichsfiltern
  5. Schreiben Sie das resultierende Image zu Debugging-Zwecken auf die Festplatte
  6. Berechnen Sie die Entfernung basierend auf der y-Koordinate
  7. Schreiben Sie die Entfernung auf das LCD-Display.

Obwohl die Messungen für meinen Anwendungsfall hochpräzise und genau genug sind, gibt es viel Raum für Verbesserungen. Zum Beispiel ist der Laserpunkt von sehr schlechter Qualität und die Laserlinie ist nicht wirklich zentriert. Mit einem Laser von besserer Qualität werden die Kalibrierungsschritte präziser. Auch die Kamera ist nicht wirklich gut in meiner Vorrichtung positioniert, sie kippt nach unten.

Ich kann die Auflösung des Entfernungsmessers auch erhöhen, indem ich die Kamera um 90º drehe, indem ich den vollen Wert ausnutze und die Auflösung auf das von der Kamera unterstützte Maximum erhöhen. Bei der aktuellen Implementierung sind wir auf einen Bereich von 0 bis 384 Pixeln beschränkt, wir könnten die Obergrenze auf 1640 erhöhen, das 4-fache der aktuellen Auflösung. Der Abstand wird noch genauer.

Als Follow-up muss ich an den oben erwähnten Präzisionsverbesserungen arbeiten und ein Gehäuse für den Entfernungsmesser bauen. Das Gehäuse muss eine genaue Tiefe haben, um Wand-zu-Wand-Messungen zu erleichtern.

Alles in allem reicht mir das aktuelle System und spart mir bei der Hausplanung einiges Geld!

Empfohlen: