Raspberry Video Camera – Teil 5: Passiver Infrarot Bewegungssensor

Im vorangegangenen Artikel habe ich übersichtsweise mehrere Möglichkeiten angerissen, wie die Oachkatzl-Video-Kamera ausgelöst werden kann. Eine Möglichkeit ist der PIR-Sensor, ein passiver Infrarot-Bewegungssensor, um den es in diesem Beitrag im Detail geht. Der PIR-Sensor ist klein, kostet nur wenige Euro und ist mit drei Drähten einfach mit dem Raspberry Pi zu verbinden. Das Signal, das der Sensor liefert, ist binär und simpel, entweder es wird eine Bewegung erkannt, oder nicht. Und genauso einfach ist die Auswertung am Raspberry Pi.


Zu Anfang wieder ein Oachkatzl-Video. Mehr davon gibts in meinem YouTube-Kanal.

Zur Wahrung deiner Privatsphäre wird erst eine Verbindung zu YouTube hergestelt, wenn du den Abspielbutton betätigst.

PIR Bewegungssensor HC-SR501

In Haus- und Grundstücksumfeld sind derartige Sensoren inzwischen weit verbreitet, was sicher ihrem geringen Preis geschuldet ist. Mit einem PIR-Sensor lässt sich das Licht im Bad automatisch einschalten oder nachts bei Annäherung einer Person im Vorgarten die Beleuchtung anmachen, um potentielle Einbrecher abzuschrecken. Sogar als Komponenten einer Einbruchmeldeanlage können sie verwendet werden.

Das kleine Modul HC-SR501 kann eine 230V-Lampe nicht direkt schalten, sehr wohl aber den GPIO-Eingang des Raspberry Pi. Sehen wir uns das kleine Teil einmal näher an. Unter der halbrunden Plastikkappe, die einen Durchmesser von 23mm hat und vorsichtig abgenommen werden kann, befindet sich der eigentliche Sensor. Die Plastikkappe dient als Fresnel-Linse und leitet das Infrarot-Licht aus verschiedenen Richtungen auf den Chip. Auf der Platinenunterseite befinden sich die restliche Elektronik, zwei Potentiometer zur Einstellung der Empfindlichkeit und der Schaltverzögerung, ein Jumper zur Mode-Wahl und die drei Anschluss-Pins. Die Platine selbst ist 32 x 24mm groß. Der Sensor reagiert auf die Änderung von infrarotem Licht in seinem Erfassungsbereich. Der wird mit 140 Grad angegeben und einer Reichweite zwischen 3 und 7 Metern. Als Betriebsspannung verträgt das Modul 5 – 20V Gleichspannung und liefert am Ausgang 3,3V als High-Signal bzw. 0V als Low.. Der Stromverbrauch ist mit angegebenen 65μA zu vernachlässigen.

Anschluss an den Raspberry Pi

Zusätzliche Bauelemente wie zum Beispiel Vorwiderstände werden nicht benötigt. Mit drei Jumper-Cables (weiblich – weiblich) können die drei Stifte des PIR-Sensors direkt mit der GPIO-Leiste des Raspberry Pi verbunden werden. Und zwar entsprechend nachfolgender Tabelle. Die Bezeichnungen sind am PIR-Sensor auf die Platine gedruckt, werden aber durch die Plastikkappe verdeckt. Die also vorsichtig abnehmen, oder am Bild weiter unten orientieren.

PIR Raspberry Pi
VCC +5V 2 (5V)
OUT 12 (GPIO 18)
GND 6 (Masse)

Natürlich können auch andere GPIO-Pins verwendet werden, falls der Anschluss 12 bereits anderweitig genutzt wird. Das muss dann halt im Programm entsprechend angepasst werden.

Einstellungen

Schauen wir uns zuerst in nebenstehendem Schaubild die beiden Potentiometer an. Rechts wird die Sensorempfindlichkeit eingestellt – also wie weit der Sensor in die Entfernung schaut, bzw, wir klein das Objekt sein darf, dass ein Signal noch auslöst. Für ein Eichhörnchen in ca. 1m Entfernung kann die Empfindlichkeit ruhig auf Minimum (Linksanschlag) gedreht werden. Das ist immer noch viel empfindlicher als nötig.

Am linken Drehwiderstand lässt sich die Signaldauer, bzw. die Abschaltverzögerung einstellen. Wenn ich nochmal die Analogie zum automatischen Lichtschalter bemühe, dann wäre das die Zeitdauer, die das Licht brennen soll, beziehungsweise nach welcher Zeit es erlischt, wenn keine Bewegung mehr erkannt wird. Wobei das Schaltverhalten abhängig vom Mode-Schalter (gelber Jumper) ist. 20s wäre ein guter Wert für eine Oachkatzl-Kamera, wobei Zeiten zwischen ca. 3s und mehreren Minuten eingestellt werden können.

Leider ist das Einstellen der beiden Potentiometer äußerst fummelig. Kleinste Bewegungen mit dem Schraubendreher bewirken gleich mehrere Sekunden Unterschied in der Signaldauer. Ich empfehle deshalb dringend, diese Einstellungen vorab bequem am Arbeitstisch vorzunehmen und nicht erst später draußen auf der Leiter, wenn die Kamera bereits gut ausgerichtet ist. Das Verfahren ist durchaus zeitaufwendig.

Zeitverhalten

Bleibt noch der Jumper für die Umstellung des Schaltverhaltens. Auf der Platine sind die beiden Steckmöglichkeiten des gelben Jumpers mit römisch I und II gekennzeichnet. Die beiden Modi steuern das Signalverhalten der Platine in Abhängigkeit von erkannter Bewegung. Das folgende Signaldiagramm soll die Unterschiede veranschaulichen.

Bei Mode I geht das Ausgangssignal dann auf High, wenn der Sensor eine Bewegung erkennt (Sekunde 1 auf der Zeitskala). Unabhängig davon, was weiter passiert, bleibt das Signal für den Zeitraum A auf High um dann für eine Zeit B auf Low zu gehen. Erst danach (Sekunde 11) ist der Sensor wieder scharf, um eine erneute Bewegung signalisieren zu können.

Die Zeit A ist dabei die Zeit, die mit dem linken Potentiometer (Verzögerung) eingestellt wird. Im Signaldiagramm beträgt sie beispielhaft 4s. Die Zeit B ist eine unveränderbare Downzeit der Platine, während der keine neue Bewegung erkannt werden kann. Bei mir beträgt sie 6s.

Mode I reagiert also auf den ersten der drei Bewegungsimpulse im Schaubild. Alle weiteren Bewegungen innerhalb von A und B haben keine Auswirkung.

Mode II entspricht eher dem, was man als Lichtschalter mit Bewegungssensor kennt. Die Bewegung bei Sekunde 1 setzt auch hier den Signalausgang auf High. Und auch hier beginnt die Zeit A zu laufen. Erneute Bewegungen vor Ablauf der Zeit A setzen den Timer aber immer wieder zurück, so dass das Signal erst wieder auf Low geht, wenn über eine Zeitspanne von A Sekunden keine Bewegung mehr erfolgt ist. Die beiden weiteren Bewegungen verlängern also das Signal zeitlich.

Es ist leicht zu erkennen, dass sowohl für einen Lichtschalter, als auch für ein Eichhörnchen vor der Kamera, der Mode II die geeignete Einstellung ist. Mit dem Potentiometer Verzögerung geben wir die Abschaltverzögerung vor und so lange sich das Eichhörnchen während dieser Zeit vor dem Sensor bewegt, wird das Signal ununterbrochen auf High bleiben. Erst wenn keine weitere Bewegung mehr erfolgt, geht es nach der eingestellten Verzögerungszeit auf Low zurück.

Erfahrungen

Machen wir uns nichts vor, der Bewegungssensor HC-SR501 ist ein einfaches Massenerzeugnis aus Fernostfertigung. Die Fertigungstoleranzen sind dabei erheblich. So soll die maximal einstellbare Verzögerungszeit 200s betragen, ich habe es auf einem Modul getestet und komme auf 450s. Aber der Sensor ist billig und ich empfehle jedem, der nicht nur mal kurz damit experimentieren möchte, sich gleich einen Dreiersatz zu kaufen, was kaum mehr kostet als ein einziges Modul. Dann macht es auch nichts aus, wenn ein Teil gar nicht funktioniert oder (wie bei mir) Fehlsignale produziert durch Einstrahlung des Raspberry Pi in den Sensor.

Eine weitere Frustquelle ist die Einstellung der beiden Potentiometer. Das ist ist schwierig und zeitaufwendig.

Die Erkennungsqualität ist gut, wenn der Hintergrund statisch ist und sich nur das zu detektierende Objekt vor dem Sensor bewegt. Und wenn keine Lichtquellen in den Sensor strahlen. Der Name Passiver Infrarot Sensor suggeriert zwar, dass nur ein warmes Objekt, also Mensch und Tier zu einem Signal führen würden. Das ist in der Realität aber definitiv nicht so. Auch die Äste einer Kiefer, wenn sie sich im Wind bewegen, lösen den Sensor aus, selbst bei minimal eingestellter Empfindlichkeit. Bei bewegten Hintergründen ist so ein PIR-Sensor also nicht die erste Wahl.

Für den Selbstbau im Raspberry Pi Umfeld sollte dieser Bewegungssensor aber trotzdem in Betracht gezogen werden, wenn es der Anwendungsfall erlaubt. Das Ding ist billig, der Anschluss an den RasPi ist extrem einfach und der Programmieraufwand ist (wie ich in einem weiteren Artikel zeige) sehr gering.


Weitere Artikel in dieser Kategorie:

2 Kommentare

  1. Christoph

    Hallo Helmut,

    dickes Lob an dieser Stelle. Es ist alles sehr ausführlich dokumentiert und durchdacht. Es war mir ein Vergnügen dies ohne große eigene Tüftelei nachzubauen.

    Ich habe u. g. diesen Sensor: https://blog.squix.org/2016/05/esp8266-peripherals-mini-pir-motion-sensor.html.
    Er hält augenscheinlich 2 Sek. bei Detektion nach.

    Wenn ich im motioninterrupt.py hier:

    # Signal from high to low
    else:
    os.remove(trigger_path+trigger+trigger_fileextension)
    print(„{0:%Y-%m-%d-%H-%M-%S} – Motion terminated“.format(triggertime))
    print()

    ein time.sleep einfügen würde, könnte ich doch auch die „Nachlaufzeit“ zu den 2 Sek. bestimmen, richtg?

    Danke und
    Gruß

    Antworten
    1. Helmut (Beitrag Autor)

      Danke für die Blumen.

      Das sollte eigentlich gar nicht nötig sein. Wenn der Sensor bereits einen Nachlauf von 2 Sekunden bringt, brauchst Du ja nicht noch programmtechnisch welchen hinzufügen.

      Antworten

Schreibe einen Kommentar zu Christoph Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert