O JSN-SR04T é um sensor de distância ultrassónico à prova de água, fácil de usar, com um alcance de 25 a 450 cm. Se está a planear construir um sistema de medição de nível de água ou se precisa de fazer outras medições de distância ao ar livre, então este é o sensor que precisa!
Neste artigo, incluí um diagrama de ligação e códigos de exemplo para que possa começar a experimentar com o seu sensor. Após cada exemplo, explico detalhadamente como o código funciona, para que não tenha problemas em modificá-lo conforme as suas necessidades.
Primeiro, vamos ver um exemplo que não usa uma biblioteca Arduino. De seguida, vou abordar a fácil de usar NewPing biblioteca que tem algumas funcionalidades integradas interessantes. No último exemplo, vou mostrar como exibir as distâncias medidas num Display de 4 Dígitos.
Mas vamos começar pelas peças que vai precisar para construir este projeto.
Peças necessárias
Abaixo encontra as peças necessárias para este projeto. Ao procurar o JSN-SR04T, pode encontrar a versão atualizada, o JSN-SR04T-2.0. Esta versão mais recente funciona exatamente da mesma forma, mas é classificada para 3-5 V em vez de 5 V. No entanto, alguns utilizadores encontraram problemas ao usar os sensores a uma voltagem mais baixa. Usar um pulso de trigger mais longo, de pelo menos 20 µs em vez de 10 µs, parece ajudar se estiver a ter leituras incorretas.

Arduino Uno

Cabo USB para Arduino UNO

Conjunto de fios Dupont

Breadboard

Sensor JSN-SR04T

Display de 4 Dígitos TM1637
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Sobre o Sensor JSN-SR04T
O sensor vem com um cabo de 2,5 m que se liga a uma placa breakout que controla o sensor e processa todo o sinal. Note que apenas o sensor e o cabo são à prova de água. Não mergulhe a placa breakout na água!
Um sensor de distância ultrassónico funciona emitindo ondas ultrassónicas. Estas ondas são refletidas por um objeto e o sensor ultrassónico deteta-as. Medindo o tempo entre o envio e a receção das ondas sonoras, pode calcular a distância entre o sensor e o objeto.

Pinout do JSN-SR04T
A placa breakout do JSN-SR04T tem quatro pinos.5V e GNDpara a alimentação, Trigpara disparar o envio do impulso ultrassónico e a saída Echo, que retorna um pulso proporcional ao comprimento da distância medida. A imagem abaixo mostra o pinout.

Função do JSN-SR04T
Para operar o sensor, deve definir Trig para HIGH durante pelo menos 10 microssegundos. Isto fará com que a placa envie oito impulsos ultrassónicos (rajada sonora).

Se um som refletido (eco) for recebido, a saída Echoficará em nível HIGH e a distância pode ser calculada como
distância = tempo em nível alto * 340 m/s / 2
onde 340 m/s é a velocidade do som. Usaremos esta fórmula mais tarde no código, mas como vamos medir a distância em cm, a constante será 0,034 cm/µs.
Note que sensores ultrassónicos não funcionam como lasers com um feixe focado. Em vez disso, a sua diretividade tem a forma de uma bolha e requer uma superfície suficientemente grande e dura/reflectora para medições precisas.

No caso do JSN-SR04T, o alvo deve ter pelo menos 0,5 metros quadrados e deve apontar o sensor perpendicularmente ao alvo. A tabela abaixo mostra as especificações do sensor, mas tenha em conta que o alcance e a resolução assumem condições ideais.
Especificações do JSN-SR04T
| Tensão de operação | 5 V |
| Corrente de operação | 30 mA |
| Corrente em repouso | 5 mA |
| Frequência | 40 kHz |
| Alcance de medição | 25-450 cm |
| Resolução | 2 mm |
| Ângulo de medição | 45-75 graus |
| Dimensões do sensor | 23,5 x 20 mm, cabo de 2,5 m |
| Dimensões da PCB | 41 x 28,5 mm |
| Orifício de montagem | 18 mm |
Para mais informações, pode consultar a folha de dados aqui.
JSN-SR04T vs HC-SR04
Quais as diferenças entre este sensor e o HC-SR04? A principal diferença, além de ser à prova de água, é que este sensor usa apenas um transdutor ultrassónico em vez de dois. Este transdutor serve tanto como transmissor como receptor das ondas ultrassónicas.

Para mais informações sobre como funcionam os sensores ultrassónicos, pode consultar o meu artigo sobre o HC-SR04. Neste artigo, os princípios de funcionamento de um sensor de distância ultrassónico são explicados em maior detalhe.
Ligação – JSN-SR04T ao Arduino
O diagrama de ligação/esquemático abaixo mostra como ligar o sensor JSN-SR04T ao Arduino. A placa breakout do JSN-SR04T tem o mesmo pinout exato que o HC-SR04, por isso pode ser usado como substituto direto. O cabo do sensor pode ser ligado ao conector na parte traseira da placa breakout.

Os exemplos de código abaixo usam os pinos digitais 12 e 11 para o trigger e echo, mas claro que pode alterar para qualquer pino digital que desejar.
| 5 V | 5 V |
| Trig | Pino 12 |
| Echo | Pino 11 |
| GND | GND |
Código de exemplo para sensor JSN-SR04T com Arduino
Agora que ligou o sensor, é hora de conectar o Arduino ao computador e carregar algum código. O sensor pode ser usado sem uma biblioteca Arduino. Mais tarde, mostrarei um exemplo com a biblioteca NewPing, que torna o código muito mais curto.
Carregue o seguinte código de exemplo no seu Arduino usando o Arduino IDE. Este código funciona também para o JSN-SR04T-2.0. Nas secções seguintes, explicarei detalhadamente como o código funciona.
const int trigPin = 12;
const int echoPin = 11;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
Serial.print("Distance:");
Serial.println(distance);
delay(100);
}
Se executar o código e apontar o sensor para objetos a diferentes distâncias, deverá ver distâncias variadas (em cm) aparecerem no Monitor Serial. Não se esqueça de definir a taxa de baud para 115200 neste exemplo!

Também pode abrir o plotter serial e deverá ver uma linha ondulada se mover o sensor para medir várias distâncias.

Como o código funciona
Primeiro, definem-se os pinos trigger e echo. Eu chamo-lhes trigPin e echoPin. O pino trigger está ligado ao pino digital 12 e o echo ao pino digital 11 do Arduino. A instrução const é usada para dar um nome a um valor constante.
const int trigPin = 12; const int echoPin = 11;
No setup(), começa-se por inicializar a comunicação serial a 115200 baud. Para mostrar a distância medida no monitor serial, pressione Ctrl+Shift+M ou vá a Tools > Serial Monitor. Certifique-se de que a taxa de baud está também definida para 115200 no monitor serial.
De seguida, definimos o trigPin como saída e o echoPin como entrada.
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
No loop(), ativa-se o sensor definindo o trigPin para HIGH durante 20 µs. Note que para obter um sinal limpo começa-se por limpar o trigPin, definindo-o para LOW durante 5 microssegundos.
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
De seguida, é necessário ler o durationdo pulso enviado pelo echoPin. Eu uso a função pulseIn() para isso. Esta função espera que o pino passe de LOW para HIGH, inicia a contagem, depois espera que o pino volte a LOW e para a contagem.
Depois, pode calcular a distância usando a fórmula mencionada na introdução deste tutorial. Note que usamos a constante 0,034 para a velocidade do som (em vez de 340), pois queremos a distância em centímetros e não em metros.
long duration = pulseIn(echoPin, HIGH); long distance = duration * 0.034 / 2;
Finalmente, imprime a distância calculada no monitor serial e também a mostra no plotter. O atraso de 100 milissegundos no final desacelera as medições para uma taxa razoável.
Serial.print("Distance:");
Serial.println(distance);
delay(100);
Código de exemplo JSN-SR04T com Arduino e biblioteca NewPing
A NewPing biblioteca escrita por Tim Eckel pode ser usada com muitos sensores de distância ultrassónicos. A versão mais recente desta biblioteca pode ser descarregada aqui em bitbucket.org. Pode notar que o código abaixo, que usa a biblioteca NewPing, é muito mais curto do que o código que usamos antes.
Pode instalar a biblioteca indo a Sketch > Include Library > Add .ZIP Library no Arduino IDE.
A biblioteca inclui alguns exemplos que pode usar, mas terá de os modificar para corresponder à sua configuração de hardware. Incluí um código de exemplo modificado abaixo que pode ser usado com a mesma ligação que antes.
#include "newping.h"
const int trigPin = 12;
const int echoPin = 11;
const int maxDist = 450;
NewPing sonar(trigPin, echoPin, maxDist);
void setup() {
Serial.begin(115200);
}
void loop() {
// Wait 50ms between pings (about 20 pings/sec)
delay(50);
long distance = sonar.ping_cm();
Serial.print("Distance:");
Serial.println(distance);
delay(100);
}
Exemplo: JSN-SR04T com Arduino e Display de 4 Dígitos
Como último exemplo, quero mostrar como exibir as distâncias medidas num Display de 7 Segmentos de 4 Dígitos. O display, listado nas peças necessárias, tem um driver TM1637, que torna muito fácil a ligação e controlo. Vamos começar pela ligação deste display além do sensor.
Ligação – JSN-SR04T ao Arduino e Display de 4 Dígitos
Vamos ligar o sensor JSN-SR04T como antes, mas usar a breadboard para distribuir a alimentação ao sensor e ao display.

O display recebe a alimentação (VSS, GND) da breadboard e tem dois pinos extra que deve ligar ao Arduino. Ligue o pino CLK (Clock) ao pino 3 do Arduino (fio branco) e o DIO (Digital IO) ao pino 4 do Arduino (fio cinzento). E assim fica completa a ligação.
Agora, vamos ver o código.
Código – JSN-SR04T com Arduino e Display de 4 Dígitos
Mantemos o código relacionado com o sensor JSN-SR04T como está. Como antes, usamos a biblioteca NewPing, inicializada com os mesmos pinos, e lemos as distâncias via sonar.ping_cm().
#include "NewPing.h"
#include "TM1637Display.h"
// Display
const int clkPin = 3;
const int dioPin = 4;
// Sonar
const int trigPin = 12;
const int echoPin = 11;
const int maxDist = 450;
NewPing sonar(trigPin, echoPin, maxDist);
TM1637Display display = TM1637Display(clkPin, dioPin);
void setup() {
Serial.begin(115200);
display.setBrightness(5);
}
void loop() {
long distance = sonar.ping_cm();
Serial.print("Distance:");
Serial.println(distance);
display.showNumberDec(distance);
delay(200);
}
O que é novo é que criamos o objeto do display TM1637Display. Ele é inicializado com as constantes clkPin e dioPin, que são os pinos a que ligámos o display.
Na função setup(), definimos o brilho do display, sendo 0 o brilho mais baixo e 7 o mais alto. Este comando também liga o display.
Finalmente, na função loop(), simplesmente mostramos a distância medida chamando display.showNumberDec(distance). E é tudo. Agora tem um medidor de distância ultrassónico que mostra distâncias em centímetros num display de 4 dígitos.

Conclusão
Neste artigo, mostrei como funciona o sensor de distância ultrassónico JSN-SR04T e como pode usá-lo com Arduino. Espero que tenha achado útil e informativo.
Se quiser aprender mais sobre outros sensores de distância, os artigos abaixo podem ser úteis:
- How to use a SHARP GP2Y0A21YK0F IR Distance Sensor with Arduino
- How to use a SHARP GP2Y0A710K0F IR Distance Sensor with Arduino
- How to use an HC-SR04 Ultrasonic Distance Sensor
- MaxBotix MB7389 weather-resistant distance sensor tutorial
- MaxBotix MB1240 ultrasonic distance sensor Arduino tutorial
Por fim, se tiver alguma dúvida, sugestão, ou se achar que falta algo neste tutorial, por favor deixe um comentário abaixo.

