El JSN-SR04T es un sensor ultrasónico de distancia impermeable y fácil de usar, con un rango de 25 a 450 cm. Si planeas construir un sistema para medir el nivel del agua o necesitas tomar otras mediciones de distancia en exteriores, ¡este es el sensor que necesitas!
En este artículo, he incluido un diagrama de conexiones y códigos de ejemplo para que puedas empezar a experimentar con tu sensor. Después de cada ejemplo, desgloso y explico cómo funciona el código, para que no tengas problemas en modificarlo según tus necesidades.
Primero, veremos un ejemplo que no utiliza una librería de Arduino. Luego, cubriré la fácil de usar NewPing librería que tiene algunas funciones integradas muy útiles. En el último ejemplo te mostraré cómo mostrar las distancias medidas en un display de 4 dígitos.
Pero empecemos con las piezas que necesitarás para construir este proyecto.
Piezas necesarias
A continuación encontrarás las piezas necesarias para este proyecto. Al buscar el JSN-SR04T, puede que te encuentres con la versión actualizada, el JSN-SR04T-2.0. Esta versión más nueva funciona exactamente igual pero está diseñada para 3-5 V en lugar de 5 V. Sin embargo, algunos usuarios han tenido problemas al usar los sensores a un voltaje más bajo. Usar un pulso de disparo más largo, de al menos 20 µs en lugar de 10 µs, parece ayudar si tienes lecturas erróneas.

Arduino Uno

Cable USB para Arduino UNO

Juego de cables Dupont

Protoboard

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.
Acerca del sensor JSN-SR04T
El sensor viene con un cable de 2.5 m que se conecta a una placa breakout que controla el sensor y procesa toda la señal. Ten en cuenta que solo el sensor y el cable son impermeables. ¡No sumerjas la placa breakout en agua!
Un sensor ultrasónico de distancia funciona enviando ondas ultrasónicas. Estas ondas se reflejan en un objeto y el sensor ultrasónico las detecta. Midiendo el tiempo que pasa entre el envío y la recepción de las ondas sonoras, puedes calcular la distancia entre el sensor y el objeto.

Pinout del JSN-SR04T
La placa breakout del JSN-SR04T tiene cuatro pines. 5Vy GNDpara la alimentación, Trigpara disparar el envío del impulso ultrasónico y la salida Echo, que devuelve un pulso cuya duración es proporcional a la distancia medida. La imagen a continuación muestra el pinout.

Funcionamiento del JSN-SR04T
Para operar el sensor, debes poner Trigen HIGH durante al menos 10 microsegundos. Esto hará que la placa envíe ocho impulsos ultrasónicos (ráfaga sonora).

Si se recibe un sonido reflejado (eco), la salida Echopasará a nivel HIGH y la distancia se puede calcular como
distancia = tiempo de nivel alto * 340 m/s / 2
donde 340 m/s es la velocidad del sonido. Usaremos esta fórmula más adelante en nuestro código, pero como vamos a medir la distancia en cm, la constante será 0.034 cm/µs.
Ten en cuenta que los sensores ultrasónicos no funcionan como láseres con un haz enfocado. En cambio, su directividad tiene forma de burbuja y también requiere una superficie suficientemente grande y dura/reflectante para obtener mediciones precisas.

En el caso del JSN-SR04T, el objetivo debe tener al menos 0.5 metros cuadrados y debes apuntar el sensor perpendicularmente al objetivo. La tabla a continuación muestra las especificaciones del sensor, pero ten en cuenta que el rango de medición y la resolución asumen condiciones ideales.
Especificaciones del JSN-SR04T
| Voltaje de operación | 5 V |
| Corriente de operación | 30 mA |
| Corriente en reposo | 5 mA |
| Frecuencia | 40 kHz |
| Rango de medición | 25-450 cm |
| Resolución | 2 mm |
| Ángulo de medición | 45-75 grados |
| Dimensiones del sensor | 23.5 x 20 mm, cable de 2.5 m de largo |
| Dimensiones de la PCB | 41 x 28.5 mm |
| Agujero para montaje | 18 mm |
Para más información puedes consultar la hoja de datos aquí.
JSN-SR04T vs HC-SR04
¿Cuáles son las diferencias entre este sensor y el HC-SR04? La principal diferencia, además de ser impermeable, es que este sensor usa un solo transductor ultrasónico en lugar de dos. Este transductor funciona como transmisor y receptor de las ondas ultrasónicas.

Para más información sobre cómo funcionan los sensores ultrasónicos, puedes consultar mi artículo sobre el HC-SR04. En ese artículo se explican con más detalle los principios de funcionamiento de un sensor ultrasónico de distancia.
Conexiones – JSN-SR04T a Arduino
El diagrama de conexiones/esquemático a continuación muestra cómo conectar el sensor JSN-SR04T al Arduino. La placa breakout del JSN-SR04T tiene el mismo pinout que el HC-SR04, por lo que puede usarse como reemplazo directo. El cable del sensor se conecta al conector en la parte trasera de la placa breakout.

Los ejemplos de código a continuación usan los pines digitales 12 y 11 para el trigger y echo, pero por supuesto puedes cambiarlo a cualquier pin digital que prefieras.
| 5 V | 5 V |
| Trig | Pin 12 |
| Echo | Pin 11 |
| GND | GND |
Código de ejemplo para el sensor JSN-SR04T con Arduino
Ahora que has conectado el sensor, es hora de conectar el Arduino al ordenador y subir algo de código. El sensor puede usarse sin una librería de Arduino. Más adelante te mostraré un ejemplo con la librería NewPing, que hace el código mucho más corto.
Sube el siguiente código de ejemplo a tu Arduino usando el IDE de Arduino. Este código también funciona para el JSN-SR04T-2.0. En las siguientes secciones, explicaré cómo funciona el código en detalle.
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);
}
Si ejecutas el código y apuntas el sensor a objetos a diferentes distancias, deberías ver distancias variables (en cm) en el Monitor Serial. ¡No olvides configurar la velocidad en baudios a 115200 para este ejemplo!

También puedes abrir el plotter serial y deberías ver una línea ondulada si mueves el sensor para medir distintas distancias.

Cómo funciona el código
Primero, se definen el pin de trigger y el pin de echo. Yo los llamo trigPin y echoPin. El pin trigger está conectado al pin digital 12 y el pin echo al pin digital 11 del Arduino. La instrucción const se usa para dar un nombre a un valor constante.
const int trigPin = 12; const int echoPin = 11;
En el setup(), comienzas inicializando la comunicación serial a una velocidad de 115200 baudios. Para mostrar la distancia medida en el monitor serial, presiona Ctrl+Shift+M o ve a Tools > Serial Monitor. Asegúrate de que la velocidad en baudios también esté configurada a 115200 en el monitor serial.
Luego, configuramos el trigPin como salida y el echoPin como entrada.
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
En el loop(), activas el sensor poniendo el trigPin en HIGH durante 20 µs. Ten en cuenta que para obtener una señal limpia, primero limpias el trigPin poniéndolo en LOW durante 5 microsegundos.
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Luego, necesitas leer el durationdel pulso enviado por el echoPin. Uso la función pulseIn() para esto. Esta función espera a que el pin pase de LOW a HIGH, comienza a medir el tiempo, luego espera a que el pin vuelva a LOW y detiene la medición.
Después, puedes calcular la distancia usando la fórmula mencionada en la introducción de este tutorial. Ten en cuenta que usamos una constante de 0.034 para la velocidad del sonido (en lugar de 340), ya que queremos la distancia en centímetros y no en metros.
long duration = pulseIn(echoPin, HIGH); long distance = duration * 0.034 / 2;
Finalmente, imprime la distancia calculada en el monitor serial y también muéstrala en el plotter. El retardo de 100 milisegundos al final ralentiza las mediciones a una velocidad razonable.
Serial.print("Distance:");
Serial.println(distance);
delay(100);
Código de ejemplo JSN-SR04T con Arduino y librería NewPing
La NewPing librería escrita por Tim Eckel puede usarse con muchos sensores ultrasónicos de distancia. La última versión de esta librería puede descargarse aquí en bitbucket.org. Notarás que el código a continuación, que usa la librería NewPing, es mucho más corto que el código que usamos antes.
Puedes instalar la librería yendo a Sketch > Include Library > Add .ZIP Library en el IDE de Arduino.
La librería incluye algunos ejemplos que puedes usar, pero tendrás que modificarlos para que coincidan con tu configuración de hardware. He incluido un código de ejemplo modificado a continuación que puede usarse con la misma conexión 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);
}
Ejemplo: JSN-SR04T con Arduino y display de 4 dígitos
Como último ejemplo, quiero mostrarte cómo mostrar las distancias medidas en un display de 7 segmentos y 4 dígitos. El display, listado en las piezas necesarias, tiene un TM1637 driver, lo que facilita mucho su conexión y control. Empecemos con el cableado de este display además del sensor.
Conexiones – JSN-SR04T a Arduino y display de 4 dígitos
Conectaremos el sensor JSN-SR04T igual que antes, pero usaremos la protoboard para distribuir la alimentación al sensor y al display.

El display recibe su alimentación (VSS, GND) desde la protoboard y tiene dos pines extra que debes conectar al Arduino. Conecta el pin CLK (Clock) al pin 3 del Arduino (cable blanco) y el pin DIO (Digital IO) al pin 4 del Arduino (cable gris). Y con eso completas el cableado.
Ahora, veamos el código.
Código – JSN-SR04T con Arduino y display de 4 dígitos
Mantenemos el código relacionado con el sensor JSN-SR04T tal cual. Como antes, usamos la librería NewPing, inicializada con los mismos pines, y leemos distancias mediante 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);
}
Lo nuevo es que creamos el objeto display TM1637Display. Se inicializa con las constantes clkPin y dioPin, que son los pines a los que conectamos el display.
En la función setup(), configuramos el brillo del display, siendo 0 el brillo más bajo y 7 el más alto. Este comando también enciende el display.
Finalmente, en la función loop(), simplemente mostramos la distancia medida llamando a display.showNumberDec(distance). Y eso es todo. Ahora tienes un medidor ultrasónico de distancia que muestra las distancias en centímetros en un display de 4 dígitos.

Conclusión
En este artículo, te he mostrado cómo funciona el sensor ultrasónico JSN-SR04T y cómo puedes usarlo con Arduino. Espero que te haya resultado útil e informativo.
Si quieres aprender más sobre otros sensores de distancia, los artículos a continuación pueden ser útiles:
- 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
Finalmente, si tienes alguna pregunta, sugerencia o crees que falta algo en este tutorial, por favor deja un comentario abajo.

