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.