Arduino com sensor ultrasônico HC-SR04

Utilizando sensor ultrassônico com Arduino UNO e entendendo como funciona o componente.

 Escrevendo testes automatizados com PHPUnit

Neste artigo será apresentado como conectar e verificar colisões utilizando o componente Sensor Ultrasônico HC-SR04, porém antes de começarmos, precisamos entender como ele funciona.

Sensores ultrassônicos são dispositivos que possibilitam detectar se há alguma interferência física em determinada ocasião, podemos compara-los com sensores de ré, que são instalados na parte traseira de um carro e através dele é possível informar para o manobrista a qual distancia está o objeto que poderá ser colidido, sendo que estas medidas são precisas.

O sensor que vamos trabalhar tem o mesmo objetivo, que pode variar uma distância de 2 cm a 400 cm (quatro metros), sendo que dependendo do local onde será aplicado, como em estúdios de gravação poderá interferir, por conter isolamento de eco.

Este sensor conta com quatro pinos que são eles:

VCC- Entrada de energia, podendo ser de 4,5V a 5V;
Trig – Trigger é o mesmo que Gatilho, este pino é a entrada do sensor;
Echo – Saída o sensor;
GND – Ground, terra .

Para começarmos nosso projeto, precisamos fazer algumas ligações, aqui será utilizado três LED para representar a distância atual, que são Branco (< 10), Vermelho (< 20 && > 10) e Verde (> 20).

Para podemos usar o sensor, será necessário primeiramente fazer a instalação da biblioteca HCSR04Ultrasonic, isto não é nada complicado, apenas siga os procedimentos abaixo.

1 - Faça o Download da biblioteca, ela está disponível no final deste artigo.

2 – Descompacte a pasta que acabou de fazer o Download para dentro da pasta libraries onde encontra-se o executável do seu Arduino.

3 – Com a IDE do Arduino em execução, clique no menu Sketch, repouse o mouse sobre a opção Importar biblioteca e por fim clique em HCSR04Ultrasonic.

Com a biblioteca instalada, precisamos agora fazer toda ligação dos LEDs e do Sensor na Protoboard. Para isto, fixe os LEDs na seguinte ordem na Protoboard, Branco, Vermelho e Verde e por final, fixe o Sensor.

Abaixo veja a ligação de cada pino dos LED do Sensor.

LED Branco

Pino positivo: porta 7
Pino negativo: GND
 

LED Vermelho:

Pino positivo: porta 6
Pino negativo: GND

LED Verde:

Pino positivo: porta 7
Pino negativo: GND
 

Sensor HC-SR-04

VCC – Entrada 5V;
Trig – Porta 8;
Echo – Porta 9;
GND – GND.


 

Veja toda a programação comentada no código abaixo, leia atentamente para que possa entender, não é absolutamente nada complicado.

 

Código 01:

#include  //Importamos a Biblioteca do sensor ao projeto.

  int branco   = 7; //Pino 7 será saída do LED Branco
  int vermelho = 6; //Pino 6 será saída do LED Vermelho
  int verde    = 5; //Pino 5 será saída do LED Verde
  Ultrasonic ultrasonic(8,9); //Instanciamos a biblioteca, 8 representa a porta do Trigger e 9  a porta do Echo

  long microSegundos = 0;
  float distanciaCentimetros = 0;

void setup() {
  Serial.begin(9600); //Iniciamos a porta serial com Baud Rate de 9600B (velocidade de trasnferência)
 
  pinMode(branco, OUTPUT); //Pino representando LED Branco.
  pinMode(vermelho, OUTPUT); //Pino representando LED vermelho.
  pinMode(verde, OUTPUT); //Pino representando LED verde.
}

void loop() {
   digitalWrite(branco, LOW); //Desligamos o LED Branco
   digitalWrite(vermelho, LOW); //Desligamos o LED Vermelho
   digitalWrite(verde, LOW); //Desligamos o LED Verde
  
  microSegundos = ultrasonic.timing(); 
  /*
    Obtem o tempo de retorno do Echo.
    Leia mais informações: http://forum.arduino.cc/index.php?topic=37712.0
  */
 
  //Converte de segundos para centimtros.
  distanciaCentimetros = ultrasonic.convert(microSegundos, Ultrasonic::CM); 
  
  //Já temos o valor em CM, agora basta usar o IF para fazer a compração, poderiamos até verificar se for menor X distância disparar um Buzzer.
  if(distanciaCentimetros < 10){ //Se a distância for menor que 10 cm...
    digitalWrite(branco, HIGH); //Ligamos LED Branco
  }
  
  if(distanciaCentimetros > 10 && distanciaCentimetros < 20){
     //Se a distância for maior que 10 cm e menor que 20 cm...
    digitalWrite(vermelho, HIGH); //Ligamos LED Vermelho
  }
  
  if(distanciaCentimetros > 20){ //Se a distância for maior que 20 cm...
    digitalWrite(verde, HIGH); //Ligamos LED Verde
  }
  
    Serial.print(distanciaCentimetros); //Imprime na porta serial qual é atual distância de uma colisão
    Serial.println(" CM"); //Imprime espaço e CM, não podemos concatenar com o valor acima.
    delay(500);  //Aguarda um meio segundo para finalizar o método
}

Neste exemplo usamos uma comunicação serial para exibir através do Monitor serial presente na IDE a distância que está sendo calculada. O botão do Monitor serial está no canto superior direito da tela, basta dar um clique para uma nova janela abrir.

 

Veja abaixo algumas imagens do nosso Projeto.

Teste dos LEDs


 

Ligação dos componentes


 

Espero que tenham entendido, em caso de dúvidas, deixem nos comentários e confira o vídeo do resultado final logo abaixo.

Até a próxima!