Skip to content

KY-037 ESPHome detector de sonidos

Si buscas integrar el sensor de sonido KY-037 con ESPHome utilizando una placa ESP8266, ¡has llegado al lugar correcto! En este artículo, te explicaremos paso a paso cómo configurar este sensor, qué mide cada parámetro y cómo puedes usarlo en tus proyectos de domótica. Además, incluiremos un código de ESP Home listo para usar que simplificará todo el proceso.

Índice de contenido

    ¿Qué es el sensor KY-037 y para qué sirve?

    El KY-037 es un sensor de sonido que puede detectar variaciones en el nivel de ruido ambiental. Está compuesto por un micrófono de condensador electret y un circuito amplificador que genera dos salidas:

    • Salida digital (D0): Se activa cuando el ruido supera un umbral definido por un potenciómetro.
    • Salida analógica (A0): Proporciona un valor continuo que representa el nivel de sonido detectado.

    Es ideal para proyectos que requieran monitoreo de ruido, como alarmas por sonidos altos o activación de dispositivos mediante aplausos.

    Qué necesitas para este proyecto

    1. Placa de desarrollo: ESP32, ESP8266, Wemos d1 mini o equivalente. Yo en este tutorial voy a utilizar la ESP8266.
    2. Sensor KY-037.
    3. Cables de conexión. Estos cables te los puedes comprar o fabricar tú mismo siguiendo este tutorial.
    4. ESPHome configurado en Home Assistant.

    Conexión del KY-037 con la ESP8266

    Conecta los pines del sensor KY-037 a la ESP8266 de la siguiente forma:

    • VCC: Al pin de 3.3V de la ESP8266.
    • GND: Al pin GND de la ESP8266.
    • A0 (salida analógica): Al pin A0 de la ESP8266.
    • DO (salida digital): al pin D1

    Nota:
    Este proyecto utiliza tanto la salida analógica como la digital:

    Salida digital (DO): Genera un pulso alto o bajo dependiendo de si el nivel de sonido supera un umbral configurado en el potenciómetro del KY-037. Es útil para aplicaciones más simples, como activar una acción cuando se detecta un ruido fuerte (por ejemplo, encender una luz o enviar una alerta).

    Salida analógica (A0): Proporciona un valor continuo que representa el nivel de sonido captado por el sensor. Es ideal para medir la intensidad del sonido de manera precisa o realizar análisis más detallados, como detectar niveles de ruido variables en el entorno.

    En este proyecto, la salida analógica se usa para medir el nivel de sonido con mayor precisión, mientras que la salida digital puede emplearse para detectar eventos específicos basados en el umbral ajustado. Esto permite un enfoque dual que combina precisión con respuestas rápidas a ruidos fuertes.

    Conexión del KY-037 con la ESP8266

    Código ESPHome para el Sensor KY-037

    El siguiente código te permitirá medir el nivel de sonido en decibelios (dB), un porcentaje de volumen y un valor crudo, además de ajustar la sensibilidad del sensor directamente desde Home Assistant.

    globals:
      - id: esphome_sensitivity
        type: float
        initial_value: '36.5'
        restore_value: yes
    
      - id: esphome_volume
        type: int
    
    sensor:
      - platform: adc
        pin: A0
        id: esphome_db
        device_class: signal_strength
        name: "dB SoundEsp"
        icon: "mdi:volume-vibrate"
        unit_of_measurement: "dB"
        update_interval: 2s
        raw: true
        filters:
          - lambda: |-
              unsigned int sample;
              unsigned long startMillis= millis(); 
              float peakToPeak = 0; 
              unsigned int signalMax = 0;
              unsigned int signalMin = 1024;
              while (millis() - startMillis < 500) {
                sample = analogRead(A0);
                if (sample < 1024){
                    if (sample > signalMax){
                        signalMax = sample;
                    }
                    else if (sample < signalMin){
                        signalMin = sample;
                    }
                  }
              }
              peakToPeak = map((signalMax - signalMin),1,1024,1.5,1024);
              id(esphome_volume) = peakToPeak;
              float state = id(esphome_sensitivity)*log10(peakToPeak)+15;  
              return(state);
      - platform: template
        name: "Volume SoundEsp"
        icon: "mdi:volume-high"
        unit_of_measurement: "%"
        update_interval: 2s
        lambda: return(map((id(esphome_db).state),15,150,0,100));
    
      - platform: template
        name: "RAW SoundEsp"
        icon: "mdi:volume-source"
        unit_of_measurement: "%"
        update_interval: 2s
        lambda: return(map(id(esphome_volume),1,1024,0,100));
    
    number:
      - platform: template
        id: sensitivity_slider
        name: "Sensitivity SoundEsp"
        icon: "mdi:knob"
        update_interval: 5s
        initial_value: "36.5"
        step: 0.1
        min_value: 20
        max_value: 40
        mode: slider
        set_action:
          then:
            - lambda:  id(esphome_sensitivity) = x;
    

    Qué mide cada sensor

    1. dB SoundEsp: Muestra el nivel de sonido en decibelios (dB). Es una medida logarítmica que permite identificar el volumen del ruido ambiental.
    2. RAW SoundEsp: Representa el nivel de volumen «crudo» en un rango del 0 al 100%, basado en la amplitud de la señal detectada.
    3. Volume SoundEsp: Calcula un porcentaje de volumen procesado en función del nivel de decibelios.
    4. Sensitivity SoundEsp: Control deslizante que permite ajustar la sensibilidad del sensor desde Home Assistant, ideal para adaptarse a diferentes niveles de ruido.

    Cómo integrar los sensores en Home Assistant

    Una vez que cargues el código en tu ESP8266, los sensores aparecerán automáticamente en Home Assistant. Puedes usarlos para:

    • Configurar notificaciones si el nivel de sonido supera un límite.
    • Automatizar acciones, como encender una luz al detectar aplausos.
    • Monitorear niveles de ruido en tiempo real.

    Conclusión

    El sensor KY-037, combinado con ESPHome y una placa ESP8266, es una excelente opción para medir el nivel de sonido en tus proyectos de domótica. Con el código proporcionado, puedes obtener valores precisos, ajustar la sensibilidad y aprovechar al máximo las capacidades de este sensor.

    Si tienes dudas o sugerencias, ¡déjalas en los comentarios! No olvides compartir este artículo si te resultó útil. 😊

    Sígueme a YouTube

    KY-037 ESPHome
    Ajustes