5.12 Medición de Distancia

El módulo ultrasónico se utiliza para medir distancias o detectar objetos. En este proyecto, programaremos el módulo para obtener las distancias de los obstáculos. Enviando pulsos ultrasónicos y midiendo el tiempo que tardan en rebotar, podemos calcular distancias. Esto nos permite implementar acciones basadas en la distancia o comportamientos de evasión de obstáculos.

Componentes Necesarios

Para este proyecto necesitamos los siguientes componentes.

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit de Inicio ESP32

320+

ESP32 Starter Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

ESP32 WROOM 32E

BUY

Extensión de Cámara ESP32

-

Cables Puente

BUY

Módulo Ultrasonido

BUY

Pines Disponibles

  • Pines Disponibles

    Aquí hay una lista de pines disponibles en la placa ESP32 para este proyecto.

    Para Entrada

    IO13, IO14, IO27, IO26, IO25, IO33, IO32, I35, I34, I39, I36, IO4, IO18, IO19, IO21, IO22, IO23

    Para Salida

    IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

Esquemático

../../_images/circuit_5.12_ultrasonic.png

El ESP32 envía un conjunto de señales de onda cuadrada al pin Trig del sensor ultrasónico cada 10 segundos. Esto induce al sensor ultrasónico a emitir una señal de ultrasonido de 40kHz hacia el exterior. Si hay un obstáculo enfrente, las ondas de ultrasonido serán reflejadas de vuelta.

Registrando el tiempo que tarda desde el envío hasta la recepción de la señal, dividiéndolo por 2 y multiplicándolo por la velocidad de la luz, puedes determinar la distancia al obstáculo.

Conexión

../../_images/5.12_ultrasonic_bb.png

Código

Nota

  • Abre el archivo 5.12_ultrasonic.ino en la ruta esp32-starter-kit-main\c\codes\5.12_ultrasonic.

  • Después de seleccionar la placa (ESP32 Dev Module) y el puerto apropiado, haz clic en el botón Subir.

  • ¿Siempre aparece «COMxx desconocido»?

Después de que el código se haya subido exitosamente, el monitor serie imprimirá la distancia entre el sensor ultrasónico y el obstáculo adelante.

¿Cómo funciona?

Acerca de la aplicación del sensor ultrasónico, podemos verificar directamente la subfunción.

float readSensorData(){// ...}
  • El trigPin del módulo ultrasónico transmite una señal de onda cuadrada de 10us cada 2us.

    // Trigger a low signal before sending a high signal
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    // Send a 10-microsecond high signal to the trigPin
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    // Return to low signal
    digitalWrite(trigPin, LOW);
    
  • El echoPin recibe una señal de nivel alto si hay un obstáculo dentro del rango y usa la función pulseIn() para registrar el tiempo desde el envío hasta la recepción.

    unsigned long microsecond = pulseIn(echoPin, HIGH);
    
  • La velocidad del sonido es 340 metros por segundo, lo que equivale a 29 microsegundos por centímetro. Midiendo el tiempo que tarda una onda cuadrada en viajar hacia un obstáculo y regresar, podemos calcular la distancia recorrida dividiendo el tiempo total por 2. Esto nos da la distancia del obstáculo desde la fuente de la onda sonora.

    float distance = microsecond / 29.00 / 2;
    

Toma en cuenta que el sensor ultrasónico pausará el programa cuando esté trabajando, lo cual puede causar cierto retraso al escribir proyectos complejos.