Raspberry Pi Bewegungsmelder PIR anschließen und steuern

Das PIR Bewegungssensor Modul bietet dank seiner Bauweise eine sehr einfache Nutzung, da es die Komponenten schon verbaut hat. Raspberry Pi Bewegungsmelder oder Anwendungen in der Hausautomation und/oder im Außenbetrieb (als klassischer Bewegungsmelder) sind damit leichter denn je umzusetzen. Die Inbetriebnahme zeige ich in diesem Tutorial.

Dieser Arduino/Raspberry Pi Bewegungsmelder reagiert und Bewegungen, wobei die „Stärke“ der Bewegung mittels eines einstellbaren Widerstands (Poti) geregelt werden kann. Man kann den Bewegungssensor also sehr sensibel einstellen, oder aber versuchen „Rauschen“ zu vermeiden. Sobald sich etwas bewegt wird ein Signal gesendet, was vom Raspberry Pi empfangen und darauf reagiert werden kann.

 

Zubehör

 

Aufbau

Der Aufbau ist sehr einfach, da nur ein Pin bei Bewegung aktiviert werden muss. Die Pins am PIR sind beschriftet:

  • VCC an Pin 2 (5V)
  • OUT an Pin 16 (GPIO 23)
  • GND an Pin 6 (Ground)

Raspberry Pi Bewegungsmelder PIR Anschluss

Software zum Steuern des Raspberry Pi Bewegungsmelder

Zum Ausführen des Codes erstellen wir eine neue Datei

sudo nano pir.py

mit folgendem Inhalt:

Hierbei wird über GPIO.add_event_detect eine Funktion festgelegt, die aufgerufen wird, sobald ein Strom fließt. Die genaue Funktionsweise kann hier nachgelesen werden. Andernfalls könnte man auch eine Endlosschleife deklarieren, wobei bei jedem Aufruf der Status des GPIO Pins abgefragt wird.

Nach dem Speichern und beenden (STRG+O, STRG+X) kann die Datei ausgeführt werden:

sudo python pir.py

Möchtest du das Skript beenden, kannst du dies mit STRG+C.

Ich musste erst ein wenig an den Potentiometern drehen und testen bei welcher Einstellung es am besten funktioniert.

Raspberry Pi Bewegungsmelder PIR

 

Es bieten sich nun viele Anwendungen oder Befehle an,  welche gestartet bzw. ausgeführt werden, sobald der Raspberry Pi Bewegungsmelder eine Aktivität erkennt. Beispiele dazu sind Alarmanlagen oder im Verbindung mit dem offiziellen Touchscreen Modul ein automatisches Anschalten des Displays, sobald sich jemand diesem nähert.

Eine Möglichkeit zum starten des Skripts per Autostart habe ich hier gezeigt.

101 Kommentare

  1. Hi, ich habe alle 5 Sensoren mit verschiedenen Einstellungen durchgetestet, aber alle machen ständig Fehlmeldungen und wenn man Bewegt reagieren sie auch nicht… Irgendwie gibt es mal ein Signal und auch mal nicht, egal ob sich was vor dem Sensor tut oder nicht.
    Weiß jemand woran es liegen könnte?

    Antworten
  2. Hi, ist es möglich an Stelle des printf Befehls andere Scripte, also auch mehrere starten zu lassen?

    Würde damit gerne eine kleine Alarmanlage bauen. Sobald eine Bewegung erkannt wird, soll ich eine Benachrichtigung bekommen und eine Sirene soll angehen um den Einbrecher zu erschrecken.
    Und das ganze wiederum würde ich gerne mit der Funkfernbedienung aus deinem anderen Tutorial scharf stellen. Geht das alles?

    Ein kleines Ja würde mir eigentlich schon reichen 🙂

    Vielen Dank schon mal.

    Antworten
    • Hey,
      ja natürlich ist das möglich – und sogar gewollt 😉
      Ich dachte, dass ich hier mal Spielraum lasse, was man damit anstellt.
      LG Felix

      Antworten
    • Erst einmal vielen Dank für die schnelle Antwort.

      Habe das Rasperry Pi nämlich erst neu geholt und noch nicht mal gestartet, warte noch auf ein gescheites Netzteil weil die von meinem Handy 5,3V Output hat.

      Bin mir noch nicht im klaren wie die verschiedenen Programme laufen. Habe bisher nur mi uControllern gearbeitet und da läuft das ziemlich simpel ab. Bin jetzt kein totaler Anfänger, studiere Elektronik aber mir PI habe ich echt null zu tun gehabt.

      Meine Idee ist ein Funk PIR Bewegungsmelder vor der Haustür. Am Pi ist ein Funk Empfänger und ein Kamera Modul. Sobald einen Bewegung detektiert wird, soll für 10 Minuten eine Aufnahme starten und eine Benachrichtigung an mein Handy(Email oder SMS) gesendet werden. Die Kamera muss ich natürlich auch über den Browser beobachten können (habe dazu schon ein Tutorial gefunden).
      Den Bewegungsmelder den Du hier benutzt werde ich im inneren des Hauses anbringen und die soll mir bei einer Bewegung eine zweite Benachrichtigung schicken, als Bestätigung das der Einbrecher drin ist.
      Und das ganze soll natürlich über eine Funk Fernbedienung scharfgestaltet werden können, wenn ich aus dem Haus gehe.

      Bei uns wurde innerhalb von 3 Jahren zweimal eingebrochen, deswegen will ich so etwas mal versuchen zu realisieren.

      So das war jetzt eine Menge Text 🙂

      Antworten
      • Das schöne am Pi ist, dass man ihn sehr einfach programmieren kann und mit ICs kommunizieren, sowie die GPIOs steuern kann. Was du vor hast, klingt auf jeden Fall machbar. Wenn du außerhalb der Tür den IR Bewegungssender ohne Kabel anbringen willst, würde ich ein Batteriepack und z.B. einen Arduino Nano nehmen, der über Funk an deinen Pi ein Signal schickt, sobald etwas passiert. Wenn du aber Elektronik studierst und dich mit anderen ICs auskennst, wirst du bestimmt eine (noch) stromsparendere Alternative zum Arduino finden.
        LG Felix

  3. Ach ja, es ist übrigens eine Wohnung. Deswegen reichen eigentlich nur zwei Bewegungsmelder. Einer vor der Tür(Funk) und einer im Eingangsbereich. Es soll auch nur der Eingangsbereich gefilmt werden. Aus dem Fenster sollte keiner im vierten Stock einbrechen können.

    Antworten
  4. Hallo zusammen,

    ich habe eine Frage zu dem Python Script.
    Ich verstehe nicht, warum im folgenden Befehl

    „def mein_callback(channel):“

    Channel in der Klammer steht. Muß da nicht SENSOR_PIN aus dem Befehl davor hin?
    Sprich:
    GPIO.setup(SENSOR_PIN, GPIO.IN)

    def mein_callback(SENSOR_PIN):

    Danke für die Hilfe

    Antworten
    • Hallo Rafael,
      nein in der Definition gibst du eine lokale Variable an. Beim Aufruf von mein_callback(..) kannst du z.B. die Variable SENSOR_PIN übergeben.
      Du solltest dir evtl. die Python Funktionsdefinitionen noch einmal anschauen.
      LG Felix

      Antworten
    • Hallo Felix,

      danke für deine Antwort.

      Ich werde es mir nochmal anschauen.
      Aber ich habe eine frage zu der Variablen. Du hast ja geschrieben, dass man dort eine lokale Variable angibt.
      Was ich nicht verstehe ist, wo in dem Quellcode oben die Variable „channel“ definiert wird?
      Sie kommt doch vorher nirgends vor.

      Schönen Gruß

      Rafael

      Antworten