Usando o Sensor HC-SR04 com o ESP32
Usando o sensor HC-SR04 com o ESP32
Este guia explica como usar um sensor de distância ultrassônico HC-SR04 com um microcontrolador ESP32. O código envia um pulso de disparo (trigger) para o pino TRIG do sensor e, em seguida, mede a duração do pulso de eco recebido no pino ECHO usando a função
pulseIn(). Essa duração é então convertida para distância em centímetros e polegadas usando a velocidade do som, e os resultados são impressos no monitor serial.
Introdução
Usar o HC-SR04 com um ESP32 envolve o controle de pinos GPIO (General Purpose Input/Output - Entrada/Saída de Propósito Geral). Aqui está um passo a passo de como fazer isso!
Requisitos
- Hardware
- Software
- Arduino IDE ou Wokwi para programar/simular o código a ser executado no ESP32.
- Certifique-se de instalar o driver do ESP32 para conseguir enviar o código para o ESP32.
Conexões de Hardware

Exemplo de Código 1 - Maneira Simples de Medir Distância
#define PIN_TRIG 19
#define PIN_ECHO 18
void setup() {
Serial.begin(115200);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
}
void loop() {
// Start a new measurement:
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
Serial.print("Distance in CM: ");
Serial.println(duration / 58);
Serial.print("Distance in inches: ");
Serial.println(duration / 148);
delay(1000);
}Explicação
Este código Arduino usa um sensor de distância ultrassônico HC-SR04 para medir distâncias e imprimi-las no monitor serial. Vamos analisar o código passo a passo:
#define PIN_TRIG 19: Esta linha define uma constante chamadaPIN_TRIGe atribui a ela o valor 19. Este pino será usado para acionar (disparar) o HC-SR04 para iniciar uma medição.#define PIN_ECHO 18: Esta linha define uma constante chamadaPIN_ECHOe atribui a ela o valor 18. Este pino receberá o pulso de eco do HC-SR04.pinMode(PIN_TRIG, OUTPUT): Configura oPIN_TRIG(pino 19) como uma saída. Isso é necessário porque o Arduino enviará um sinal através deste pino para acionar o sensor.pinMode(PIN_ECHO, INPUT): Configura oPIN_ECHO(pino 18) como uma entrada. O Arduino ficará escutando o sinal de eco neste pino.digitalWrite(PIN_TRIG, HIGH): Define oPIN_TRIGcomo ALTO (HIGH) por 10 microssegundos. Este pulso curto aciona o HC-SR04 para enviar uma rajada ultrassônica.delayMicroseconds(10): Pausa o programa por 10 microssegundos. Isso garante que o pulso de disparo seja longo o suficiente para que o sensor o detecte.digitalWrite(PIN_TRIG, LOW): Define oPIN_TRIGde volta para BAIXO (LOW). O pulso de disparo precisa ser curto.int duration = pulseIn(PIN_ECHO, HIGH): Esta é a parte central da medição de distância. A funçãopulseIn()mede a duração de um pulso (em microssegundos) em um determinado pino. Neste caso, ela está medindo o tempo em que oPIN_ECHOpermanece em ALTO (HIGH), que corresponde ao tempo que a rajada ultrassônica levou para viajar até o objeto e retornar.Serial.print("Distance in CM: ");: Imprime o texto “Distance in CM: ” no monitor serial.Serial.println(duration / 58): Calcula a distância em centímetros e a imprime no monitor serial. A divisão por 58 é derivada da velocidade do som no ar e da conversão de microssegundos para centímetros. (A velocidade do som é de aproximadamente 343 metros/segundo, ou 0,0343 cm/microssegundo. Como o som viaja até o objeto e volta, o cálculo é: distância = (0,0343 cm/µs * duração µs) / 2, o que simplifica para aproximadamente duração / 58.2).Serial.print("Distance in inches: ");: Imprime o texto “Distance in inches: ” no monitor serial.Serial.println(duration / 148): Calcula a distância em polegadas e a imprime no monitor serial. A divisão por 148 é um cálculo semelhante, mas com a conversão para polegadas.