Raspberry Pi Infrarot Lichtschranke bauen und Geschwindigkeit messen

26. Juli 2017
189 Comments

In diesem Tutorial möchte ich den Aufbau und die Benutzung einer kleinen Infrarot Lichtschranke zeigen, welche ein Signal gibt, sobald die Lichtschranke unterbrochen wird. Dadurch, dass beide Lichtschranken hintereinander durchfahren werden, kann die Geschwindigkeit gemessen werden.

 

Zubehör

 

Aufbau

Sobald die Lichtschranke unterbrochen wird, soll ein positives Signal gesendet werden, ansonsten ein negatives (0). Dazu verwende ich einen Pull-Up Widerstand, wobei anstelle des Schalters der IR Empfänger (schwarz) ist.

EGHS-PullUpDownSwitchProtected
Die beiden Lichtschranken sind bei mir 10cm von einander entfernt. Damit die Geschwindigkeit richtig berechnet wird, musst du ggf. den Abstand in deinem Skript anpassen. Der eigentliche Aufbau ist wie folgt:

lichtschranke_Steckplatine
Die kleine rote LED ist nur zum testen und kann weggelassen werden.

Sobald du die Schaltung aufgebaut hast, sollte die LED bereits aufleuchten, sobald die Lichtschranke geschlossen wird (z.B. Finger dazwischen).

 

Geschwindigkeit messen

Damit die Geschwindigkeit nun auch gemessen werden kann, wird die Zeit gemessen, die vergeht, bis beide Lichtschranken durchlaufen werden. Sollte der Abstand nicht genau 10cm sein, solltest du dies anpassen.

sudo nano distance_test.py

Und füge folgenden Code ein

Mit STRG+O und STRG+X speichern und beenden. Nun können wir es starten.

sudo python distance_test.py

Funktioniert das Skript nicht richtig, liegt dies höchstwahrscheinlich daran, dass die Lichtschranken nicht genau genug aufeinander zeigen und so etwas Strom fließen kann, dieser aber im nicht im akzeptierten Bereich liegt und es nicht bestimmt ist, ob 0 oder 1.

Abschießend noch ein Bild meines Aufbaus:

189 Kommentare

  1. wie müsste man das Script verändern damit es nicht die Geschwindigkeit misst sondern einfach die Unterbrechung mitsamt datum und Uhrzeit anzeigt(eine kleine Alarmanlage?)?

    Antworten
    • Anstelle des Codes ab Zeile 16:

      #Endlosschleife
      while True:
        while GPIO.input(GPIO_BEGIN_PIN) == GPIO.LOW:
          time.sleep(0.001)
        
        zeit = time.time()
        print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit))
        # Skript(e) starten, versenden, etc.
        # ...
        
        # falls die Lichtschranke weiterhin unterbrochen ist, erst weitermachen, sobald sie frei ist
          while GPIO.input(GPIO_BEGIN_PIN) == GPIO.HIGH:
            time.sleep(0.001)
      

      Ist natürlich nur ein Beispiel, du kannst es nutzen wie du magst. Du brauchst eigentlich auch die zweite Lichtschranke nicht, wenn du keine Geschwindigkeit messen willst, sondern nur einen Auslöser (GPIO_END_PIN kannst du also weg lassen).

      Antworten
  2. Hallo Felix,

    erstmal danke für das tolle Tutorial. Ich bin in sachen Linux und Raspberry Pi noch Anfänger.
    Auf der Suche nach einer Lichtschrankensteuerung bin ich auf deine Seite gestossen.
    Gleich hab ich die elektronische Schaltung nachgebaut und sie funktioniert auch so weit.
    Jedoch hab ich mit deinem Skript ein paar kleine Probleme:
    1. ist in deinem Skript „end_time“ nicht definiert. Diesen Fehler zu finden war noch relativ einfach. Hab einfach Zeile 16 bis 19 kopiert und mit „end_time“ und „GPIO_END_PIN“ modifiziert.

    2. Jedoch hab ich noch einen SytaxError in Zeile 21 und da komm ich nicht weiter. Bin ich zu blöd oder hast du da wirklich einen Fehler beim „=“ Zeichen.

    Danke und viele Grüsse
    Olli

    Antworten
    • Hallo Olli,
      da ist beim editieren vorhin wohl etwas schief gegangen. Ich habe den Code jetzt nochmal eingefügt und verbessert.

      LG Felix

      Antworten
      • Für was ist Zeile 14?
        Wenn ich dann diese Zeile weg lasse, kommt sofort nach einer Aktivierung der Lichtschschranke (egal welche zuerst) ein „Timeout“. Vieleicht mein Fehler beim Abtippen?

      • Die Zeile if __name__ == '__main__': sagt, dass der folgende Code nur ausgeführt werden soll, wenn das Skript direkt gestartet wird (sudo python skript.py) und nicht, wenn es z.B. in anderen Skripten eingebunden wurde.
        Ohne diese Zeile sollte es dennoch funktionieren (aber die Tabs müssen angepasst werden, da Python ja ohne Klammern auskommt, daher die Whitespaces/Tabs nimmt).

      • Vielen Dank!!!!!!!!!!!!!!
        Jetzt gehts. :-))
        Das mit den Tabs hab ich nicht gewusst. Mit Halbwissen sollte man halt nicht an sowas gehen. 😉
        Jetzt bin ich wieder um einen grossen Schritt weiter.
        Darf ich dich in den nächsten Tagen nochmal belästigen, falls ich mit meinem Prog noch fragen habe?
        Vielen Dank schon mal und viele Grüsse
        Olli

      • Hi Olli,
        schön dass es nun klappt. Klar, du kannst jederzeit fragen, wenn etwas unklar ist 🙂
        LG Felix

  3. ok vielen dank auch für den anderen artikel!

    könntest du ein beitrag machen wo es um die ansteuerung eines servos geht?

    Antworten
    • Gerne doch. Wenn Interesse besteht und ich ein wenig mehr Zeit finde, kann ich auch ein Tutorial zu Servos machen, muss aber erst einmal welche bestellen.

      Antworten
  4. Bei mir funktioniert das ganze nur, wenn ich den raum abdunkle und dann z.b. eine Glühlampe anschalte. Bei Tageslicht löst der Empfänger immer sofort aus. Ist das bei dir auch so? Den eigentlich sollte die maximale Wellenlänge bei Tageslicht bei ca 550 nm liegen (laut Wikipedia).

    Antworten
  5. Bei mir funktioniert das ganze nur, wenn ich den raum abdunkle und dann z.b. eine Glühlampe anschalte. Bei Tageslicht löst der Empfänger immer sofort aus. Ist das bei dir auch so? Den eigentlich sollte die maximale Wellenlänge bei Tageslicht bei ca 550 nm liegen (laut Wikipedia).

    Antworten
  6. Hi und vielen Dank vorab für den tollen Beitrag.

    Leider bekomme ich es mit meinem Rasberry nicht hin die Lichtschranke nachzubauen. Der GPIO zeigt immer den gleichen Status an. Allerdings kommen bei mir auch nur 3,2 V am GPIO an, ist das evtl. zu wenig?

    Freue mich schon auf deine Antwort, da wir endlich unsere Kicker Turnament Anlage in betrieb nehmen wollen 😉

    Danke schonmal vorab

    Frank

    Antworten
    • Hey, erstmal vielen Dank für das Lob 🙂
      3.2V sollten eigentlich kein Problem sein, der Schwellwert liegt deutlich drunter. Wie weit sind die Lichtschranken voneinander entfernt (Sender zu Empfänger)? Und hast du sie mal auf Funktionalität überprüft (am besten ohne Pi mittels einer kleinen Testschaltung)?

      Antworten
    • Hallo Felix,
      Erst mal danke für das Tutorial super Arbeit da ich nicht mehr der Jüngste bin und auch Anfänger freue ich mich natürlich das ich was zum Nachbauen finde und dazu lerne.
      Nun versuche ich schon seit Tagen mir auch die Zeit anzeigen zu lassen Zeit = time.time()
      print time.strftime(‚%Y-%m-%d %H:%M:%S‘, time.localtime(zeit))es kommen nur Fehlermeldung .
      Ich würde gerne noch eine 2 Lichtschranke einbauen so das 2 zeiten gemessen werden mit der 1 Lichtschranke die zeit starten
      Und dan mit den 2 hintern einzel die zeit messen .
      Bedanke mich schon mal ich würde dir auch eine kleine spende für deine Projekte hinterlassen .

      Antworten
      • Hallo Uwe,
        ich weiß nicht, ob es ein Tippfehler ist, aber du schreibst die Variable Zeit einmal groß und einmal klein. Die müssten gleich sein (Python unterscheidet zwischen Groß/Kleinschreibung). Ansonsten sollte der Aufruf stimmen.

        import time
        zeit = time.time()
        print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(zeit)))

        eine Alternative wäre datetime:

        from datetime import datetime
        print( str(datetime.now()) )

        LG Felix

      • Hallo
        ich bin gerade an der Zeile „print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(zeit)))“ zerschellt! Nach einiger ist mir aufgefallen, dass Windows die einfachen Anführungszeichen anders darstellt (links geneigt, rechts geneigt, oben und unten). Durch copy&paste ergibt das Probleme! Anführungszeichen im Editor tippen und alles ist OK

  7. Hi und vielen Dank vorab für den tollen Beitrag.

    Leider bekomme ich es mit meinem Rasberry nicht hin die Lichtschranke nachzubauen. Der GPIO zeigt immer den gleichen Status an. Allerdings kommen bei mir auch nur 3,2 V am GPIO an, ist das evtl. zu wenig?

    Freue mich schon auf deine Antwort, da wir endlich unsere Kicker Turnament Anlage in betrieb nehmen wollen 😉

    Danke schonmal vorab

    Frank

    Antworten
    • Hey, erstmal vielen Dank für das Lob 🙂
      3.2V sollten eigentlich kein Problem sein, der Schwellwert liegt deutlich drunter. Wie weit sind die Lichtschranken voneinander entfernt (Sender zu Empfänger)? Und hast du sie mal auf Funktionalität überprüft (am besten ohne Pi mittels einer kleinen Testschaltung)?

      Antworten
    • Hallo Felix,
      Erst mal danke für das Tutorial super Arbeit da ich nicht mehr der Jüngste bin und auch Anfänger freue ich mich natürlich das ich was zum Nachbauen finde und dazu lerne.
      Nun versuche ich schon seit Tagen mir auch die Zeit anzeigen zu lassen Zeit = time.time()
      print time.strftime(‚%Y-%m-%d %H:%M:%S‘, time.localtime(zeit))es kommen nur Fehlermeldung .
      Ich würde gerne noch eine 2 Lichtschranke einbauen so das 2 zeiten gemessen werden mit der 1 Lichtschranke die zeit starten
      Und dan mit den 2 hintern einzel die zeit messen .
      Bedanke mich schon mal ich würde dir auch eine kleine spende für deine Projekte hinterlassen .

      Antworten
      • Hallo Uwe,
        ich weiß nicht, ob es ein Tippfehler ist, aber du schreibst die Variable Zeit einmal groß und einmal klein. Die müssten gleich sein (Python unterscheidet zwischen Groß/Kleinschreibung). Ansonsten sollte der Aufruf stimmen.

        import time
        zeit = time.time()
        print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(zeit)))

        eine Alternative wäre datetime:

        from datetime import datetime
        print( str(datetime.now()) )

        LG Felix

      • Hallo
        ich bin gerade an der Zeile „print(time.strftime(‘%Y-%m-%d %H:%M:%S’, time.localtime(zeit)))“ zerschellt! Nach einiger ist mir aufgefallen, dass Windows die einfachen Anführungszeichen anders darstellt (links geneigt, rechts geneigt, oben und unten). Durch copy&paste ergibt das Probleme! Anführungszeichen im Editor tippen und alles ist OK

  8. Testschaltung habe ich probiert funktioniert auch. Ich habe es jetzt ein wenig abgeändert und den Spanungsteiler geändert. 5 V sind jetzt die Spannungsversorgung und mit 24,7 kOhm als Vorwiederstand bekomme ich dann 3,4 V geliefert. Jetzt gehts auch mit dem GPIO.

    Trotzdem Danke

    Antworten
  9. Testschaltung habe ich probiert funktioniert auch. Ich habe es jetzt ein wenig abgeändert und den Spanungsteiler geändert. 5 V sind jetzt die Spannungsversorgung und mit 24,7 kOhm als Vorwiederstand bekomme ich dann 3,4 V geliefert. Jetzt gehts auch mit dem GPIO.

    Trotzdem Danke

    Antworten
  10. das hab ich nicht gesehen wen du es sagt ja das ist richtig
    ich hatte den obrigen txt genommen

    #Endlosschleife
    while True:
      while GPIO.input(GPIO_BEGIN_PIN) == GPIO.LOW:
        time.sleep(0.001)
      
      zeit = time.time()
      print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit))
      # Skript(e) starten, versenden, etc.
    

    da ist es schon groß drin ich danke die für die schnelle anwort

    Antworten
  11. das hab ich nicht gesehen wen du es sagt ja das ist richtig
    ich hatte den obrigen txt genommen

    #Endlosschleife
    while True:
      while GPIO.input(GPIO_BEGIN_PIN) == GPIO.LOW:
        time.sleep(0.001)
      
      zeit = time.time()
      print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit))
      # Skript(e) starten, versenden, etc.
    

    da ist es schon groß drin ich danke die für die schnelle anwort

    Antworten
  12. Hi,
    super Tutorials auf der Seite.
    Ich würde auch gerne nur eine Lichtschranke (so wie oben im Quelltext in den Kommentaren) bauen. Jedoch habe ich keine LEDS. Wie muss ich umstecken, sodass es trotzdem funktioniert? Bin nicht bewandert in Sachen Schaltungen. 🙁

    Antworten
    • Einfach die Widerstände und alle Kabel, die zu den LEDs führen (und nicht von den IR Dioden genutzt werden) nicht verbinden. Den Code solltest du dann auch ggf. so anpassen, wie du ihn möchtest.

      Antworten
  13. Hi,
    super Tutorials auf der Seite.
    Ich würde auch gerne nur eine Lichtschranke (so wie oben im Quelltext in den Kommentaren) bauen. Jedoch habe ich keine LEDS. Wie muss ich umstecken, sodass es trotzdem funktioniert? Bin nicht bewandert in Sachen Schaltungen. 🙁

    Antworten
    • Einfach die Widerstände und alle Kabel, die zu den LEDs führen (und nicht von den IR Dioden genutzt werden) nicht verbinden. Den Code solltest du dann auch ggf. so anpassen, wie du ihn möchtest.

      Antworten
  14. Hallo,

    ich bin auf der Suche nach genau diesem Aufbau nur in etwas größer. Ich soll für ein Projekt auf der Arbeit eine Geschwindigkeitsanzeige installieren. Jetzt meine Frage:
    Kann man das alles auch in größer realisieren, so wie oben?
    Mit größeren Lichtschranken (Reflexions-Lichttaster von Pepperl & Fuchs) und einer LED-Großanzeige?

    Grüße

    Antworten
    • Hey,
      je nachdem wie genau die Messung sein muss, sollte es mit entsprechenden Lichtschranken möglich sein. Ich würde dann aber auf eine Hardware nahe Sprache wie C oder C++ zurückgreifen und auch möglichst kurze Verbindungen nehmen, damit die Genauigkeit erhöht wird. Die Ansteuerung der LED Anzeigen (dazu gibt es hier auch ein paar Tutorials) sollte mit Python etwas einfacher sein und ein paar Millisekunden Verzögerung sollten dabei akzeptabel sein.
      LG Felix

      Antworten
  15. Hallo,

    ich bin auf der Suche nach genau diesem Aufbau nur in etwas größer. Ich soll für ein Projekt auf der Arbeit eine Geschwindigkeitsanzeige installieren. Jetzt meine Frage:
    Kann man das alles auch in größer realisieren, so wie oben?
    Mit größeren Lichtschranken (Reflexions-Lichttaster von Pepperl & Fuchs) und einer LED-Großanzeige?

    Grüße

    Antworten
    • Hey,
      je nachdem wie genau die Messung sein muss, sollte es mit entsprechenden Lichtschranken möglich sein. Ich würde dann aber auf eine Hardware nahe Sprache wie C oder C++ zurückgreifen und auch möglichst kurze Verbindungen nehmen, damit die Genauigkeit erhöht wird. Die Ansteuerung der LED Anzeigen (dazu gibt es hier auch ein paar Tutorials) sollte mit Python etwas einfacher sein und ein paar Millisekunden Verzögerung sollten dabei akzeptabel sein.
      LG Felix

      Antworten
  16. Hallo Felix,
    zuerst einmal Danke für das Tutorial.
    Ich muss im Zuge einer Berufschulprojektarbeit eine derartige Konstruktion aufbauen und wollte mich erkundigen, ob ich dich im Zweifelsfall per Email um Rat fragen könnte. Falls ja, einfach schreiben =)
    Grüße

    Antworten
  17. Hallo Felix,
    zuerst einmal Danke für das Tutorial.
    Ich muss im Zuge einer Berufschulprojektarbeit eine derartige Konstruktion aufbauen und wollte mich erkundigen, ob ich dich im Zweifelsfall per Email um Rat fragen könnte. Falls ja, einfach schreiben =)
    Grüße

    Antworten
  18. Hallo Felix,

    die Konsole gibt beim ausführen deines Scripts die Fehlermeldung
    File „distance_test.üy“, line 23
    (…)
    SyntaxError: invalid syntax
    aus.
    Irgendeine Idee woran das liegen könnte?
    Grüße 🙂

    Antworten
    • Hey,
      folgendes: Zum einen hast du die Datei falsch benannt („.üy“) und zum zweiten habe ich den Code aktualisiert, da WordPress jedes mal die Leerzeichen entfernt (und Leerzeichen sind in Python wichtig).
      LG Felix

      Antworten
  19. Hallo Felix,

    die Konsole gibt beim ausführen deines Scripts die Fehlermeldung
    File „distance_test.üy“, line 23
    (…)
    SyntaxError: invalid syntax
    aus.
    Irgendeine Idee woran das liegen könnte?
    Grüße 🙂

    Antworten
    • Hey,
      folgendes: Zum einen hast du die Datei falsch benannt („.üy“) und zum zweiten habe ich den Code aktualisiert, da WordPress jedes mal die Leerzeichen entfernt (und Leerzeichen sind in Python wichtig).
      LG Felix

      Antworten
  20. Hey,
    den Dateinamen habe ich nur hier falsch eingetippt 🙂
    ist der code oben jetzt aktualisiert oder wie darf ich das verstehen. Ich übernehme den Code in ein Textdokument, nenne es in .py um und führe es aus.
    Sollte das funktionieren?
    PS: in der Codierung für eine Alarmanlage meint „ab zeile 16“ alles unter Zeile 16 wird ersetzt oder AUCH zeile 16?
    LG Leo

    Antworten
    • Genau, grad den jetzigen Code (mit Einrückungen) mit dem davor ersetzen. Der Code war zwar schon davor richtig, aber WordPress ersetzt gerne mal mehrere Leerzeichen hintereinander, daher waren die Einrückungen falsch. Vor Zeile 14 waren aber keine nöig, daher erst ab:
      if __name__ == '__main__':

      Antworten
  21. Hey,
    den Dateinamen habe ich nur hier falsch eingetippt 🙂
    ist der code oben jetzt aktualisiert oder wie darf ich das verstehen. Ich übernehme den Code in ein Textdokument, nenne es in .py um und führe es aus.
    Sollte das funktionieren?
    PS: in der Codierung für eine Alarmanlage meint „ab zeile 16“ alles unter Zeile 16 wird ersetzt oder AUCH zeile 16?
    LG Leo

    Antworten
    • Genau, grad den jetzigen Code (mit Einrückungen) mit dem davor ersetzen. Der Code war zwar schon davor richtig, aber WordPress ersetzt gerne mal mehrere Leerzeichen hintereinander, daher waren die Einrückungen falsch. Vor Zeile 14 waren aber keine nöig, daher erst ab:
      if __name__ == '__main__':

      Antworten
  22. #!/usr/bin/python
    import time
    import RPi.GPIO as GPIO
     
    GPIO_BEGIN_PIN = 4
    GPIO_END_PIN = 17
     
    DISTANCE = 2.0 # (in cm) Anpassen, falls notwendig
    TIMEOUT = 5 # sek
     
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
     
    if __name__ == '__main__':
        GPIO.setup(GPIO_BEGIN_PIN, GPIO.IN)
        GPIO.setup(GPIO_END_PIN, GPIO.IN)
    
    #Endlosschleife
    while True:
      while GPIO.input(GPIO_BEGIN_PIN) == GPIO.LOW:
        time.sleep(0.001)
      
      zeit = time.time()
      print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit))
      # Skript(e) starten, versenden, etc.
      # ...
      
      # falls die Lichtschranke weiterhin unterbrochen ist, erst weitermachen, sobald sie frei ist
        while GPIO.input(GPIO_BEGIN_PIN) == GPIO.HIGH:
          time.sleep(0.001)

    das ist jetzt der Code den ich verwende, wenn ich ihn ausführe passiert eigentlich garnichts, auch wenn ich beide lichtschranken unterbreche. Ich will an der Stelle nur Datum und Uhrzeit einer Unterbrechung, nicht die Geschwindigkeit mitbekommen und habe deshalb den Code aus einem deiner Kommentare ergänzt. Der Schaltkreis ist identlich mit deinem.
    Frage: brauche ich einen AD-wandler wenn ich ein digitales Signal an beispielsweise eine Alarmanlage weiterleiten will?
    beste Grüße,
    Leo

    Antworten
    • Bei dir fehlen die Einrückungen nach if __name__ == '__main__': vor der while Schleife, so hat die If Abfrage keine wirkliche Auswirkung und du kannst sie auch weglassen (oder eben einrücken).
      Wie weit sind die IR Dioden voneinander entfernt? Evtl. liegt es daran, dass kein Signal ankommt. Wenn du nur eine Schranke hast, brauchst du GPIO_END_PIN nicht.
      bzgl Alarmanlage lässt sich das nicht so einfach sagen: Je nachdem, ob sie ein digitales/analoges Signal erwartet bzw wie hoch die Spannung ist. Ggf. könntest du ein Relais benutzen.
      PS: Überprüfe deine Einrückungen alle mal. Ich bin mir nicht sicher ob es an WordPress liegt oder du gekürzt hast, aber z.B. die letzte while Schleife ist anders eingerückt, als das print davor.
      LG Felix

      Antworten
  23. #!/usr/bin/python
    import time
    import RPi.GPIO as GPIO
     
    GPIO_BEGIN_PIN = 4
    GPIO_END_PIN = 17
     
    DISTANCE = 2.0 # (in cm) Anpassen, falls notwendig
    TIMEOUT = 5 # sek
     
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
     
    if __name__ == '__main__':
        GPIO.setup(GPIO_BEGIN_PIN, GPIO.IN)
        GPIO.setup(GPIO_END_PIN, GPIO.IN)
    
    #Endlosschleife
    while True:
      while GPIO.input(GPIO_BEGIN_PIN) == GPIO.LOW:
        time.sleep(0.001)
      
      zeit = time.time()
      print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(zeit))
      # Skript(e) starten, versenden, etc.
      # ...
      
      # falls die Lichtschranke weiterhin unterbrochen ist, erst weitermachen, sobald sie frei ist
        while GPIO.input(GPIO_BEGIN_PIN) == GPIO.HIGH:
          time.sleep(0.001)

    das ist jetzt der Code den ich verwende, wenn ich ihn ausführe passiert eigentlich garnichts, auch wenn ich beide lichtschranken unterbreche. Ich will an der Stelle nur Datum und Uhrzeit einer Unterbrechung, nicht die Geschwindigkeit mitbekommen und habe deshalb den Code aus einem deiner Kommentare ergänzt. Der Schaltkreis ist identlich mit deinem.
    Frage: brauche ich einen AD-wandler wenn ich ein digitales Signal an beispielsweise eine Alarmanlage weiterleiten will?
    beste Grüße,
    Leo

    Antworten
    • Bei dir fehlen die Einrückungen nach if __name__ == '__main__': vor der while Schleife, so hat die If Abfrage keine wirkliche Auswirkung und du kannst sie auch weglassen (oder eben einrücken).
      Wie weit sind die IR Dioden voneinander entfernt? Evtl. liegt es daran, dass kein Signal ankommt. Wenn du nur eine Schranke hast, brauchst du GPIO_END_PIN nicht.
      bzgl Alarmanlage lässt sich das nicht so einfach sagen: Je nachdem, ob sie ein digitales/analoges Signal erwartet bzw wie hoch die Spannung ist. Ggf. könntest du ein Relais benutzen.
      PS: Überprüfe deine Einrückungen alle mal. Ich bin mir nicht sicher ob es an WordPress liegt oder du gekürzt hast, aber z.B. die letzte while Schleife ist anders eingerückt, als das print davor.
      LG Felix

      Antworten
  24. Reicht es, nach if __name__== '__main__': alles mit einem Tab weiter einzurücken – bzw wie weit reicht die if-verzweigung also bis zu welchem Befehl muss ich per Tab einrücken?

    Die Dioden sind ca 1.5-2cm außeinander. Davon habe ich zwei paare mit Quelle und Empfänger wie in deinem Beispiel.

    Ohne AD-Wandler müsste die Konsole auf dem Pi trotzdem eine Unterbrechung anzeigen, wenn ich das script ausführe und BEIDE Lichtschranken unterbreche, richtig?

    Antworten
  25. Reicht es, nach if __name__== '__main__': alles mit einem Tab weiter einzurücken – bzw wie weit reicht die if-verzweigung also bis zu welchem Befehl muss ich per Tab einrücken?

    Die Dioden sind ca 1.5-2cm außeinander. Davon habe ich zwei paare mit Quelle und Empfänger wie in deinem Beispiel.

    Ohne AD-Wandler müsste die Konsole auf dem Pi trotzdem eine Unterbrechung anzeigen, wenn ich das script ausführe und BEIDE Lichtschranken unterbreche, richtig?

    Antworten
  26. Hallo Felix,
    status ist wie folgt, das Skript funktioniert, gibt aber eine permanente Unterbrechung also geschlossenen Stromkreis an. Die Lichtschranken sind allerdings ununterbrochen und auf den LEDs kein Strom. Die Konsole gibt im Millisekundentakt die Zeit und das Datum aus. Habe ich einen Steck-Fehler am Schaltkreis so dass auf den PINs permanent Strom anliegt, oder reagieren die PINS laut dem Script einfach falsch herum, sprich Datum/Zeit werden bei KEINEM Strom an den PINS ausgegeben?
    Sry für die vielen Posts,
    Grüße, Leo

    Antworten
    • Hey Leo,
      bzgl. Python und den Einrückungen solltest du dir evtl. die Syntax von Python ansehen: Statt Klammern wird in Python der Code, der z.B. nach einem if ausgeführt werden soll, eine Ebene (sei es ein Tab, ein/zwei/beliebig viele Leerzeichen) eingerückt.
      Wenn das Skript sonst soweit funktioniert, ist das ja schon mal gut. Da ich deinen Schaltplan nicht kenne, kann ich dir nicht sagen, ob du evtl. etwas falsch verbunden hast, aber das hört sich sehr danach an, dass „zu viel“ Strom durch gelangt und dadurch dauerhaft ein Signal ankommt. Du könntest einen größeren Widerstand ausprobieren (oder Poti zum drehen) und schauen, ob das hilft. Wenn nicht sehen wir weiter.
      LG Felix

      Antworten
  27. Hallo Felix,
    status ist wie folgt, das Skript funktioniert, gibt aber eine permanente Unterbrechung also geschlossenen Stromkreis an. Die Lichtschranken sind allerdings ununterbrochen und auf den LEDs kein Strom. Die Konsole gibt im Millisekundentakt die Zeit und das Datum aus. Habe ich einen Steck-Fehler am Schaltkreis so dass auf den PINs permanent Strom anliegt, oder reagieren die PINS laut dem Script einfach falsch herum, sprich Datum/Zeit werden bei KEINEM Strom an den PINS ausgegeben?
    Sry für die vielen Posts,
    Grüße, Leo

    Antworten
    • Hey Leo,
      bzgl. Python und den Einrückungen solltest du dir evtl. die Syntax von Python ansehen: Statt Klammern wird in Python der Code, der z.B. nach einem if ausgeführt werden soll, eine Ebene (sei es ein Tab, ein/zwei/beliebig viele Leerzeichen) eingerückt.
      Wenn das Skript sonst soweit funktioniert, ist das ja schon mal gut. Da ich deinen Schaltplan nicht kenne, kann ich dir nicht sagen, ob du evtl. etwas falsch verbunden hast, aber das hört sich sehr danach an, dass „zu viel“ Strom durch gelangt und dadurch dauerhaft ein Signal ankommt. Du könntest einen größeren Widerstand ausprobieren (oder Poti zum drehen) und schauen, ob das hilft. Wenn nicht sehen wir weiter.
      LG Felix

      Antworten
  28. betrieben wird das ganze ja vom 3.3V PIN am RasPi, ansonsten habe ich dieselben Wiederstände wie du verwendet (470Ohm, 10KOhm). Woher sollte der Unterschied zu deinem Beispiel kommen? Welche soll ich versuchen zu ersetzen und durch einen wie großen?
    LG Leo 🙂

    Antworten
    • Benutzt du auch die selben IR Dioden (meine waren von Pollin)? Sollte zwar auch mit anderen IR Lichtschranken funktionieren, aber evtl. haben diese andere Eigenwiederstände. Falls du einen Poti kannst du den mal statt dem Widerstand einsetzen und schauen, ob sich bei Verändern des Wertes etwas tut.
      LG Felix

      Antworten
  29. betrieben wird das ganze ja vom 3.3V PIN am RasPi, ansonsten habe ich dieselben Wiederstände wie du verwendet (470Ohm, 10KOhm). Woher sollte der Unterschied zu deinem Beispiel kommen? Welche soll ich versuchen zu ersetzen und durch einen wie großen?
    LG Leo 🙂

    Antworten
    • Benutzt du auch die selben IR Dioden (meine waren von Pollin)? Sollte zwar auch mit anderen IR Lichtschranken funktionieren, aber evtl. haben diese andere Eigenwiederstände. Falls du einen Poti kannst du den mal statt dem Widerstand einsetzen und schauen, ob sich bei Verändern des Wertes etwas tut.
      LG Felix

      Antworten
  30. Hallo Felix,
    ich habe einen ähnlichen Aufbau wie du und habe daher versucht deinen Code für mich anzupassen. Ich bekomme aber selbst ohne Anpassung berereits einen „Invalid Syntax“-Error bei der ersten while-Bedingung. Leider kenne ich mich mit Python und GPIOs kaum aus. Dürfte ich dich bitten einen kurzen Blick darauf zu werfen? Vielleicht ist der Fehler ja total simpel und ich sehe ihn einfach nicht.
    Vielen Dank für deine Mühe!
    Torsten

    #!/usr/bin/python
    import time
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    
    LSein = 17
    LSaus = 18
    TOUT = 2 # Timeout nach 2 sek
    weg = 0.5 # Strecke zwischen den Lichtschranken [m]
    
    GPIO.setup(LSein, GPIO.IN)
    GPIO.setup(LSaus, GPIO.IN)
    
    while GPIO.input(LSein) == GPIO.LOW
        time.sleep(0.001)
        start_time = time.time()
    end_time = 0
    
    while GPIO.input(LSaus) == GPIO.LOW and time()-start_time = TOUT:
            print("Timeout")
            exit()
        else:
            end_time = time.time()
    
            geschw = weg / (end_time - start_time)
            print("Geschwindigkeit: %.2f m/s" % geschw)
    Antworten
    • na das mit dem Code hat ja super geklappt 😀 wie macht ihr das mit den grauen Kästchen? Auf jeden Fall sind die Einrückungen richtig, die habe ich oft genug überprüft

      Antworten
    • Zwei Fehler:
      while GPIO.input(LSein) == GPIO.LOW da fehlt der Doppelpunkt am Ende.

      and time()-start_time = TOUT: da müssen zwei GLeichheitsszeichen hin: and time()-start_time == TOUT:
      Außerdem ist in der zweiten While Schleife ein else, aber entweder fehlt ein if oder die Einrückung ist falsch.
      LG Felix

      Antworten
    • Oh danke, auf den Doppelpunkt wäre ich nie gekommen.

      Bei der zweiten while sind beim Kopieren anscheinen ein paar Zeilen verloren gegangen, eigentlich sieht das so bei mir aus:

      while GPIO.input(LSaus) == GPIO.LOW and time()-start_time = TOUT:
              print("Timeout")
              exit()
          else:
              end_time = time.time()
      
              geschw = weg / (end_time - start_time)
              print("Geschwindigkeit: %.2f m/s" % geschw)
      

      Ja, liegt am Kopieren, war wieder weg. Habe es jetzt hoffentlich richtig von Hand eingefügt.

      Werde deine Korrektur gleich morgen früh mal probieren. Vielen Dank schonmal!

      Antworten
  31. Hallo Felix,
    ich habe einen ähnlichen Aufbau wie du und habe daher versucht deinen Code für mich anzupassen. Ich bekomme aber selbst ohne Anpassung berereits einen „Invalid Syntax“-Error bei der ersten while-Bedingung. Leider kenne ich mich mit Python und GPIOs kaum aus. Dürfte ich dich bitten einen kurzen Blick darauf zu werfen? Vielleicht ist der Fehler ja total simpel und ich sehe ihn einfach nicht.
    Vielen Dank für deine Mühe!
    Torsten

    #!/usr/bin/python
    import time
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    
    LSein = 17
    LSaus = 18
    TOUT = 2 # Timeout nach 2 sek
    weg = 0.5 # Strecke zwischen den Lichtschranken [m]
    
    GPIO.setup(LSein, GPIO.IN)
    GPIO.setup(LSaus, GPIO.IN)
    
    while GPIO.input(LSein) == GPIO.LOW
        time.sleep(0.001)
        start_time = time.time()
    end_time = 0
    
    while GPIO.input(LSaus) == GPIO.LOW and time()-start_time = TOUT:
            print("Timeout")
            exit()
        else:
            end_time = time.time()
    
            geschw = weg / (end_time - start_time)
            print("Geschwindigkeit: %.2f m/s" % geschw)
    Antworten
    • na das mit dem Code hat ja super geklappt 😀 wie macht ihr das mit den grauen Kästchen? Auf jeden Fall sind die Einrückungen richtig, die habe ich oft genug überprüft

      Antworten
    • Zwei Fehler:
      while GPIO.input(LSein) == GPIO.LOW da fehlt der Doppelpunkt am Ende.

      and time()-start_time = TOUT: da müssen zwei GLeichheitsszeichen hin: and time()-start_time == TOUT:
      Außerdem ist in der zweiten While Schleife ein else, aber entweder fehlt ein if oder die Einrückung ist falsch.
      LG Felix

      Antworten
    • Oh danke, auf den Doppelpunkt wäre ich nie gekommen.

      Bei der zweiten while sind beim Kopieren anscheinen ein paar Zeilen verloren gegangen, eigentlich sieht das so bei mir aus:

      while GPIO.input(LSaus) == GPIO.LOW and time()-start_time = TOUT:
              print("Timeout")
              exit()
          else:
              end_time = time.time()
      
              geschw = weg / (end_time - start_time)
              print("Geschwindigkeit: %.2f m/s" % geschw)
      

      Ja, liegt am Kopieren, war wieder weg. Habe es jetzt hoffentlich richtig von Hand eingefügt.

      Werde deine Korrektur gleich morgen früh mal probieren. Vielen Dank schonmal!

      Antworten
  32. Also irgendwie wollen die Zeilen nicht, sind schon wieder verschwunden 😀 Ich habe es aber praktisch oben abgeschrieben, da ist noch das erste else und if mit print(„Timeout“) vor

    Antworten
    • Ich habe mal mein gesamtes Programm reinkopiert: http://pastebin.com/Y7N6cfFx

      Ich konnte es leider noch nicht austesten, da das kleinste Zeitintervall bei mir nur 0,01s ist. Kann man das ändern? Sonst ist man bei der Messung mit 0,5m Abstand zwischen den Lichtschranken (leider gegeben, den Abstand kann ich nicht ändern) ja auf 50m/s begrenzt. Ich bräuchte da eher so 1000m/s. Kann ich das kleinste Zeitintervall auf 0.00001s ändern?

      Ich muss nicht lange messen, d.h. vor dem Komma reichen ein paar Stellen.

      Antworten
  33. Also irgendwie wollen die Zeilen nicht, sind schon wieder verschwunden 😀 Ich habe es aber praktisch oben abgeschrieben, da ist noch das erste else und if mit print(„Timeout“) vor

    Antworten
    • Ich habe mal mein gesamtes Programm reinkopiert: http://pastebin.com/Y7N6cfFx

      Ich konnte es leider noch nicht austesten, da das kleinste Zeitintervall bei mir nur 0,01s ist. Kann man das ändern? Sonst ist man bei der Messung mit 0,5m Abstand zwischen den Lichtschranken (leider gegeben, den Abstand kann ich nicht ändern) ja auf 50m/s begrenzt. Ich bräuchte da eher so 1000m/s. Kann ich das kleinste Zeitintervall auf 0.00001s ändern?

      Ich muss nicht lange messen, d.h. vor dem Komma reichen ein paar Stellen.

      Antworten
  34. hey ich hab mal eine frage,
    für ein projekt hab ich vor die geschwindigkeit beim kickern zu messen (1. lichtscranke beim angreifer und 2. im tor),

    wie weit dürfen der sender und der empfänger auseinander sein?

    Antworten
  35. hey ich hab mal eine frage,
    für ein projekt hab ich vor die geschwindigkeit beim kickern zu messen (1. lichtscranke beim angreifer und 2. im tor),

    wie weit dürfen der sender und der empfänger auseinander sein?

    Antworten
    • Hm das kommt auf das Modell an, da müsstest du mal testen. Ich habe so einen großen Abstand nie gebraucht.
      Ein Fotowiderstand würde nicht mit Infrarot funktionieren (Umgebungshelligkeit zu hoch), wahrscheinlich aber mit einem Laser (falls das in Frage kommt). Dazu einfach den Fotowiderstand platzieren und den Laser direkt darauf zielen lassen.

      Antworten
    • Hm das kommt auf das Modell an, da müsstest du mal testen. Ich habe so einen großen Abstand nie gebraucht.
      Ein Fotowiderstand würde nicht mit Infrarot funktionieren (Umgebungshelligkeit zu hoch), wahrscheinlich aber mit einem Laser (falls das in Frage kommt). Dazu einfach den Fotowiderstand platzieren und den Laser direkt darauf zielen lassen.

      Antworten
    • Hallo Martin,
      ja das sollte funktionieren (links Laser, rechts Fotowiderstand). Modul sollte in Ordnung sein, kommt allerdings aus China 😀

      Antworten
    • Hallo Martin,
      ja das sollte funktionieren (links Laser, rechts Fotowiderstand). Modul sollte in Ordnung sein, kommt allerdings aus China 😀

      Antworten
  36. Moin zusammen,

    ich bekomme immer diese Fehlermeldung 🙁

    Traceback (most recent call last):
    File „geschw.py“, line 26, in
    if time.time()-start_time >= TIMEOUT:
    NameError: name ’start_time‘ is not defined

    Die Schaltung an sich funktioniert. Die LED sind dunkel und wenn ich die Lichtschranke unterbreche, leuchtet die jeweilige.

    Ich komme nur mit der Fehlermeldung nicht weiter, weil eigentlich start_time definiert ist.

    Gruß
    Holger

    Antworten
    • Hat sich aufgeklärt. Die Lichtschranken müssen ja wirklich extrem nah gegenüber stehen. 4cm zwischen Sender und Empfänger waren zu viel.

      Gruß
      Holger

      Antworten
  37. Moin zusammen,

    ich bekomme immer diese Fehlermeldung 🙁

    Traceback (most recent call last):
    File „geschw.py“, line 26, in
    if time.time()-start_time >= TIMEOUT:
    NameError: name ’start_time‘ is not defined

    Die Schaltung an sich funktioniert. Die LED sind dunkel und wenn ich die Lichtschranke unterbreche, leuchtet die jeweilige.

    Ich komme nur mit der Fehlermeldung nicht weiter, weil eigentlich start_time definiert ist.

    Gruß
    Holger

    Antworten
    • Hat sich aufgeklärt. Die Lichtschranken müssen ja wirklich extrem nah gegenüber stehen. 4cm zwischen Sender und Empfänger waren zu viel.

      Gruß
      Holger

      Antworten
  38. Hey, bin am Aufbau, hab alles bei Conrad gekauft. Der Fototransistor hat allerdings 3 pins, was soll ich tun? kannst du mir ein Bild des ganzen Konstrukts schicken?
    DANKE

    Antworten
  39. Hey, bin am Aufbau, hab alles bei Conrad gekauft. Der Fototransistor hat allerdings 3 pins, was soll ich tun? kannst du mir ein Bild des ganzen Konstrukts schicken?
    DANKE

    Antworten
  40. Hallo,

    ich habe dein Versuch einmal nachgebaut und es funktioniert auch mit einer Lichtschranke. Ich würde jedoch gerne einen größeren Bereich abdecken, also auch weiter oben noch einen Sensor anbringen. Dann dachte ich mir einfach, dass ich diese Parallel schalte. Das dürfte jedoch nicht klappen, weil dann immer beide Schranken gleichzeitig durchbrochen werden müssten.
    Gibt es eine Möglichkeit mehrere Lichtschranken „übereinander“ zu positionieren, damit es auch noch funktioniert?
    (Brauche es für einen Kicker Tisch und das Tor ist leider etwas größer^^)

    Antworten
    • Du könntest entweder stärkere Sender/Empfänger Paare nehmen, oder z.B. einen Fototransistor und einen Mini-Laser. An den Fototransistor hängst du einen größeren Widerstand (musst du mal testen, ab wann das normale Umgebungslicht ignoriert wird). Wenn ich Zeit finde, werde ich vielleicht in Zukunft dazu mal ein Tutorial machen, ist aber eigentlich recht simpel.
      LG Felix

      Antworten
  41. Hallo,

    ich habe dein Versuch einmal nachgebaut und es funktioniert auch mit einer Lichtschranke. Ich würde jedoch gerne einen größeren Bereich abdecken, also auch weiter oben noch einen Sensor anbringen. Dann dachte ich mir einfach, dass ich diese Parallel schalte. Das dürfte jedoch nicht klappen, weil dann immer beide Schranken gleichzeitig durchbrochen werden müssten.
    Gibt es eine Möglichkeit mehrere Lichtschranken „übereinander“ zu positionieren, damit es auch noch funktioniert?
    (Brauche es für einen Kicker Tisch und das Tor ist leider etwas größer^^)

    Antworten
    • Du könntest entweder stärkere Sender/Empfänger Paare nehmen, oder z.B. einen Fototransistor und einen Mini-Laser. An den Fototransistor hängst du einen größeren Widerstand (musst du mal testen, ab wann das normale Umgebungslicht ignoriert wird). Wenn ich Zeit finde, werde ich vielleicht in Zukunft dazu mal ein Tutorial machen, ist aber eigentlich recht simpel.
      LG Felix

      Antworten
  42. Schön guten Tag,

    vielen Dank für die hilfreichen Tips. Ich wollte das ganze erweitern, dass ab einer bestimmten Geschwindigkeit eine DUO LED Grün oder Rot aufleuchtet. Da ich totaler anfänger bin wollte ich Sie Fragen wie der Code und die Verdrahtung erweitert werden muss?
    Vielen Dank im Voraus

    Antworten
    • Hallo ,

      vielen Dank für die schnelle Antwort. Ich wollte gerne mit dieser Schaltung eine Blitzeranlage simulieren. Sprich das ab einer bestimmten Geschwindigkeit eine LED leuchtet.

      Beste Grüße

      Antworten
      • Hallo Enrico,
        wenn du die Geschwindigkeit eines näher kommenden Objekts feststellen willst, kannst du u.a. auch das Tutorial ansehen:
        Infrarot Abstandsmessung mit dem Raspberry Pi (Sharp GP2Y0A02YK0F)
        Das kann ähnlich zu einem Blitzer funktionieren: In einer Dauerschleife misst du den Abstand und sollte dieser Sich nähern kannst du aus der Zeitdifferenz der letzten Messung und der Differenz der Entfernung die Geschwindigkeit berechnen.

    • Schön guten Abend,

      ich wollte das Programm mal testen, kriege aber immer folgende Fehlermeldung:

      Traceback (most recent cail last) :
      File „distance.py“, line 26, in
      if time.time()-start_time >= TIMEOUT:
      NameError: name ’start_time‘ is not difined

      Ich hab den oberen Code nur kopiert und eingefügt. Woran kann das liegen?
      Vielen Dank im Voraus ! 🙂

      Antworten
      • Schreib in Zeile 17 folgendes (ein Tab zum einrücken): start_time, end_time = 0, 0
        Hab es im Skript aktualisiert 🙂

    • hey,

      vielen Dank hat geklappt. Aber wie kann es sein, dass obwohl die Lichtschranke nicht unterbrochen wurde, mir Geschwindigkeiten angezeigt werden?

      Beste Grüße

      Antworten
      • Ich nehme an, dass ein Signal übertragen wurde. Das kann z.B. durch anderes (Infrarot)Licht, was den Empfänger erreicht hat passieren.

    • Fehlt eventuell eine While Schleife? Da er mir ja sofort Timeout ausgibt , wenn ich das Programm Starte und nicht die erste Lichtschranke durchbrechen. Kriege es leider immer noch nicht hin. Bin auch schon mehr mals den Aufbau durch gegangen.

      Beste Grüße

      Antworten
      • Wo im Code meinst du genau? Es kann auch an deinen Lichtschranken liegen, sodass durch diese „immer“ Strom fließt, wodurch keine echte Messung entsteht.

  43. Schön guten Tag,

    vielen Dank für die hilfreichen Tips. Ich wollte das ganze erweitern, dass ab einer bestimmten Geschwindigkeit eine DUO LED Grün oder Rot aufleuchtet. Da ich totaler anfänger bin wollte ich Sie Fragen wie der Code und die Verdrahtung erweitert werden muss?
    Vielen Dank im Voraus

    Antworten
    • Hallo ,

      vielen Dank für die schnelle Antwort. Ich wollte gerne mit dieser Schaltung eine Blitzeranlage simulieren. Sprich das ab einer bestimmten Geschwindigkeit eine LED leuchtet.

      Beste Grüße

      Antworten
      • Hallo Enrico,
        wenn du die Geschwindigkeit eines näher kommenden Objekts feststellen willst, kannst du u.a. auch das Tutorial ansehen:
        Infrarot Abstandsmessung mit dem Raspberry Pi (Sharp GP2Y0A02YK0F)
        Das kann ähnlich zu einem Blitzer funktionieren: In einer Dauerschleife misst du den Abstand und sollte dieser Sich nähern kannst du aus der Zeitdifferenz der letzten Messung und der Differenz der Entfernung die Geschwindigkeit berechnen.

    • Schön guten Abend,

      ich wollte das Programm mal testen, kriege aber immer folgende Fehlermeldung:

      Traceback (most recent cail last) :
      File „distance.py“, line 26, in
      if time.time()-start_time >= TIMEOUT:
      NameError: name ’start_time‘ is not difined

      Ich hab den oberen Code nur kopiert und eingefügt. Woran kann das liegen?
      Vielen Dank im Voraus ! 🙂

      Antworten
      • Schreib in Zeile 17 folgendes (ein Tab zum einrücken): start_time, end_time = 0, 0
        Hab es im Skript aktualisiert 🙂

    • hey,

      vielen Dank hat geklappt. Aber wie kann es sein, dass obwohl die Lichtschranke nicht unterbrochen wurde, mir Geschwindigkeiten angezeigt werden?

      Beste Grüße

      Antworten
      • Ich nehme an, dass ein Signal übertragen wurde. Das kann z.B. durch anderes (Infrarot)Licht, was den Empfänger erreicht hat passieren.

    • Fehlt eventuell eine While Schleife? Da er mir ja sofort Timeout ausgibt , wenn ich das Programm Starte und nicht die erste Lichtschranke durchbrechen. Kriege es leider immer noch nicht hin. Bin auch schon mehr mals den Aufbau durch gegangen.

      Beste Grüße

      Antworten
      • Wo im Code meinst du genau? Es kann auch an deinen Lichtschranken liegen, sodass durch diese „immer“ Strom fließt, wodurch keine echte Messung entsteht.

  44. Hallo Felix,

    erstmal danke für das tolle Tutorial.
    Ich würde gerne ein Sprintanlage für Sportler bauen.
    Dafür würde ich gerne gerne IR Sender und Empfänger verwenden. Weißt du, ob die IR Sender und Empfänger die du verwendet hast eine Entfernung von 2 Metern schaffen?
    Bzw gibt es da noch eine andere Möglichkeit?
    Viele Dank im voraus,
    Sascha

    Antworten
    • Hallo Sascha,
      diese lichtempfindlichen IR Dioden werden sich eher weniger eignen. Dafür würde ich einen Sharp IR Distanzsensor nehmen. Im „offenen“ Zustand misst er immer die selbe Distanz. Sobald jemand durch läuft, verringert sich die gemessene Distanz und du weißt, dass die Lichtschranke unterbrochen wurde. Details dazu hier: Infrarot Abstandsmessung mit dem Raspberry Pi (Sharp GP2Y0A02YK0F)
      Alternativ kannst du auch einen Laser + Photodiode nehmen.
      LG, Felix

      Antworten
    • okay, vielen Dank für die Antwort.
      der Distanzsensor ist mit etwas zu teuer, da ich 3 oder 4 auf 30 Meter aufstellen möchte.
      Die Idee mit den Photodioden ist mir auch gekommen, jedoch war ich mir dabei nicht ganz sicher. Aber da du das auch vorgeschlagen hast, werde ich das Mal auf die Art und Weise in Angriff nehmen.
      Ich werde dann eine Hülle um die Photodiode bauen, um sie vor Sonneneinstrahlung zu schützen.

      Nochmals vielen Dank und liebe Grüße,
      Sascha

      Antworten
  45. Hallo Felix,

    erstmal danke für das tolle Tutorial.
    Ich würde gerne ein Sprintanlage für Sportler bauen.
    Dafür würde ich gerne gerne IR Sender und Empfänger verwenden. Weißt du, ob die IR Sender und Empfänger die du verwendet hast eine Entfernung von 2 Metern schaffen?
    Bzw gibt es da noch eine andere Möglichkeit?
    Viele Dank im voraus,
    Sascha

    Antworten
    • Hallo Sascha,
      diese lichtempfindlichen IR Dioden werden sich eher weniger eignen. Dafür würde ich einen Sharp IR Distanzsensor nehmen. Im „offenen“ Zustand misst er immer die selbe Distanz. Sobald jemand durch läuft, verringert sich die gemessene Distanz und du weißt, dass die Lichtschranke unterbrochen wurde. Details dazu hier: Infrarot Abstandsmessung mit dem Raspberry Pi (Sharp GP2Y0A02YK0F)
      Alternativ kannst du auch einen Laser + Photodiode nehmen.
      LG, Felix

      Antworten
    • okay, vielen Dank für die Antwort.
      der Distanzsensor ist mit etwas zu teuer, da ich 3 oder 4 auf 30 Meter aufstellen möchte.
      Die Idee mit den Photodioden ist mir auch gekommen, jedoch war ich mir dabei nicht ganz sicher. Aber da du das auch vorgeschlagen hast, werde ich das Mal auf die Art und Weise in Angriff nehmen.
      Ich werde dann eine Hülle um die Photodiode bauen, um sie vor Sonneneinstrahlung zu schützen.

      Nochmals vielen Dank und liebe Grüße,
      Sascha

      Antworten
    • Die Paare von Pollin sind eher „Pseudo“ IR Module, da sie keine Signale senden, sondern eher wie Phototransistoren arbeiten. Du könntest aber mal versuchen einfach eine Spannung an den Datenpin zu legen.

      Antworten
    • Wieso eine Spannung an den Datenpin anlegen. Es ist laut Amazon ein „Out“ Pin. Ist die Frage, wie ich die Ausgangsströme irwie am Pi auslesen kann. LEDs sind noch nicht angekommen, daher konnte ich es noch nicht testen. Du hattest diese LEDs ja als Alternative vorgeschlagen, dann müsste es ja irwie gehen. Will nur prüfen, ob IR ankommt oder nicht.
      LG

      Antworten
    • Die Paare von Pollin sind eher „Pseudo“ IR Module, da sie keine Signale senden, sondern eher wie Phototransistoren arbeiten. Du könntest aber mal versuchen einfach eine Spannung an den Datenpin zu legen.

      Antworten
    • Wieso eine Spannung an den Datenpin anlegen. Es ist laut Amazon ein „Out“ Pin. Ist die Frage, wie ich die Ausgangsströme irwie am Pi auslesen kann. LEDs sind noch nicht angekommen, daher konnte ich es noch nicht testen. Du hattest diese LEDs ja als Alternative vorgeschlagen, dann müsste es ja irwie gehen. Will nur prüfen, ob IR ankommt oder nicht.
      LG

      Antworten
  46. Hallo Felix! Vielen Dank für dein Tutorial!

    Ich hab noch nicht viel Erfahrung mit Schaltungen und werde aus dem Datenblatt nicht schlau.. kannst du mir sagen welche Spannung und welchen Strom ich für die Fotodiode und den Empfänger mindestens brauche? Die Diode und der Fototransistor werden höchstens 1 cm voneinander entfernt sein. Außerdem möchte ich für das Projekt 7 Lichtschranken mit einem raspberry pi 3 verbinden, würde da die 3,3V oder 5V spannungsquelle ausreichen? Wenn du mir die Fragen beantworten könntest wäre ich dir sehr dankbar!

    LG, ein Student

    Antworten
    • Hallo Benjamin,
      die 3.3V reichen auch für mehrere Dioden und Empfänger aus. WIchtig ist dabei die Stromsärke und nicht die Spannung. Vielleicht kennst du das Beispiel der Flussbreite und Fließgeschwindigkeit?

      Antworten
  47. Hallo Felix! Vielen Dank für dein Tutorial!

    Ich hab noch nicht viel Erfahrung mit Schaltungen und werde aus dem Datenblatt nicht schlau.. kannst du mir sagen welche Spannung und welchen Strom ich für die Fotodiode und den Empfänger mindestens brauche? Die Diode und der Fototransistor werden höchstens 1 cm voneinander entfernt sein. Außerdem möchte ich für das Projekt 7 Lichtschranken mit einem raspberry pi 3 verbinden, würde da die 3,3V oder 5V spannungsquelle ausreichen? Wenn du mir die Fragen beantworten könntest wäre ich dir sehr dankbar!

    LG, ein Student

    Antworten
    • Hallo Benjamin,
      die 3.3V reichen auch für mehrere Dioden und Empfänger aus. WIchtig ist dabei die Stromsärke und nicht die Spannung. Vielleicht kennst du das Beispiel der Flussbreite und Fließgeschwindigkeit?

      Antworten
  48. Hallo, ich möchte Ihren Aufbau für ein Schulprojekt benutzen. Nun habe ich die Frage, wie weit der Sender und Empfänger der Lichtschranke auseinandersitzen dürfen. Da wir mit einem Lego-Mindstorme arbeiten müssten die Abstände deutlich größer sein, als in Ihrem Aufbau.

    Liebe Grüße

    Antworten
    • Hallo Marcel,
      der Abstand sollte nicht so groß sein (wenige cm). Es ist ein Tutorial geplant, in dem eine Lichtschranke per Laser gebaut wird. Könnte allerdings noch etwas dauern.
      LG, Felix

      Antworten
    • Vielen Dank für Deine schnelle Antwort.
      Das heißt ein Lego Mindstrome Roboter von ca 20 cm Breite könnte damit nicht gemessen werden?

      Liebe Grüße

      Antworten
      • Guten Abend,

        ich habe jetzt gerade mal die Schaltung so nachgebaut und das Skript in Python 2.x auf meinem Raspberry Pi zero gespeichert. Wenn ich das Modul dann laufen lasse kommt sofort in blau der Schriftzug „Timeout“ und in einem Fenster das aufgeht steht: „The program is still running! Do you want to kill it?“. Kannst Du mir sagen, wo der Fehler liegt?
        Liebe Grüße

  49. Hallo, ich möchte Ihren Aufbau für ein Schulprojekt benutzen. Nun habe ich die Frage, wie weit der Sender und Empfänger der Lichtschranke auseinandersitzen dürfen. Da wir mit einem Lego-Mindstorme arbeiten müssten die Abstände deutlich größer sein, als in Ihrem Aufbau.

    Liebe Grüße

    Antworten
    • Hallo Marcel,
      der Abstand sollte nicht so groß sein (wenige cm). Es ist ein Tutorial geplant, in dem eine Lichtschranke per Laser gebaut wird. Könnte allerdings noch etwas dauern.
      LG, Felix

      Antworten
    • Vielen Dank für Deine schnelle Antwort.
      Das heißt ein Lego Mindstrome Roboter von ca 20 cm Breite könnte damit nicht gemessen werden?

      Liebe Grüße

      Antworten
      • Guten Abend,

        ich habe jetzt gerade mal die Schaltung so nachgebaut und das Skript in Python 2.x auf meinem Raspberry Pi zero gespeichert. Wenn ich das Modul dann laufen lasse kommt sofort in blau der Schriftzug „Timeout“ und in einem Fenster das aufgeht steht: „The program is still running! Do you want to kill it?“. Kannst Du mir sagen, wo der Fehler liegt?
        Liebe Grüße

  50. Hallo,

    ich habe mir diese Lichschranke gekauft:

    http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=172344546765&ssPageName=ADME:X:DERP:DE:1123

    Folgendes, ich habe eine Holzplatte mit einem Loch (Breite von Pfandflaschen), darunter befindet sich ein ganz normaler großer Sack, in dem die Flaschen reinfallen sollen. Nun habe ich mir überlegt in diese Holzplatte die Lichtschranke zu integrieren, um somit die Anzahl der hineingeworfenen Flaschen zu zählen. Bei genau 40 Pfandflaschen, sollte der Pi mir eine kurze Benachrichtung per Mail schicken, um 10 Euro an Pfand abzugeben 🙂 Optimal wäre noch eine 7- Segment Anzeige, um die aktuelle Anzahl an Flaschen ablesen zu können.

    Wie wäre ein Beispiel Skript für so ein Vorhaben? Z.b. mit Python
    Es spielt keine Rolle aus welchem Material die Pfandflaschen bestehen, da ich es privat verwenden möchte und auf den Pfandwert achte
    Wie sieht es mit der Reflexion von Plastik aus?

    Liebe Grüße und Danke im Vorraus

    Roko

    Antworten
  51. Hallo,

    ich habe mir diese Lichschranke gekauft:

    http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=172344546765&ssPageName=ADME:X:DERP:DE:1123

    Folgendes, ich habe eine Holzplatte mit einem Loch (Breite von Pfandflaschen), darunter befindet sich ein ganz normaler großer Sack, in dem die Flaschen reinfallen sollen. Nun habe ich mir überlegt in diese Holzplatte die Lichtschranke zu integrieren, um somit die Anzahl der hineingeworfenen Flaschen zu zählen. Bei genau 40 Pfandflaschen, sollte der Pi mir eine kurze Benachrichtung per Mail schicken, um 10 Euro an Pfand abzugeben 🙂 Optimal wäre noch eine 7- Segment Anzeige, um die aktuelle Anzahl an Flaschen ablesen zu können.

    Wie wäre ein Beispiel Skript für so ein Vorhaben? Z.b. mit Python
    Es spielt keine Rolle aus welchem Material die Pfandflaschen bestehen, da ich es privat verwenden möchte und auf den Pfandwert achte
    Wie sieht es mit der Reflexion von Plastik aus?

    Liebe Grüße und Danke im Vorraus

    Roko

    Antworten
  52. Hallo,
    ich hab die LS nachgebaut, hat auch auf Anhieb geklappt -also eine super Anleitung.
    Nur dachte ich, ich könnte damit eine Strecke von ca 15cm überwachen (Abstand Sender-Empfänger)
    klappt aber nicht, wie ich dann später gelesen habe. Was könnte ich jetzt machen??????
    LG Jörg

    Antworten
  53. Hallo,
    ich hab die LS nachgebaut, hat auch auf Anhieb geklappt -also eine super Anleitung.
    Nur dachte ich, ich könnte damit eine Strecke von ca 15cm überwachen (Abstand Sender-Empfänger)
    klappt aber nicht, wie ich dann später gelesen habe. Was könnte ich jetzt machen??????
    LG Jörg

    Antworten
  54. Hallo!
    Könnte ich die Schaltung benutzen, um die Geschwindigkeit eines RC Autos zu messen? Man könnte statt einer vorgegebenen Strecke von 10cm einen Punkt auf dem Reifen erfassen und so die aktuelle Geschwindigkeit ausrechnen lassen. Oder geht das einfacher?

    Antworten
  55. Hallo!
    Könnte ich die Schaltung benutzen, um die Geschwindigkeit eines RC Autos zu messen? Man könnte statt einer vorgegebenen Strecke von 10cm einen Punkt auf dem Reifen erfassen und so die aktuelle Geschwindigkeit ausrechnen lassen. Oder geht das einfacher?

    Antworten
  56. Vielen Dank für die klasse Erläuterungen! Als Anfänger in Sachen Pi habe ich mich mal an dieses Projekt rangetraut, weil ich die Geschwindigkeit von HotWheels Autos auf einer typischen HotWheels Bahn messen wollte. Hat auch schon mal alles auf Anhieb geklappt.
    Jetzt will ich die Messwerte nur nicht mehr auf dem Monitor anzeigen, sondern auf einem kleinem OLED Display. Das wird dann der nächste Meilenstein für mich. Mal sehen, wie weit ich damit komme. Aber an dieser Stelle nochmal Danke für die vielen nützlichen Infos auf dieser Seite.

    Antworten
  57. Vielen Dank für die klasse Erläuterungen! Als Anfänger in Sachen Pi habe ich mich mal an dieses Projekt rangetraut, weil ich die Geschwindigkeit von HotWheels Autos auf einer typischen HotWheels Bahn messen wollte. Hat auch schon mal alles auf Anhieb geklappt.
    Jetzt will ich die Messwerte nur nicht mehr auf dem Monitor anzeigen, sondern auf einem kleinem OLED Display. Das wird dann der nächste Meilenstein für mich. Mal sehen, wie weit ich damit komme. Aber an dieser Stelle nochmal Danke für die vielen nützlichen Infos auf dieser Seite.

    Antworten
  58. Hallo Felix,
    zunächst einmal ein großes Lob hierfür Deine Projektseite.
    Dazu habe ich folgende Frage:
    Wie ließe sich das Projekt dahin gehend abwandeln, dass anstatt die Geschwindigkeit nur Unterbrechungen in der Schranke/Lichtstrahl registriert bzw. gezählt werden.
    Also wie ein elektronisches Zählwerk?

    Antworten
  59. Hallo Felix,
    zunächst einmal ein großes Lob hierfür Deine Projektseite.
    Dazu habe ich folgende Frage:
    Wie ließe sich das Projekt dahin gehend abwandeln, dass anstatt die Geschwindigkeit nur Unterbrechungen in der Schranke/Lichtstrahl registriert bzw. gezählt werden.
    Also wie ein elektronisches Zählwerk?

    Antworten
  60. Hallo hätte da ein paar Fragen zur Geschwindigkeitsmessung. Den raspberry habe ich mir schon zugelegt. Aber bei der Lichtschranke hätte ich gerne eine Methode wo auf der einen Seite die Diode und auf der anderen Seite eine Art Katzenauge ist. Bei der Entfernung von Diode zum Katzenauge müsste der Abstand wenigsten 1,60 cm betragen. Nun meine Frage: gibt es Dioden welche den Abstand mühelos überbrücken können und wenn ja, welche kann ich da kaufen. Ich glaube, das wenn es sowas gibt bestimmt auch der Schaltplan von oben noch anglichen werden müsste. Danke erst einmal für die Hilfe

    Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Blog abonnieren

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