Sensore di distanza HC-SR04: misurare distanze a ultrasuoni con Arduino
Come funziona il sensore a ultrasuoni HC-SR04 e come si collega ad Arduino? Pin TRIG ed ECHO, la formula della distanza, collegamento con ESP32 e Pico e consigli per misure più precise.
L'HC-SR04 è un sensore economico e diffusissimo che misura la distanza da un oggetto tramite il suono. Funziona come l'ecolocalizzazione dei pipistrelli: emette un suono ad alta frequenza non udibile e misura quanto tempo impiega l'eco a tornare. È alla base di sensori di parcheggio, robot che evitano gli ostacoli, misuratori di livello dei serbatoi e misuratori di altezza.

Come funziona l'HC-SR04?
- Arduino invia un impulso di 10 microsecondi al pin TRIG.
- Il sensore emette 8 impulsi sonori a 40 kHz.
- Il suono rimbalza sull'oggetto e torna indietro; nel frattempo il pin ECHO resta HIGH.
- Arduino misura per quanto tempo ECHO resta HIGH e calcola la distanza.
Il suono viaggia nell'aria a circa 343 m/s, quindi percorre un centimetro in circa 29 microsecondi. Il tempo misurato comprende andata e ritorno, perciò si divide per due: distanza (cm) = tempo (µs) × 0,0343 / 2, in breve tempo / 58.
Caratteristiche tecniche
| Caratteristica | Valore |
|---|---|
| Alimentazione | 5 V, circa 15 mA |
| Intervallo di misura | 2–400 cm |
| Risoluzione | Circa 3 mm |
| Angolo di misura | Circa 15° |
| Pin | VCC, TRIG, ECHO, GND |
Misurare la distanza con Arduino
Collega VCC a 5V, GND a GND, TRIG al pin 9 ed ECHO al pin 10. Il codice qui sotto scrive la distanza sul monitor seriale e segnala a parte quando non c'è nessun oggetto o è troppo lontano.
const int TRIG_PIN = 9; // tetik / trigger
const int ECHO_PIN = 10; // yankı / echo
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH); // 10 µs darbe / 10 µs pulse
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH, 30000); // en fazla 30 ms bekle / wait max 30 ms
if (duration == 0) {
Serial.println("Menzil dışı / out of range");
} else {
float cm = duration * 0.0343 / 2; // gidiş-dönüş / round trip
Serial.print(cm);
Serial.println(" cm");
}
delay(100); // ölçümler arası / between readings
}Uso con ESP32 e Raspberry Pi Pico
Consigli per misure precise
- Superfici morbide e inclinate: tessuti, spugne e superfici angolate riflettono male il suono; alcune misure possono mancare.
- Fai la media: usare la mediana di 3–5 letture elimina i salti improvvisi.
- Effetto della temperatura: la velocità del suono cambia di circa 0,6 m/s per ogni grado; per lavori precisi correggila con un sensore di temperatura.
- Più sensori: sensori attivati insieme sentono gli echi degli altri; attivali uno dopo l'altro.
- Intervallo tra le misure: lascia almeno 60 ms tra una lettura e l'altra perché l'eco precedente si spenga.
Per unire il sensore a un buzzer e realizzare un sensore di parcheggio leggi Che cos'è un buzzer?; per conoscere altri sensori, la Guida ai sensori per Arduino.
Domande frequenti
Fino a che distanza misura l'HC-SR04?
In teoria fino a 4 metri. In pratica si ottengono risultati affidabili fino a 2–3 metri su una superficie piana e dura.
Perché il mio HC-SR04 mostra sempre 0 o un valore enorme?
TRIG ed ECHO potrebbero essere invertiti, l'oggetto fuori portata o il sensore rivolto verso una superficie che non riflette il suono. Controlla i collegamenti e usa un timeout con pulseIn.
L'HC-SR04 può misurare il livello dell'acqua?
Sì, montato sul coperchio del serbatoio rivolto verso il basso misura la distanza dalla superficie dell'acqua. In ambienti umidi va protetto; il JSN-SR04T impermeabile è una scelta migliore.
Quali altri sensori di distanza esistono per Arduino?
Per brevi distanze e il riconoscimento delle linee si usa l'infrarosso TCRT5000, per una precisione al millimetro il sensore laser VL53L0X. L'HC-SR04 è il più diffuso grazie al buon equilibrio tra prezzo e portata.
Progetti da realizzare dopo questo articolo
Vedi tutti i progetti
HC-SR04 Misura della distanza (display seriale)
Il sensore a ultrasuoni HC-SR04 misura la distanza e visualizza il risultato in cm sul monitor seriale. Insegna il principio del calcolo della distanza con l'onda sonora.

Sensore di parcheggio con HC-SR04
Progetto di sensore di parcheggio con sensore HC-SR04 che aumenta la frequenza del segnale acustico all'avvicinarsi dell'oggetto e lo segnala con un LED. Insegna una logica di feedback proporzionale a

Misurazione della distanza tramite display LCD
Il progetto che visualizza in tempo reale sullo schermo LCD 2x16 il valore letto dal sensore di distanza HC-SR04 in cm. Combina i dati del sensore e la visualizzazione su LCD.

Progetto di misurazione dell'altezza
Il progetto esegue la misurazione dell'altezza mediante calibrazione con il sensore HC-SR04 e lo schermo LCD I2C. Offre un'applicazione pratica gestendo le fasi di calibrazione e misurazione con due p

Robot che evita gli ostacoli
Che ne dite di costruire un veicolo intelligente che trova la propria strada? L'Obstacle Avoiding Robot scruta costantemente l'ambiente circostante grazie al sensore a ultrasuoni posto davanti a lui.

ESP32 HC-SR04 Misuratore di distanza a ultrasuoni
Il sensore a ultrasuoni HC-SR04 calcola la distanza misurando il tempo di volo (Time of Flight) dell'onda sonora che emette dopo aver colpito un oggetto e essere rimbalzata indietro. In questo progetto invieremo un impulso di 10 microsecondi al pin TRIG dell'ESP32 e leggeremo il tempo di eco proveniente dal pin ECHO con `pulseIn()`. Stampiamo la distanza calcolata in cm sul Serial Monitor. Poiché l'HC-SR04 funziona a 5V, è necessario un **divisore di tensione** sul pin ECHO — altrimenti il GPIO

Contatore di raka'at per la preghiera con ESP32 (HC-SR04 + OLED SSD1306 + 2 pulsanti)
Vi capita mai di dimenticare a che raka'at siete mentre pregate? Questo progetto realizza un contatore di raka'at da posizionare accanto al tappetino da preghiera, che conta le prostrazioni quando avvicinate la mano. Il sensore di distanza a ultrasuoni HC-SR04 rileva l'avvicinamento della mano, mentre il display OLED SSD1306 mostra il numero di rak'ah; tramite due pulsanti è possibile selezionare 2/3/4 rak'ah e azzerare il conteggio. Grazie a una macchina a stati intelligente, è presente un debo

Sensore di parcheggio ESP32 (HC-SR04 + barra a 5 LED + cicalino + OLED)
La versione ESP32 del sensore di parcheggio per auto! Grazie al sensore a ultrasuoni HC-SR04 misuriamo la distanza dall'oggetto davanti al veicolo. Man mano che la distanza diminuisce, la barra composta da 5 LED si riempie (da verde → giallo → rosso) e l'intervallo tra i bip del cicalino si accorcia. Quando ci si avvicina troppo (meno di 10 cm), l'allarme suona ininterrottamente e tutti i LED si accendono. Sul display OLED SSD1306 vengono visualizzati in caratteri grandi il valore istantaneo in
Altri articoli
Scopri come l'HC-SR04 misura la distanza con il suono, come collegarlo ad Arduino, la formula della distanza e come rendere stabili le letture.

