Andiamo a realizzare con il Raspberry Pi (già configurato e operativo) un piccolo sistema di allarme composto da un sensore PIR.

Sensori PIR

I sensori Piroelettrici son forse i sensori più utilizzati per il rilevamento di movimento all’interno o all’esterno di abitazioni. Sensori sempre più sofisticati vengono prodotti e i costi abbattuti.
Un sensore Piroelettrico è mostrato in figura:

pir_sensor

Si può acquistare in negozi di elettronica, e se volete risparmiare su ebay o su siti che vendono accessori e componenti per arduino. Un sensore del genere costa non più di 2 euro (spedizione inclusa talvolta, se ordiniamo dalla cina tramite ebay).

Realizziamo il circuito

Per realizzare il circuito bisogna conoscere quella che è la mappatura dei PIN GPIO sul Raspberry Pi:

Raspberry-Pi-GPIO-Layout-Map

Un sensore piroelettrico come quello mostrato sopra, ha 3 pin d’uscita, rispettivamente per il voltaggio (VCC +5V), il GND (Ground, polo negativo) e l’OUT (output, alto quando viene rilevato del movimento).

Per collegarlo direttamente ai PIN della Board (a seconda del collegamento che vogliamo fare) abbiamo bisogno di 3 cavetti jumper, femmina da entrambi i lati.

Il collegamento definitivo è questo:

IMG_20150222_205511

IMG_20150222_205521

IMG_20150222_205529

Il collegamento è facile, basta connettere al secondo pin o al quarto pin, il cavetto del sensore relativo all’alimentazione (VCC), mentre al 6 pin la messa a terra (GND) e al pin 24 il cavo del segnale (OUT), tenete presente che la numerazione segue l’immagine sopra della mappa dei pin del raspberry PI.

Codice python

Il codice Python 2.7 che gestisce la comunicazione con i pin GPIO è presto mostrato:

import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)
PIR_PIN = 8
GPIO.setup(PIR_PIN, GPIO.IN)
 
try:
 
               print "PIR Module Test (CTRL+C to exit)"
               time.sleep(2)
               print "Ready"
 
               while True:
 
                             if GPIO.input(PIR_PIN):
                                             print "Motion Detected!"
                             time.sleep(1)
 
except KeyboardInterrupt:
 
               print "Quit"
               GPIO.cleanup()

Andiamo ora a spiegare il codice:

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)

permette di importare le librerie del Raspberry relative alla comunicazione con i GPIO.

PIR_PIN = 8

è una variabile che impostiamo a 8, perchè è la che andremo a collegare il corrispondente cavetto del segnale del sensore.
Andiamo a definire che questo è un pin di input con:

GPIO.setup(PIR_PIN, GPIO.IN)

Aggiungiamo del codice per capire quando il programma python è pronto a rilevare il movimento:


print "Allarme con sensore PIR (CTRL+C per uscire)"
time.sleep(2)
print "Sistema Pronto"

Per controllare lo status del sensore usiamo un loop infinito in cui controlliamo il valore booleano in continuazione:


while True:

if GPIO.input(PIR_PIN):

print "Movimento rilevato!"

time.sleep(1)

Quando verrà rilevato il movimento verrà stampata la frase “Movimento rilevato!”

La parte restante del codice:


except KeyboardInterrupt:

print "Esci"
GPIO.cleanup()

permette di catturare il carattere di escape e uscire ripulendo la cache.