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
- PIR Bewegungssensor
- Jumper Kabel (Female – Female)
- ggf. LEDs oder sonstige Bauteile zum aktivieren
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)
Software zum Steuern des Raspberry Pi Bewegungsmelder
Zum Ausführen des Codes erstellen wir eine neue Datei
sudo nano pir.py
mit folgendem Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import RPi.GPIO as GPIO import time SENSOR_PIN = 23 GPIO.setmode(GPIO.BCM) GPIO.setup(SENSOR_PIN, GPIO.IN) def mein_callback(channel): # Hier kann alternativ eine Anwendung/Befehl etc. gestartet werden. print('Es gab eine Bewegung!') try: GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=mein_callback) while True: time.sleep(100) except KeyboardInterrupt: print "Beende..." GPIO.cleanup() |
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.
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.
108 Kommentare
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?
Ach hat sich erledigt… Kabel vertauscht viel zu früh 😛
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.
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
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 🙂
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
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.
Kann ich auch diesen hier verwenden http://www.conrad.de/ce/de/product/172500/SMD-PIR-Bewegungsmelder-B-B-Thermotechnik-PIR-T1-M1-L0-Betriebsspannung-3-12-V14-mA-Oeffnungswinkel-120-Reichwei?ref=searchDetail ?
Ja, sollte klappen, auch wenn er um einiges teurer als der im Artikel verlinkte ist.
Super danke, werde ich wahrscheinlich nächstes Wochenende testen.
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
Hallo Rafael,
nein in der Definition gibst du eine lokale Variable an. Beim Aufruf von
mein_callback(..)
kannst du z.B. die VariableSENSOR_PIN
übergeben.Du solltest dir evtl. die Python Funktionsdefinitionen noch einmal anschauen.
LG Felix
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
Hallo Rafael,
die lokale Variable der Funktion definierst du in der Kammer. Zugewiesen wird sie indem du die Funktion mit einem Wert aufrufst.
Die Variable kommt nicht vor, weil ich nur ein Beispiel gegeben habe, allerdings kann es oft sinnvoll sein den Channel zu kennen, bspw. wenn die selbe Trigger Funktion für mehrere GPIOs verwendet wird.
Moin moin,
funktioniert soweit wunderbar bis auf die sleep time. Völlig egal welchen Wert ich hier verwendet das Script löst alle paar sekunden aus.
Jemand eine idee?
Hi Jonny,
hast Du für das Problem inzwischen schon eine Lösung gefunden?
Bei mir ist es genauso. Obwohl definitiv nur die auslösende Bewegung erkannt wird, schaltet er ganz frei nach Belieben ab.
Ich habe 100 eingestellt. das kommt gelegentlich grob hin. Ein paar Mal waren es aber auch 10 Sekunden.
Hi, ich verfolge eine idee:
Mit dem Bewegungsmelder den mpd/mpc – Dienst ansprechen und ein Webradio starten, würde das gehen? (Quasi ein Gast-Wc-Webradio)
Und den automatisch wieder ausschalten lassen?
bin neu auf dem Gebiet und wollte erstmal fragen ob dies relativ einfach zu realisieren wäre :>
ok soweit so gut,
ich habe nun den mpc dienst den ich mit „mpc play“ starten kann,
den bewegungsmelder der auch die bewegung erkennt.
aber wenn ich bei dem
# Hier kann alternativ eine Anwendung/Befehl etc. gestartet werden.
z.B. mpc play eintrage sagt er invalid syntax…
weiß jemand abhilfe bzw wie ich den mpc mit der bewegung des PIR zum laufen bekomme?
Du hast aber schon eine Python Funktion verwendet, um den Befehl zu starten oder? Beispiel gibt es hier (
os.system("mpc play")
). Andernfalls wird das natürlich nicht klappen, esseidenn du verwendest Python Befehle/Syntax in deinem Python Skript.Hallo Bee-dooo
kannst du mir sagen wie du das mit der musik im wc realisiert hast?
Vielen Dank und Gruß
hey, danke 😀
bin noch so ein newb,
hatte import os vergessen
dann mit os.system(„mpc play“) läufts !
Sehr gut 🙂
hey felix,
wüsstest du auch wie ich z.B. daraus eine schleife baue,
also was ich meine ist, dass wenn der bewegungsmelder angeht,
mpc play startet (das hab ich ja jetzt schonmal dank dir hinbekommen)
aber die idee ist ja fürs bad/wc, dass es irgendwann wieder ausgeht WENN
keine bewegung mehr nach zb 30 sekunden ist, aber durchgängig sonst anbleibt wenn zwischendurch bewegungen registriert werden.
if you know what i mean 😀
Würde ich z.B. so lösen:
Initialisiere eine Variable
letzte_bew = 0
Die erste erkannte Bewegung des Sensors ruft eine Funktion auf (nur
if letzte_bew==0:
), ansonsten setzt duletzte_bew = time.time()
Diese Funktion hat eine Endlosschleife mit der Bedingung
while letzte_bew + X < time.time():
wobei X deine Anzahl an Sekunden ist. Die Schleife macht nichts weiter als eine Sekunde zu warten. Nach Ende der Schleife setzt duletzte_bew = 0
und stoppst dein Skript/Musik.PS: Ich gebe dir bewusst nicht den ganzen Code, damit du auch etwas daran tüfeln musst 😉 Ist auch nur ein theoretischer Aufbau, du musst schauen ob es ohne Threading (paralell) läuft.
hallo beee-dooo,
ich würde gerne den Pi im Bildschrimschoner laufen lassen – mit Bildern und bei Erkennung einer Bewegung das Programm SmartMirror ausführen (wo ich dann alle Infos – Zug, Kalender, News) drauf habe)
hast du es hinbekommen dein mpc play bei Bewegung laufen zu lassen?
Bin totaler Einsteiger und verstehe auch nach dem Durchlesen aller Foren nicht, wo ich die Infos von Felix richtig einsetzen 🙁
Ich würde gerne, wenn der Bewegungsmelder eine Bewegung erkennt ein Script ausführen lassen
Wie kann ich das bewerkstelligen?
Hi Robin,
z.B. mit
os.system
: https://docs.python.org/2/library/os.html#os.systemLG Felix
Hallo,
kann ich diesen Sensor direkt an meinen Rasperry anschliessen oder benötige ich noch wiederstände die ich dazwischen schalten muss? z.B wie hier beschrieben https://dracarysdiy.wordpress.com/smart-mirror-5-video/ ( wobei der Kollege auch einen anderen Sensor berwendet)
Freue mich auf Nachricht 😉 Sitze hier mit gezücktem Lötkolben…
Grüße Andreas
Hallo Andreas,
den Sensor, den er verwendet habe ich hier beschrieben: Entfernung messen mit Ultraschallsensor HC-SR04 – Raspberry Pi. Du brauchst beim PIR (dieses Tutorial) keinen Vorwiderstand, solange du 3.3V Eingangspannung nimmst.
LG Felix
Ah und wie stelle ich fest ob ich 3.3V Eingangsspannung verwende??
Soweit ich mich erinnere hat der PIR Sensor einen eingebauten Widerstand, weshalb 5V Eingangsspannung verwendet werden können. Anders sieht dies beim Ultraschallsensor H-SR04 aus, da wird ein Pull-Widerstand benötigt (anderes Tutorial).
mir fliegt aber nicht mein Rasperry um die Ohren sollte es den genannten Widerstand nicht geben oder?
Jeder Aufbau der Tutorials ist von mir getestet. Ich weiß allerdings nicht, was du sonst noch an deinem Pi angeschlossen hast. Wenn du auf Nummer sicher gehen willst kannst du dir ein Multimeter nehmen und die Spannung messen, welche an den GPIOs ankommen würde. Ist sie unter 3.3V (was der Fall sein sollte), ist alles im grünen Bereich.
Hallo zusammen,
auch ich bin Anfänger und habe mich auch relativ erfolgreich an SAMETs Alarmanlagenprojekt versucht. Es gibt dafür ein hervorragendes youtube Tutorial.
Nun zu meiner Frage: Kann ich mehrere PIR Sensoren am gleichen Eingang auflegen? Alternativ würde ich gerne eine Oder-Funktion im Python Skript integrieren – Sprich zwei Eingänge zur Auslösung.
Kann mir jemand hierbei helfen?
Beste Grüße
Hallo,
solange du unterschiedliche GPIOs nimmst sollte nichts dagegen sprechen. Wenn es unbedingt der selbe GPIO sein muss, kannst du einen OR/NOR/NAND Baustein verwenden, je nach Anwendung. Statt ein reines OR reicht es auch alle am selben GPIO anzuschließen. Du solltest jedoch darauf achten, dass nicht zu viel Stromstärke an die GPIOs gelangt.
LG Felix
Das ging ja schnell o_O
Danke!
Genau über die Überlastung habe ich mir Gedanken gemacht. Würde gerne 3 PIR Sensoren an einen GPIO Eingang schalten. Gefährdet das meine Hardware?
Wenn du von Bausteinen sprichst, meinst du das im Quellcode des PIR Skripts zu realisieren?
Mit STEP 7 ist das einfacher 😛
Beste Grüße
Ich bin mir nicht sicher wie viel mA pro PIR am Ausgang hängen – das müsstest du mal nachmessen. Eingebaute Widerstände verhindern zumindest, dass mehr Spannung als 3.3V anliegt.
Warum öchtest du überhaupt alle Sensoren am gleichen Pin anschließen? Ich sehe darin keinen wirklichen Nutzen, bis auf dass ein paar Pins gespart wurden, allerdings kannst du nicht sagen welcher denn gerade aktiviert wurde. Mit IC Gattern meine ich z.B. solche: http://www.amazon.de/CD4093BE-digital-Channels4-Inputs2-DIP14/dp/B013RJLYLO/ref=sr_1_2?ie=UTF8&qid=1462789242&sr=8-2&keywords=nand+ic
Per Code kannst du eine AND/NAND/OR etc. Schaltung nur realisieren, wenn du für jedes Modul einen separaten GPIO hast.
Ohhh, sowas besitze ich sogar, mir fehlt nur für das Projekt gerade die Zeit mich damit auseinander zu setzen.
Ich würde dann auch die Alternative des separaten Eingangs bevorzugen. Wie führe ich das denn im Skript aus? Angenommen mir ist egal welcher Sensor reagiert:
Alarm = GPIO #1 or GPIO #2 ?
Und wie würde ich verfahren wenn ich die Sensoren doch noch separat aufschlüsseln möchte?
Vielen Dank für den Support!
Nein, du musst jeden Eingang separat überprüfen (wie in dem Beispiel mit einem Modul). Du solltest aber wissen, dass das Signal nur sehr kurz ist und die Wahrscheinlichkeit, dass zwei oder mehr gleichzeitig ein Signal haben sehr gering ist. Daher würde ich eher bei der Bewegung den Zeitstempel o.ä. speichern und beim Signal eines anderen Moduls alle Zeitstempel überprüfen. Wurde es in den letzten X Sekunden aktiviert, so füre Y aus.
Also nur als Idee/Vorschlag. Du kannst es auch ganz anders lösen.
LG Felix
Okay, ich versuche mich nochmal daran und melde mich bei Scheitern nochmal mit dem entsprechenden Code 🙂
Vielen Dank!
Hi,
ich hätte da zwei Fragen…
– kann ich wohl die Empfindlichkeit des Sensors im Betrieb ändern oder muss ich jedes Mal den Pi herunterfahren?
– hast du evtl. noch einen Ansatz wie ich mein (offizielles) Touchscreen Display unter Jessy über python reaktivieren kann? deine Anleitung scheint für wheezy zu sein?
Also die Empfindlichkeit kannst du mit dem eingebauten Poti verändern, auch während dem Betrieb.
Bzgl des Displays: Meinst du diese Befehle? Tipps & Tricks (FAQ) zum offiziellen 7″ Raspberry Pi Touchscreen
Hi,
danke für die Info bzgl. des laufenden Betriebs!
Und ja – danke für den Link, das meinte ich prinzipiell schon, allerdings geht das Display ja nach 5(10?) Minuten in den Standby und lässt sich bei mir mit dem von dir genannten Befehlen nicht wieder aktivieren.
Die Hilfestellungen das zu umgehen bezieht sich wie mir scheint zumeist auf Wheezy
Dann musst du den automatischen Screensaver ausstellen – ich nehme an du meinst nach 10 Minuten ohne Berührung. Ja, die meisten Befehle habe ich unter Wheezy getestet.
Hi,
darauf bezog sich meine Frage ursprünglich. Sorry, war wohl nicht ganz klar ausgedrückt.
Ich bekomme es unter Jessie einfach nicht hin und hatte die Hoffnung du hättest evtl. den entscheidenden Tipp gehabt 🙂
Du kannst mal das Package
xscreensaver
versuchen oder alternativ hier nachsehen: https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=57552&sid=c5af8206edb837d72600d61671c026a1Hi,
danke, ich glaube ich hab es nun!
Eine ergänzende Frage leider aber doch noch… mein Bewegungsmelder läuft mit deinem o.g. python Skript, allerdings wird im Minuten-takt eine Bewegung erkannt.
Wirklich exakt jede Minute ein mal… auch wenn ich garantieren kann dass keine Bewegung erfolgte 🙁
Hast du dazu evtl. auch eine Idee?
Hast du das
time.sleep
schon variiert? Ggf. kannst du mit dem eingebauten Poti auch die „Genauigkeit“ ab wann eine Bewegung erkannt werden soll, verändern.Hi,
ja nachdem du es sagtest habe ich damit rumgespielt, aber keine Änderung.
Mal als Beispiel:
30.05.2016 15:04:55: Bewegung erkannt
30.05.2016 15:05:55: Bewegung erkannt
30.05.2016 15:06:55: Bewegung erkannt
30.05.2016 15:07:55: Bewegung erkannt
30.05.2016 15:08:55: Bewegung erkannt
30.05.2016 15:09:55: Bewegung erkannt
30.05.2016 15:10:55: Bewegung erkannt
30.05.2016 15:11:55: Bewegung erkannt
Ohne dass nun ständig Bewegung wäre.
Wenn zwischendurch mal Bewegung ist, dann wird diese auch mit einer anderen festgehalten. Heute war es dann immer zur 20. Sekunde, vermutlich hat das irgendetwas mit dem Programmstartzeitpunkt zu tun.
Aber das ist wirklich kontinuierlich durch, auch zu Zeiten wo ich weiß dass nicht gerade zufällig jemand sich an dieser Stelle immer zur gleichen Sekunde bewegt 🙂
Hallöch noch einmal.
Also nachdem die ganze Nacht wirklich jede Minute geloggt wurde, habe ich den Sensor getauscht und nun scheint es sauber zu laufen.
Danke für deine Hilfen 🙂
Hallo,
der Sensor ist installiert und funktioniert ! Danke für das Tutorial.
Wie bekomme ich aber nun diese Dinge verbunden, also WENN Bewegung DANN Mail senden.
Danke im Vorraus 🙂
Okay, habe es doch hinbekommen! 😀
Hallo,
wie sähe das fertige skript aus, wenn der rpi sein display nur bei bewegung aktivieren soll?
Dazu musst du bei einer erfassten Bewegung die Hintergrundbeleuchtung anschalten. Nach einer gewissen Zeit ohne Bewegung schaltest du sie wieder aus.
Hallo,
könntest du eine Anleitung machen für den Anschluss mehrerer PIRs an einem Raspberry um z.B. mehrere Räume zu überwachen?
Der Anschluss ist doch identisch, nur dass du einen anderen GPIO verwendest. Du kannst so viele PIRs anschließen, wie du freie GPIO Pins hast.
hallo
ich mochte wiessen wie kann ich wenn ein bewegung hat die raspberry pi ein nachricht schikt in ein web server
Einfach in der Funktion, die aufgerufen wird, wenn eine Bewegung erkannt wurde, ein Skript o.ä. aufrufen, welches die Nachricht versendet (z.B. Telegram).
Hallo vielen Dank für dieses Script.
Vorweg ich bin total Anfänger was Linux/Python angeht…
Mein Problem: Ich möchte dieses Script mit dem tool sms3 verbinden.
Das heißt das ich per SMS das Script starten und stoppen kann, sowie das bei Alarm eine SMS gesendet wird. Das Senden bei Alarm wenn ich das Script per Hand starte funktioniert schon. Jetzt habe ich aber das Problem das wenn ich das Programm über eine eingehende sms starten möchte, sich der sms3 Prozess aufhängt.
Ich habe das Python Script schon mit init.d/Alarm start vorbereitet.
Hier der Ablauf: SMS kommt an — Shell Script überprüft die SMS und führt dementsprechenden Befehl aus — in dem beispiel /etc/init.d/Alarm start
Jetzt startet das Programm auch nur scheint die Shell zu warten bis das Python Script
fertig ist. Was natürlich Fatal ist, da es sich ja um eine Schleife handelt die nur bei dementsprechenden Befehl stoppt .. Ich hoffe ich konnte es verständlich erklären und es kann mir jemand helfen.
Eine Möglichkeit wäre hinter deinen Befehl noch ein & zu setzten, das Skript wird somit im Hintergrund gestartet.
Funktioniert auf Anhieb.. Nur.. beinahe falsch angeschlossen (im obigen Anschlussschema ist VCC und GND vertauscht), da die Beschriftung bei meinen Modulen nur nach Abnahme der Kappe sichtbar ist.
Wie bedient man die Potis?
Was macht der Jumper?
Danke
Hallo,
ich versuche es mit dem aller ersten Pi (2011/12) mit nur 26 PINs. Leider empfange ich kein Signal, trotz Poti Dreherei etc. Lediglich beim Abziehen von VCC oder GND bekomme ich die Meldung.
Ist die Beschaltung beim ersten Pi irgendwie anders?
D&G
Hallo zusammen
Ich will mit dem Raspberry Pi eine Alarmanlage bauen, um Einbrecher schon vor dem ansetzen der Eisenstange zu hindern. Die PIR Sensoren gehen soweit ich weiss leider nicht durchs Fenster, ich muss diesen aber im Wohnraum installieren. Hat jemand von Euch vielleicht eine Idee oder dies schonmal realisiert? Würde mich über eine Rückmeldung freuen…
Super Tutorial, funktioniert auf Anhieb!
Hallo Felix,
benötigt man zum Anschluss an den PI nicht einen Spannungsteiler. Ist es richtig, dass der Bewegungsmelder an 5V angeschlossen wird, dann sollte der Pin, der das Bewegungssignal liefert auch 5 V liefern oder ist Spannungsteiler bereits im Bewegungsmelder verbaut, Danke und Gruß André.
Ja, das stimmt. Die Widerstände sind üblicherweise auf den Platinen aufgelötet. Außerdem sind die meisten Sensoren auch mt 3.3V statt 5V betreibbar.
Hallo Felix,
meine Sensoren schmeißen leider andauern Fehlalarme, sodass ich den Bewegungsmelder nicht einsetzen kann. Ich wollte mit ihnen den Monitor des Pi automatisch anschalten lassen, sobald Bewegung erkannt wird. Nach 10 Minuten Inaktivität sollte der Monitor wieder aus gehen. Ca 1x pro Minute kommt allerdings ein Fehlalarm. Herunterregeln von der Sensitivität bringt leider auch nichts.
Ich nutze einen Pi 3 mit WLAN-Verbindung und Maus-Dongle sowie die verlinkten Bewegungsmelder mit 20cm female-female-Kabeln und 2A Netzteil.
Ich habe in den Amazon-Bewertungen etwas über einen Entstörkondensator (100nF) gelesen, den ein User zwischen VCC und GND geschaltet hat. Gesagt getan: Bei Conrad Keramikkondensatoren gekauft. Als ich den Kondensator anlöten wollte, kam mir der böse Verdacht, dass das sicherlich nicht so gut ist, da ich damit ja einen Kurzschluss erzeuge. Also hab ich es bislang sein gelassen. Ich vermute also, es handelt sich um einen speziellen Kondensator.
Hast du irgendwelche Tipps?
Kondensatoren kann man verwenden, aber eigentlich sollten die Teile schon funktionieren. Jedenfalls kam mir noch keiner mit dem beschriebenen Problem unter. Hast du bei einem zweiten PIR das selbe Problem?
Kann ich diesen Bewegungsmelder so einstellen, dass er wenn ich in mein Bett liege meine Lampe angeschaltet wird, wenn es zwischen 17.00-23.00 Uhr liegt…?
Und falls ja kann ich sie auch mit dem Kalender verbinden dass er meine Lampe am Wochenende bis um 01.00Uhr eingeschaltet lässt…?
Gruss Pascal
Ja, frag dazu einfach in der Funktion die Uhrzeit ab und lasse die Lampe ggf. anschalten (z.B. per Relais)
Hallo Felix,
ich habe ein Skript welches meine Schreibtischlampe anschalten soll.
Nach 60 Sekunden ohne erneute Bewegungserkennung soll das Licht dann von alleine aus gehen.
Anfang funktionierte das Ganze auch, nun plötzlich nicht mehr.
Die Verkabelung habe ich mehrmals geprüft/gewechselt.
Ist in dem Code vielleicht ein Fehler oder muss ich den Bewegungsmelder an den zwei Stellschrauben anders einstellen?
Ich verzweifel langsam:
Hi Philip,
danke für Dein Script. Damit habe ich es hinbekommen:-) Bei mir soll sich der Bildschirm nicht abschalten, so lange eine Bewegung erkannt wird.
Da ich einen anderen Nutzen beabsichtige, musste ich ein paar Anpassungen vornehmen. Der Fehler liegt bei Dir aber in dem „if turned off“, wenn ich mich nicht irre.
Ich hatte zu Testzwecken über das „if turned off“ einen „print „irgendwas““ eingefügt und habe dabei festgestellt, dass er nie die nachfolgenden if off oder on ausführt.
Das „if turned off“ unter dem flush habe ich daher einfach auskommentiert und nun funktioniert es.
Wie gesagt, ich musste hier und da etwas anpassen, aber probier es mal aus.
VG
Mr.Coffee
Hallo Mr.Coffee
könntest du mir das nochmal genauer erklären mit dem Bildschirm?
Ich möchte auch das der Bildschirm sich einschaltet wenn Bewegung erkannt wird und bei keiner Bewegung soll der Bildschirm aus sein. Bei mir bleibt er aber der Bildschirm in Endlosschleife.
Ohne Bewegung eine Minute an dann eine Minute aus, dann wieder eine Minute an usw.
Ist irgendetwas defekt oder das Programm falsch?
Gruß tabs0815
Dazu habe ich bald ein Tutorial geplant 🙂
Hallo,
Wie kann ich mithilfe von dem Sensor ein Bild / Video einer USB webcam oder IP Kamera auf einem Tablett anzeigen lassen sobald eine Bewegung da ist ? Als popup Fenster.
Z.b Tablett Display ist Ausgestattet oder zeigt eine andere App, z.b Hausautomation.
Ich hab 1 Tablett im Wohnzimmer und 1 Tablett im Flur. Derzeit hab noch keine ausen Station, keine taster. Ist Neubau. Dafür hab schon eine webcam die den Eingang überwacht.
Hardware.
Webcam HD USB
Raspberry
Software.
Motion eye.
Bei dieser OS von motion gibt es Funktion, sobald eine Bewegung erkannt wird, von der Kamera, da kann man auswählen, ob eine Meldung mit Fotos oder Videos an Email gesendet werden soll, oder ein oder mehrere Kommandos ausgeführt werden können, sollten. Leider kenne ich mich nicht mit der Materie-Programmierung aus. Und bei dieser OS funktioniert nicht immer die Email benachritigung.
Deswegen wollte ich den ir bewegungsmelder einsetzen. Der soll dann gewisse Kommandos auslösen und auf allen Tabletten, Video vom Eingang angezeigen.
Kann mir jemand da ,paar Tips dazugeben?
Mfg, Alex
Hi, erstmal vielen Dank für das Turorial. Es funktioniert grundsätzlich einwandfrei. Ich habe aber ein Problem. Ich nutze zusätzlich ein 433MHz sender. Ich habe bemerkt, dass sobald eine Bewegung vom Melder erkannt wird, sprich auf dem gpio ein signal anliegt, ich in dem Moment nicht auf dem 433mhz Sender senden kann. Unabhängig davon, ob das Skript für den Bewegungsmelder läuft oder nicht. Hat ggf jemand einen Rat für mich?
LG Marcel
Was meinst du mit „nicht senden kann“? Wie hast du geprüft, dass nichts gesendet wird?
Hallo Felix,
vielen Dank erst einmal für die vielen sehr gut gemachten Tutorials, die sich gut nachvollziehen lassen. Mach weiter so. Ich habe allerdings mal eine Frage zu den Anschlussmöglichkeiten jenseits der Funktechnik. In wieweit lassen sich z.B. PIR-Module per Verkabelung an den Raspberry Pi anschließen. Hast Du bezüglich der Kabellängen und Konfektionen schon Erfahrungen gemacht und wenn ja, wie sehen diese aus? Es gibt ja durchaus Anwendungsfälle, in denen eine Verkabelung in Haus oder Wohnung der Funktechnik vorzuziehen ist, sei es aus Sicherheitsgründen oder Kompatibilitätsgründen, was die Funkstandards angeht. Über eine Info oder weiterführende Links wäre ich sehr dankbar.
Mfg
Patrick
Kann mir bitte jemand sagen, wie ich das am besten mit dem Code von WS2801 kombiniere, so dass 30 Sekunden lang blaues Licht leuchtet? Also ganz einfach… (wenn man nicht so ein Noob wäre wie ich…)
Also ähnlich wie Philip oder Mr Coffee nur mit WS2801 und eben nur blau und nicht Regenbogen-Blinki-Blink.
Vielen Dank!
Ganz einfach: In der Funktion rufst du den Treiber des WS2801 Streifens auf, setzt alle LEDs auf Blau (siehe anderes Tutorial), wartest 30 Sekunden (time.sleep) und danach wieder mit dem Treiber auf „Aus“.
Also dann so:
– Ist dann der Treiber „Aus“ („GPIO.cleanup()“)?
– wo setze ich „time.sleep“, bei def oder bei try?
nach pixels.show() in der LED Funktion keine Einrückung. cleanup am besten einrücken.
Also ich bin echt ratlos, bitte helft mir!
Ich teste jetzt seit 2 Tagen diesen PIR – ja, ich bin echt ein Neuling, habe den Raspberry Pi Zero zum Laufen gebracht und starte ihn über SSH… habe das python-Programm 1 zu 1 abgeschrieben und dann nochmals, falls Fehler drinnen sein sollten… aber ich blicke es nicht…
Entweder es rasen die Meldungen „Es gab eine Bewegung!“ nur so über den Bildschirm – OHNE Bewegung
Oder es kommt gar nichts – trotz Bewegung
Oder (und sehr interessant) es kommen ein paar Meldungen, aber nur, wenn ich den RPi bewege?!
Das ganze ist mit Jumper-Kabeln verbunden, ich habe 4 von 5 Pirs ausprobiert, es ist so verbunden wie bei dir, obwohl bei den Pir (habe die aus deinem Link bestellt) keine Bezeichnung auf der Platine sind (VCC, Out, GND)
Wo ist der Fehler?
Du kannst den regelbaren Widerstand drehen, um die Sensitivität zu verändern.
Ich habe ganz viele Einstellungen ausprobiert, wenn auch etwas planlos, aber selbst so hätte es ansprechen müssen… es kam aber immer wieder unterschiedliche Ergebnisse raus…
Gibt’s bei der Einstellung irgendwelche Tipps?
Hallo DomDom, genau das von Dir beschriebene Problem habe ich auch.
Hallo,
ich habe ein ähnliches Programm. Bei mir funktioniert es aber noch nicht richtig. Der Bildschirm stellt sich durch den Bewegungsmelder an und geht nach 60 Sekunden wieder aus. Soweit ist alles gut. Der Bildschirm geht dann aber von selbst nach 60 Sekunden wieder an und nach 60 Sekunden wieder aus usw. Woran könnte es liegen?
Diese Programm habe ich verwendet:
Ich habe bei dem Programm PIR_GPIO = 7 stehen, weil ich den Pin 7 auf dem raspberry 3 belegt habe. ist das soweit alles richtig?
Die Einrückungen sind genau so? Die stimmen nämlich nicht…
Hallo, ne so sieht es aus.
Vielen Dank für das Script. Genau das was ich gesucht habe!
Hi Felix,
ich habe folgendes Problem und absolut keine Ahnung woran es liegen könnte. Habe alles exakt nach deiner Anleitung versucht. Es funktionierte vor einigen Tagen auch schon, zwischenzeitlich habe ich das Projekt mit den Funkfernbedienungen erfolgreich umgesetzt. Wenn ich nun die Bewegungsmelder anschließe und eine Bewegung erfolgt, passiert absolut nichts. Sobald ich allerdings im laufenden Betrieb die Bewegungsmelder abstöpsele wird die Meldung „Es gibt eine Bewegung“ umgesetzt und zwar solange bis ich das Programm mit STRG + C beende.
Was mache ich nur falsch?
Das klingt komisch! Hast du mal die Spannung/Impulse gemessen? Beim Bewegen sollte eine Flanke/Impuls ausgelöst werden, die der Pi erkennt.
Hallo. Mach bitte bald dein neues Tutorial für den Bewegungsmelder und . Ich verzweifle hier. Ich bekomme das nicht so hin wie es muss. Kann es sein das mein Bewegungsmelder defekt ist?
Ich habe auch das Problem, dass Bewegungen scheinbar willkürlich erkannt oder nicht erkannt werden. Hier:
http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/arduino-hc-sr501-motion-sensor-tutorial/
kann man nachlesen, warum.
Habe den Trigger auf single mode gestellt, dadurch ist die blockierte Zeit kürzer.
Hallo,
Ich bin noch ein Anfänger und hätte da mal ein paar Fragen…
Ich möchte so eine Art smart-clock programmieren, also man soll über den Bewegungsmelder z.B. die Hand drüber halten, damit ein kleiner (Touch)-Bildschirm angeht, welcher dann in der Mitte groß eine digitale Uhr anzeigt und darunter kleiner das Datum, Innentemperatur(+Luftfeuchtigkeit) etc. Da ich nun wirklich noch sogut wie keine Erfahrungen habe was Python an geht, würde ich gerne wissen ob
1. Sowas möglich wäre und
2. Ob Du oder jemand anderes mir dabei helfen könnte 🙂
LG
Ich habe mir auch eine kleine Steuerung zum Überwachen aufgebaut. Wir haben ein Haus im Ausland und wissen nicht, ob die Maklerin ab und an nebenbei vermietet.
Der Raspi ist in einem kleinen Gehäuse eingebaut, für den Bewmelder habe ich ein Loch gebohrt.
Jede Bewegung wird in eine Textdatei geschrieben. Am Tagesende sende ich mir
die Datei per Mail zu. Anschließend wird die Datei mit Datum umbenannt, um am
nächsten Tag eine neue Datei zu erzeugen. Zur Sicherheit mache ich auch täglich einen Neustart.
Natürlich auch mit Mail um zu sehen, ob alles stabil läuft.
Das Ganze habe ich im Dauerlauf über Monate zuhause getestet und läuft jetzt quasi im Livebetrieb seit einigen Wochen zu meiner vollsten Zufriedenheit.
Nachtrag :
Ich habe den Raspi seit über 1 Jahr im Einsatz und läuft perfekt.
Konnten jetzt sogar nachweisen, dass unsere Maklerin nebenbei
vermietet hat.
Unser Szenario für ein Projekt unserer Schülerinnen und Schüler soll noch ein bisschen anders aussehen als das bisher beschriebene. Wir wollen in Abhängigkeit von der Meldung am Raspberry (Bewegungs- und Dämmerungssensor) per DMX-Steuerung (DMX-Interface, Software QLC+) Objekte im Freien über LED-PAR-Scheinwerfer anstrahlen lassen. Gibt es entsprechende Szenarien schon?
Ich bin Anfänger und habe ein Problem wo sehe ich ob sich was bewegt hat?
alles was ich sehe ist pi@raspberry:~ $ sudo python pir.py
nicht mehr oder weniger!
Bitte schnell antworten ich sitze hier und warte auf eine Antwort
Adrian
Hallo
Bin bei der Fehlersuche auf deinen Beitrag gestoßen.
Die Ursache ist sicherlich trivial, man möge mir meine Unwissenheit nachsehen.
Wenn ich das Script ausführe erhalte ich auf der Shell die Fehlermeldung:
pi@MagicMirror:~/scripts $ sudo phyton bewegungsmelder.py
sudo: phyton: Befehl nicht gefunden
Kann mir nicht erklären, woran das liegt, würde mich über Hilfe freuen. Danke!
Du hast einen Tippfehler: Versuch es mal mit python statt phyton.
Oha ..
Na das war ja einfach.
Danke für deine Hilfe!
Hallo zusammen,
habe eine Frage. Ich habe einen Bewegungsmelder ohne die Justierungsmöglichkeit des Raspi Modells, also direkt vom Sensor 6 Anschlüssse (4x Bewegung, 2x Helligkeit) und möchte diesen am Raspi anschließen.
https://asset.conrad.com/media10/add/160267/c1/-/en/000506175DS01/datasheet-506175-a165180-infrared-ir-sensor-na.pdf
Einen anderen Sensor kann ich bauart-bedingt nicht einsetzen. Hat das jemand schon mal gemacht?
Vielen Dank für Euer Feedback.
VG Matthias
Hallo Felix,
super Tutorial, alles funktioniert einwandfrei.
Eine Frage hätte ich aber auch noch:
Kann man am Pi über ein Relais auch einen Bewegungsmelder anschließen, der 12V hat?
Ich habe mit dem bestehenden 12V-Teil bessere Erfahrungen gemacht als mit dem hier eingesetzten BM.
Und da ich in dem Projekt noch andere 12V-Verbraucher habe, würde sich das anbieten.
Über eine Antwort würde ich mich freuen.
Hallo Felix,
noch eine Frage:
Wenn der Bewegungsmelder eine Bewegung wahrnimmt, soll ein Soundfile, welches auf dem Pi abgespeichert ist, abgespielt werden.
Was benötigt man dafür alles (Verstärkerbauteil, Breitbandlautsprecher, etc.), wenn man die Ausgabe nicht über so einen Miniatur-Lautsprecher ausgeben will und wie wird das alles dann verdrahtet und mit in den Programmcode aufgenommen?
Mit besten Grüßen
Hallo, vielen Dank für das Tutorial. Leider wird bei mir die print-Funktion nicht ausgeführt, wenn ich Bewegungen (bei unterschiedlichen Einstellungen der zwei Potentiometer) vor dem Sensor vornehme… Nur wenn ich die Kabel abmache und wieder anschließe. Das Gleiche bei meinem zweiten IR-Sensor. Was kann ich nur falsch gemacht haben? Habe 5V, GPIO23 und GND angeschlossen und mit einem billigen Voltmessgerät noch nachgeprüft, dass wirklich 5V anliegen…… Würde mich sehr über Hilfe freuen! 🙂
Hat sich geklärt. Nach kurzer unbeaufsichtigter Zeit bekam der GPIO Pin den Wert 0 und nicht mehr 1 gesendet. Bei anderer Potenziometereinstellung klappte es direkt. Hätte wohl einfach länger warten sollen. 🙂
Guten Abend,
mir ist nicht klar welche Funktion der Befehl time.sleep(100) bzw, die gesamte „while True:“-Schleife genau hat. auch nach dem Einlesen in die Python-Dokumentation komme ich nicht weiter. Kann mir das eventuell nochmal jemand erklären? THX