fbpx
ArduinoNovidade

Como utilizar o sensor ultrassônico de distância JSN-SR04T /  AJ-SR04M com Arduino

Este tutorial tem como objetivo ensinar como utilizar o sensor ultrassônico de distância JSN-SR04T / AJ-SR04M com o Arduino para medir distâncias de objetos. O sensor emite ondas ultrassônicas, que, ao se refletirem em um objeto, retornam ao sensor, permitindo calcular a distância com base no tempo que a onda leva para percorrer o trajeto de ida e volta.

Através da programação no ambiente Arduino, você aprenderá a conectar o sensor, configurar os pinos de entrada e saída, medir o tempo de reflexão da onda e calcular a distância, exibindo o resultado em tempo real no monitor serial.

O sensor ultrassônico JSN-SR04T / AJ-SR04M permite medir a distância de objetos a até 4,5 metros. Ele pode ser visto na Figura 1.

Figura 1: Sensor ultrassônico de distância JSN-SR04T / AJ-SR04M
Figura 1: Sensor ultrassônico de distância JSN-SR04T / AJ-SR04M

A principal vantagem deste componente, comparado com outros que possuem a mesma função, é que seus cabos e sensor são a prova d’água, permitindo com que seja possível realizar a medição de distâncias em ambientes com a presença d’água.

O módulo calcula o tempo que essa onda levou para percorrer o trajeto de ida e volta. Esse tempo é então utilizado na fórmula para calcular a distância do objeto, que considera o tempo necessário para a onda percorrer o caminho até o objeto e voltar. A fórmula é:

Nesta fórmula, consideramos que a velocidade do som é aproximadamente igual a 340 metros por segundo. O número 2 no denominador representa a ida e volta da onda.

O sensor JSN-SR04T / AJ-SR04M possui um cabo de 2,5 metros e uma placa comparadora com 3 pinos:  5V, Trig, Echo e GND, conforme mostrado na Figura 2.

Figura 2: Pinos sensor JSN-SR04T / AJ-SR04M
Figura 2: Pinos sensor JSN-SR04T / AJ-SR04M

Cada pino possui a seguinte função:

  • 5V: Pino de alimentação do módulo, deve ser alimentado com uma tensão de 5 volts;
  • Gnd: Pino de aterramento do circuito(0V);
  • Trig: Responsável por acionar a emissão de ondas sonoras para o objeto;
  • Echo: Responsável por detectar a onda refletida e enviar o sinal para o microcontrolador;

MATERIAIS NECESSÁRIOS:

ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES:

Inicialmente, certifique-se de que a sua placa Arduino esteja desligada. Em seguida, monte o circuito da Figura 3 utilizando a protoboard, jumpers, Arduino e o Sensor ultrassônico JSN-SR04T / AJ-SR04M.

Figura 3: Circuito para medição de distâncias utilizando o Arduino e o sensor JSN-SR04T / AJ-SR04M
Figura 3: Circuito para medição de distâncias utilizando o Arduino e o sensor JSN-SR04T / AJ-SR04M

Para conectar o sensor ao Arduino, siga as seguintes instruções de conexão:

  • O pino 5V do sensor vai para o pino 5V do Arduino, fornecendo alimentação para o sensor.
  • O pino GND do sensor vai para o pino GND do Arduino, completando o circuito de aterramento.
  • O pino Trig do sensor deve ser conectado ao pino digital 11 do Arduino, que será responsável por acionar a emissão das ondas ultrassônicas.
  • O pino Echo do sensor vai para o pino digital 12 do Arduino, que receberá o sinal refletido para calcular a distância.

ELABORANDO O CÓDIGO:

Após a montagem do circuito, vamos para a programação do Sketch. Acompanhe os passos a seguir para compreender melhor a lógica de programação.

1- Definir as conexões dos pinos do sensor com o Arduino

Os pinos Echo e Trig do sensor serão conectados aos pinos digitais 11 e 12 do Arduino, respectivamente. O pino Trig é responsável por acionar a emissão das ondas ultrassônicas, enquanto o pino Echo recebe o sinal refletido, permitindo calcular o tempo necessário para a onda ir até o objeto e retornar.

2. Definir as variáveis que serão utilizadas no funcionamento do código

 A variável distancia será responsável por armazenar os valores de distâncias obtidos em centímetros pelo sensor. Também será declarada a variável tempo, que armazenará o tempo cronometrado entre a emissão e a recepção da onda.

3. Declarar o modo de funcionamento dos pinos do sensor no Arduino

Por meio da instrução pinMode(), definimos que o pino Echo funcionará como INPUT, ou seja, como uma entrada de informação para o Arduino, e o pino Trig funcionará como OUTPUT, ou seja, como uma saída de informação do Arduino.

4. Acionar a emissão de ondas sonoras

Para acionar o pino Trig e emitir as ondas ultrassônicas, utilizamos a instrução digitalWrite() com o pino Trig configurado para HIGH, permitindo que a emissão seja liberada.

5. Cronometrar o tempo de ida e volta da onda até o objeto

Para cronometrar o tempo entre a emissão e a recepção da onda, usamos a função pulseIn(), que mede o tempo em que o pino Echo fica em nível HIGH. Esse tempo corresponde ao tempo que a onda refletida demora para ser recebida pelo sensor. O valor resultante é então armazenado na variável tempo.

6. Realizar o cálculo da distância

Com o valor do tempo obtido, aplicamos a fórmula da distância. Multiplicamos o valor do tempo pela velocidade do som (aproximadamente 0.034 cm/μs) e dividimos por 2, já que o tempo é para o trajeto de ida e volta da onda. O resultado é armazenado na variável distancia.

7. Mostrar os valores de medição no monitor serial

Por fim, utilizamos o comando Serial.print() para enviar os dados do cálculo da distância para o monitor serial. Isso permite visualizar as medições feitas pelo sensor em tempo real no ambiente de desenvolvimento do Arduino.

Ao final, o Sketch deste projeto ficará da seguinte maneira:

#define Pinoecho 11 // Pino Echo do sensor ultrassônico será conectado à porta digital 11 do Arduino.
#define Pinotrig 12 // Pino Trig do sensor ultrassônico será conectado à porta digital 12 do Arduino.
int distancia; // Variável que armazenará os valores de distância medidos pelo sensor.
long tempo; // Variável que armazenará o intervalo de tempo da reflexão da onda no sensor.

void setup() {
  pinMode(Pinoecho, INPUT); // O pino Echo do sensor será configurado como entrada, recebendo o sinal refletido.
  pinMode(Pinotrig, OUTPUT); // O pino Trig do sensor será configurado como saída, acionando a emissão da onda.
  Serial.begin(9600); // Inicia a comunicação serial a 9600 bps (bits por segundo) para visualizar os resultados no monitor serial.
}

void loop() {
  digitalWrite(Pinotrig, LOW); // Define o pino Trig como LOW para garantir que ele comece com valor zero.
  delay(4); // Espera por 4 milissegundos antes de enviar o pulso.
  digitalWrite(Pinotrig, HIGH); // Define o pino Trig como HIGH para emitir a onda ultrassônica por 10 milissegundos.
  delay(10); // Espera 10 milissegundos para garantir que a onda seja emitida corretamente.
  digitalWrite(Pinotrig, LOW); // Define o pino Trig como LOW para finalizar a emissão da onda.

  tempo = pulseIn(Pinoecho, HIGH); // O pino Echo é ativado (HIGH) quando o sinal refletido é recebido. 'pulseIn' mede o tempo em que o pino Echo está HIGH e armazena esse tempo na variável 'tempo'.
  
  distancia = (tempo * 0.034) / 2; // Calcula a distância: 'tempo' é o tempo de ida e volta da onda. Multiplicamos o tempo pela velocidade do som (aproximadamente 0.034 cm/μs) e dividimos por 2, pois a onda percorre o caminho de ida e volta.

  Serial.print("Distância medida: "); 
  Serial.print(distancia); // Envia o valor da distância em centímetros para o monitor serial.
  Serial.println(" cm");

  delay(50); // Aguarda 50 milissegundos antes de realizar a próxima leitura.
}

Após enviar o código para a placa, abra o monitor serial apertando o atalho CTRL + SHIFT + M e acompanhe lá os valores detectados pelo sensor. Aponte o sensor para diferentes locais e veja a alteração da distância em tempo real.

Espero que tenha gostado deste tutorial. Em caso de dúvidas deixe seu comentário abaixo.

Atenciosamente, Kleber Bastos

Bacharel em Engenharia de Computação. Um dos criadores do Blog da Robótica. Faz parte da equipe Casa da Robótica desde 2017. Apaixonado por tecnologias e pelas “loucuras” que é possível criar usando microcontroladores e impressoras 3D. Ex-BBB, mas isso é uma longa história... que poderá ser contada posteriormente.

Kleber Bastos

Bacharel em Engenharia de Computação. Um dos criadores do Blog da Robótica. Faz parte da equipe Casa da Robótica desde 2017. Apaixonado por tecnologias e pelas “loucuras” que é possível criar usando microcontroladores e impressoras 3D. Ex-BBB, mas isso é uma longa história... que poderá ser contada posteriormente.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.