Realizziamo un semplice allarme usando il sensore PIR (Passive InfraRed) HC-SR501, molto diffuso negli starter kit di Arduino, collegandolo ad Arduino insieme ad un Led ed un buzzer piezoelettrico. Ancor meglio se al posto del buzzer riusciamo a metter un piccolo altoparlante recuperato a qualche radiolina rotta o obsoleta.
Il sensore PIR dispone di soli tre pin, due di alimentazione (+5V e GND) e il terzo, normalmente quello centrale, che si attiva (segnale '1' alla porta digitale a cui si collega) quando rileva la presenza di una sorgente infrarossa in movimento, quale potrebbe essere il corpo umano, altrimenti rimane nello stato '0'.
Per capire la funzione dei tre Pin si possono leggere le indicazioni poste sotto la campana bianca di plastica, che con un po' di forza si riesce a staccare e successivamente, con una piccola pressione, a riattaccare.
Non occorre quindi alcuna libreria e l'utilizzo è estremamente semplice. Quando lo stato del pin dati collegato al PIR è '1', faremo emettere un suono a due frequenze diverse e contemporaneamente accendiamo e spegniamo un Led.
Questo è lo schema elettrico realizzato con Fritzing:
Nello sketch che andremo a realizzare ci sono due novità importanti rispetto ai progetti precedenti. Mentre in precedenza abbiamo usato solo utilizzatori (led e buzzer) che venivano attivati attraverso un segnale trasmesso da Arduino, questa volta, usando il PIR come sensore, sarà il sensore a dover inviare ad Arduino un segnale elettrico e quindi occorrerà dichiarare l'utilizzo di un PIN digitale di Arduino in modalità da ricevere un segnale pinMode(10, INPUT); e non come fatto in precedenza con pinMode(10, OUTPUT); e non si dovrà quindi trasmettere un segnale attraverso il comando digitalWrite, ma riceverlo leggendo il suo contenuto e quindi digitalRead;.
L'altra novità è quella di riuscire a visualizzare dei messaggi o dei valori numerici, elaborati da Arduino, sul monitor del PC. Questo è possibile attivando una comunicazione seriale (trasmissione i un solo carattere per volta 9600 baud) tra Arduino ed il PC con l'istruzione Serial.begin(9600); (da inserite nel void setup) ed l'istruzione Serial.println("allarme non attivo"); che trasmette la stringa "allarme non attivo" al monitor del PC. Questa si distingue dall'altra comune istruzione Serial.print("allarme non attivo"); perché aggiungendo ln (nuova linea) a print (stampa), la stringa appare su una nuova linea di testo e non in coda alla linea di testo precedente.
I messaggi, o i valori delle variabili, sono visualizzabili attivando nell'IDE il 'Monitor seriale' o attraverso la lente d'ingrandimento in alto a destra, o attraverso il menù strumenti. Occorre però che nella parte bassa del Monitor seriale venga selezionata la stessa velocità di trasferimento dati proposta nell'istruzione Serial.begin(velocità di trasmissione); quindi nel caso del nostro sketch, 9600 baud. Si dovrà selezionare anche "nessun fine riga" nel menù precedente.
Se le istruzioni sono state trascritte e trasferite correttamente ad Arduino, ogni volta che ci si avvicina al sensore PIR, dovrebbe essere emesso un suono e visualizzato sullo schermo del PC il messaggio "allarme attivo" nel Monitor seriale dell'IDE di Arduino.