Como usar o sensor ultrassônico HC-SR04 com Arduino
Share
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?