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.
¿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
- Placa de desarrollo: ESP32, ESP8266, Wemos d1 mini o equivalente. Yo en este tutorial voy a utilizar la ESP8266.
- Sensor KY-037.
- Cables de conexión. Estos cables te los puedes comprar o fabricar tú mismo siguiendo este tutorial.
- 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.
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
dB SoundEsp
: Muestra el nivel de sonido en decibelios (dB). Es una medida logarítmica que permite identificar el volumen del ruido ambiental.RAW SoundEsp
: Representa el nivel de volumen «crudo» en un rango del 0 al 100%, basado en la amplitud de la señal detectada.Volume SoundEsp
: Calcula un porcentaje de volumen procesado en función del nivel de decibelios.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. 😊