Arduino - Sensor Ultrassônico
Neste tutorial, vamos aprender:
- Como o sensor ultrassônico funciona
- Como conectar o sensor ultrassônico ao Arduino
- Como programar o Arduino para ler o estado do sensor ultrassônico
- Como usar o Arduino e o sensor ultrassônico HC-SR04 para medir a distância até um objeto
- Como filtrar o ruído das medições de distância do sensor ultrassônico no código Arduino
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor Ultrassônico
O sensor ultrassônico HC-SR04 é usado para medir a distância até um objeto usando ondas ultrassônicas.
Pinagem
O sensor ultrassônico HC-SR04 tem quatro pinos:
- Pino VCC: deve ser conectado ao VCC (5V)
- Pino GND: deve ser conectado ao GND (0V)
- Pino TRIG: este pino recebe o sinal de controle (pulso) do Arduino.
- Pino ECHO: este pino envia um sinal (pulso) para o Arduino. O Arduino mede a duração do pulso para calcular a distância.

Como Funciona
- Microcontrolador: gera um pulso de 10 microssegundos no pino TRIG.
- O sensor ultrassônico emite as ondas ultrassônicas automaticamente.
- A onda ultrassônica é refletida depois de atingir um obstáculo.
- O sensor ultrassônico:
- Detecta a onda ultrassônica refletida.
- Mede o tempo de percurso da onda ultrassônica.
Como Obter a Distância do Sensor Ultrassônico
Para obter a distância do sensor ultrassônico, só precisamos fazer dois passos (1 e 6 da parte Como Funciona)
- Gerar um pulso de 10 microssegundos no pino TRIG
- Medir a duração do pulso no pino ECHO e depois calcular a distância entre o sensor e o obstáculo
Cálculo da Distância
Temos:
- O tempo de percurso da onda ultrassônica (µs): travel_time = pulse_duration
- A velocidade da onda ultrassônica: speed = SPEED_OF_SOUND = 340 m/s = 0.034 cm/µs
Então:
- A distância percorrida pela onda ultrassônica (cm): travel_distance = speed × travel_time = 0.034 × pulse_duration
- A distância entre o sensor e o obstáculo (cm): distance = travel_distance / 2 = 0.034 × pulse_duration / 2 = 0.017 × pulse_duration
Arduino - Sensor Ultrassônico
Os pinos do Arduino podem gerar um pulso de 10 microssegundos e medir a duração de um pulso. Por isso, podemos obter a distância do sensor ultrassônico usando dois pinos do Arduino:
- Um pino é conectado ao pino TRIG para gerar o pulso de 10µs no pino TRIG do sensor
- Outro pino é conectado ao pino ECHO para medir o pulso vindo do sensor
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Como Programar o Sensor Ultrassônico
- Gere um pulso de 10 microssegundos em um pino do Arduino usando as funções digitalWrite() e delayMicroseconds(). Por exemplo, o pino 9:
- Meça a duração do pulso (µs) em um pino do Arduino usando a função pulseIn(). Por exemplo, o pino 8:
- Calcule a distância (cm):
Código Arduino
Passos Rápidos
- Copie o código acima e abra-o na Arduino IDE
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino

- Abra o Serial Monitor
- Mova sua mão na frente do sensor ultrassônico
- Veja a distância do sensor até a sua mão no Serial Monitor
Explicação do Código
Leia a explicação linha por linha nos comentários do código!
Como Filtrar o Ruído das Medições de Distância do Sensor Ultrassônico
O resultado da medição do sensor ultrassônico contém ruído. Em algumas aplicações, o resultado com ruído causa um funcionamento indesejado. Podemos remover o ruído usando o seguinte algoritmo:
- Fazer várias medições e guardá-las em um array
- Ordenar o array em ordem crescente
- Filtrar o ruído
- Algumas das menores amostras são consideradas ruído → ignore-as
- Algumas das maiores amostras são consideradas ruído → ignore-as
- ⇒ calcule a média das amostras do meio
- As cinco menores amostras são consideradas ruído → ignore-as
- As cinco maiores amostras são consideradas ruído → ignore-as
- ⇒ calcule a média das 10 amostras do meio (da 5ª à 14ª)
O código de exemplo abaixo faz 20 medições
Vídeo
Desafie-se
Use o sensor ultrassônico para fazer um dos seguintes projetos:
- Evitar colisões em um carrinho de controle remoto.
- Detectar quando a lixeira está cheia.
- Monitorar o nível da lixeira.
- Abrir/fechar a lixeira automaticamente. Dica: Consulte Arduino - Servo Motor.
Conhecimento Adicional
Alguns fabricantes oferecem sensores ultrassônicos com 3 pinos. Os sinais TRIG e ECHO ficam no mesmo pino. Nesse caso, precisamos usar apenas um pino do Arduino para as duas funções: gerar um pulso para o sensor e medir o pulso vindo do sensor.
Aplicações do Sensor Ultrassônico
- Prevenção de Colisões
- Detecção de Recipiente Cheio
- Medição de Nível
- Detecção de Proximidade