Um sensor ultrassônico pode ser usado para medir distâncias enviando e recebendo ondas ultrassônicas. Logo, um sensor de distância ultrassônico HC-SR04 consiste, na verdade, em dois transdutores ultrassônicos. Um atua como um transmissor que converte o sinal elétrico em pulsos de som ultrassônico de 40 KHz. O outro atua como receptor e escuta os pulsos transmitidos.
Ao receber esses pulsos, o receptor produz um pulso de saída cuja largura é proporcional
à distância do objeto à sua frente.

Conforme a figura acima, tudo começa quando o pino de disparo (Trigger na figura) é definido como ALTO por 10µs. Em resposta, o sensor transmite um
conjunto de oito pulsos ultrassônicos de 40 kHz. Este padrão de 8 pulsos é especialmente projetado para que o receptor possa distinguir os pulsos transmitidos do ruído ultrassônico ambiente. Esses oito pulsos ultrassônicos viajam pelo ar para longe do transmissor. Enquanto isso, o pino de eco (echo na figura 1) vai para HIGH para iniciar a contagem de tempo do sinal de retorno, o eco.
Se esses pulsos forem refletidos de volta, o pino de eco ficará baixo assim que o sinal for recebido. A largura do pulso recebido é usada para calcular a distância do objeto refletido. Isso pode ser resolvido usando a equação distância-velocidade-tempo.
Calculando a distância
Suponha que temos um objeto na frente do sensor a uma distância desconhecida e recebemos um pulso de 500µs de largura no pino de eco, como mostrado na figura. Agora vamos calcular a que distância o objeto está do sensor. Para isso usaremos a equação abaixo.
Distância = Velocidade x Tempo
Aqui temos o valor do tempo, ou seja, 500 µs, e conhecemos a velocidade, que é a velocidade do som. São 340 m/s no ar, em temperatura de 20 ºC. Para calcular a distância, podemos converter a velocidade do som em cm/µs (centímetros por microssegundos), que nos dá 0,034 cm/µs. Com essa informação podemos calcular a distância. Lembre-se de que o pulso de eco indica o tempo que leva para o sinal ser enviado e refletido de volta. Então, para obter a distância, você deve dividir o resultado por dois.
Distância = (0,034 cm/µs x 500 µs) / 2
Distância = 8,5 cm
Conectando o sensor HC-SR204 e o display ao ESP32
Para ilustrar melhor o conteúdo mencionado neste artigo faremos uso do simulador de ESP32 online Wokwi, onde será possível visualizar na prática de forma virtual, o funcionamento do código e do sensor de distância .
Para começar o projeto, vamos elaborar a montagem. Conecte o sensor HC-SR04 na placa ESP32. O sensor tem quatro pinos: VCC, GND, TRIG e ECHO. Conecte o pino VCC a uma fonte de alimentação de 5V na placa ESP32, o pino GND a um pino terra, o pino TRIG a um pino de saída digital (pino D18, como no exemplo da figura 2) e o pino ECHO a um pino de entrada digital (pino D5, como no exemplo da figura 2).
O display Oled já foi usado por nós em exemplos anteriores. O modelo que estamos usando tem quatro pinos e se comunica com o ESP32 usando o protocolo de comunicação I2C. Os pinos mais adequados para comunicação I2C no ESP32 são GPIO 22(SCL) e GPIO 21(SDA).

Para usar este exemplo, certifique-se de ter as bibliotecas Adafruit SSD1306 e Adafruit GFX instaladas. Relembrando, na IDE do Arduino, vá para Ferramentas > Gerenciador de Biblioteca , procure por “ SSD1306” e instale a biblioteca SSD1306 da Adafruit. Após instalar a biblioteca Adafruit SSD1306, digite “GFX ” na caixa de pesquisa para instalar a biblioteca Adafruit GFX Library.
Em seguida, basta usar o código a seguir e fazer o upload do código para a placa.
Link para download
Link para o simulador
/*********
Este código permite medir distância com o sensor ultrassônico HC-SR04,
enviando os dados de medição para o display OLED SSD1306.
*********/
// carrega bibliotecas
#include <Wire.h> // Biblioteca para usar I2C
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // Largura do display OLED, em pixels
#define SCREEN_HEIGHT 64 // Altura do display OLED, em pixels
// Para conectar o SSD1306 display ao I2C (pinos SDA e SCL)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int trigPin = 18;
const int echoPin = 5;
//define a velocidade do som em cm/uS
#define SOUND_SPEED 0.034
long duration;
float distanceCm;
float distanceInch;
void setup() {
/// setup do display
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C é o endereço no barramento I2C
Serial.println(("SSD1306 falha"));
for(;;);
}
delay(2000);
display.setTextSize(1);
display.setTextColor(WHITE);
/// fim setup do display
Serial.begin(115200); // Inicia a comunicação serial
pinMode(trigPin, OUTPUT); // Ajusta trigPin como saída
pinMode(echoPin, INPUT); // Ajusta echoPin como entrada
}
void loop() {
// limpa trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Mantem trigPin em estado HIGH por 10 microssegundos
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Lê o echoPin, retorna o tempo de viagem da onda sonora em microssegundos
duration = pulseIn(echoPin, HIGH);
// Calcula a distância
distanceCm = duration * SOUND_SPEED/2;
// Imprime a distância no monitor serial
Serial.print("Distancia (cm): ");
Serial.println(distanceCm);
// Escrita no display
display.clearDisplay();
display.setCursor(0, 10); // posição da próxima escrita (coluna, linha)
display.print("Dist: ");
display.print(distanceCm);
display.print(" cm");
display.display();
delay(1000);
}
Verificando o código no simulador
Acessando o simulador Wokwi, você encontrará duas partes segmentadas dentro dele. A primeira metade é onde iremos escrever o código do ESP32 e também onde adicionamos as bibliotecas utilizadas no projeto. Na segunda metade é onde realizamos a montagem do circuito e adicionamos elementos como o microcontrolador, resistores, sensores e outros dispositivos ao circuito. Na segunda metade também é onde executamos a simulação.

Pressionando o botão verde, “Start the simulation”, o simulador dará início ao processo de compilar o código e em seguida irá executar o programa. Ao iniciar a execução do programa, o simulador irá exibir o monitor serial no canto direito abaixo da tela, juntamente com a visualização prática do circuito virtual.

Caso o circuito possua algum sensor que dependa de um valor de entrada, pode-se simular este valor clicando sobre o sensor e personalizando o valor de acordo com o que desejar.
Concluindo
Este tutorial é um guia de introdução ao uso de um sensor HC-SR04 em conjunto com o micrcontrolador ESP32, com uma demonstração prática no simulador e com uma explicação sobre o funcionamento de um sensor de distância ultrassônico.
Esperamos que este guia tenha sido útil. Leia as últimas publicações. Dúvidas e recomendações, não hesite de comentar.


Deixe um comentário