Medición de Distancias con el Sensor Ultrasónico HC-SR04 y el ESP32

Medición de Distancias con Cuatro Sensores HC-SR04 y un ESP32

Introducción

El sensor ultrasónico HC-SR04 es una herramienta versátil y precisa para la medición de distancias utilizando ondas de sonido. En esta guía, exploraremos cómo conectar y programar cuatro sensores HC-SR04 simultáneamente con un ESP32 para medir distancias de manera efectiva. Esta configuración es útil en aplicaciones como robots autónomos y sistemas de seguridad donde se requiere monitoreo en múltiples direcciones.

Conexión del Hardware

El HC-SR04 tiene cuatro pines: VCC, Trig, Echo y GND. La conexión de cuatro sensores con el ESP32 se realiza de la siguiente manera:

  • VCC: Conectar a 5V del ESP32.
  • GND: Conectar a GND del ESP32.
  • Trig: Conectar a un pin GPIO del ESP32 para cada sensor (por ejemplo, GPIO 5, GPIO 18, GPIO 19, GPIO 21).
  • Echo: Conectar a un divisor de voltaje para reducir el 5V del Echo a 3.3V, y luego a un pin GPIO del ESP32 para cada sensor (por ejemplo, GPIO 4, GPIO 16, GPIO 17, GPIO 22).

Diagrama de Conexión

    Sensor 1: 
    HC-SR04      ESP32
    -------      -----
     VCC  ------  5V
     GND  ------  GND
     Trig ------ GPIO 5
     Echo ------ Divisor de voltaje ------ GPIO 4

    Sensor 2: 
    HC-SR04      ESP32
    -------      -----
     VCC  ------  5V
     GND  ------  GND
     Trig ------ GPIO 18
     Echo ------ Divisor de voltaje ------ GPIO 16

    Sensor 3: 
    HC-SR04      ESP32
    -------      -----
     VCC  ------  5V
     GND  ------  GND
     Trig ------ GPIO 19
     Echo ------ Divisor de voltaje ------ GPIO 17

    Sensor 4: 
    HC-SR04      ESP32
    -------      -----
     VCC  ------  5V
     GND  ------  GND
     Trig ------ GPIO 21
     Echo ------ Divisor de voltaje ------ GPIO 22
        

Código Fuente

const int trigPins[4] = {5, 18, 19, 21};
const int echoPins[4] = {4, 16, 17, 22};

void setup() {
  Serial.begin(115200);
  for (int i = 0; i < 4; i++) {
    pinMode(trigPins[i], OUTPUT);
    pinMode(echoPins[i], INPUT);
  }
}

void loop() {
  for (int i = 0; i < 4; i++) {
    long duration;
    float distance;

    digitalWrite(trigPins[i], LOW);
    delayMicroseconds(2);
    digitalWrite(trigPins[i], HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPins[i], LOW);

    duration = pulseIn(echoPins[i], HIGH);
    distance = duration * 0.034 / 2;

    Serial.print("Sensor ");
    Serial.print(i + 1);
    Serial.print(": ");
    Serial.print(distance);
    Serial.println(" cm");
  }
  delay(1000);
}
      

Publicado

en

Etiquetas:

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres avanzar con tu proyecto?