Scrivere uno sketch o uno snippet cioè una parte di codice d’esempio per un sensore PIR HC-SR501 collegato ad Arduino è veramente semplice, come del resto lo è anche per il collegamento con Arduino, oltre ai due pin di alimentazione il sensore PIR presenta un terzo piedino (ovviamente) dove andare a leggere lo stato del sensore, il codice dello sketch si limita davvero a due righe e lo vedremo a breve.


Come funziona un sensore PIR? Un sensore PIR acronimo di (Passive Infra-Red) oppure se vogliamo sensore di movimento, rileva gli oggetti o persone davanti al proprio raggio di azione grazie all’emissione dei raggi infrarossi che i corpi irradiano, più un corpo o oggetto è caldo e più questo emette radiazioni infrarosse, come vengono rilevate queste irradiazioni? Tramite un’opportuna lente, detta lente di Fresnel, operanti a lunghezze d’onda al di fuori dello spettro visibile (non visibili ad occhio nudo), infatti parliamo dello spettro dell’infrarosso.
Caratteristiche del sensore PIR HC-SR501
| Tensione di lavoro | 4,8-20Vdc |
| Corrente a riposo | 50 uA |
| Temperatura di utilizzo | -15 +70 C° |
| Dimensioni | 32 x 24 x 25H mm |
| Distanza rilevamento | 3-7 m (regolabile) |
| Angolo di rilevamento | 100° |
| Tempo di ritardo | 0,5-20 Sec (regolabile) |
| Tempo di durata livello logico alto | 2,5 Sec (fisso) |
I due trimmer posti su uno dei lati del sensore che vediamo in foto, contrassegnati con Sx (sensitivity) e Tx (trigger length), servono rispettivamente per regolare la sensibilità del sensore, l’altro invece serve a regolare il tempo di ritardo del segnale.
I collegamenti sono abbastanza semplici, ho collegato l’out del sensore PIR al pin numero 2 di Arduino, poi ho aggiunto due led ed un semplice buzzer.
Adesso passiamo allo sketch, un breve codice di esempio:
const int pir = 2;
const int buzzer = 6;
const int led_green = 7;
const int led_red = 8;
void setup()
{
pinMode(pir, INPUT);
pinMode(buzzer, OUTPUT);
delay(1000);
}
void loop()
{
if( digitalRead(pir) ) {
alarm(200);
digitalWrite(led_green, LOW);
digitalWrite(led_red, HIGH);
}
else {
digitalWrite(led_red, LOW);
digitalWrite(led_green, HIGH);
}
}
void alarm(unsigned char delayms)
{
analogWrite(buzzer, 20);
delay(delayms);
analogWrite(buzzer, 0);
delay(delayms);
}
Siamo arrivati alla fine del post, se hai bisogno di aiuto o qualche chiarimento in merito commenta qui sotto.
Buon lavoro 😉
Scopri come funzione il sensore HC-SR04, ed il codice per utilizzarlo nei tuoi sketch.







