Raspberry Pi – Sistema di allarme e notifica con sensore PIR
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:
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:
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:
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.
Commenti