Magos do Arduino

Sensor de distância ultrassônico HC-SR04

Aprenda a utilizar o sensor de distância ultrassônico HC-SR04 com o Arduino

Magos do Arduino

Sensor de distância ultrassônico HC-SR04

Este sensor funciona enviando ondas sonoras do transmissor, que então atingem um objeto, e depois retornam ao receptor.

A distância então é determinada pelo tempo que as ondas sonoras levam para retornar ao sensor.

Sensor de distância ultrassônico HC-SR04

Ele pode ser controlado através de dois pinos, sendo um deles para o envio (trigger) das ondas sonoras, e o outro para a leitura (echo) do retorno delas.

No Arduino, usamos a função pulseIn() para detectar o retorno da onda o receptor.

Para converter o resultado, utilizamos a fórmula: distância = (duração * .0343) / 2.

O valor .0343 é a velocidade aproximada do som em centímetros por microssegundo.

Devemos dividir o resultado por 2 porque a onda sonora vai até o objeto e retorna até o receptor.

Sensor de distância ultrassônico HC-SR04

Neste projeto você criará um circuito que faz o uso de um sensor de distância ultrassônico HC-SR04 no Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x Breadboard
  • 1x Arduino UNO
  • 1x Sensor de distância ultrassônico HC-SR04
  • Jumpers

Circuito sensor de distância ultrassônico HC-SR04

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito sensor de distância ultrassônico HC-SR04

Schematics sensor de distância ultrassônico HC-SR04

A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.

Schematics sensor de distância ultrassônico HC-SR04

Código fonte para o circuito do sensor de distância ultrassônico HC-SR04

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
 * Código do curso Magos do Arduino para conectar um sensor 
 * de distância ultrassônico HC-SR04 com o Arduino.
 * 
 * Ele imprime a distância em centímetros no Serial Monitor.
 *
 * (c) Copyright KazaleIT
 * @kazaleitoficial no YouTube
 **/

#define PINO_TRIGGER 9
#define PINO_ECHO 10

float duracao; // duração até o som retornar de trigger para echo
float distancia; // distância final calculada em centímetros(cm)

void setup() {
  pinMode(PINO_TRIGGER, OUTPUT);
  pinMode(PINO_ECHO, INPUT);
  Serial.begin(9600);
}

void loop() {
  // envia um sinal para medir a duração do sinal
  digitalWrite(PINO_TRIGGER, LOW);
  delayMicroseconds(2); // aguarda 2 microsegundos para garantir que o pino está em LOW
  digitalWrite(PINO_TRIGGER, HIGH);
  delayMicroseconds(10); // envia o sinal por 10 microsegundos
  digitalWrite(PINO_TRIGGER, LOW);

  // utiliza a função pulseIn para detectar o tempo de acionamento do pino echo
  // consulte https://docs.arduino.cc/language-reference/en/functions/advanced-io/pulseIn/
  // para maiores detalhes sobre o pulseIn
  duracao = pulseIn(PINO_ECHO, HIGH);

  // calcula a distância em centímetros fazendo a conversão da duração comparada com 
  // a velocidade da luz em metros por segundo
  // o valor é dividido por 2 pois o sinal tem que ir e voltar do alvo
  distancia = (duracao * 0.0343) / 2;

  Serial.print("Distância (cm): ");
  Serial.println(distancia);
  delay(100);
}