¿Qué es el Módulo Ultrasonido AJ-SR04M-2?
El AJ-SR04M-2 es un módulo de medición de distancia por ultrasonido de la serie JSN, diseñado para aplicaciones que requieren operación en ambientes húmedos o a la intemperie. Su transductor cilíndrico cuenta con sellado hermético IP67, conectado a la placa de control mediante un cable coaxial, lo que permite instalar la sonda directamente expuesta al exterior sin comprometer la electrónica.
A diferencia del HC-SR04 estándar, este módulo usa un único transductor para emitir y recibir, lo que explica su distancia mínima de 20 cm (zona ciega física mientras el cristal deja de vibrar). Su ventaja real está en los tres modos de operación seleccionables mediante una resistencia en el pad R19, que lo hacen compatible con proyectos que usan Trig/Echo clásico, PWM o comunicación serial UART.
Especificaciones Técnicas
| Especificación | Detalle |
|---|---|
| Modelo | AJ-SR04M-2 (serie JSN) |
| Voltaje de alimentación | 5V DC |
| Corriente de operación estática | < 5 mA |
| Rango de medición | 20 cm a 750 cm (7.5 metros) |
| Resolución | ~1 mm |
| Frecuencia de operación | 40 kHz |
| Ángulo de apertura (cono) | < 50° |
| IP de la sonda | IP67 (sonda impermeable; la placa NO es sumergible) |
| Modos de operación | UART / Trig-Echo / PWM (seleccionable por R19) |
| Dimensiones de la placa | 41 mm × 28.4 mm |
| Longitud del cable de sonda | ~2.5 m |
Modos de Operación
El pad R19 en la placa determina el modo de funcionamiento. Cada modo utiliza los mismos pines físicos TX/RX (o TRIG/ECHO según serigrafía), pero con protocolos distintos.
Comunicación serial a 9600 bps. Responde a comandos de 4 bytes y devuelve la distancia en milímetros con checksum de validación.
Compatible con HC-SR04 y librerías como NewPing. Requiere pulso de disparo de 10 µs en TRIG y mide la duración del pulso en ECHO.
El sensor emite pulsos continuos cuyo ancho representa la distancia. No necesita pin TRIG; solo se lee el pin ECHO con pulseIn().
Preguntas Frecuentes
¿Qué modo viene configurado de fábrica?
El módulo se entrega sin resistencia en el pad R19, lo que activa el modo UART por defecto. Esto significa que no responderá a pulsos Trig estándar hasta que se suelde la resistencia correspondiente. Si necesitas el modo Trig/Echo como un HC-SR04, debes agregar una resistencia de 47 kΩ en el pad R19.
¿Se puede sumergir el kit completo?
No. Solo la sonda cilíndrica negra y su cable son IP67. La placa electrónica azul debe alojarse en una caja estanca o gabinete protegido, alejada de humedad, lluvia y salpicaduras.
¿Es compatible con librerías de Arduino para HC-SR04?
Sí, pero solo en Modo Trig/Echo (R19 = 47 kΩ). En ese modo funciona exactamente igual que un HC-SR04 y es compatible con librerías como NewPing sin modificaciones. En modo UART o PWM se requiere código específico.
¿Por qué no mide distancias menores a 20 cm?
Al usar un único transductor tanto para emitir como para recibir, el cristal piezoeléctrico necesita un pequeño tiempo para dejar de vibrar antes de poder escuchar el eco. Esa zona ciega física equivale aproximadamente a los primeros 20 cm de distancia.
¿Cuál es la diferencia con el JSN-SR04T?
El JSN-SR04T solo opera en modo Trig/Echo y tiene un rango máximo de ~600 cm. El AJ-SR04M-2 es una evolución con tres modos de operación, mayor rango (hasta 750 cm) y protocolo UART con validación de checksum, lo que lo hace más robusto en entornos industriales con ruido eléctrico.
¿Para qué sirve el conector blanco tipo jack?
Es el conector de acoplamiento rápido para la sonda ultrasónica. Permite desconectar o reemplazar el transductor sin necesidad de desoldar cables, facilitando el mantenimiento o la instalación en espacios reducidos.
¿Qué pines debo conectar al microcontrolador?
La placa expone 4 pines principales: 5V (alimentación), GND (tierra), TX/TRIG y RX/ECHO. Los pines adicionales visibles en la serigrafía (RST, SWIM) son para reprogramación de fábrica y no se usan en proyectos con Arduino.
Recursos y Códigos de Ejemplo
Selecciona el código según el modo de operación que necesitas. Todos los ejemplos están escritos para Arduino UNO/Nano y muestran la distancia en el Monitor Serie a 9600 bps.
Modo UART — Sin resistencia en R19 Por defecto
Comunicación serial · Checksum · Arduino UNO/Nano
Comunicación serial · Checksum · Arduino UNO/Nano
Nota: Se usa
SoftwareSerial para no bloquear el monitor serie (pines 0/1 ocupados por USB en UNO).
// ═══════════════════════════════════════════════════ // AJ-SR04M-2 — Modo UART (sin resistencia en R19) // Plataforma : Arduino UNO / Nano // Velocidad : 9600 bps // ═══════════════════════════════════════════════════ #include <SoftwareSerial.h> // TX del sensor → pin 2 | RX del sensor → pin 3 SoftwareSerial sensorSerial(2, 3); // Comando de solicitud: [0xFF, 0x01, 0x02, checksum] const byte COMANDO[4] = {0xFF, 0x01, 0x02, 0xFC}; void setup() { Serial.begin(9600); sensorSerial.begin(9600); Serial.println("AJ-SR04M-2 — Modo UART listo"); } void loop() { // 1. Enviar comando de solicitud sensorSerial.write(COMANDO, 4); delay(100); if (sensorSerial.available() >= 4) { byte resp[4]; sensorSerial.readBytes(resp, 4); // Estructura respuesta: // resp[0] = 0xFF → Header // resp[1] = H → Byte alto distancia (mm) // resp[2] = L → Byte bajo distancia (mm) // resp[3] = SUM → Checksum if (resp[0] != 0xFF) { Serial.println("Error: header inválido"); while (sensorSerial.available()) sensorSerial.read(); return; } byte checksum = (resp[0] + resp[1] + resp[2]) & 0xFF; if (checksum != resp[3]) { Serial.println("Error: checksum no coincide"); return; } int distancia_mm = (resp[1] << 8) + resp[2]; if (distancia_mm < 280 || distancia_mm > 7500) { Serial.println("Fuera de rango"); return; } Serial.print("Distancia: "); Serial.print(distancia_mm / 10.0, 1); Serial.println(" cm"); } else { Serial.println("Sin respuesta del sensor"); while (sensorSerial.available()) sensorSerial.read(); } delay(200); }
Modo Trig / Echo — R19 = 47 kΩ Compatible HC-SR04
Pulso de disparo · pulseIn · Arduino UNO/Nano
Pulso de disparo · pulseIn · Arduino UNO/Nano
Requisito: Soldar resistencia de 47 kΩ en pad R19 antes de usar este modo.
// ═══════════════════════════════════════════════════ // AJ-SR04M-2 — Modo Trig/Echo (R19 = 47 kΩ) // Plataforma : Arduino UNO / Nano // Compatible con librerías HC-SR04 y NewPing // ═══════════════════════════════════════════════════ const int TRIG_PIN = 9; const int ECHO_PIN = 10; void setup() { Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); Serial.println("AJ-SR04M-2 — Modo Trig/Echo listo"); } void loop() { // 1. Pulso de disparo (mínimo 10 µs en HIGH) digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // 2. Medir duración del eco (timeout 30 ms) long duracion = pulseIn(ECHO_PIN, HIGH, 30000); if (duracion == 0) { Serial.println("Sin objeto detectado o fuera de rango"); delay(200); return; } // 3. Convertir a cm (v_sonido = 0.0343 cm/µs, ida y vuelta /2) float distancia_cm = duracion * 0.0343 / 2.0; Serial.print("Distancia: "); Serial.print(distancia_cm, 1); Serial.println(" cm"); delay(200); }
Modo PWM — R19 = 120 kΩ Sin pin TRIG
Pulso continuo · Solo pin ECHO · Arduino UNO/Nano
Pulso continuo · Solo pin ECHO · Arduino UNO/Nano
Requisito: Soldar resistencia de 120 kΩ en pad R19 antes de usar este modo.
// ═══════════════════════════════════════════════════ // AJ-SR04M-2 — Modo PWM (R19 = 120 kΩ) // Plataforma : Arduino UNO / Nano // El sensor emite pulsos continuos automáticamente. // No se necesita pin TRIG. // ═══════════════════════════════════════════════════ const int PWM_PIN = 10; // Solo pin ECHO/PWM void setup() { Serial.begin(9600); pinMode(PWM_PIN, INPUT); Serial.println("AJ-SR04M-2 — Modo PWM listo"); } void loop() { // El sensor emite pulsos automáticamente. // pulseIn() mide el ancho del pulso HIGH en µs. long duracion = pulseIn(PWM_PIN, HIGH, 30000); if (duracion == 0) { Serial.println("Sin objeto detectado o fuera de rango"); delay(200); return; } // Misma conversión que modo Trig/Echo float distancia_cm = duracion * 0.0343 / 2.0; Serial.print("Distancia: "); Serial.print(distancia_cm, 1); Serial.println(" cm"); delay(200); }




