Tutorial ESP32 27/55 - Misurazione della distanza con sensore ad ultrasuoni | Kit di apprendimento IoT ESP32 di SunFounder
In questo tutorial, impareremo come utilizzare un sensore di distanza ad ultrasuoni con l'ESP32 per misurare le distanze e visualizzare i risultati su uno schermo. Esploreremo anche come attivare un buzzer quando un oggetto viene rilevato all'interno di un intervallo specifico. Questo progetto evidenzia la versatilità del microcontrollore ESP32, che integra capacità Wi-Fi e Bluetooth, rendendolo adatto per varie applicazioni IoT.
In questo guida, troverai spiegazioni sui componenti hardware, istruzioni di cablaggio e frammenti di codice per aiutarti a implementare con successo il progetto. Per ulteriore chiarezza, ti preghiamo di fare riferimento al video (nel video a :00).
Hardware Spiegato
I componenti principali di questo progetto includono il microcontrollore ESP32, il sensore ultrasonico (HC-SR04) e un buzzer. Il sensore ultrasonico è composto da due parti principali: un trasmettitore che emette onde ultrasoniche e un ricevitore che ascolta le onde riflesse. Misurando il tempo impiegato dalle onde per tornare, possiamo calcolare la distanza da un oggetto.
L'ESP32 funge da controller centrale, elaborando i dati dal sensore a ultrasuoni e controllando il buzzer in base alla distanza misurata. Il buzzer suonerà quando la distanza rilevata è inferiore a una soglia definita, indicando che un oggetto è troppo vicino.
Dettagli del datasheet
| Produttore | HC-SR04 |
|---|---|
| Numero di parte | HC-SR04 |
| Tensione Logica/IO | 5 V |
| Tensione di alimentazione | 5 V |
| Corrente di uscita (per canale) | 16 mA |
| Corrente di picco (per canale) | ... |
| Guida sulla frequenza PWM | ... |
| Soglie logiche di ingresso | ... |
| Caduta di tensione / RDS(on)/ saturazione | ... |
| Limiti termici | ... |
| Pacchetto | ... |
| Note / varianti | Gamma di misura: da 2 cm a 400 cm |
- Assicurati di fornire un'alimentazione adeguata di 5 V per il sensore.
- Mantenere un percorso chiaro per le onde ultrasoniche per evitare interferenze.
- Utilizza cavi corti per ridurre il ritardo del segnale e il rumore.
- Assicurati di collegare correttamente i pin per evitare incomprensioni.
- Testa il sensore in vari ambienti per verificarne l'accuratezza.
Istruzioni per il cablaggio

Per collegare il sensore ultrasonico all'ESP32, collega il pin VCC del sensore al pin 5V dell'ESP32. Successivamente, collega il pin GND del sensore a uno dei pin di massa (GND) dell'ESP32. Il pin di attivazione (Trig) del sensore deve essere collegato a GPIO 26 dell'ESP32, mentre il pin di eco (Echo) deve essere collegato a GPIO 25. Questa configurazione consente all'ESP32 di inviare un segnale al sensore e ricevere il segnale di eco per calcolare la distanza.
Per il buzzer, collega il terminale positivo (lungo) al GPIO 12 sull'ESP32 e il terminale negativo (corto) al GND. Assicurati che tutte le connessioni siano sicure per evitare cablaggi allentati durante il funzionamento. Se utilizzi una breadboard, allinea correttamente i collegamenti del buzzer per evitare errori di cablaggio. Assicurati di fare riferimento al video per la conferma del cablaggio (nel video alle 05:12).
Esempi di codice e guida passo passo
Il codice inizializza i pin per il sensore ultrasuoni e imposta la comunicazione seriale. La funzione principale,readSensorData()è responsabile dell'invio di un segnale di attivazione e della misurazione del tempo di risposta dal pin di eco.
const int echoPin = 25;
const int trigPin = 26;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.println("Ultrasonic sensor:");
}
Il codice definisceechoPinetrigPincome costanti per i pin collegati al sensore ad ultrasuoni. Nelsetup()funzione, iniziamo la comunicazione seriale e impostiamo i modi dei pin di conseguenza.
float readSensorData() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long microsecond = pulseIn(echoPin, HIGH);
float distance = microsecond / 29.00 / 2;
return distance;
}
Questo estratto mostra ilreadSensorData()funzione, che invia un impulso di 10 microsecondi al pin di attivazione. Misura quindi il tempo impiegato dal pin di eco per ricevere il segnale di ritorno, calcola la distanza e restituisce questo valore.
Infine, la funzione del ciclo legge continuamente la distanza e la stampa sul monitor seriale. Se la distanza è inferiore a 20 cm, il buzzer verrà attivato.
Dimostrazione / Cosa Aspettarsi
Quando esegui il programma, l'ESP32 visualizzerà la distanza misurata in centimetri sul monitor seriale. Se un oggetto si avvicina a meno di 20 cm dal sensore, il buzzer emetterà un suono. Questo comportamento può essere testato posizionando oggetti a varie distanze di fronte al sensore. Fai attenzione alla polarità invertita e assicurati che le connessioni siano effettuate come specificato per evitare eventuali problemi durante il funzionamento (nel video a 08:00).
Timestamp video
- 00:00 Inizio
- 1:46 Introduzione al sensore ultrasonico
- 6:02 Spiegazione del cablaggio
- 7:37 Codice Arduino ESP32 spiegato
- 11:33 Selezionando la scheda ESP32 e la porta COM nell'Arduino IDE
- 13:15 Dimostrazione di misurazione della distanza
- 16:43 Azione di strambata con distanza: segnale acustico
/*
* // Definisci i pin per il sensore ad ultrasuoni
*/
const int echoPin = 25;
const int trigPin = 26;
// Prototipo di funzione per la lettura dei dati del sensore
float readSensorData();
void setup() {
// Inizia la comunicazione seriale a 115200 baud rate.
Serial.begin(115200);
// Imposta echoPin come ingresso e trigPin come uscita.
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
// Stampa le informazioni del sensore sul monitor seriale
Serial.println("Ultrasonic sensor:");
}
void loop() {
// Leggi la distanza dal sensore ad ultrasuoni
float distance = readSensorData();
// Stampa la distanza misurata sul monitor seriale
Serial.print(distance);
Serial.println(" cm");
// Ritardo tra le letture
delay(200);
}
// Funzione per leggere i dati dal sensore ultrasonico
float readSensorData() {
// Attiva un segnale basso prima di inviare un segnale alto.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Invia un segnale alto di 10 microsecondi al pin trig.
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
// Torna a bassa ricezione
digitalWrite(trigPin, LOW);
// Misura la durata del segnale alto sul pin echoPin.
unsigned long microsecond = pulseIn(echoPin, HIGH);
// Calcola la distanza utilizzando la velocità del suono (29,00 µs per centimetro)
float distance = microsecond / 29.00 / 2;
// Restituisci la distanza calcolata
return distance;
}
Common Course Links
Common Course Files
Cose di cui potresti avere bisogno
-
eBay
-
Banggood
Risorse e riferimenti
-
Documentazione
-
EsternoLibreria Ultrasonica HC-SR04 dal sito ufficiale di Arduinoplayground.arduino.cc
File📁
Nessun file disponibile.