Medir distâncias com precisão usando módulos ultrassônicos é um requisito comum em projetos de sistemas embarcados e robótica. Combinando um microcontrolador ESP32 com um sensor HC-SR04, você pode construir detectores de proximidade confiáveis e sistemas de desvio de obstáculos. Este tutorial guia você na configuração do seu espaço de trabalho, na conexão correta dos componentes e na escrita do código necessário usando o ecossistema PlatformIO executando o Arduino Framework no PlatformIO gerenciado através do PlatformIO Core (CLI).
Materiais necessários
Antes de começar a montar o hardware, certifique-se de reunir todos os componentes necessários na sua bancada. Você pode obter seu hardware usando os seguintes links:
ESP32
HC-SR04 (3V-5.5V anteriormente conhecido como HC-SR04P)
Conectando o sensor ao ESP32
A fiação correta é fundamental para evitar danos ao hardware, especialmente porque algumas variantes mais antigas do sensor ultrassônico operam estritamente em lógica de 5V. Para este tutorial, certifique-se de usar uma versão que suporte tensões lógicas menores ou faça o nível lógico adequado dos seus sinais. Conecte os pinos de acordo com a tabela de conexões fornecida abaixo:
ESP32 | HC-SR04 |
3.3V | Vcc |
GND | Gnd |
D22 | Trig |
D23 | Echo |
Inicialização do projeto via terminal
Abra sua interface de linha de comando para configurar o espaço de trabalho do seu projeto. Você pode inspecionar os alvos de placas ESP32 disponíveis usando a ferramenta de linha de comando:
pio boards esp32
Crie um diretório dedicado para os arquivos do seu projeto, acesse-o e inicialize o projeto PlatformIO configurando o framework e a baud rate do monitor serial:
mkdir hcsr04-esp32
cd hcsr04-esp32
pio project init --board esp32doit-devkit-v1 --project-option "framework=arduino" --project-option "monitor_speed=115200"
Programando o ESP32
Navegue até a pasta de código-fonte do seu projeto e abra o arquivo principal para inserir a lógica da aplicação. Crie ou atualize o conteúdo de src/main.cpp com a implementação abaixo, que dispara o pulso ultrassônico e calcula a distância com base na duração do pulso de eco:
#include <Arduino.h>
const int trigger = 22;
const int echo = 23;
void setup() {
Serial.begin(115200);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
}
void loop() {
digitalWrite(trigger, LOW);
delayMicroseconds(2);
digitalWrite(trigger, HIGH);
delayMicroseconds(10);
digitalWrite(trigger, LOW);
long duration = pulseIn(echo, HIGH, 30000);
if (duration > 0) {
Serial.printf("Distance: %.2f cm\n", (duration * 0.0343) / 2.0);
} else {
Serial.println("Reading error");
}
delay(1000);
}
Compilando e gravando o firmware
Assim que o código estiver pronto, compile o projeto, faça o upload do binário resultante para o seu microcontrolador e abra o monitor serial para visualizar as leituras de distância em tempo real usando um único comando:
pio run -t upload -t monitor
Tutoriais relacionados
Se você quiser explorar firmwares ou plataformas de hardware alternativas, confira estes guias relacionados:
Sensor ultrassônico HC-SR04 no ESP32 com MicroPython
Sensor ultrassônico HC-SR04 no ESP32 com MicroPython
Aprenda a conectar e programar um sensor ultrassônico HC-SR04 com um microcontrolador ESP32 usando MicroPython e scripts de medição de distância.
Sensor ultrassônico HC-SR04 no STM32 com Arduino
Sensor ultrassônico HC-SR04 no STM32 com Arduino
Aprenda a conectar um sensor de distância ultrassônico HC-SR04 a uma STM32 BlackPill usando o framework Arduino e o PlatformIO.
Sensor ultrassônico HC-SR04 no RPi Pico com Arduino
Sensor ultrassônico HC-SR04 no RPi Pico com Arduino
Aprenda a conectar o sensor ultrassônico HC-SR04 a um Raspberry Pi Pico usando o framework Arduino e o PlatformIO.