Descrizione
[vc_row][vc_column][vc_column_text]
📦 Modulo Sensore di Movimento PIR a Infrarossi HC-SR501
🧾 Descrizione Generale
Il modulo HC-SR501 è un sensore PIR (Passive InfraRed) progettato per rilevare il movimento di oggetti a base di calore (come esseri umani o animali). È molto utilizzato in progetti di automazione, allarmi, domotica e sistemi di sicurezza.
⚙️ Specifiche Tecniche
| Caratteristica | Valore |
|---|---|
| Tensione di alimentazione | 4,5V – 20V DC (consigliati 5V) |
| Assorbimento di corrente | ~50 µA |
| Angolo di rilevamento | ~120° |
| Distanza di rilevamento | 3 – 7 metri (regolabile) |
| Tempo di attivazione | Regolabile (da ~3 a ~300 sec) |
| Tempo di ritardo | Regolabile |
| Modalità di funzionamento | Ripetitiva (H) o Non Ripetitiva (L) |
| Uscita digitale (OUT) | HIGH (3.3V) quando rileva movimento |
🔩 Componenti del modulo
- Sensore PIR piroelettrico: rileva variazioni di calore.
- 2 potenziometri:
- Uno per regolare il tempo di ritardo.
- Uno per la distanza di rilevamento.
- Jumper di modalità: permette di scegliere tra modalità:
- H (Trigger ripetitivo): il segnale OUT resta HIGH mentre c’è movimento.
- L (Trigger singolo): OUT va HIGH una sola volta per evento.
🔌 Connessioni del Modulo con Arduino
| HC-SR501 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| OUT | Pin digitale (es. D2) |
🧪 Esempio di Utilizzo con Arduino
🎯 Obiettivo: Accendere un LED quando il sensore rileva un movimento.
🔧 Componenti necessari
- 1 x Modulo HC-SR501
- 1 x LED
- 1 x Resistenza da 220Ω
- Cavi jumper
- Arduino Uno (o compatibile)
- Breadboard
🔗 Schema di Collegamento
HC-SR501 Arduino
--------- --------
VCC --------> 5V
GND --------> GND
OUT --------> D2
LED:
Anodo (+) --------> Pin D13 (via resistenza 220Ω)
Catodo (-) -------> GND
💻 Codice di esempio
// Pin del sensore PIR e del LED
const int pirPin = 2;
const int ledPin = 13;
void setup() {
pinMode(pirPin, INPUT); // Pin del sensore come input
pinMode(ledPin, OUTPUT); // Pin del LED come output
Serial.begin(9600);
}
void loop() {
int statoSensore = digitalRead(pirPin); // Legge il valore del sensore
if (statoSensore == HIGH) {
digitalWrite(ledPin, HIGH); // Accende il LED
Serial.println("Movimento rilevato!");
} else {
digitalWrite(ledPin, LOW); // Spegne il LED
}
delay(100); // Piccola pausa per stabilità
}
🧠 Suggerimenti e Note
- Tempo di avvio: Dopo aver alimentato il modulo, attendere 30–60 secondi per la calibrazione automatica.
- False rilevazioni: possono verificarsi in ambienti con rapide variazioni di temperatura o correnti d’aria.
- Regolazioni fisiche: I potenziometri sul modulo ti permettono di modificare:
- Distanza di rilevamento (potenziometro etichettato “Sx” o “Distance”).
- Tempo in cui l’uscita rimane HIGH dopo il rilevamento (potenziometro “Dx” o “Time”).
📘 Esempio Avanzato: Attivazione Allarme
const int pirPin = 2;
const int buzzerPin = 8;
void setup() {
pinMode(pirPin, INPUT);
pinMode(buzzerPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(pirPin) == HIGH) {
digitalWrite(buzzerPin, HIGH);
Serial.println("Movimento! Allarme attivo.");
} else {
digitalWrite(buzzerPin, LOW);
}
delay(100);
}
📌 Applicazioni Tipiche
- Luci automatiche per corridoi e stanze
- Sistemi antifurto domestici
- Campanelli automatici
- Monitoraggio ambientale
- Risparmio energetico in uffici
🧰 Debug e Risoluzione dei Problemi
| Problema | Soluzione |
|---|---|
| Il sensore non rileva nulla | Verifica alimentazione, angolo e distanza. Attendi 1 min. |
| Rilevazioni casuali | Evita fonti di calore o vento diretto (es. ventilatori) |
| Segnale OUT resta sempre LOW | Prova a cambiare modalità jumper (H/L), controlla collegamenti |
[/vc_column_text][/vc_column][/vc_row]













