Sensor de distância HC-SR04: medição ultrassônica de distância com Arduino
Como funciona o sensor ultrassônico de distância HC-SR04 e como ligar no Arduino? Pinos TRIG e ECHO, fórmula da distância, ligação no ESP32 e no Pico e dicas para mais precisão.
O HC-SR04 é um sensor barato e muito comum que mede a distância até um objeto à sua frente usando som. Ele funciona do mesmo jeito que os morcegos se orientam: emite um som de alta frequência que você não consegue ouvir e mede quanto tempo o eco leva para voltar. Ele é a base de sensores de estacionamento, robôs que desviam de obstáculos, medidores de nível de tanque e medidores de altura.

Como o HC-SR04 funciona?
- O Arduino envia um pulso de 10 microssegundos ao pino TRIG.
- O sensor emite 8 pulsos sonoros de 40 kHz.
- O som bate no objeto e volta; enquanto isso, o pino ECHO fica em HIGH.
- O Arduino mede quanto tempo o ECHO fica em HIGH e calcula a distância.
O som viaja pelo ar a cerca de 343 m/s, então percorre um centímetro em cerca de 29 microssegundos. O tempo medido inclui a ida e a volta, por isso é dividido por dois: distância (cm) = tempo (µs) × 0,0343 / 2, ou simplesmente tempo / 58.
Especificações
| Característica | Valor |
|---|---|
| Alimentação | 5 V, cerca de 15 mA |
| Alcance | 2–400 cm |
| Resolução | Cerca de 3 mm |
| Ângulo do feixe | Cerca de 15° |
| Pinos | VCC, TRIG, ECHO, GND |
Medindo distância com Arduino
Ligue o VCC ao 5V, o GND ao GND, o TRIG ao pino 9 e o ECHO ao pino 10. O código abaixo mostra a distância no Monitor Serial e avisa separadamente quando não há objeto ou ele está longe demais.
1const int TRIG_PIN = 9; // tetik / trigger
2const int ECHO_PIN = 10; // yankı / echo
3
4void setup() {
5 pinMode(TRIG_PIN, OUTPUT);
6 pinMode(ECHO_PIN, INPUT);
7 Serial.begin(9600);
8}
9
10void loop() {
11 digitalWrite(TRIG_PIN, LOW);
12 delayMicroseconds(2);
13 digitalWrite(TRIG_PIN, HIGH); // 10 µs darbe / 10 µs pulse
14 delayMicroseconds(10);
15 digitalWrite(TRIG_PIN, LOW);
16
17 long duration = pulseIn(ECHO_PIN, HIGH, 30000); // en fazla 30 ms bekle / wait max 30 ms
18 if (duration == 0) {
19 Serial.println("Menzil dışı / out of range");
20 } else {
21 float cm = duration * 0.0343 / 2; // gidiş-dönüş / round trip
22 Serial.print(cm);
23 Serial.println(" cm");
24 }
25 delay(100); // ölçümler arası / between readings
26}Usando com ESP32 e Raspberry Pi Pico
Dicas para leituras precisas
- Superfícies macias e inclinadas: tecido, espuma e superfícies em ângulo não refletem bem o som; algumas leituras podem falhar.
- Faça uma média: usar a mediana de 3–5 leituras elimina saltos repentinos.
- Efeito da temperatura: a velocidade do som muda cerca de 0,6 m/s a cada 1 °C; para trabalhos precisos, corrija com um sensor de temperatura.
- Vários sensores: sensores disparados ao mesmo tempo ouvem os ecos uns dos outros; dispare um depois do outro.
- Intervalo entre medições: deixe pelo menos 60 ms entre as leituras para que o eco anterior se dissipe.
Para combinar o sensor com um buzzer e criar um sensor de estacionamento, veja O que é buzzer? e, para conhecer outros sensores, leia o Guia de sensores para Arduino.
Perguntas frequentes
Até que distância o HC-SR04 consegue medir?
Em teoria, até 4 metros. Na prática, você obtém resultados confiáveis até 2–3 metros em uma superfície plana e rígida.
Por que meu HC-SR04 sempre mostra 0 ou um valor enorme?
O TRIG e o ECHO podem estar trocados, o objeto pode estar fora do alcance ou o sensor pode estar virado para uma superfície que não reflete som. Confira a ligação e use um tempo limite no pulseIn.
O HC-SR04 consegue medir o nível de água?
Sim, monte-o virado para baixo na tampa de um tanque e meça a distância até a superfície da água. Em ambientes úmidos ele precisa de proteção; o JSN-SR04T, à prova d'água, é uma escolha melhor.
Que outros sensores de distância existem para Arduino?
O infravermelho TCRT5000 é usado para distâncias curtas e detecção de linha, e o VL53L0X, baseado em laser, para precisão milimétrica. O HC-SR04 é o mais comum graças ao equilíbrio entre preço e alcance.
Projetos para montar depois desta leitura
Ver todos os projetos
Medição de distância com HC-SR04 (Monitor Serial)
O sensor HC-SR04 funciona como um morcego que se orienta no escuro: emite um som que você não consegue ouvir, escuta o eco e mede a distância até o objeto à sua frente. O Arduino escreve essa distânci

Sensor de estacionamento com HC-SR04
Uma versão em miniatura do sensor de estacionamento de um carro: quanto mais perto um objeto chega, mais rápidos ficam os bipes. O sensor de distância mede a distância até o objeto à sua frente; se el

Medição de distância com display LCD
Uma ferramenta que mede distâncias sem régua: aproxime e afaste a mão na frente do sensor e veja o número mudar. O HC-SR04 emite uma onda sonora e escuta seu eco, e o Arduino calcula a distância em ce

Projeto de medição de altura
Um medidor de altura preso ao batente da porta que informa, em centímetros, a altura de quem está embaixo dele. Primeiro, você pressiona o primeiro botão sem ninguém embaixo, e o sensor de distância m

Robô que desvia de obstáculos
Que tal construir um veículo inteligente que encontra seu próprio caminho? O robô que desvia de obstáculos monitora o ambiente constantemente com o sensor ultrassônico na parte da frente. Ao encontrar

Medidor ultrassônico de distância HC-SR04 com ESP32
O sensor ultrassônico HC-SR04 calcula a distância medindo o tempo que a onda sonora emitida leva para atingir um objeto e retornar (tempo de voo). Neste projeto, enviaremos um pulso de 10 microssegundos do ESP32 ao pino TRIG do sensor e leremos a duração do eco no pino ECHO com pulseIn(). Exibiremos a distância calculada em centímetros em um LCD I2C 16x2. Como o HC-SR04 opera a 5V, é preciso usar um divisor de tensão no pino ECHO; caso contrário, o GPIO de 3,3V do ESP32 será danificado.

Contador de rakats para oração com ESP32 (HC-SR04 + OLED SSD1306 + 2 botões)
Você às vezes esquece quantos rakats já fez durante a oração? Este projeto cria um contador de rakats que fica ao lado do tapete de oração e conta as prostrações quando você aproxima a mão. O sensor ultrassônico de distância HC-SR04 detecta a aproximação da mão, o display OLED SSD1306 mostra a contagem de rakats e dois botões permitem selecionar 2, 3 ou 4 rakats e zerar a contagem.

Sensor de estacionamento com ESP32 (HC-SR04 + barra de 5 LEDs + buzzer + OLED)
A versão com ESP32 do sensor de estacionamento de carro! Usamos o sensor ultrassônico HC-SR04 para medir a distância até o objeto à sua frente. Conforme a distância diminui, a barra de 5 LEDs vai se preenchendo (verde → amarelo → vermelho) e o intervalo entre os bipes do buzzer diminui. Quando o objeto chega muito perto (menos de 10 cm), o alarme soa continuamente e todos os LEDs acendem.
Mais artigos
App BlueGrays
Monte este circuito passo a passo pelo celular
Esquema do circuito, código e lista de componentes em uma só tela. Mais de 200 projetos com Arduino, ESP32 e Pico prontos para montar.
Escaneie com seu celular
Aponte a câmera para o código para abrir a loja de aplicativos do seu celular.
ou abrir a loja

