Usare i PIR con Arduino

Ci sarà capitato spesso di camminare in una stanza o da qualche altra parte e vedere accendersi una luce al nostro passaggio vicino ad essa. Questo è possibile grazie ai PIR (Passive InfraRed).

In questo articolo andremo quindi a vedere nel dettaglio cosa sono i PIR, come funzionano e come interfacciarli con Arduino.

Cos’è e come funziona un PIR

I sensori PIR sono dei sensori di movimento che misurano i raggi infrarossi rilasciati dagli oggetti presenti nel suo campo visivo. Tutti gli oggetti con una temperatura superiore allo 0 assoluto emettono radiazioni infrarossi che non sono visibili alla vista umana, ma possono essere rilevate da specifici componenti elettronici. I PIR possono avere varie forme e dimensioni e sicuramente ne avrai visto almeno uno.

usare i PIR con Arduino-Tipi di PIR

Alcuni tipi di PIR che possiamo trovare in commercio

Ma come è fatto un PIR al suo interno?

Prendiamo in esame l’ultimo sensore dell’immagine sopra (che è anche quello che useremo con Arduino). Togliendo la capsula semisferica bianca possiamo notare un piccolo sensore montato sulla scheda.




 

Interno-PIR

 

Quello in realtà non è il sensore ma è un involucro sigillato ermeticamente che ha lo scopo di proteggere il sensore. Quest’ultimo si trova sotto la finestra scura composta da un materiale in grado di far passare l’infrarosso. Lì quindi possiamo trovare il sensore vero e proprio chiamato sensore piroelettrico il quale è in grado di generare una tensione temporanea quando, in questo caso, riceve delle radiazioni infrarosse.

Un sensore piroelettrico

Un sensore piroelettrico

Il sensore piroelettrico, come si può evincere anche dall’immagine sopra, è diviso in due parti collegate tra di loro. Questa divisione è dovuta al fatto che un sensore di movimento deve appunto vedere se c’è un movimento e quindi se c’è una differenza di infrarossi tra le due parti: quando il sensore è inattivo (quando quindi non c’è movimento) le due parti di questo ricevono la stessa quantità di infrarossi. Quando invece un corpo caldo passa davanti al PIR esso passa dapprima davanti ad una metà del sensore creando così una differenza di potenziale positiva tra le due metà di esso, quando poi passa nell’altra ,metà la differenza di potenziale è negativa fino a quando lascia l’area di rilevamento e il PIR torna in stato di riposo.

L’immagine sotto può aiutare a capire meglio il funzionamento.

Diagramma-sensore

 

Adesso possiamo spiegare cosa è quella semisfera bianca che abbiamo tolto all’inizio. Quella è una lente chiamata lente di Fresnel. La sua funzione è multipla, essa può infatti determinare l’ampiezza e il raggio di rilevamento del PIR ed inoltre focalizza la luce infrarossa sul sensore.

Per quanto riguarda l’acquisto del PIR ci sono molti negozi di elettronica che lo vendono, sia fisici sia su internet. Noi comunque ci siamo affidati a Homotix, un negozio Italiano che vende moltissimi prodotti elettronici per creare progetti, incluso questo sensore che potete acquistare andando in questa pagina.

Componenti necessari

Andiamo adesso a vedere come usare i PIR con Arduino.

Per questo semplice progetto i componenti necessari sono:

  • Un Arduino (va bene qualsiasi modello)
  • Una breadboard
  • Un LED di qualsiasi colore
  •  Un sensore PIR
  • Una resistenza da 470 Ω
  • Cavetti per i collegamenti

Collegamenti

I PIR hanno 3 PIN da collegare composti da:

  • Alimentazione a +5 V
  • GND
  • Segnale in uscita

La cosa importante è quella di controllare l’ordine dei PIN in quanto potrebbe differire da quello del PIR da me utilizzato.

usare i PIR con Arduino-disosizione PIN

 

Come si può notare dall’immagine possono essere presenti anche due potenziometri che regolandoli modificano: uno il tempo di cambiamento di stato dopo aver rilevato il movimento, ovvero per quanto tempo lo stato rimarrà su HIGH dopo che il movimento è stato rilevato, l’altro invece modifica la distanza massima di rilevamento del sensore.

Vediamo adesso il collegamento con Arduino.

usare i PIR con Arduino-collegamento con Arduino Fritzing

 

usare i PIR con Arduino-collegamento con Arduino Fritzing schema elettrico

 

Programmazione della scheda

Vediamo adesso il codice e la sua spiegazione da caricare su Arduino. Quello che vogliamo fare è accendere un LED ogni volta che il sensore rileva un movimento, altrimenti rimane spento.

#define uscita_pir 7
#define led 2

void setup(){
   pinMode(uscita_pir, INPUT);
   pinMode(led, OUTPUT);
   
   digitalWrite(led, LOW);
}

void loop(){
   int stato_sensore = digitalRead(uscita_pir);
   
   if(stato_sensore == HIGH){
      digitalWrite(led, HIGH);
   }
   else{
      digitalWrite(led, LOW);  
   }
   delay(500);
}

Analizziamo adesso il codice.

Righe 1 e 2:  Da ora in poi le porte 7 e 2 di Arduino nel programma verranno chiamate rispettivamente “uscita_pir” e “led”. Questo serve per rendere una eventuale modifica nel programma delle porte e aiuta nella programmazione dello stesso.

Righe 5 e 6: Facciamo capire ad Arduino se le porte in cui sono collegati sensore e led sono di uscita o di entrata. Dichiariamo quindi la porta in cui è collegato il PIR come input in quanto dobbiamo ricevere un segnale dal sensore e leggerlo, la porta in cui è collegato il LED è invece in output in quanto è Arduino che deve accenderlo e quindi gli deve mandare corrente.

Riga 8: Con questa riga diciamo ad Arduino che il pin in cui è collegato il LED deve avere una uscita pari a 0. Questa riga di codice si può pure evitare ma è meglio inserirla, in questo modo siamo infatti sicuri che all’inizio il LED sia spento in quanto la scheda potrebbe casualmente accendere il LED anche se davanti al sensore non è passato niente.

Riga 12: Creiamo una nuova variabile chiamata “stato_sensore”  alla quale assegniamo un valore che è dato dalla funzione “digitalRead(uscita_pir)”. Quest’ultima legge lo stato della porta in cui è collegato il sensore e se questo dovesse rilevare un movimento avrebbe uno stato alto, altrimenti uno basso. La variabile “stato_sensore” quindi assume un valore HIGH se viene letto un movimento altrimenti assume un valore LOW.

Riga 14: Se la variabile “stato_sensore” ha un valore HIGH entriamo dentro la condizione if, altrimenti questa condizione non viene calcolata.

Riga 15: In questa parte si entra solo se il sensore ha rilevato un movimento. Con questa riga facciamo accendere il LED.

Riga 18: Se invece il PIR non ha rilevato nessun movimento si entra in questa porzione di codice e lasciamo il LED spento.

Riga 20: Facciamo attendere la scheda 500 millisecondi (mezzo secondo) prima di rileggere lo stato del sensore.

Questa guida è finita qui. Per ogni dubbio o consiglio commenta qui sotto, saremo contenti di aiutarti 🙂

I commenti sono chiusi.