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.
[wpda_org_chart tree_id=33 theme_id=50]
Consiglio di andare a rivedersi i seguenti articoli.
- Il PIR motion detector – un sensore di movimento per Raspberry (parte 2)
- PiCamera & Python – programmiamo la webcam su Raspberry
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.
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!”.
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.