PiCamera & PIR Movement Detector – un sistema di sorveglianza

meccanismo-complesso-picamera-raspberry-pir-motion-detector-head-ita

Dai precedenti articoli abbiamo visto come utilizzare singolarmente sia la webcam che il PIR Movement Detector su Raspberry. In questo articolo vedremo come combinare le due cose per ottenere un semplice esempio di sistema di sicurezza: quando un movimento viene rilevato all’interno della stanza viene scattata una foto per vedere chi è l’intruso.

  • Raspberry Pi
    • Hardware
      Accessori
      • piCamera
        • piCamera
          Sorveglianza
        • piCamera
          Text on Video
        • piCamera
          Filtri Effetto
        • piCamera
          Canon & Nikon

Consiglio di andare a rivedersi i seguenti articoli.

Installazione del PIR Motion Detector

In questo articolo, connetteremo il PIR Motion Detector utilizzando uno schema più semplice, cioè senza utilizzare la breadboard o la resistenza di pull up. Infatti collegheremo tutti i jumper wire direttamente ai pin della GPIO come mostrato nello schema sottostante.

meccanismo-complesso-pir-and-picamera-sketch

Una volta connesso il PIR avviamo il Raspberry. Poi apriamo una sessione di comando dal terminale e apriamo il file che avevamo editato nell’articolo PIR motion detector.

$ nano pir01.py

Per comodità riporto il codice qui sotto, mettendo in grossetto la parte di codice da aggiungere per lavorare con le modifiche delle connessioni senza breadboard e resistenza.

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

pirPin = 7
GPIO.setup(pirPin, GPIO.IN, GPIO.PUD_UP)

while True:
    if GPIO.input(pirPin) == GPIO.LOW:
        print "Motion detected!"
    else:
        print "No motion"
    time.sleep(0.2)

Per eseguire programmi in Python che utilizzando i pin GPIO è necessario eseguirli come sudo.

$ sudo python pir01.py

Immediatamente il programma comincerà a scrivere “No Motion”. Ogni volta che il sensore PIR rileverà un movimento otterrò la scritta “Motion Detected!”.

Meccanismo Complesso - PIR motion raspberry 02

Una foto per ogni movimento rilevato

Adesso utilizziamo l’esempio precedente per far scattare una foto a Raspberry ogni volta che il PIR rileverà un movimento nella stanza. In questo modo sarà possibile capire quale sarà l’origine del movimento (chi è entrato nella nostra stanza! )

Copiamo il file precedente e rinominiamolo pir02.py.

$ cp pir01.py pir02.py

Adesso apporremo le giuste modifiche per integrare l’uso della PiCamera con il programma precedente (in grossetto le aggiunte).

import RPi.GPIO as GPIO
import time
from picamera import PiCamera

GPIO.setmode(GPIO.BCM)

pirPin = 7
GPIO.setup(pirPin, GPIO.IN, GPIO.PUD_UP)
camera = PiCamera()
counter = 1

while True:
    if GPIO.input(pirPin) == GPIO.LOW:
        try: 
                      camera.start_preview()
                      time.sleep(1)
                      camera.capture('/home/pi/image%s.jpg' % counter)
                      counter = counter + 1
                      camera.stop_preview()
                  except:
                      camera.stop_preview()
    time.sleep(3)

Per prima cosa abbiamo aggiunto il modulo PiCamera per utilizzare la webcam. Poi abbiamo definito la nostra PiCamera. Quando il sensore PIR rileva un movimento, Raspberry attiva la webcam, passa giusto un secondo per la regolazione della luminosità e poi scatta la foto. Poi disattiva il preview della telecamera.

Inoltre è necessario gestire l’eccezione (per esempio quando interrompo l’esecuzione del programma con CTRL+C) per evitare che la webcam rimanga attiva anche dopo la fine del programma.

Girare un video di sorveglianza

Nell’esempio precedente abbiamo visto come scattare delle foto ad ogni movimento rilevato. Una modalità più avanzata è quella di filmare un breve video al posto della foto in modo da riprendere il soggetto del movimento e comprendere meglio quello che sta facendo. Per prova ho impostato una durata di 5 secondi, ma potete aumentare questa durata.

import RPi.GPIO as GPIO
import time
from picamera import PiCamera

GPIO.setmode(GPIO.BCM)

pirPin = 7
GPIO.setup(pirPin, GPIO.IN, GPIO.PUD_UP)
camera = PiCamera()
counter = 1

while True:
    if GPIO.input(pirPin) == GPIO.LOW:
        try: 
            camera.start_preview()
            camera.start_recording('/home/pi/video%s.h264' % counter)
            counter = counter + 1
            time.sleep(5)
            camera.stop_recording()
            camera.stop_preview()
        except:
            camera.stop_preview()
    time.sleep(3)

Ricordatevi di lanciare l’esecuzione del programma con sudo, perchè stai utilizzando i pin GPIO.

$ sudo python pir03.py

Per interrompere premere CTRL+C.

Una accortezza: disattiviamo il LED di attivazione della WebCam

Se volete veramente attivare una telecamera di sorveglianza per scoprire che si muove furtivamente, forse sarebbe meglio disabilitare il LED che si accende ogni volta che la webcamera viene attivata. Questo è possibile immettendo il seguente comando:

$ sudo nano /boot/config.txt

e aggiungendo alla fine del file la seguente riga di configurazione

disable_camera_led=1

Salve e fai il reboot del sistema per acquisire la nuova configurazione.

$ sudo reboot

Conclusione

Con questo articolo abbiamo visto le basi per poter sviluppare una webcam di videosorveglianza da installare in una stanza. Se questo articolo vi fosse stato di ispirazione per dei progetti non esitate a pubblicarli su Meccanismo Complesso.

1 commento su “PiCamera & PIR Movement Detector – un sistema di sorveglianza

Lascia un commento