Sensor ultrassônico HC-SR04: como medir distância com o robô
Como o HC-SR04 mede distância pelo eco, a conta que transforma tempo em centímetros, por que o pino Echo precisa de divisor no ESP32, o que atrapalha a medição e como usar o sensor no braço robótico.

O HC-SR04 é o "olho" mais comum dos robôs de bancada. Ele não enxerga: ele grita e escuta. Emite um som acima do que o ouvido humano alcança, espera o eco voltar e mede quanto tempo levou.
Como a medição acontece
O módulo tem quatro pinos: VCC (5 V), GND, Trig e Echo. Uma medição tem três tempos:
- A placa coloca o Trig em nível alto por pelo menos 10 µs.
- O módulo emite uma rajada de oito pulsos de 40 kHz e coloca o Echo em nível alto.
- Quando o eco volta, o Echo cai. O tempo em que ele ficou alto é o tempo de ida e volta do som.
Do tempo à distância
O som anda a cerca de 343 metros por segundo no ar a 20 °C, ou 0,0343 cm por microssegundo. Como o tempo medido é de ida e volta, divide-se por dois:
distância (cm) = tempo (µs) × 0,0343 ÷ 2
O datasheet resume a mesma conta como tempo em µs dividido por 58. Um eco de 580 µs é um objeto a 10 cm.
A velocidade do som muda com a temperatura, cerca de 0,6 m/s por grau. Para um robô de bancada, a diferença entre uma sala a 20 °C e outra a 30 °C é de menos de 2%: não vale a preocupação.
O que o datasheet promete
- Alcance de 2 cm a 400 cm.
- Ângulo de medição de cerca de 15 graus: ele enxerga um cone estreito à frente.
- Intervalo de pelo menos 60 ms entre uma medição e a próxima, para o eco anterior não ser confundido com o novo.
O que atrapalha
- Superfície inclinada: o som bate e vai para o lado, e o eco não volta. O sensor lê "nada" ou uma distância maior.
- Material macio: espuma, tecido e pelúcia absorvem o som.
- Objeto fino ou pequeno: um lápis de lado pode não devolver eco suficiente.
- Mais perto que 2 cm: o eco volta antes de o módulo estar pronto para ouvir.
Por isso, num robô, nunca confie numa leitura só. Uma média de três medições, ou descartar valores que saltam demais, deixa o comportamento muito mais estável.
No Arduino Nano
O Nano é de 5 V, como o módulo: os quatro fios vão direto. Para medir o pulso, o Arduino tem a função pulseIn. Vale passar um tempo limite (por exemplo, 30.000 µs, o que corresponde a uns 5 metros): sem ele, se o eco não voltar, o programa fica parado esperando.
No ESP32: o divisor no Echo
O ESP32 trabalha em 3,3 V, e o Echo do HC-SR04 devolve 5 V. Ligar direto arrisca o pino. A solução é um divisor de tensão com dois resistores:
- Echo do módulo → resistor de 1 kΩ → pino do ESP32.
- Pino do ESP32 → resistor de 2 kΩ → GND.
O pino recebe cerca de 3,3 V. O Trig pode ir direto: 3,3 V é suficiente para o módulo entender o comando. Existem versões do módulo que funcionam em 3,3 V; confira a marcação antes de dispensar o divisor.
Em MicroPython, a função machine.time_pulse_us mede o pulso do Echo e devolve um número negativo quando o tempo limite estoura.
No braço robótico
O sensor preso na frente da garra permite dois comportamentos clássicos: apitar quando algo se aproxima e fechar a garra quando o objeto está ao alcance. Na IDE de blocos, o cartão "se a distância for menor que" pede os pinos Trig e Echo e o limite em centímetros. O código gerado já usa o tempo limite e ignora as leituras sem eco.
A IoTData faz o cadastro e o envio por você.
Um engenheiro nosso responde: qual rede chega até o poço, o que o IGAM ou a ANA vão pedir, quanto custa e quem cuida do cadastro de operador.