PIR Bewegunssensor funktioniert nicht immer

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich habe mir diese PIR Bewegungssensoren bei amazon bestellt, um genau zu sein dieses Paket hier:
    http://www.amazon.de/Pyroelectrische-Infrarot-Bewegung-Sensor-Detektor/dp/B008AESDSY/ref=sr_1_1?ie=UTF8&qid=1448885772&sr=8-1&keywords=5x+Pyroelectrische+Infrarot+PIR+Bewegung+Sensor+Detektor+Modul&tag=psblog-21 [Anzeige]

    Die Sensoren habe ich mit vorhandenen Python Codes aus dem Internet getestet. Um sicher zu gehen, habe ich zwei verschiedene getestet.

    http://tutorials-raspberrypi.de/gpio/bewegungs…y-pi-betreiben/
    https://klenzel.de/1857

    In der ersten Runde lief auch alles wie geplant, aber die Zeit war zu kurz. Also Programm ausgeschaltet, Timer eingestellt und neugestartet. Danach lief das Programm nicht mehr, bzw wurde der PIR nicht erkannt, gab nichts aus oder wie auch immer. Ich hatte noch genügend, daher habe ich einfach mal den nächsten getestet, gleiche Spiel von vorne. Dann natürlich hin und her probiert, an den Drehrädchen hoch und runter gedreht. Irgendwann im laufenden Programm hat das Programm den PIR doch erkannt und es funktionierte. Nur beim nächsten Start wieder nicht.

    Ist die Hardware defekt? Ist an dem Code etwas falsch?

  • Der Code vom 1.Link ist fehlerhaft - es fehlt die Einrückung in der Callback Funktion. Desweiteren läuft das Script nur 100 Sekunden und wird danach beendet, da auch bei der "while" die Einrückung fehlt.
    Das Script vom 2.Link ist auch murks aber da passen zumindest die Einrückungen...

    Das funktioniert 100%:
    [code=php]
    #!/usr/bin/python2
    import time
    import RPi.GPIO as GPIO

    PIR_PIN = 24
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(PIR_PIN, GPIO.IN)

    def interrupt_event(pin):
    zeit = time.strftime('%d.%m.%Y %H:%M:%S')
    print '{} -> GPIO {} ausgeloest! Motion detected' . format(zeit, pin)

    def main():
    try:
    GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=interrupt_event, bouncetime=100)
    #keep script running
    while True:
    time.sleep(1)
    except KeyboardInterrupt: # does not work if it runs in background.
    print "Quit"

    if __name__ == '__main__':
    main()
    GPIO.cleanup()
    print "Ende des Scripts"
    [/php]

  • Danke, werde ich später mal zuhause testen.

    Allerdings funktionierte der Sensor beim Programmstart schon nicht, drehe ich an den Reglern rum, fängt der sich manchmal.
    Aber ich teste das auf jeden Fall mal. :thumbs1:

  • Ich habe mal deinen Code getestet, der ist wie du schon sagst korrekt, aber die Hardware macht da trotzdem noch Probleme.

    Jetzt wieder durch drehen am Rädchen versucht das Programm zum laufen zu bringen, dabei bin ich mit dem Schraubendreher gegen das Stückchen Blech gekommen. Habe jetzt festgestellt, immer wenn ich bei deinem Programm dagegen tippe (nur mit etwas metallischen), beginnt er was zu erkennen. Dann läuft das Programm ganz normal.
    Stoppe ich es und starte es erneut, meistens wieder nix, bis ich gegen tippe.

    Wenn ich das mit den anderen Programmen mache, ist das nicht sicher, das die dann laufen. Sehr sehr komisch das ganze. Da muss doch auf jeden Fall ein Problem in der Hardware sein.

    Woher habt ihr eure Bewegungssensoren geholt?

  • Hallo Pascal,
    hebe die gleichen im Nov. gekauft und jetzt gerade getestet, habe es allerdings am Arduino gemacht, bin Anfänger und hab mir ein sketch zusammengebastelt. Der linke Poti ist für die Einschaltzeit nach Bewegungserkennung. Es sind kreuzweise Kerben drin. Ich beziehe mich auf diejenige, bei der es eine Beschriftung (501) gibt, als Winkelangaben nehme ich auch die Uhrzeiten:
    Bei 1:00 Uhr (30 °) ist der Anschlag, niedrigster Wert, ca 4 sek., die Werte streuen bei etwa 10%.

    3:00 Uhr (90°) - 15 sek
    4:30 Uhr (135°) - 2 min
    6.00 Uhr (180°) - 4 min
    9.00 Uhr (270°) - >8 min (starke Streuung)

    Bei Eingangspannung 5V:
    Ohne Bewegung sendet er LOW (<0,2V)
    Bei Bewegungserkennung HIGH (3,3V)

    Wenn Du nun den Poti für die Einschaltzeit ziemlich weit hoch gedreht hast und die Speisespannung zwischen den einzelnen Versuchen nicht unterbrichst, kannst Du möglicher Weise keine Reaktion bekommen.

    Viel Erfolg,
    vdagamb

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!