Sensor Ultrassônico HC-SR04 com Arduino Uno

Olá pessoal! Hoje vamos tirar do nosso baú como utilizar um Sensor Ultrassônico HC-SR04 em um Arduino Uno.

Sensor Ultrassônico HC – SR04

Sensor Ultrassônico HC-SR04

Figura 1 – Sensor Ultrassônico HC – SR04

O Sensor Ultrassônico HC-SR04 tem como objetivo medir distância. Este sensor pode medir distâncias de 2 cm à 400 cm com precisão de aproximadamente de 3mm.

Este tipo de sensor pode ser aplicado em vários casos, como: detecção de obstáculos, verificação de presença, posicionamento de objetos, medição de altura e largura, etc. Entenda o funcionamento:

O sensor envia sinais com um pequeno comprimento de onda, o objeto detectado retorna o sinal, e através do tempo de retorno do sinal, a distância entre o sensor e o objeto é determinada.

Sensor Ultrassônico detectando objeto

Figura 2 – Sensor Ultrassônico detectando objeto

Para iniciar a transmissão, através do pino trig é enviado um pulso de 10us e depois mais 8 pulsos com uma frequência de 40kHz. O pino echo fica em nível lógico alto até receber o sinal que foi transmitido.

trgiger-puslo-echo

A distância é medida pela seguinte equação:

equação sensor ultrassônico

 

Fazendo as Ligações Entre o Arduino e o Sensor Ultrassônico HC-SR04

Lista de Componentes:

 

Circuito Fritzing

Circuito com o Arduino e Sensor Ultrassônico HC-SR04

Figura 3 – Circuito com Arduino e Sensor Ultrassônico HC-SR04

 

O código abaixo consiste em mostrar no monitor serial a distância medida pelo sensor ultrassônico HC – SR04:

Programação

Explicando o Programa

O trecho acima inclui a biblioteca do sensor ultrassônico #include <Ultrasonic.h> e ainda atribui variáveis aos pinos 2 e 3 do Arduino. Em seguida a função Ultrasonic ultra(trig,echo) inicializa os pinos trig e echo criando o objeto destes.

Neste trecho são configuradas as taxas de comunicação e a mensagem inicial que aparecerá no monitor serial. Em void loop() inicia-se o programa principal, onde é declarada a variável float medcm e em seguida é lida a informação do sensor ultrassônico HC –SR 04 e enviada para a variável dist  >>> long dist = ultra.timing().

Neste último trecho do programa a função medcm = ultra.convert(dist, Ultrasonic::CM) a informação lida no sensor é convertida em centímetros e enviada para a variável medcm. A mensagem “Distancia em cm”: é enviada para o monitor serial e ao lado aparecerá o valor de medcm Serial.println(medcm), esse valor como já comentado, é a distância convertida em centímetros.

Monitor Serial com a Mensagem Inicial e Distâncias do Objeto

Figura 4 – Monitor Serial com a Mensagem Inicial e Distâncias do Objeto

Agora iremos aplicar os conceitos de programação com o sensor ultrassônico HC-SR04 na seguinte experiência:

– Quando o sensor detectar um objeto entre 0.00 e 5.00 cm, acenderá o LED verde e aparecerá uma mensagem no monitor serial;

– Quando o sensor detectar um objeto entre 5.01 e 10.00 cm, acenderá o LED amarelo e aparecerá uma mensagem no monitor serial;

– Quando o sensor detectar um objeto entre 10.01 e 15.00 cm, acenderá o LED vermelho e aparecerá uma mensagem no monitor serial;

– Quando o sensor detectar um objeto cima de 15.01 cm, todos LEDs se apagarão.

 

Materiais Necessários para o Circuito

Circuito Fritzing

Figura 5 – Circuito Fritzing

Programação

Explicando o Programa

O trecho acima inclui a biblioteca do sensor ultrassônico #include <Ultrasonic.h> e ainda atribui variáveis aos pinos 2,3,10,11,12 do Arduino. Nesses pinos serão conectados os pinos do sensor HC-SR04 e dos 3 LEDs, em seguida a função Ultrasonic ultra(trig,echo) inicializa os pinos trig e echo criando o objeto destes.

Acima pode ser visto a configuração da taxa de comunicação serial (9600), e os pinos dos LEDs como saída.

Neste trecho se inicia o programa principal. A variável medcm é declarada float medcm, a informação do sensor é lida e enviada para a variável dist  long dist = ultra.timing() essa informação é convertida em centímetros e enviada para a variável medcm.

No comando if(medcm >= 0 && medcm <= 5.00) se a variável medcm for maior ou igual a zero e menor ou igual a 5 cm as funções abaixo serão executadas.

Em seguida é escrito no pino do LED verde nível lógico alto e nos demais pinos dos LEDs nível lógico baixo digitalWrite (ledverde,HIGH), digitalWrite (ledamarelo,LOW), digitalWrite (ledvermelho,LOW). Depois é enviado para o monitor serial a mensagem ‘’LED verde aceso” e abaixo o valor da informação de distância convertida.

No comando if(medcm >= 5.01 && medcm <= 10.00) se a variável medcm for maior ou igual a 5.01 e menor ou igual a 10.00 cm as funções abaixo serão executadas.

Em seguida é escrito no pino do LED amarelo nível lógico alto e nos demais pinos dos LEDs nível lógico baixo digitalWrite (ledverde,LOW), digitalWrite (ledamarelo,HIGH), digitalWrite (ledvermelho,LOW). Depois é enviado para o monitor serial a mensagem ‘’LED amarelo aceso” e abaixo o valor da informação de distância convertida.

No comando if(medcm >= 10.01 && medcm <= 15.00) se a variável medcm for maior ou igual a 10.01 e menor ou igual a 15.00 cm as funções abaixo serão executadas.

Em seguida é escrito no pino do LED vermelho nível lógico alto e nos demais pinos dos LEDs nível lógico baixo digitalWrite (ledverde,LOW), digitalWrite (ledamarelo,LOW), digitalWrite (ledvermelho,HIGH). Depois é enviado para o monitor serial a mensagem ‘’LED vermelho aceso” e abaixo o valor da informação de distância convertida.

No comando if(medcm >15.00) se a variável medcm for maior que  15.00 cm as funções abaixo são executadas. Em seguida é escrito em todos os LEDs nível lógico baixo digitalWrite (ledverde,LOW), digitalWrite (ledamarelo,LOW), digitalWrite (ledvermelho,LOW).

Monitor Serial com as Mensagens dos LEDS e as Distâncias dos Objetos

Figura 6 – Monitor Serial com as Mensagens dos LEDS e as Distâncias dos Objetos

 

Esperamos que tenham gostado deste tutorial. Para tirar dúvidas e sugestões, deixe um comentário abaixo.

Obrigado e confira outros produtos em nossa loja!

 

DEIXE UM COMENTÁRIO