Como medir distância com o sensor ultrassônico HC-SR04 e Arduino
O sensor ultrassônico é um dispositivo que utiliza alta frequência do som para realizar a detecção de objetos e sua distância. O princípio de funcionamento deste sensor se baseia na emissão de uma onda sonora de alta frequência que ao ser refletida em um objeto resulta em um eco, que é convertido em sinais elétricos. A detecção desse eco depende da intensidade e da distância entre o objeto e o sensor.
Um modelo de sensor ultrassônico muito utilizado em projetos com Arduino é o HC-SR04, sendo aplicado principalmente para detecção de objetos e para especificar a distância do sensor até um determinado obstáculo para evitar colisões. A Figura 1 ilustra o sensor ultrassônico HC-SR04.
O princípio de funcionamento do sensor HC-SR04 é o mesmo dos demais ultrassônicos, consistindo na emissão de sinais ultrassônicos pelo sensor e na leitura do sinal de retorno ou eco desse mesmo sinal. A distância entre o sensor e um objeto detectado é calculada com base no tempo entre o envio e leitura de retorno do sinal.
O HC-SR04 é capaz de medir distâncias de 2 centímetros a 4 metros, com precisão de 3 mm e amplitude de 15º. Devido a estas características, este sensor é comumente utilizado em robôs que desvia de obstáculos, medição de distância, detecção e/ou verificação de presença, posicionamento de sistemas robóticos, entre outros.
O HC-SR04 possui quatro pinos, sendo eles:
- VCC: pino de alimentação que deve ser conectado ao 5V;
- Trig: gatilho de disparo do pulso;
- Echo: pino de leitura do tempo de resposta;
- GND: pino terra.
Neste projeto usaremos o ultrassônico HC-SR04 em conjunto com o Arduino para medir a distância entre o sensor e um objeto.
MATERIAIS NECESSÁRIOS
- 1 x Placa Uno SMD R3 Atmega328 Compatível com Arduino;
- 1 x Cabo USB;
- 1 x Sensor ultrassônico HC-SR04;
- 1 x Protoboard;
- Fios de jumper macho-macho.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Conecte o sensor ultrassônico na protoboard e na placa Arduino conforme a Figura 2.
Ao montar seu circuito na protoboard preste atenção nos seguintes pontos:
- Você pode utilizar fios de cores diferentes ou furos diferentes na protoboard, mas deve assegurar que os componentes e fios estejam conectados na mesma ordem da Figura 2;
- A tensão de operação do sensor ultrassônico é de 5 V. Por isso, conecte o pino VCC ao 5V do Arduino;
- O terminal Echo do ultrassônico deve ser conectado à porta digital 5;
- Conecte o pino Trig do sensor à porta digital 4;
- Por fim, o terminal GND deve ser conectado ao pino terra (GND).
ELABORANDO O CÓDIGO
O principal intuito deste projeto é a utilização do sensor ultrassônico HC-SR04 para medir a distância entre o sensor e algum objeto. Para tal, vamos utilizar a biblioteca Ultrasonic.h.
Desta forma, vamos proceder a instalação da biblioteca específica para utilização do ultrassônico. Esta biblioteca encontra-se disponível para download no seguinte link:
www.blogdarobotica.com/ultrasonic
Após realizar o download da biblioteca, vamos instalá-la por meio do seguinte caminho: Toolbar > Sketch > Incluir biblioteca > Adicionar biblioteca ZIP.
Com a biblioteca instalada, feche o Arduino IDE e abra-o novamente. Logo após, vamos a programação do nosso Sketch:
O primeiro passo é a inclusão da biblioteca do sensor ultrassônico no editor de texto por meio da instrução #include <Ultrasonic.h>.
Em seguida, criamos o objeto ultrassom, do tipo Ultrassonic, e definimos os pinos do Arduino que estão conectados ao TRIG (pino digital 5) e ECHO (pino digital 4).
Logo após, criamos a variável distancia do tipo long. As variáveis do tipo long possuem tamanho estendido para armazenamento de números, armazenam 32 bits (4 bytes).
Na função setup, iniciamos a comunicação serial com velocidade de 9600.
Para ler a distância vamos utilizar a função Ranging(CM), que retornará o valor da distância em cm. Essa função retornará um valor de variável long, que armazenaremos na variável distancia.
Em seguida, imprimimos no monitor serial o texto “Distância = : ”, o valor da distância medida e armazenada na variável distancia e o texto “cm”.
Assim sendo, o Sketch deste projeto terá a seguinte estrutura:
#include <Ultrasonic.h> //Inclui a biblioteca do ultrassônico Ultrasonic ultrassom(5, 4); //Cria o objeto ultrassom, do tipo Ultrassonic, e define os pinos onde está ligado o TRIG(pino 5) e o ECHO(pino 4) respectivamente long distancia; //cria a variável distancia do tipo long void setup() { Serial.begin(9600); //Inicializa a comunicação serial, com velocidade de comunicação de 9600 } void loop(){ distancia = ultrassom.Ranging(CM);//ultrassom.Ranging(CM) retorna a distancia em centímetros(CM) Serial.print("Distância = ");//Imprime na serial o texto "Distância = " Serial.print(distancia); //Imprime na serial o valor da variável distancia Serial.println("cm"); //Imprime na serial o texto "cm" delay(1000); //Intervalo de 1 segundo }
Espero ter ajudado,
Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!
Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.