Sensor ultrassonico HC-SR04 ligado ao Arduino em protoboard para medir distancia

Como usar o sensor ultrassônico HC-SR04 com Arduino

Para usar o sensor ultrassônico HC-SR04 com Arduino, ligue VCC em 5V, GND no GND, TRIG em um pino digital de saída e ECHO em um pino digital de entrada. Depois, o Arduino envia um pulso, mede o tempo do eco e calcula a distância do objeto.

O HC-SR04 é um dos sensores mais usados em projetos maker porque transforma uma ideia abstrata em algo visual: aproximou um objeto, a distância muda no monitor serial. Por isso ele aparece em robôs desviando de obstáculos, medidores de nível, alarmes de proximidade e protótipos de automação.

O que é o sensor ultrassônico HC-SR04?

O Sensor Ultrassônico HC-SR04 é um módulo de medição de distância com dois transdutores circulares. Um deles emite um pulso sonoro de alta frequência e o outro recebe o eco refletido pelo objeto. O Arduino mede o tempo entre envio e retorno para estimar a distância.

  • Função principal: medir distância por ultrassom.
  • Aplicações comuns: robôs, alarmes, nível de reservatório e automação.
  • Faixa típica: cerca de 2 cm a 400 cm em condições favoráveis.
  • Tipo de sinal: pulsos digitais nos pinos TRIG e ECHO.

Como ligar o HC-SR04 no Arduino

A ligação básica usa quatro pinos. Em uma bancada simples, você pode montar o sensor com uma protoboard, jumpers macho-macho e uma placa como o Arduino Uno R3 SMD.

Pino do HC-SR04 Ligar no Arduino Função
VCC 5V Alimentação do módulo
GND GND Referência elétrica comum
TRIG Pino digital 9 Dispara o pulso ultrassônico
ECHO Pino digital 10 Retorna o tempo do eco

Você pode trocar os pinos 9 e 10 por outros pinos digitais, desde que ajuste o código. O mais importante é manter GND comum entre Arduino e sensor, porque sem essa referência a leitura fica instável ou simplesmente não funciona.

Código Arduino para medir distância com HC-SR04

O código abaixo mede o tempo do pulso no pino ECHO e converte o valor para centímetros. Ele é simples de testar no Monitor Serial da IDE Arduino.

const int pinoTrig = 9;
const int pinoEcho = 10;

void setup() {
  pinMode(pinoTrig, OUTPUT);
  pinMode(pinoEcho, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(pinoTrig, LOW);
  delayMicroseconds(2);

  digitalWrite(pinoTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinoTrig, LOW);

  long duracao = pulseIn(pinoEcho, HIGH, 30000);
  float distanciaCm = duracao * 0.0343 / 2.0;

  if (duracao == 0) {
    Serial.println("Sem leitura");
  } else {
    Serial.print("Distancia: ");
    Serial.print(distanciaCm);
    Serial.println(" cm");
  }

  delay(300);
}

Como o cálculo da distância funciona?

O som sai do sensor, bate no objeto e volta. Como o tempo medido inclui ida e volta, o resultado precisa ser dividido por dois. A fórmula usada no código considera a velocidade aproximada do som no ar:

Etapa O que acontece
1 Arduino envia um pulso de 10 microssegundos no TRIG
2 O sensor emite ultrassom
3 O eco volta quando encontra um objeto
4 O Arduino mede a duração do pulso no ECHO
5 O código converte tempo em centímetros

A expressão duracao * 0.0343 / 2.0 usa a velocidade do som em centímetros por microssegundo. Para projetos didáticos, essa aproximação funciona bem.

Projetos com sensor ultrassônico e Arduino

Depois que a leitura aparece no Monitor Serial, fica fácil transformar distância em ação. O HC-SR04 combina muito bem com LED, buzzer, servo motor, display, relé e motores DC.

  • Robô desviando de obstáculos: quando a distância fica pequena, o carrinho muda de direção.
  • Alarme de proximidade: buzzer toca quando alguém aproxima a mão ou um objeto.
  • Medidor de nível: mede a distância entre o sensor e a superfície de água em um reservatório didático.
  • Porta automática em miniatura: servo motor abre quando algo chega perto.
  • Display de distância: mostra centímetros em LCD ou OLED.

Para explorar esse sensor junto com presença, luz, temperatura e gás, o Kit 7 Sensores para Arduino e ESP32 ajuda a comparar vários módulos na mesma bancada.

Erros comuns com o HC-SR04

  • Inverter TRIG e ECHO: o sensor liga, mas a leitura não aparece corretamente.
  • Esquecer o GND: sem referência comum, o Arduino não interpreta o sinal direito.
  • Medir objeto muito próximo: abaixo de poucos centímetros a leitura fica ruim.
  • Usar superfície inclinada ou macia: o eco pode não voltar com força suficiente.
  • Não usar timeout no pulseIn: o código pode travar esperando eco que não volta.

HC-SR04 funciona com ESP32?

Funciona, mas exige atenção. O HC-SR04 costuma ser alimentado em 5V e o pino ECHO pode retornar sinal de 5V. Como o ESP32 trabalha com lógica de 3,3V, o ideal é usar divisor de tensão ou adaptação de nível no ECHO quando necessário.

Placa Uso com HC-SR04 Cuidado principal
Arduino Uno Muito simples para iniciar Alimentar corretamente em 5V
Arduino Nano Bom para montagem compacta Organizar alimentação e jumpers
ESP32 Ótimo para IoT e Wi-Fi Proteger entrada de 3,3V no ECHO

Checklist antes de testar

  • Confirme VCC, GND, TRIG e ECHO no módulo.
  • Use fios curtos e firmes na protoboard.
  • Abra o Monitor Serial em 9600 baud.
  • Comece medindo objetos planos e rígidos.
  • Teste a leitura parado antes de colocar em um robô.
  • Use uma fonte adequada se motores ou servos estiverem no mesmo projeto.

Perguntas Frequentes (FAQ)

Qual a ligação do sensor HC-SR04 no Arduino?
Ligue VCC no 5V, GND no GND, TRIG em um pino digital de saída e ECHO em um pino digital de entrada. No exemplo, usamos TRIG no pino 9 e ECHO no pino 10.
Qual distância o HC-SR04 mede?
Em condições favoráveis, o HC-SR04 mede aproximadamente de 2 cm a 400 cm. Objetos pequenos, inclinados ou macios podem reduzir a confiabilidade da leitura.
O HC-SR04 precisa de biblioteca no Arduino?
Não obrigatoriamente. É possível medir distância usando pinMode, digitalWrite e pulseIn. Bibliotecas podem facilitar projetos maiores, mas não são essenciais para começar.
Posso usar HC-SR04 no ESP32?
Sim, mas cuide do nível lógico. O ESP32 usa entradas de 3,3V e o ECHO do HC-SR04 pode sair em 5V, então pode ser necessário divisor de tensão ou conversor de nível.

Quer medir distância no seu próximo projeto?

Ver sensores para Arduino e ESP32 na Comecx Labs

Voltar para o blog