Commentum

Der Einfall, die Lüge, die Erdichtung

Igelhaus, Eingang

Im Eingang des Igelhauses ist eine IPC-Kamera installiert. Auch hier wird nach Ablauf einer Stunde ein Video aus allen Aufnahmen der vergangenen Stunde erstellt. Eine weitere Kamera (USB-Webcam), angeschlossenen an einen Raspberry Pi der ersten Generation, erzeugt bei erkannten Bewegungen Fotos, diese werden nach Ablauf einer Stunde zu einem Zeitraffervideo zusammengefügt. Eine weitere Webcam wird direkt bei Bewegungen (ein Bewegungsmelder vom Typ RPI HC-SR501 ist im Eingangsbereich montiert und steuert ein Scipt an) kurze Videos aufnehmen.

Dazu kann folgendes Script verwendet werden:

#!/usr/bin/python
#Import
import RPi.GPIO as GPIO
import time
import datetime
print "BEWEGUNGSMELDER"
print ""
#Board Mode: Angabe der Pin-Nummer
GPIO.setmode(GPIO.BOARD)
#GPIO Pin definieren fuer den Dateneingang vom Sensor
PIR_GPIO = 8
GPIO.setup(PIR_GPIO,GPIO.IN)
read=0
wait=0
try:
#PIR auslesen
while GPIO.input(PIR_GPIO)==1:
read=0
print "WARTEN auf Bewegung..."
#Abbruch ctrl+c
while True :
#PIR auslesen
read = GPIO.input(PIR_GPIO)
if read==1 and wait==0:
print "ALARM %s: Bewegung erkannt!" % datetime.datetime.now()
wait=1
elif read==0 and wait==1:
print "WARTEN auf Bewegung..."
wait=0
time.sleep(0.01)
except KeyboardInterrupt:
print "Beendet"
GPIO.cleanup()

Eine weitere Möglichkeit ist die Verwendung der Raspberry Pi Funktion Motion zum auslesen des Pinzutandes. Dabei wird der Daten-Pin so initialisiert, dass eine Veränderung, konkret ein Wechsel von Low zu High (GPIO.RISING), an das Skript übergeben wird. Der Vorteil dabei ist, das der Code nicht sekündlich den Pin-Status überprüft, sondern auf eine Meldung der Funktion wartet.


nano /home/pi/bewegungsmelder2.py
import RPi.GPIO as GPIO
import time
import datetime
import os
print "BEWEGUNGSMELDER"
print ""
#Board Mode: Angabe der Pin-Nummer
GPIO.setmode(GPIO.BOARD)
#GPIO Pin definieren fuer den Dateneingang vom Sensor
PIR_GPIO = 8
GPIO.setup(PIR_GPIO, GPIO.IN)
def MOTION(PIR_GPIO):
os.system("echo  \"Bewegung erkannt\"")
print "%s - Warten auf Bewegung" % datetime.datetime.now()
try:
GPIO.add_event_detect(PIR_GPIO, GPIO.RISING, callback=MOTION)
while 1:
time.sleep(60)
except KeyboardInterrupt:
GPIO.cleanup()en 

Ich bevorzuge diese Art der Steuerung, das erste Script verwende ich eigentlich nur zum Testen der Funktionsfähigkeit.

Auf diese Art wird dann nur bei einer Bewegung die Kamera angesprochen. Gestartet wird das Script über einen Eintrag in der Crontab.

Zum Testen habe ich aber auch das hier versucht:

HC-SR501-PIR-Bewegungssensor-Sensor-Anschluss-Schaltung-LED


Erklärung zur Schaltung

Der Sensor wird an VCC mit 5V DC über den Raspberry Pi versorgt. GND des Sensors wird auf einen GND des Pi geschlossen.
Der OUT-Ausgang des Sensors wird an einen beliebigen GPIO Anschluss geschlossen.
Die LED schaltest du in Reihe mit dem Widerstand auf einen anderen GPIO und GND.
Der Sensor hängt bei mir im Beispiel am GPIO 23 und die LED am GPIO 24.

Ich habe eine Datei  „led_bewegungssensor.py“ erstellt und mit diesem Inhalt versehen:

#Import der Python Module
import RPi.GPIO as GPIO
import time
#Variablen definieren
PIR_Sensor = 23
LED = 24
#GPIOs mit GPIO-Nummer ansprechen
GPIO.setmode(GPIO.BCM)
#Ein- und Ausgaenge definieren
GPIO.setup(PIR_Sensor, GPIO.IN)
GPIO.setup(LED, GPIO.OUT)
print("Das Programm wurde gestartet.")
#Callback Funktion erstellen
def Bewegung(PIR_Sensor):
print("Bewegungssensor hat eine Bewegung erkannt!")

GPIO.output(LED, True)

time.sleep(5)
GPIO.output(LED, False)
#Hauptprogramm starten
if __name__ == "__main__":
try:
#Sobald eine Bewegung erkannt wurde, fuehre die Funktion aus.
GPIO.add_event_detect(PIR_Sensor, GPIO.RISING, callback=Bewegung)
while True:
time.sleep(0)
#Programm beenden mit Strg + c
except KeyboardInterrupt:
print ("Das Programm wurde beendet.")
GPIO.cleanup()


Ausgeführt habe ich das Progamm mit dem Befefehl:  sudo python led_bewegungssensor.py.
Wenn alles geklappt hat, muss sich bei einer Bewegung die LED für 5 Sekunden einschalten und im Terminal der Kommentar „Bewegungssensor hat eine Bewegung erkannt!“ erscheinen. Das geht solange, bis der PIR keine Bewegung mehr erkennt. Du kannst das Programm jederzeit mit Strg + c beenden.

Anstelle oder zusätzlich zu der ausgegebenen Meldung kann auch zum Beispiel ein Script für die Aufnahme eines Fotos/ Videos ausgeführt werden.

Diese Schaltungen werden auch im Hummelnistkasten und im Vogelnistkasten verwendet werden.

Zurück







E-Mail
Infos