Tutorial ESP32 27/55 - Medindo Distância com Sensor Ultrassônico | Kit de Aprendizado IoT ESP32 da SunFounder
Neste tutorial, vamos aprender a usar um sensor de distância ultrassônico com o ESP32 para medir distâncias e exibir os resultados em uma tela. Também vamos explorar como ativar um buzzer quando um objeto é detectado dentro de um intervalo específico. Este projeto destaca a versatilidade do microcontrolador ESP32, que integra capacidades de Wi-Fi e Bluetooth, tornando-o adequado para várias aplicações de IoT.
Neste guia, você encontrará explicações sobre os componentes de hardware, instruções de fiação e trechos de código para ajudá-lo a implementar o projeto com sucesso. Para mais clareza, consulte o vídeo (no vídeo em 00:00).
Hardware Explicado
Os componentes principais deste projeto incluem o microcontrolador ESP32, o sensor ultrassônico (HC-SR04) e um buzzer. O sensor ultrassônico consiste em duas partes principais: um transmissor que emite ondas ultrassônicas e um receptor que escuta as ondas refletidas. Ao medir o tempo que leva para as ondas retornarem, podemos calcular a distância até um objeto.
O ESP32 serve como o controlador central, processando dados do sensor ultrassônico e controlando o buzzer com base na distância medida. O buzzer soará quando a distância detectada for menor que um limite definido, indicando que um objeto está muito próximo.
Detalhes da Ficha Técnica
| Fabricante | HC-SR04 |
|---|---|
| Número da peça | HC-SR04 |
| Tensão lógica/IO | 5 V |
| Tensão de alimentação | 5 V |
| Corrente de saída (por canal) | 16 mA |
| Corrente de pico (por canal) | ... |
| Orientação sobre frequência PWM | ... |
| Limiares de lógica de entrada | ... |
| Queda de tensão / RDS(on)/ saturação | ... |
| Limites térmicos | ... |
| Pacote | ... |
| Notas / variantes | Faixa de medição: 2 cm a 400 cm |
- Assegure uma alimentação elétrica adequada de 5 V para o sensor.
- Mantenha um caminho claro para as ondas ultrassônicas para evitar interferências.
- Use fios curtos para minimizar a demora e o ruído do sinal.
- Certifique-se de que as conexões dos pinos estejam corretas para evitar falhas de comunicação.
- Teste o sensor em diversos ambientes para verificar a precisão.
Instruções de Fiação

Para conectar o sensor ultrassônico ao ESP32, ligue o pino VCC do sensor ao pino 5V do ESP32. Em seguida, conecte o pino GND do sensor a um dos pinos de terra (GND) do ESP32. O pino de disparo (Trig) do sensor deve ser conectado ao GPIO 26 do ESP32, enquanto o pino de eco (Echo) deve ser conectado ao GPIO 25. Essa configuração permite que o ESP32 envie um sinal para o sensor e receba o sinal de eco para calcular a distância.
Para o botão, conecte o terminal positivo (longo) ao GPIO 12 no ESP32 e o terminal negativo (curto) ao GND. Certifique-se de que todas as conexões estejam seguras para evitar fios soltos durante a operação. Se estiver usando uma placa de ensaio, alinhe as conexões do botão corretamente para evitar erros de fiação. Certifique-se de consultar o vídeo para confirmação das conexões (no vídeo às 05:12).
Exemplos de Código e Passo a Passo
O código inicializa os pinos para o sensor ultrassônico e configura a comunicação serial. A função principal,readSensorData(), é responsável por enviar um sinal de disparo e medir o tempo de resposta do pino de eco.
const int echoPin = 25;
const int trigPin = 26;
void setup() {
Serial.begin(115200);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.println("Ultrasonic sensor:");
}
O código defineechoPinetrigPincomo constantes para os pinos conectados ao sensor ultrassônico. No(a)setup()função, inicializamos a comunicação serial e configuramos os modos dos pinos de acordo.
float readSensorData() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
unsigned long microsecond = pulseIn(echoPin, HIGH);
float distance = microsecond / 29.00 / 2;
return distance;
}
Este trecho mostra oreadSensorData()função, que envia um pulso de 10 microssegundos para o pino de gatilho. Em seguida, mede o tempo que leva para o pino de eco receber o sinal de volta, calcula a distância e retorna esse valor.
Finalmente, a função de loop lê continuamente a distância e a imprime no monitor serial. Se a distância estiver abaixo de 20 cm, o buzzer será ativado.
Demonstração / O que Esperar
Ao executar o programa, o ESP32 exibirá a distância medida em centímetros no monitor serial. Se um objeto entrar a menos de 20 cm do sensor, o buzzer soará. Esse comportamento pode ser testado colocando objetos a várias distâncias na frente do sensor. Tenha cuidado com a polaridade invertida e certifique-se de que as conexões estejam feitas conforme especificado para evitar problemas durante a operação (no vídeo às 08:00).
Marcação de Vídeo
- 00:00 Início
- 1:46 Introdução ao Sensor Ultrassônico
- 6:02 Fiação explicada
- 7:37 Código do Arduino ESP32 explicado
- 11:33 Selecionando a placa ESP32 e a porta COM no Arduino IDE
- 13:15 Demonstração de medição de distância
- 16:43 Ação de mudança de direção com distância: campainha
/*
* // Defina os pinos para o sensor ultrassônico
*/
const int echoPin = 25;
const int trigPin = 26;
// Protótipo de função para leitura de dados do sensor.
float readSensorData();
void setup() {
// Inicie a comunicação serial a 115200 bps.
Serial.begin(115200);
// Defina echoPin como entrada e trigPin como saída.
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
// Imprima informações do sensor no monitor serial.
Serial.println("Ultrasonic sensor:");
}
void loop() {
// Ler a distância do sensor ultrassônico
float distance = readSensorData();
// Imprima a distância medida no monitor serial.
Serial.print(distance);
Serial.println(" cm");
// Atraso entre leituras
delay(200);
}
// Função para ler dados do sensor ultrassônico
float readSensorData() {
// Acione um sinal baixo antes de enviar um sinal alto.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Envie um sinal alto de 10 microssegundos para o trigPin.
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
// Voltar para o sinal baixo
digitalWrite(trigPin, LOW);
// Meça a duração do sinal alto no echoPin.
unsigned long microsecond = pulseIn(echoPin, HIGH);
// Calcule a distância usando a velocidade do som (29,00µs por centímetro)
float distance = microsecond / 29.00 / 2;
// Retorne a distância calculada
return distance;
}
Common Course Links
Common Course Files
Coisas que você pode precisar
-
eBay
-
BanggoodCompre o Sensor Ultrassônico HC-SR04 na Banggood.banggood.com
Recursos e referências
-
Documentação
-
ExternoBiblioteca Ultrassônica HC-SR04 do site oficial da Arduinoplayground.arduino.cc
Arquivos📁
Nenhum arquivo disponível.