Home > Tutorials > Bewegungsmelder am Raspberry Pi auslesen

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

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (3 votes, durchschnittlich: 4,00 von 5)
Loading...

Über raspberry.tips

10 Kommentare

  1. TIPPFEHLER: “Monitor mit Bewe N gungsmelder steuern”

  2. Hallo, gibt es ein Tutorial über die vorherige Version mit der PI-Kamera als Bewegungsmelder zum Einschalten des Bildschirms, wenn jemand den Raum / die Halle betritt?

  3. Danke für die Anleitung. Wie kann man die Zeit bis zum Ausschalten über das Skript steuern bei PIR ohne Einstelltmöglichkeiten. Hab ein Mini PIR und der Monitor geht nach 5 sek aus. Wenn ich das time.sleep erhöhe dauert es auch entsprechend bis der Monitor wieder startet

  4. Super Anleitung! Danke.
    Macht es denn einen Unterschied wenn ich den Pi mit einem HDMI>DVI Adapter am Monitor betreibe? Der Monitor den ich nutze, hat leider keinen HDMI Eingang.

  5. Habe die Anleitung genau befolgt, aber irgendwie tut sich nichts in der Console. Hänge noch beim Testen des Sensors fest. Habe die Befürchtung das dieser kaputt ist. Gibt es eine Möglichkeit zu testen ob er noch funktionstüchtig ist? Bin für jeden Tipp offen, wäre super wenn du oder jemand anderes mir helfen könnte.

  6. “# GPIO definieren, 7 da bei mir der Sensor auf Pin7 steckt
    GPIO_PIR = 31”

    da sollte 7, nicht 31 :)

  7. Kann man an einem Raspberry auch mehrere Bewegungsmelder anschließen? Würde sie dann gerne in FHEM einbinden und z.B. verschiedene HUE Lampen Steuern. Ist das möglich oder müsste ich mich da nach etwas anderem umsehen?

  8. Hi,

    cooles Script! funktioniert soweit echt gut. Allerdings startet bei mir der Bildschirm automatisch nach der eingestellten Triggerzeit + 10-15 Sekunden. Und das ganze in der Schleife also wirklich ausgeschaltet, wenn sich vor dem PIR nichts tut, bleibt der Bildschirm nicht. Was mache ich Falsch? hat jemand vielleicht einen Tipp?

Schreibe einen Kommentar

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