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
    • ESP32 - O ESP32 é uma série de microcontroladores de baixo custo e baixo consumo de energia. É também um sistema em um único chip (system-in-one-chip) com microcontrolador, Wi-Fi e Bluetooth integrados.
    • HC-SR04 - Sensor de distância ultrassônico.
  • Software

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 chamada PIN_TRIG e 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 chamada PIN_ECHO e atribui a ela o valor 18. Este pino receberá o pulso de eco do HC-SR04.
  • pinMode(PIN_TRIG, OUTPUT): Configura o PIN_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 o PIN_ECHO (pino 18) como uma entrada. O Arduino ficará escutando o sinal de eco neste pino.
  • digitalWrite(PIN_TRIG, HIGH): Define o PIN_TRIG como 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 o PIN_TRIG de 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ção pulseIn() mede a duração de um pulso (em microssegundos) em um determinado pino. Neste caso, ela está medindo o tempo em que o PIN_ECHO permanece 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.