Bewegungsmelder am Raspberry Pi auslesen

Bereits vor einiger Zeit habe ich meinen Wall Mounted Google Calendar mit einer Bewegungserkennung, die automatisch den Bildschirm an und abschaltet, (Motion Tracking) via Raspberry Pi Kamera betrieben. Leider war ich langfristig nicht mit der Funktion der eingesetzten Motion Software, welche das Tracking übernimmt, zufrieden da ich öfters die Parameter anpassen musste und Bewegungen im Allgemeinen nicht immer erkannt wurden.

Da ich meinen Google Kalender allerdings weiter betrieben möchte habe ich mich dazu entschieden einen passiven Infrarot Bewegungsmelder als Sensor einzusetzen. Der Bewegungsmelder ist im Vergleich zur Pi Cam recht günstig, wird mit 5V betrieben (der Ausgang ist 3,3V), und kann anhand von Stellschrauben ohne größere Probleme bezüglich der Sensibilität und der Zeitverzögerung beim Auslösen eingestellt werden. Der Erfassungsbereich liegt bei den meisten Geräten um die 120Grad.

Infrarot-Bewegungsmelder-raspberry-pi

Benötigte Hardware

Der RasPi PIR Sensor

  • Der SW1 Jumper bestimmt das Triggering Verhalten von Data
    • Position 1 – Bei Bewegung wird alle Sekunde Data auf High gesetzt (Auf dem Bild zu sehen)
    • Position 2 – Bei Bewegung bleibt Data auf High (Die verwende ich, Jumper nach unten setzen)
  • Die Time Stellschraube bestimmt wie lange Data auf High bleibt wenn Bewegung erkannt wurde
  • Die Sensitive Stellschraube bestimmt die Sensität der Bewegungserkennung
  • Die Anschlüsse von Links nach Rechts sind GND, DATA, 5V
  • Die Reichweite beträgt bis zu 7 Meter (abhängig von Sensor)

pir-sensor-anschlüße

Die Verkabelung

Die Verkabelung des Bewegungsmelders ist recht einfach, die PINs werden wie folgt verbunden

  • VCC => 5V => PIN2
  • Data => 3,3V Datenausgang high/low => PIN7
  • GND => Erde => PIN6

bewegungsesnor Verkabelung

Monitor mit Bewengungsmelder steuern

Es ist relativ einfach den Sensor abzufragen, der Sensor hat einen Digitalen Ausgang, somit geht, wenn eine Bewegung erkannt wird, der Ausgang auf High bzw. Low wenn keine mehr erkannt wird. Wir müssen also nur den Status High / Low am GPIO Pin, an welchem der Sensor angeschlossen ist, abfragen. Stellt sicher das ihr den Jumper, wie oben beschrieben, auf die untere Position gesetzt habt (Data bleibt high solange Bewegung erkannt wird).

Den Sensor Testen

Zum Einstellen der Zeit und der Sensibilität eignet sich folgendes Programm da wir direkt auf der Konsole eine Ausgabe bekommen wenn Bewegung erkannt wurde, bisher habe ich keinen Python Code verwendet, entscheide mich aber der Einfachheit halber bei diesem Projekt für Python.

Wir erstellen eine Python Datei mit dem Editor Nano

Die Datei bekommt folgenden Inhalt

Gespeichert wird das Programm mit STRG-X, Y und Enter. Den Code könnt ihr nun mit folgendem Befehl ausführen.

bewegungsmelder python pogramm

Ich habe den Time und Sensivität Drehregler mit einem kleinen Schraubenzieher angepasst bis es zu meinen Anforderungen gepasst hat (~3 Minuten High).

Bildschirm steuern

Da ich einen Bildschirm mit „Energy Star“ verwende, der schwarz wird wenn er das VGA/DVI-Signal verliert und dann nach kurzer Zeit selbst in den Standby wechselt, muss ich nichts weiter tun als beim erkennen einer Bewegung via Kommando Zeile den HDMI Ausgang an bzw abzuschalten, auch hier verwende ich wieder ein Python Script, ähnlich dem Test-Script von oben

Das Script führe ich bei jedem Startvorgang automatisch aus, siehe Cronjob als root einrichten. Da der Bildschrim zwecks Frambuffer Problematik nach dem erneuten anschalten oftmals schwarz bleibt müssen wir die x11 Utils installieren um einen Workarround zu schaffen, im Script wird z.B. via xrefresh -d :0 & chvt die Problematik umgangen, zusätzlich die Datei noch mit +x ausführbar machen.

Zusätzlich muss, um den Screensaver zu deaktivieren, in der Datei „/etc/xdg/lxsession/LXDE/autostart“ folgendes bearbeitet werden, hier meine Datei.

Nach Montage auf meinem Raspberry Pi HAT Prototyping Board neben meine 433MHz Modulen sieht das ganze so aus

WP_20150611_22_29_57_Pro