Introdução

 

Nessa aula você entenderá o funcionamento de um sensor Ultrassônico HC-SR04 e como usá-lo. Através da emissão de frequências sonoras ultrassônicas (acima de 20000 Hz), ele consegue medir distâncias de forma simples e precisa. É importante lembrar que esse som emitido por ele é imperceptível para nós humanos.

Muito usado em projetos de robótica em que se necessita obter a distância de um objeto ou o mapeamento de uma área. Devido ao seu baixo custo e fácil implementação, se tornou popular entre a comunidade e, por isso, existem diversas bibliotecas que tornam mais fácil o seu uso.

 

Como funciona?

 

Para obter as medidas o sensor possui dois “tambores” o Trig e o Echo. O Trig é o responsável por emitir o sinal sonoro, já o Echo possui a função de captar as ondas sonoras refletidas, desse modo, o sensor envia uma frequência ultrassônica do Trig que após encontrar um objeto reflete e é detectado pelo Echo, veja:

 

Como usar?

 

Primeiro, vamos fazer o hardware:

Agora vamos gerar uma onda ultrassônica, para isso temos que mandar um sinal com duração de 10μs (10 microssegundos, 10-6segundos) para o pino onde o Trig(Emissor) está conectado. Para descobrir a distância, precisamos do tempo que a onda levou para ser detectada(ou seja, o tempo em que a onda levou para sair do Trig, bater em algum objeto e voltar) pelo Echo(receptor) e fazer os cálculos, veja:

 

para descobrir a distância, utilizamos a seguinte fórmula:

\dpi{120} \fn_cm \large D = V \times T

Onde D é a distância a ser descoberta, V a velocidade da onda sonora e T o tempo que a onda sonora levou para sair do Trig e ser captada pelo Echo. Queremos descobrir a distância em cm, então precisamos da velocidade em cm/s (centímetros por segundo)  e o tempo em s (segundos). T nos retorna um valor em μs (microssegundos, 10-6), então precisamos convertê-lo para segundos, ou seja, dividi-lo por 1000000. V está em m/s(metros por segundo), então precisamos convertê-la para cm/s, basta apenas multiplicar por 100. Por fim, T marca o tempo de ida e volta da onda sonora, quando precisamos apenas de um dos dois valores, como são iguais, basta apenas dividir por 2 o valor obtido. Então a equação fica dessa forma:

\dpi{120} \fn_cm \large D = \frac{(V\times 100)\times(\frac{T}{10^6})}{2}

 

OBS.:  Velocidade do som \approx 343m/s 

 

Código

    Vamos transcrever isso para o Arduino:

#define Trig 10
#define Echo 11
float espaco = 0;
float distancia = 0;
float tempo_micro = 0;
float tempo = 0;
float vel_som_cm = 34300; /* Velocidade do Som = 343 m/s
para convertemos para cm/s,
multiplicamos 343 por 100,
então vel_som_cm = 34300 cm/s */
float distancia_em_cm()//Funçao onde calculamos a distancia em cm
{
digitalWrite(Trig,LOW);//Desligamos o pino do Trig durante 3 microssegundos para evitar qualquer conflito
delayMicroseconds(3);
digitalWrite(Trig,HIGH);//Ligamos o pino do Trig por 10us para gerar uma onda ultrassonica
delayMicroseconds(10);
digitalWrite(Trig,LOW);
tempo_micro = pulseIn(Echo,HIGH);//Estamos atribuindo a variavel tempo_micro, o valor do tempo em microssegundos que a onda sonora demorou para sair do Trig e chegar no Echo
tempo = ((tempo_micro/1000.0)/1000.0);//Estamos atribuindo a variavel tempo o valor da conversao do tempo de microssegundos para segundos
espaco = ((vel_som_cm*tempo)/2); //esta atribuindo a variavel espaco o valor da distancia em cm
return (espaco);
}
void setup()
{
pinMode(Trig,OUTPUT);//estamos declarando o pino do Trig como saida
pinMode(Echo,INPUT);//estamos declarando o pino do Echo como entrada
Serial.begin(9600);//estamos abrindo a serial
}
void loop()
{
distancia = distancia_em_cm();// estamos atribuindo a variavel distancia o valor retornado na funcao distancia_em_cm()
Serial.print(distancia);
Serial.println("cm");
delay(800);
}

 

HC-SR04 com biblioteca

 

Outra maneira, mais simples, de se usar o sensor de distância é através do uso de uma biblioteca externa que já faz de maneira automática todos os cálculos necessários. Existem várias bibliotecas dedicadas para esse sensor mas iremos abordar a HCSR04, feita pelo Martin Šošić. Para instalá-la você possui 2 opções, instalar manualmente ou baixá-la pela IDE da Arduino.

Como usar a biblioteca?

       Para usar a biblioteca primeiro é necessário instalá-la, veja a seguir duas maneiras de fazer isso:

 

Instalar manualmente

Para instalar manualmente, primeiro você deve baixar a biblioteca, depois basta seguir o passo a passo:

 
1. Vá em “Sketch/Incluir Biblioteca” e clique em “Adicionar biblioteca .ZIP”:

 

 
2. Procure pelo arquivo da biblioteca .ZIP que você baixou e clique em “Abrir”:

 

 

 

Instalar através da IDE

Para instalar a biblioteca através da IDE, basta seguir o passo a passo:

 
1. Vá em “Ferramentas” e clique em “Gerenciar Bibliotecas”:

 

 
2. Pesquise por “HC-SR04”, depois selecione a biblioteca do Martin Sosic e instale:

 

 

Código com biblioteca

    Após isso basta entender o seguinte código:

#include <HCSR04.h> //Inclui a biblioteca em nosso programa
UltraSonicDistanceSensor SensorDeDistancia(10, 11); /* Estamos declarando o nosso sensor, entenda a estrutura:
UltraSonicDistanceSensor *Nome do sensor*(Pino do Trigger, Pino do Echo)*/
void setup ()
{
Serial.begin(9600); //Inicializa a Serial
}
void loop ()
{
// A cada meio segundo lê o sensor e printa a distância em centimetros:
Serial.println(SensorDeDistancia.measureDistanceCm());
delay(500);
}