Raspberry Pi Laser Lichtschranke für weite Distanzen

Lichtschranken sind eine gute Möglichkeit Unterbrechungen festzustellen oder z.B. einen Zähler zu bauen. Mit einer Raspberry Pi Laser Lichtschranke ist dies auch für weite Entfernungen möglich. Im Gegensatz zu einem anderen Ansatz, nutzen wir keine Infrarot Dioden, sondern einen Punkt-Laser, welcher auf einen Lichtsensor gerichtet ist. Das gebündelte Licht des (roten) Lasers ist stärker als das normale Umgebungslicht und somit können wir selbst über große Distanz eine Lichtschranke bauen. Mittels zweier solcher Laser Lichtschranken mit bekanntem Abstand können wir auch sehr einfach die Geschwindigkeit ermitteln.

Im Tutorial wird u.a. auf die Verbindung und die Programmierung der Diode eingegangen, sodass die eigens entworfene Lichtschranke auch funktioniert. Außerdem ist im Video alles noch einmal veranschaulicht.

 

Zubehör

Raspberry Pi Helligkeitssensor PCB Fototransistor

Auf eine Leiterplatte aufgelöteter Fotowiderstand hat ein Potentiometer dabei, sodass Schwellwerte einstellbar sind.

Wie in einem vorherigen Tutorial bereits gezeigt, kann eine Fotodiode einen analogen Wert ausgeben, den wir mit einem Analog-Digital Wandler auslesen könnten. Wir brauchen allerdings lediglich einen binären Zustand (Lichtschranke offen/geschlossen), weshalb sich die verbauten Module besser eignen. Bei diesen ist ein Potentiometer direkt dabei, dessen Sensibilität wir einstellen können. Ist der Einsatzort eher hell, so stellen wir den Widerstand höher. Über den digitalen Ausgabe Pin können wir den Zustand einfach abfragen.

Für unsere Raspberry Pi Laser Lichtschranke benötigen wir natürlich auch noch einen Laser. Dabei gibt es verschiedene Aufsätze, z.B. „Strich-Laser“ aber auch ganz normale Dot-Laser. Den letzteren brauchen wir:

Zusammen kosten die Bauteile nur wenige Euro aber sind alles, um die Laser Lichtschranke an unserem Raspberry Pi zu realisieren.

 

Verkabelung der Raspberry Pi Laser Lichtschranke

Von den beiden Komponenten  muss nur der Fotowiderstand an den Pi angeschlossen werden – der Laserpointer kann auch von einer anderen Stromquelle versorgt werden, da dieser keinen Datenpin hat. Dementsprechend muss nur das rote Kabel an eine positive ~3.3V Spannung angeschlossen werden und das schwarze Kabel an Masse / Minus. Du kannst aber natürlich auch diese Spannung vom Pi abzwacken.

Anders sieht es beim Fotowiderstand aus: Dabei wird ebenfalls an VCC eine 3.3V Spannung (vom Pi) angeschlossen und GND kommt ebenso an GND. Wir nutzen allerdings den digitalen Pin (D0) und schließen diesen an einen freien GPIO an, bspw. GPIO 23 (Pin 16) bzw. einem anderen freien GPIO des Raspberry Pi’s. In der schematischen Zeichnung unten sind nur 3 Pins zu sehen, aber oftmals normalerweise haben die Sensoren 4, wovon der analoge Pin (A0) frei bleibt. Stelle sicher, dass dein Modul eine digitale Ausgabe hat, sofern es nur 3 Pins hat.

Raspberry Pi Laser Lichtschranke Steckplatine

 

Positionierung des Lasers

Sind beide Komponenten soweit angeschlossen, müssen wir diese positionieren. Wichtig ist dabei, dass der Laser exakt auf die Mitte des Fotowiderstands zeigt und beide Komponenten gut befestigt werden. Ich empfehle dafür Heißkleber oder Panzertape (bzw. in Kombination), sofern keine „professionelle“ Befestigung möglich ist. Es bietet sich an, zuerst den Laser zu montieren und anschließend den Fotowiderstand auf den Laserpunkt angepasst anzubringen. Achte aber darauf, dass der Laser heiß werden kann und dies ggf. den Kleber weich machen lässt.

Anschließend müssen wir noch den Potentiometer des Moduls einstellen. Nimm dazu einen kleinen Schlitzschraubenzieher. Falls der Laser noch aktiv ist, unterbrich den Strahl (Hand davor halten) und drehe den Regler, bis die LED aufhört zu leuchten. Aber Achtung: es gibt zwei LEDs, wovon eine den generellen Status anzeigt (an/aus) und die andere den Status des Lichtsensors. Das Ziel ist es, dass der Sensor nicht durch das Umgebungslicht aktiviert wird, sondern nur dann, wenn das Laserlicht darauf scheint. Der Status der LED sollte sich also ändern, wenn du den Strahl wieder darauf scheinen lässt.

Falls es zu hell ist, kannst du den Außenbereich etwas abdunkeln: Stecke den Sensor in z.B. eine Klopapierrolle, welche einen Schatten auf den Sensor wirft. Beachte auch, dass es evtl. heller werden kann, als es zum Testzeitpunkt ist und drehe den Vorwiderstand lieber ein wenig höher, solange das Modul durch das Umgebungslicht + Laserlicht weiter aktiviert wird.

Der große Vorteil von Lasern im Vergleich zu Infrarot o.ä. ist die hohe Reichweite. Je nach Stärke sind sogar 30-50m möglich. Dabei sollte allerdings der Laser separat mit 5V Spannung versorgt werden.

Hier schon einmal der Aufbau als Video. Darin habe ich den Sensor am Ende mit etwas Kreppband abgedunkelt:

 

 

Code zum Erfassen

Wir erzeugen zunächst eine neue Datei:

sudo nano laser_lichtschranke.py

Hier fügen wir folgenden Code ein (danach speichern mit STRG+O und beenden mit STRG

Das Skript funktioniert recht einfach: Beim ausgewählten GPIO (23) wird jedes mal, wenn sich der Status ändert, eine Funktion aufgerufen. In dieser Funktion prüfen wir dann, ob der binäre Status wahr ist (hohe Spannung). Falls ja, war eben noch die Laser Lichtschranke geschlossen und wurde nun unterbrochen. Der untere Teil mit der Endlosschleife dient nur dazu, dass das Programm nicht sofort aufhört. Details zu den genutzten Funktionen kannst du hier finden.

Das Skript können wir nun testen:

sudo python laser_lichtschranke.py

 

Mit diesem Code können wir verschiedene Anwendungen realisieren, wie z.B. einen Zähler für Menschen / Objekte, die die Lichtschranke passieren oder eine Zeit-/Geschwindigkeitsmessung, wenn man mehrere dieser einfachen GPIO Lichtschranken hintereinander platziert hat.

15 Kommentare

  1. Hallo,das ist ein super Sache! jetzt kann ich eine Überwachung bauen und mir melden lassen sobald jemand zwischen den Haus zu unseren Nachbarn hergeht, wo eigentlich kein Weg ist und eventuell damit eine Kamera auslösen oder eine Lampe anmachen.Dort sind schon häufiger Leute zum klauen der Kupferfallrohre hergegangen. Vielleicht kann man ja auch ein Spiegel auf der Gegenseite anbringen und so beide Bauteile die Strom brauchen im Bereich der Stromquelle belassen?!
    Gruss Udo

    Antworten
  2. Hi Felix,
    danke erstmal wieder für das Tutorial. Könnte man mit dieser Schaltung auch die Laufzeit eines vom Laser ausgesendeten Signals auswerten um z.B. die Entfernung zu messen, oder ist der RP zu langsam für solche Aufgaben?

    Entspannte Pfingsten,
    Thomas

    Antworten
  3. Hi Felix,
    könntest du auch zeigen wie man eine Lichtschranke baut um eine „Stoppuhr“ daraus zu bauen?
    MfG,
    Tim

    Antworten
    • Man bräcuhte zwei Lichtschranken, speichert die Zeit wann die erste durchlaufen wird, ebenso wann die zweite und mit Hilfe der Differenz und dem bekannten Abstand der beiden kann man die Geschwindigkeit berechnen (äquivalent zu diesem Tutorial). Ich dachte es wäre recht einfach, aber vielleicht kann ich in der Zukunft nochmal ein separates Tutorial dazu schreiben.
      LG, Felix

      Antworten
  4. Hi Felix,
    ich hätte eine kurze Frage: Weißt du ob der Laser auch mit 4,5 Volt funktioniert? Wollte nämlich drei AA Batterien (je 1,5 V) in Reihe schalten zur Stromversorgung. Auf deinem Schaltplan steckst du den Laser auf +3,3 V an im Video aber auf 5 V daher auch meine Frage.
    LG Tom

    Antworten
    • Ich habe zwar keine Ahnung, aber die meisten AA-Akkus arbeiten doch mit 1,2V (im Gegensatz zu den Batterien, die mit 1,5V arbeiten) … wenn du also 4 AA-Akkus in Reihe schaltest, solltest du noch näher an die gewünschten 5V kommen und die Stromversorgung sollte dann sogar länger halten

      Antworten
  5. Hallo Felix,

    in meinem Projekt soll die Zeit und Geschwindigkeit mit 3 oder mehreren hintereinander geschalteten Laser-Lichtschranken gemessen werden (Ähnlich wie bei der Infrarotlichtschranke). Wie müsste ich den Quellcode oben für die Laserlichtschranke anpassen/verändern damit dies möglich ist. Kann ich auch die Zwischenzeit an jeder einzelnen Laserlichtschranke abfragen? Danke für die Mithilfe.

    Antworten
  6. Hallo,
    ich müsste den oben stehenden Code so umformen, dass bei einer Unterbrechung des Laser eine Stoppuhr anfängt zu laufen und bei einer erneuten Unterbrechung wieder die die Stoppuhr aufhört zu laufen. Allerdings weiß ich nicht wie ich das anfangen soll. Denn mir fehlt einfach der benötigte Script, für die Stoppuhr.
    Hoffe mir kann hier jemand helfen.

    Antworten
    • Wenn Du Dir das oben erwaehnte Script fuer die Geschwindigkeitsmessung ansiehst, sollte sich Dir die Loesung erschliessen:
      https://tutorials-raspberrypi.de/infrarot-lichtschranke-bauen-und-geschwindigkeit-messen/
      Es gibt nur einen Unterschiede: In dem Beispiel hast Du zwei Lichtschranken (und damit zwei genutzte GPIO Ports) und hier nur eine. Daraus ergeben sich fuer Deine Aufgabenstellung vier Zustaende, die innerhalb eines Messzyklus durchlaufen werden. Im Beispiel werden sie mittels While-Schleifen realisiert (Interrupts waeren eine gute Alternative, aber das wuerde zu weit fuehren 😉
      – nichts im Weg => warten bis etwas im Weg ist (Pegel aendert sich)
      – nun ist etwas im Weg; Startzeitpunkt festhalten, => warten, bis es nicht mehr im Weg ist
      – nun ist der Weg frei => warten, bis wieder etwas im Weg ist
      – nun ist wieder etwas im Weg: Endzeitpunkt festhalten. Und schon hast Du die Zeit zwischen Start und Ende gemessen und kannst sie ausgeben
      und schon kann es wieder von vorne losgehen

      Alles klar?!

      Antworten
      • Ist die Umsetzung auch mit Lasern möglich? Oder nur mit den Infrarot Sendern…

      • Also mit einem Laser und einem Fotowiderstand-Modul anstatt den Infrarot-Sensoren?

      • ja, das geht. Wobei dann die Mechanik ein Problem werden kann, da sichergestell werden muss, dass der kleine Strahl des Laser auch den Empfaenger trifft…
        Es gibt uebrigens auch kleine fertige Reflexlichtschranken, die sowohl Sender, als auch Empfaenger mitbringen. Ich nutze z. B. einen CNY70, um zu erkennen, wann der rote Strich bei meinem Elektrozaehler vorbei kommt. Damit bekomme ich die Zeit pro Drehung und kann so den Energieverbrauch berechnen 🙂

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!