Tutorial ESP32 21/55 - Rilevamento di esseri umani con sensore di movimento PIR | Kit di apprendimento IoT ESP32 di SunFounder
In questo tutorial, impareremo a utilizzare un sensore di movimento PIR con l'ESP32 per rilevare la presenza umana. L'ESP32 è un microcontrollore potente che offre sia funzionalità Wi-Fi che Bluetooth, rendendolo ideale per progetti IoT. Integrando un sensore PIR, possiamo costruire un sistema che attiva un LED o un buzzer ogni volta che viene rilevato un movimento, fornendo un modo semplice ma efficace per monitorare l'attività umana.
Il sensore PIR (Passive Infrared) rileva il movimento percependo la radiazione infrarossa emessa da oggetti, in particolare da quelli a temperatura corporea calda come gli esseri umani. Quando viene rilevato un movimento, il sensore invia un segnale all'ESP32, che può quindi attivare un'uscita, come accendere un LED o far suonare un buzzer. Questo tutorial ti guiderà attraverso la configurazione hardware, il cablaggio e il codice necessari per far funzionare correttamente il sistema (nel video al 00:45).
Hardware spiegato
Questo progetto coinvolge diversi componenti chiave. Il microcontrollore ESP32 funge da cervello dell'operazione, gestendo i dati dei sensori e controllando le uscite. Il sensore di movimento PIR rileva il movimento misurando le variazioni nella radiazione infrarossa. Il LED o il buzzer forniscono un avviso visivo o uditivo quando viene rilevato un movimento.
L'ESP32 è dotato di Wi-Fi e Bluetooth, consentendo funzionalità estese come la connettività cloud. Il sensore PIR contiene una lente che concentra la luce infrarossa su un sensore piezoelettrico, che genera un segnale di tensione quando rileva cambiamenti nei livelli infrarossi, indicando movimento.
Dettagli della scheda tecnica
| Produttore | SunFounder |
|---|---|
| Numero parte | Modulo Sensore PIR |
| Tensione logica/IO | 3,3 V |
| Tensione di alimentazione | 3,3 V |
| Corrente di uscita (per canale) | 20 mA max |
| Corrente di picco (per canale) | 50 mA massimo |
| Linee guida sulla frequenza PWM | N/A |
| Soglie logiche di ingresso | 0,3 V (basso), 2,0 V (alto) |
| Caduta di tensione / RDS(on)/ saturazione | N/A |
| Limiti termici | 0 a 70 °C |
| Pacchetto | Modulo |
| Note / varianti | Sensibilità e ritardo regolabili |
- Assicurati di fornire un'alimentazione adeguata (3,3 V) per evitare danni.
- Usa una resistenza per il LED per limitare la corrente.
- Mantenere un cablaggio adeguato per prevenire cortocircuiti.
- Regola le manopole del sensore PIR per la sensibilità e il ritardo secondo necessità.
- Testa il sensore in ambienti diversi per prestazioni ottimali.
Istruzioni di cablaggio

Per collegare il sensore di movimento PIR e il LED all'ESP32, inizia collegando il pin VCC del sensore PIR all'uscita di 3,3 V sull'ESP32. Successivamente, collega il pin di massa del sensore PIR a un pin di massa sull'ESP32. Il pin del segnale (spesso etichettato comeS) dal sensore PIR dovrebbe essere collegato al pin GPIO 14 sull'ESP32.
Per il LED, collega il piede più lungo (anodo) al pin GPIO 26 tramite una resistenza da 220 Ohm, e collega il piede più corto (catodo) a terra. Assicurati che tutte le connessioni siano sicure per garantire un funzionamento corretto. Se utilizzi un buzzer invece di un LED, collega un pin del buzzer al pin GPIO 26 e l'altro a terra, sostituendo l'impianto del LED.
Esempi di codice e guida passo passo
Nel codice, definiamo i numeri dei pin per il sensore PIR e il LED. Utilizziamoconst int pirPin = 14;impostare il pin PIR econst int ledPin = 26;per il pin LED. Queste costanti garantiscono che i numeri dei pin rimangano invariati durante l'esecuzione del programma.
const int pirPin = 14; // the number of the pir pin
const int ledPin = 26; // LED pinQuesto frammento inizializza i pin che utilizzeremo. Nelsetup()funzione, configuriamo il pin PIR come ingresso e il pin LED come uscita. Questa configurazione è fondamentale per leggere lo stato del sensore e controllare il LED.
void setup() {
Serial.begin(115200);
pinMode(pirPin, INPUT); // initialize the pir pin as an input
pinMode(ledPin, OUTPUT); // initialize the LED pin as an output
}Nellaloop()funzione, leggiamo continuamente lo stato del sensore PIR utilizzandodigitalRead(pirPin);. Se il sensore rileva movimento (indicato da uno stato HIGH), accendiamo il LED utilizzandodigitalWrite(ledPin, HIGH);Altrimenti, spegniamo il LED.
if (pirState == HIGH) {
digitalWrite(ledPin, HIGH); // turn LED on
} else {
digitalWrite(ledPin, LOW); // turn LED off
}Questa logica permette al LED di rispondere ai movimenti rilevati dal sensore PIR. Assicurati di caricare il codice completo fornito sotto l'articolo per una funzionalità completa.
Dimostrazione / Cosa Aspettarsi
Una volta che tutto è configurato e il codice è caricato, il LED si accenderà quando viene rilevato movimento dal sensore PIR. Puoi testare il sensore muovendoti di fronte ad esso; il LED dovrebbe accendersi immediatamente. Se il sensore è impostato su un ritardo, rimarrà acceso per il tempo specificato prima di spegnersi di nuovo (nel video alle 12:15).
I comuni errori includono un cablaggio errato, che può impedire al sensore di funzionare. Assicurati che il sensore PIR sia correttamente alimentato e che il pin del segnale sia collegato al pin GPIO corretto sull'ESP32. Regolare i controlli di sensibilità e ritardo sul sensore PIR può anche aiutare a ottimizzare le prestazioni in base all'ambiente.
Timestamp video
- 00:00 Inizio
- 1:54 Introduzione al sensore PIR
- 6:38 Spiegazione del cablaggio
- 10:21 Spiegazione del codice Arduino
- 12:45 Selezionando la scheda ESP32 e la porta COM nell'IDE Arduino
- 14:27 Dimostrazione e calibrazione del sensore PIR
/*
* // imposta i numeri dei pin
*/
const int pirPin = 14; // il numero del pin pir
const int ledPin = 26; // pin LED
// variabile per memorizzare lo stato del pir
int pirState = 0;
void setup() {
Serial.begin(115200);
// inizializza il pin pir come un ingresso
pinMode(pirPin, INPUT);
// inizializza il pin LED come uscita
pinMode(ledPin, OUTPUT);
}
void loop() {
// leggi lo stato del valore pir
pirState = digitalRead(pirPin);
Serial.println(pirState);
delay(100);
// se il pir è premuto, lo stato del pir è ALTO
if (pirState == HIGH) {
// accendere LED
digitalWrite(ledPin, HIGH);
} else {
// spegni il LED
digitalWrite(ledPin, LOW);
}
}
Common Course Links
Common Course Files
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Scheda tecnica (pdf)
-
Scheda tecnica del sensore di movimento RE200B_PRI
RE200B_PRI_datasheet.pdf0.02 MB -
BISS0001 scheda tecnica del chip sensore di movimento
BISS0001_datasheet.pdf0.16 MB
Altri file
-
Manuale dell'utente del sensore di movimento HC-SR501
robojax-HC-SR501-motion-manual.pdf