Sensor Ultrassônico HC-SR04 com Arduino: Como Medir Distâncias na Prática

Entenda como funciona o sensor ultrassônico HC-SR04, como ligá-lo ao Arduino e como transformar o tempo do eco em distância em centímetros.

Compartilhar no Linkedin Compartilhar no WhatsApp

Tempo estimado de leitura: 7 minutos

Imagem do artigo Sensor Ultrassônico HC-SR04 com Arduino: Como Medir Distâncias na Prática

Quem começa em robótica logo se pergunta: como um robô “enxerga” um obstáculo à sua frente? Uma das respostas mais simples e baratas é o sensor ultrassônico HC-SR04. Com ele e uma placa Arduino é possível medir distâncias, acionar alarmes de proximidade, fazer um carrinho desviar de paredes ou criar um medidor digital de nível. Neste artigo você vai entender o princípio de funcionamento, como fazer as ligações e como escrever o código básico.

Como o sensor ultrassônico funciona

O princípio é parecido com o do sonar de um morcego. O módulo emite um pulso de som de frequência acima da audição humana (ultrassom). Esse pulso viaja pelo ar, bate em um objeto e volta como eco. O sensor mede quanto tempo se passou entre a emissão e o retorno. Como a velocidade do som no ar é conhecida (aproximadamente 343 metros por segundo à temperatura ambiente), basta fazer uma conta para descobrir a distância.

Como o som vai até o objeto e volta, o tempo medido corresponde a uma viagem de ida e volta. Por isso, a distância é calculada dividindo o resultado por dois.

Os quatro pinos do HC-SR04

PinoFunçãoLigação no Arduino
VCCAlimentação de 5 VPino 5V
TrigDispara o pulso ultrassônicoPino digital 9, por exemplo
EchoDevolve um sinal com a duração do ecoPino digital 10, por exemplo
GNDTerraPino GND

Os números dos pinos digitais são apenas uma sugestão: você pode usar outros, desde que ajuste o código. O importante é ligar o VCC ao 5 V e o GND ao terra, e nunca inverter essas conexões.

Materiais necessários

  • Uma placa Arduino (Uno, Nano ou equivalente);
  • Um sensor ultrassônico HC-SR04;
  • Protoboard e quatro jumpers;
  • Cabo USB para ligar a placa ao computador;
  • Opcional: um LED e um resistor para sinalizar proximidade.

Código básico para medir a distância

O programa abaixo envia um pulso curto ao pino Trig, mede a duração do pulso no pino Echo e converte o tempo em centímetros. Os resultados aparecem no Monitor Serial da IDE do Arduino.

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duracao = pulseIn(echoPin, HIGH);
  float distancia = duracao * 0.0343 / 2;

  Serial.print("Distancia: ");
  Serial.print(distancia);
  Serial.println(" cm");
  delay(300);
}

Entendendo cada parte do código

Primeiro, definimos quais pinos serão usados e configuramos o Trig como saída e o Echo como entrada. Em seguida, o programa garante que o Trig esteja em nível baixo, envia um pulso de 10 microssegundos (é o que o sensor espera para iniciar a medição) e volta a baixar o sinal.

A função pulseIn mede, em microssegundos, quanto tempo o pino Echo permanece em nível alto, e esse tempo é proporcional à distância percorrida pelo som. A fórmula usa 0,0343 centímetros por microssegundo (o equivalente a 343 m/s) e divide por dois por causa da ida e volta. O delay final evita leituras excessivamente rápidas e deixa a saída legível no monitor.

Limitações e cuidados

O HC-SR04 é simples, mas não é perfeito. Conhecer seus limites evita frustrações:

  • Alcance limitado: costuma funcionar bem em algumas dezenas de centímetros até alguns metros, conforme especificação do fabricante; consulte a folha de dados do seu módulo.
  • Superfícies macias: tecidos, espumas e objetos muito inclinados absorvem ou desviam o som e podem gerar leituras instáveis.
  • Objetos pequenos ou finos: podem não refletir o eco de forma consistente.
  • Temperatura: a velocidade do som varia com a temperatura do ar, o que pode introduzir pequenos erros em aplicações de precisão.
  • Ruídos e interferências: vários sensores operando juntos podem captar o eco um do outro; faça medições em momentos diferentes.

Ideias de projetos para praticar

Depois de dominar a leitura básica, você pode evoluir para projetos mais interessantes. Um alarme de proximidade acende um LED ou toca um buzzer quando algo se aproxima de determinada distância. Um carrinho robô pode parar ou desviar ao detectar um obstáculo. Um medidor de nível pode mostrar quanto falta para encher um reservatório, desde que o sensor seja protegido da umidade. Outra ideia é exibir a distância em um display LCD, tornando o equipamento independente do computador.

Dicas para obter leituras melhores

Uma técnica simples é fazer várias leituras seguidas e calcular a média, o que suaviza oscilações. Também é possível descartar valores zerados, que normalmente indicam que o eco não retornou. Fixe o sensor firmemente, de modo que ele aponte sempre na mesma direção, e evite deixar fios soltos que possam causar mau contato. Por fim, teste sempre com uma fita métrica para conferir se os resultados estão coerentes.

Erros comuns de quem está começando

O primeiro erro costuma ser inverter os pinos Trig e Echo, o que faz o monitor serial mostrar sempre zero. O segundo é alimentar o módulo com a tensão errada ou deixar o GND sem conexão comum com o Arduino, situação em que o circuito simplesmente não responde. Outro tropeço frequente é colocar o delay com valor muito baixo e achar que o sensor está travando, quando na verdade ele está recebendo pulsos antes de terminar a leitura anterior. Por fim, muitos esquecem de apontar o sensor para uma superfície plana e perpendicular: se o objeto estiver inclinado, o eco se perde. Quando algo não funcionar, revise as ligações, teste com um objeto plano a cerca de 20 centímetros e confira a velocidade da porta serial no monitor.

Conclusão

O sensor ultrassônico é um excelente primeiro passo para entender como máquinas percebem o mundo. Com poucos componentes, você aprende conceitos de eletrônica, de programação e de física ao mesmo tempo. Se quiser avançar de forma organizada, vale conhecer os cursos de Arduino, robótica e eletrônica da Cursa, que guiam você de projetos simples até automações mais completas.

Cookies, Cache e Histórico: O Que o Navegador Guarda Sobre Você

Entenda o que são cookies, cache e histórico do navegador, para que servem, quando limpar cada um e como isso afeta sua privacidade.

Sensores e Atuadores: Como o Arduino Percebe o Mundo e Age Sobre Ele

Entenda a diferença entre sensores e atuadores, como o Arduino lê sinais e aciona dispositivos, e como montar seus primeiros projetos.

Endereço IP, Máscara de Sub-rede e Gateway: O Trio Que Faz Sua Rede Funcionar

Entenda de forma prática o que são endereço IP, máscara de sub-rede e gateway padrão, e como esses três parâmetros conversam entre si.

Compressão de Arquivos: Como o ZIP Consegue Reduzir o Tamanho dos Seus Dados

Entenda como funciona a compressão de arquivos, a diferença entre métodos com e sem perda e quando cada formato faz sentido.

Expressões Regulares (Regex): O Que São e Como Usar na Prática

Aprenda o que são expressões regulares, os principais símbolos, quantificadores e como aplicar regex para buscar e validar textos.

Como Funciona o DNS: o Sistema que Traduz Nomes em Endereços na Internet

Entenda de forma simples o que é DNS, como acontece a resolução de nomes, os principais tipos de registro e por que ele é essencial para a internet.

INNER JOIN, LEFT JOIN e RIGHT JOIN: como relacionar tabelas no SQL

Entenda de forma simples como funcionam INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN para combinar dados de várias tabelas no SQL.

TypeScript para iniciantes: o que é e por que ele melhora o JavaScript

Entenda o que é TypeScript, como a tipagem estática ajuda a evitar erros e por que ele se tornou essencial no desenvolvimento web moderno.