Passive Infrared Sensor Raspberry Pi GPIO

PIR Motion Sensor in FHEM integrieren

PIR Motion Sensor in FHEM integrieren

Der günstige Bewegungsmelder PIR (= Passive Infrared Sensor) lässt sich Problemlos an die GPIO Ports des Raspberrys anschließen und über eine Python Skript oder direkt über FHEM auswerten. Durch kleine Stellschrauben (Potis) kann man außerdem die Sensitivität und Dauer des Signals einstellen. Über einen kleinen Jumper stellt man den Betriebsmodus ein (dazu weiter unten mehr)

Gliederung

Anschluss

GPIO Belegung Raspberry Pi 3

Achtung: Pin Nummer und GPIO Nummer sind verschieden (siehe Diagramm rechts)

VCC = an einen der 5V Pins (z.B. Pin 02 oder Pin 04)
OUT = an beliebigen GPIO Pin, in meinem Fall 22 (=GPIO 25)
GND = an irgendeinen GND Anschluss

Schließe die Pins des PIR einfach an die entsprechenden Pins am Raspberry. Hierfür verwendest du am besten Jumper Kabel.

Man kann sich die Funktionsweise des PIR Motion dann in etwas so vorstellen: Der PIR bekommt dauerhaft Spannung vom 5v Pin. Wird Bewegung erkannt, lässt der PIR Motion ein wenig davon durch (OUT). Diese Spannung wird wiederum vom Raspberry GPIO 25 erkannt. Dem Raspberry müssen wir aber noch mitteilen, was passiert, wenn Spannung erkannt wurde.

In meinem Fall möchte ich damit das offizielle Raspberry Pi Touch Display an und ausschalten.

An- Ausbefehle des Displays

Man kann das Display über die Konsole wie folgt aktiveren oder deaktivieren

Aus:

sudo sh -c " echo 1 > /sys/class/backlight/rpi_backlight/bl_power"

An:

sudo sh -c " echo 0 > /sys/class/backlight/rpi_backlight/bl_power"

 

Alternative Befehle
Aus:

echo 1 | sudo tee /sys/class/backlight/rpi_backlight/bl_power

An:

echo 0 | sudo tee /sys/class/backlight/rpi_backlight/bl_power

Skript für die automatische Displaysteuerung

Wir erstellen ein Python Skript, das die Befehle automatisch ausführt wenn der PIR Sensor eine Bewegung erkannt hat:

Neuen Ordner mit dem Namen „Display“ erstellen

sudo mkdir display

In den Ordner „Display“ wechseln

cd display

im Ordner „Display“ ein Python Skript mit dem Namen „pirdisplay.py“ erstellen

sudo nano pirdisplay.py

mit folgenden Inhalt füllen:

import RPi.GPIO as GPIO
import time
import os

sensor = 25

GPIO.setmode(GPIO.BCM)
GPIO.setup(sensor, GPIO.IN, GPIO.PUD_DOWN)

previous_state = False
current_state = False


while True:
    time.sleep(0.1)
    previous_state = current_state
    current_state = GPIO.input(sensor)
    if current_state != previous_state:
        new_state = "HIGH" if current_state else "LOW"
        print("GPIO pin %s is %s" % (sensor, new_state))
        if current_state:  # new
            os.system("echo 0 | sudo tee /sys/class/backlight/rpi_backlight/bl_power")

        else:
            os.system("echo 1 | sudo tee /sys/class/backlight/rpi_backlight/bl_power")

Python Skript ausführbar machen

sudo chmod +x /home/pi/display/pirdisplay.py

Autostart des Skripts

den Pfad des Skripts in die Datei rc.local eintrangen

sudo nano /etc/rc.local

folgendes vor exit0 einfügen

sudo python /home/pi/display/pirdisplay.py &

Achtung: Das & muss unbedingt dabei sein (Das & bewirkt, dass die rc.local weiter abgearbeitet und nicht darauf gewartet wird, dass das Script fertig ist. Bei einem Script mit Endlosschleife würde sonst ewig gewartet werden und der Pi bleibt beim Starten hängen.)

Neustart des Raspberry

sudo reboot –h now

Fertig

 

Um den Prozess irgendwann manuell zu beenden:

sudo pkill –f pirdisplay.py

Anbindung an FHEM

Achtung: Schaue dir zuerst meinen Beitrag zu GPIO-Ports am Raspberry mit FHEM an.

PIR am GPIO Port 25 in FHEM anlegen (Ersetze die GPIO Port Nummer mit deiner eigenen)

define rpi_PIR RPI_GPIO 25
attr rpi_PIR direction input 
attr rpi_PIR interrupt both 

EinstellungsmöglichkeitenPIR Sensor mit Jumper und Potis

Der PIR Motion Sensor hat 2 Stellschrauben (Poti) und einen Jumper. Damit lassen sich folgende Einstellungen vornehmen

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

Stellschrauben

  • Time bestimmt wie lange Data auf High bleibt wenn Bewegung erkannt wurde
  • Sensitive bestimmt die Sensitivität der Bewegungserkennung
Über den Author

Emanuel

teilt seine Begeisterung im Bereich Technik, DIY und Hausautomatisierung gerne auf seinem Blog coldcorner.de

Abonnieren
Benachrichtige mich bei
2 Kommentare
Ältester
Neuster Am meisten bewertet
Inline Feedbacks
View all comments
6 Jahre zuvor

[…] PIR Motion Sensor in FHEM integrieren […]

6 Jahre zuvor

[…] PIR Motion Sensor in FHEM integrieren […]