
Chisme 114 del lince: sensor ultrasónico, el sonar de Justicia Ciega
Noche cerrada en Sierra Bermeja. Justicia Ciega llega a Lynx Enterprises con el bastón en una mano y un arañazo en la otra.
—El sendero está lleno de ramas bajas —explica—. Mi bastón me avisa de lo que hay en el suelo, pero no de lo que hay a la altura de la cara.
Víctor Vílchez, con la capa del Lince de la Noche a medio poner, ya está dibujando en la pizarra un radar del tamaño de una antena parabólica.
—Víctor —dice la Gata Montesa sin levantar la vista—. Mira en la caja del kit.
Dentro, entre cables y módulos, hay un pequeño sensor con dos «ojos» redondos. Justicia Ciega lo coge y sonríe.
—Un murciélago no necesita ver. Grita, escucha el eco y sabe dónde está todo. Hagamos lo mismo, pero con una placa.
Así nace el Chisme 114: un sonar con sensor ultrasónico, un zumbador y un LED, que pita más deprisa cuanto más cerca está un objeto.
Introducción
En el Chisme 113 aprendimos a encender un LED en un pin. Ahora vamos a leer el mundo con un sensor ultrasónico y a responder con sonido y luz.
Antes de montarlo, practica en el simulador: no puedes avanzar sin completar cada paso, y al final escucharás el sonar con una mano virtual. Simulador del Chisme 114.
Es un prototipo educativo, no un dispositivo de ayuda certificado.
Qué necesitamos
- La placa ESP32 Plus de Acebott con ACECode (Chismes 112 y 113).
- El sensor ultrasónico HC-SR04 del kit de sensores para micro:bit, con cuatro patas: VCC, Trig, Echo y GND.
- El módulo zumbador pasivo.
- Un módulo LED.
- Cables Dupont macho-hembra para unir el sensor con la placa.
Cómo funciona un sensor ultrasónico
El sensor ultrasónico emite un chasquido de sonido que no podemos oír. Ese sonido rebota en el primer objeto que encuentra y vuelve. El sensor mide cuánto tarda en volver.
El sonido viaja a unos 343 m/s, es decir, 0,0343 cm por microsegundo (µs). Como el eco hace ida y vuelta, hay que dividir entre 2:
distancia = velocidad × tiempo ÷ 2
Por ejemplo: un eco que tarda 1166 µs recorre 40 cm entre ida y vuelta. El objeto está a 20 cm.
Los murciélagos usan el mismo principio, la ecolocalización, para volar de noche sin chocar con nada.
Cómo se conecta
- VCC del sensor a V.
- GND a G.
- Trig a la S del pin 18: la placa manda el aviso «¡chasquea!».
- Echo a la S del pin 19: el sensor devuelve el tiempo del eco.
- El zumbador al pin 25 y el LED al pin 5, como en el Chisme 113.
Importante: el interruptor de la placa debe estar en 3,3 V. Con 5 V, la pata Echo devolvería 5 V a un pin que solo aguanta 3,3 V y podrías estropear la placa. En nuestras pruebas, el sensor midió bien a 3,3 V.
El programa con bloques
Necesitas una variable llamada distancia (en Variables). Este es el programa:
Inicio del programa
└─ por siempre
├─ poner [distancia] a (Sensor ultrasónico (cm) Pin Trig 18 Pin Echo 19)
├─ si <(distancia > 0) y (distancia < 50)> entonces
│ configurar pin digital 5 a alto
│ zumbador 25 frecuencia 1000 duración 100 ms
│ configurar pin digital 5 a bajo
│ esperar (distancia / 100) segundos
│ si no
│ zumbador 25 detener
└─ esperar 0,05 segundos
El sensor devuelve 0 cuando no recibe eco, es decir, cuando no hay nada delante. Por eso la condición lleva distancia > 0: sin ella, un 0 parecería «algo pegado al sensor» y el zumbador sonaría sin parar.
La espera entre pitidos es distancia / 100 segundos: a 45 cm, medio segundo; a 10 cm, una décima. Cuanto más cerca, más deprisa pita.
El código
Si prefieres el Arduino IDE (placa ESP32 Dev Module), este sketch hace lo mismo. El zumbador pasivo necesita una onda, así que generamos un tono de 1000 Hz «a mano» conmutando el pin:
// Chisme 114 · sonar de Justicia Ciega · ESP32 Plus
// Trig = 18, Echo = 19, LED = 5, zumbador pasivo = 25
const int TRIG = 18;
const int ECHO = 19;
const int LED = 5;
const int ZUMBADOR = 25;
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(LED, OUTPUT);
pinMode(ZUMBADOR, OUTPUT);
}
// Mide la distancia en cm (0 = no ha vuelto ningún eco)
float medir() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long us = pulseIn(ECHO, HIGH, 30000); // tiempo de ida y vuelta (µs)
return us * 0.0343 / 2; // distancia = velocidad x tiempo / 2
}
// Pitido de 1000 Hz durante 100 ms (onda cuadrada a mano)
void pitido() {
for (int i = 0; i < 100; i++) {
digitalWrite(ZUMBADOR, HIGH); delayMicroseconds(500);
digitalWrite(ZUMBADOR, LOW); delayMicroseconds(500);
}
}
void loop() {
float d = medir();
if (d > 0 && d < 50) { // hay algo a menos de 50 cm
digitalWrite(LED, HIGH);
pitido();
digitalWrite(LED, LOW);
delay(d * 10); // d/100 segundos = d*10 milisegundos
}
delay(50);
}
Cómo probarlo
Primero practica en el simulador. Después, con la placa real: pon la mano a 10, 20 y 50 cm del sensor y comprueba que el zumbador pita cada vez más deprisa al acercarte.
Para medir de verdad, coloca una regla junto al sensor y compara. Apunta lo que marca el puerto serie y lo que marca la regla.
Qué estamos midiendo realmente
El sensor no mide la distancia: mide un tiempo. La distancia la calculamos nosotros con la velocidad del sonido. Y ese valor cambia un poco con la temperatura del aire, porque el sonido va más deprisa cuando hace calor.
Tampoco es un instrumento de precisión. Un objeto blando (un jersey), un objeto inclinado o una superficie muy pequeña devuelven un eco débil o desviado, y el sensor puede no verlo o medir mal.
Medir no significa medir bien: por eso comparamos con una regla.
Para el aula
- Mide con el sensor la distancia a una pared a 10, 20, 30, 40 y 50 cm. Anota también lo que marca una regla y calcula el error de cada medida.
- ¿Qué ocurre si el objeto es un jersey de lana? ¿Y una caja de cartón? Escribe tu hipótesis antes de probar.
- ¿Y si inclinas la caja? ¿Hasta qué ángulo sigue viéndola el sensor?
- El eco tarda 2330 µs. ¿A qué distancia está el objeto?
- ¿Por qué la condición lleva «distancia > 0»? ¿Qué pasaría sin ella?
Retos
- Reto 1. Haz que el sensor muestre la distancia en el puerto serie.
- Reto 2. Cambia el alcance del sonar de 50 cm a 100 cm.
- Reto 3. Cambia la frecuencia del pitido y compara cómo suena.
- Reto 4. Haz que dentro de 15 cm el zumbador suene sin parar (alarma de peligro).
- Reto 5. Guarda las distancias en una lista y calcula la media de diez medidas.
Qué hemos aprendido
Un sensor ultrasónico mide un tiempo y con él calculamos una distancia. Con una condición y una espera que depende de esa distancia, la placa convierte lo que «oye» en sonido y luz.
—Ya puedo oír las ramas —dice Justicia Ciega con una sonrisa.
—Y yo ya puedo guardar el radar gigante —suspira el Lince.
Para seguir investigando
- El Chisme 113: enciende un LED en el pin 5, la base de este sonar.
- Otro detector de obstáculos, esta vez con una cámara: El detector de obstáculos del Lince.
- Más sobre cómo usan el eco los animales: ecolocalización en Wikipedia.

Etiqueta:acebott, acecode, AIDARAC, esp32, hc-sr04, ies monterroso, montesteam, sensor ultrasónico, sonar, Zumbador


