¿Quieres darle un toque sonoro a tu proyecto? En este proyecto, integraremos un sensor de sonido para crear proyectos interesantes. El sensor KY-038 que utilizamos emplea un micrófono de condensador para detectar ondas sonoras, lo que nos proporciona un equilibrio perfecto entre estabilidad y fiabilidad. En este circuito, conectaremos un sensor KY-038 a un ESP32 y construiremos un sencillo medidor de decibelios. Durante el proceso, te explicaremos cómo funciona un sensor de sonido, cómo usarlo y sus ventajas e inconvenientes. Con algunas modificaciones, este circuito también se puede convertir en un detector de contaminación acústica, una alarma antirrobo, etc.
El módulo sensor de sonido KY-038 es un sensor de detección de sonido muy utilizado con microcontroladores ESP32. Este sensor, que utiliza un micrófono de condensador, es muy estable y fiable para la construcción de medidores de decibelios, detectores de ruido e interruptores activados por sonido. Esta guía le enseñará tanto la programación del sensor de sonido ESP32 como los detalles de la distribución de pines del sensor de sonido KY-038, además de mostrarle un proyecto de medidor de decibelios funcional con un diagrama de cableado completo del sensor de sonido ESP32.
¿Qué es el módulo sensor de sonido KY-038?
El módulo de sensor de sonido KY-038 es un sensor de detección de sonido que detecta ondas sonoras de un micrófono de condensador de alta sensibilidad y convierte el sonido en señales eléctricas. Este módulo de sensor de sonido de micrófono tiene salidas analógicas y digitales, lo que lo convierte en una solución adaptable para una serie de aplicaciones de detección de sonido, incluidas alarmas antirrobo, monitoreo de contaminación acústica y sistemas activados por voz.
Especificaciones del sensor de sonido KY-038
|
Parámetro
|
Especificación
|
|
Voltaje de trabajo
|
3.3V-5V DC
|
|
Corriente
|
4-5mA
|
|
Rango de detección
|
100dB a 3-6khz
|
|
Tipo de microfono
|
Condensador
|
|
Salida
|
Analogica-Digital
|
|
IC comparador
|
LM393
|
|
Dimensiones
|
32mmX17mm
|
Configuración de pines del sensor de sonido KY-038
VCC->Este es el pin de alimentación del sensor de sonido, que se puede conectar a una fuente de alimentación de 3,3 V o 5 V. Sin embargo, tenga en cuenta que la salida analógica variará según la tensión de alimentación suministrada.
GND-->El pin de tierra del módulo del sensor de sonido, y debe conectarse al pin de tierra del Arduino.
DOUT-->es el pin de salida digital de la placa; una salida baja indica que el sensor no detecta ningún sonido, y una salida alta indica que el sensor ha detectado sonido.
AOUT-->es el pin de salida analógica de la placa que nos dará una lectura analógica directamente del sensor de sonido.
¿Cómo funciona el módulo sensor de sonido del micrófono KY-038?
El componente principal de un sensor de sonido es un micrófono. Existen muchos tipos de micrófonos, como los de carbón, fibra óptica, cinta y láser, pero el módulo sensor de sonido que estamos utilizando tiene un micrófono de condensador. A continuación se muestra una imagen del módulo sensor de sonido.
El módulo sensor de sonido del micrófono KY-038 consta de un micrófono de condensador electret, compuesto por dos placas metálicas cargadas.
* Diafragma (Placa frontal): Material muy delgado y flexible que se mueve y vibra al recibir una onda de presión sonora.
* Placa posterior (Placa fija): Electrodo rígido que permanece cargado.
* Condensador: Las dos placas juntas forman un condensador variable; al cambiar la distancia, cambia el voltaje.
* Acondicionamiento de señal: El amplificador operacional LM393 amplifica la señal de salida débil para la salida analógica y compara el nivel digital con un umbral preestablecido.
Como se puede apreciar en la imagen, un micrófono de condensador consta de dos placas metálicas cargadas. La primera placa se denomina diafragma, y la segunda, placa posterior. Estas dos placas forman un condensador. Cuando una onda sonora incide sobre el diafragma del micrófono, este comienza a vibrar, modificando la distancia entre las placas. El movimiento del diafragma y la variación en la distancia generan la señal eléctrica correspondiente al sonido captado por el micrófono, la cual es procesada por el amplificador operacional integrado. Este módulo también cuenta con dos LED integrados: uno se enciende al recibir alimentación y el otro cuando la señal de audio entrante supera el umbral establecido por el potenciómetro.
Anteriormente, utilizamos un sensor de sonido con Arduino para construir un detector de silbidos con Arduino, una fuente musical basada en Arduino y un medidor de nivel de ruido.
Módulo sensor de sonido – Componentes
Este módulo se puede usar para diversos proyectos, como la creación de interruptores o visualizadores LED sensibles al sonido. Por ello, es muy popular entre los principiantes, ya que consume poca energía, es económico, robusto y ofrece un amplio rango de detección que permite ajustar la sensibilidad.
Este sensor tiene tres pines: dos de alimentación (VCC y GND) y dos analógicos y digitales, como se muestra en el diagrama. Incorpora un LED de alimentación y un LED de señal. El LED de alimentación se enciende al conectar la placa a la corriente, y el LED de señal se enciende al activarse el circuito. Esta placa también incluye un amplificador operacional comparador que convierte la señal analógica entrante en digital. Además, cuenta con un potenciómetro para ajustar la sensibilidad. Por último, incorpora un micrófono de condensador para la detección de sonido. Todos estos componentes conforman el módulo sensor de sonido.
|
Componente
|
Descripción
|
|
Condensador Electret
|
Transductor de sonido de alta sensibilidad (marcado como MIC en la
placa de circuito impreso).
|
|
Comparador LM393
|
Circuito integrado de doble amplificador operacional utilizado para
amplificación analógica y detección de umbral digital.
|
|
Potenciómetro de sensibilidad
|
Resistencia variable de 10 kΩ para ajustar el umbral de disparo de la
salida digital.
|
|
LED de encendido (rojo)
|
Indica que el módulo está recibiendo energía.
|
|
LED de señal(verde)
|
Se ilumina cuando el sonido supera el umbral establecido (modo
digital).
|
|
Componentes de soporte
|
Resistencias y condensadores para filtrado de señales y estabilidad
de circuitos
|
Preguntas frecuentes sobre el módulo sensor de sonido.
⇥ ¿Qué tipos de sensores de sonido existen?
Existen diferentes tipos de micrófonos que se conocen como sensores de sonido, como los dinámicos, de condensador, de cinta, de carbón, etc.
⇥ ¿Cuáles son las ventajas de un sensor de sonido?
Los sensores de sonido se pueden usar en sistemas de seguridad; a menudo, funcionan con software de reconocimiento de voz que convierte el sonido o la voz en texto. Este método es más rápido que escribir con un teclado.
⇥ ¿Cuál es el alcance del sensor de sonido?
Este sensor es capaz de determinar niveles de ruido con una precisión de 100 dB o decibelios a frecuencias de 3 kHz y 6 kHz, aproximadamente.
⇥¿Puede Arduino detectar el sonido?
Aprenderás a usar el sensor de detección de sonido KY-038 con Arduino. Podrás medir los cambios en la intensidad del sonido en un entorno con el conversor analógico-digital (ADC) de Arduino.
⇥¿En qué se diferencian los módulos de sensor de sonido KY-038 y KY-037?
El módulo de sensor de sonido KY-037 es más grande, con la misma funcionalidad pero con una disposición de PCB/pads y una ubicación de componentes diferentes. El módulo KY-038 es más pequeño, utiliza el mismo comparador LM393 con un micrófono de condensador, pero su circuito está optimizado para rechazar mejor el ruido. Ambos módulos cuentan con salidas analógicas y digitales, que se pueden ajustar a un umbral regional mediante un potenciómetro integrado.
⇥¿Puedo usar el sensor de sonido KY-038 con Raspberry Pi y otros microcontroladores?
Sí, el micrófono KY-038 se conecta sin problemas a cualquier microcontrolador con interfaz ADC. Para Raspberry Pi, utilice la interfaz de salida digital (DOUT) con GPIO o conecte un ADC externo como el MCP3008 a la entrada analógica, ya que la RPi no tiene interfaz ADC. El KY-038 es compatible con Arduino, ESP8266, STM32, PIC y todo tipo de microcontroladores de 3.3V/5V.
⇥¿Qué necesito para calibrar rápidamente el sensor de sonido KY-038 para la lectura de decibelios?
Para una calibración rápida, necesitará un sonómetro de referencia. Genere niveles de sonido de [60 dB, 80 dB y 90 dB] y compare sus valores ADC correspondientes. Ajuste los parámetros de la función map() de su código a estos puntos de referencia. Esto indicará el nivel de sonido penetrante en relación con el umbral configurado en el potenciómetro integrado. El potenciómetro simplemente ajusta el umbral digital, pero la salida analógica utilizada para calibrar la lectura de decibelios no se beneficia de ello. Deberá tener en cuenta los filtros de ponderación A, así como la respuesta en frecuencia.
⇥¿Cuál es el rango máximo de detección del sensor de sonido KY-038?
El sensor de sonido KY-038 detecta hasta 100 dB en el rango de frecuencia de 3 a 6 kHz con la mejor sensibilidad. La distancia de detección varía según la intensidad de la fuente de sonido: los aplausos fuertes se detectan hasta 3-5 metros, mientras que las conversaciones cotidianas se detectan a 1-2 metros. La sensibilidad disminuye drásticamente por encima de 10 kHz y por debajo de 100 Hz debido a las características de respuesta en frecuencia de la cápsula del micrófono.
Diagrama de cableado del sensor de sonido ESP32
A continuación se muestra el diagrama esquemático del módulo sensor de sonido. El esquema es muy sencillo y requiere pocos componentes genéricos para su montaje. Si no dispone de un módulo prefabricado, pero desea probar su proyecto, este esquema le resultará útil. Para conectar el sensor de sonido ESP32, solo necesita tres cables básicos para la detección de sonido. El diagrama de conexión del sensor de sonido que se muestra a continuación ilustra la conexión del módulo KY-038 y el ESP32 para obtener lecturas analógicas con el convertidor analógico-digital (ADC) integrado.
|
Pines KY-038
|
Pines ESP32
|
Propósito
|
|
VCC
|
3.3V
|
Fuente de alimentación (utilice 3,3 V para obtener lecturas precisas
del conversor analógico-digital).
|
|
GND
|
GND
|
Tierra comun
|
|
AOUT
|
GPIO35
|
Entrada de señal analógica (ADC1_CH7)
|
|
DOUT
|
Any GPIO(Opcional)
|
Detección de umbral digital
|

En el diagrama, encontramos un amplificador operacional LM393, un amplificador operacional de bajo consumo, bajo costo y baja tensión de offset, que puede alimentarse con una fuente de 3,3 V o 5 V. Cabe destacar que la tensión de salida analógica del dispositivo dependerá de la tensión de alimentación. La función principal de este amplificador operacional es convertir la señal analógica de entrada de la sonda del sensor en una señal digital. También se incluye un potenciómetro de 10 kΩ que se utiliza para establecer una tensión de referencia para el amplificador operacional y para generar la tensión de referencia para la salida analógica del módulo.
Si la tensión de entrada del sensor cae por debajo del umbral establecido por el potenciómetro, la salida del amplificador operacional pasa a nivel bajo. Además, contamos con dos LED: uno de alimentación y otro de disparo. El LED de alimentación se enciende al conectar la placa a la corriente, y el LED de disparo se enciende al alcanzar un umbral determinado. Así es como funciona este circuito básico.
Diagrama de circuito para medidor de decibelios con sensor de sonido y ESP32
Ahora que entendemos bien cómo funciona el sensor de sonido, podemos conectar todos los cables necesarios al Arduino según el esquema que se muestra a continuación.
Para conectar el sensor de sonido al ESP32, solo se necesitan tres cables básicos para la detección de sonido. El diagrama de conexión del sensor de sonido que se muestra a continuación ilustra la conexión del módulo KY-038 y el ESP32 para obtener lecturas analógicas con el convertidor analógico-digital (ADC) integrado.

Conectar el sensor de sonido al microcontrolador es sencillo; solo necesitamos alimentar el módulo con 3,3 V y conectar el pin de salida analógica al ESP32. Ahora podemos procesar la señal con el conversor analógico-digital (ADC) del ESP32. También hemos conectado tres LED para mostrar la intensidad del dispositivo y el nivel de decibelios registrado en la pantalla OLED. Los LED están conectados a los pines GPIO del ESP32 y el módulo OLED a los pines I2C. Para obtener más información sobre la interfaz entre la pantalla OLED y el ESP32, haga clic aquí.
Guía de programación del sensor de sonido ESP32
La programación del sensor de sonido ESP32 incluye la lectura de valores analógicos del chip ADC (convertidor analógico-digital), la toma de muestras en intervalos de tiempo específicos y la conversión de las variaciones de voltaje pico a pico a la escala de decibelios. Este código se basa en técnicas profesionales para la monitorización del nivel de sonido.
Bibliotecas necesarias en Arduino
Antes de cargar el código, deberá instalar las bibliotecas correspondientes a través del Administrador de bibliotecas del IDE de Arduino (Sketch → Incluir biblioteca → Gestionar bibliotecas).
1.Wire.h: Biblioteca de comunicación I2C integrada.
2.Adafruit_GFX.h: Biblioteca gráfica principal para pantallas.
3.Adafruit_SSD1306.h: Controlador de pantalla para la pantalla OLED SSD1306.
Código completo de Arduino para medidor de decibelios ESP32
Este código optimizado lee los niveles de sonido del sensor de sonido KY-038, calcula los valores en decibelios y muestra los resultados en una pantalla OLED con indicadores LED para diferentes niveles de ruido.
El código para el medidor de decibelios basado en Arduino es muy simple y fácil de entender. En el código, simplemente mediremos el ruido de audio proveniente del micrófono, lo convertiremos en una señal digital mediante una muestra ADC y calcularemos el ruido en decibelios.
Comenzamos nuestro código incluyendo todas las bibliotecas necesarias: Wire.h, Adafruit_GFX.h y Adafruit_SSD1306.h. A continuación, definiremos el ancho y la altura de la pantalla.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
A continuación, hemos definido la instancia para la biblioteca Adafruit_SSD1306, que se muestra a continuación.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
A continuación, tenemos dos variables para almacenar los datos muestreados del ADC.
const int sampleWindow = 50;
unsigned int sample;
Hemos definido todos los pines de entrada y salida necesarios para los LED y el sensor de sonido.
#define SENSOR_PIN 35
#define PIN_QUIET 33
#define PIN_MODERATE 25
#define PIN_LOUD 26
A continuación, tenemos nuestra función setup(). En esta función, configuramos todos los pines necesarios como entrada y salida. También configuramos los pines LED en bajo e inicializamos el puerto serie. Finalmente, en la función setup, inicializamos la pantalla y la configuramos en bajo.
void setup(){
pinMode(SENSOR_PIN, INPUT);
pinMode(PIN_QUIET, OUTPUT);
pinMode(PIN_MODERATE, OUTPUT);
pinMode(PIN_LOUD, OUTPUT);
digitalWrite(PIN_QUIET, LOW);
digitalWrite(PIN_MODERATE, LOW);
digitalWrite(PIN_LOUD, LOW);
Serial.begin(115200);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.display();
digitalWrite(PIN_LOUD, LOW);
}
Luego, tenemos nuestra función de bucle; en esta función, leemos los datos del ADC y los muestreamos para almacenarlos en las variables min y max.
unsigned long startMillis = millis();
float peakToPeak = 0;
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
while (millis() - startMillis < sampleWindow) {
sample = analogRead(SENSOR_PIN);
if (sample < 1024) {
if (sample > signalMax) {
signalMax = sample;
}
else if (sample < signalMin) {
signalMin = sample;
}
}
}
Now, to figure out the peak-to-peak signal ratio, we subtract the minimum value from the maximum value and map this value to a 49dB to 90dB signal.
peakToPeak = signalMax - signalMin;
int db = map(peakToPeak, 0, 900, 49, 90);
Serial.print("\t");
Serial.println(db);
display.setCursor(0, 0);
display.print("Loudness: ");
display.print(db);
display.print("dB");
digitalWrite(PIN_LOUD, LOW);
Ahora, con la ayuda de sentencias condicionales, comprobamos los valores y, en función de estos, encendemos un LED para mostrar la intensidad del sonido y, finalmente, la imprimimos en la pantalla.
else if (db > 60 && db < 85) {
display.clearDisplay();
display.setCursor(0, 1);
display.print("Level:Moderate");
display.display();
digitalWrite(PIN_QUIET, LOW);
digitalWrite(PIN_MODERATE, HIGH);
digitalWrite(PIN_LOUD, LOW);
}
else if (db >= 85 && db <= 90) {
display.clearDisplay();
display.setCursor(0, 1);
display.print("Level:High");
display.display();
digitalWrite(PIN_QUIET, LOW);
digitalWrite(PIN_MODERATE, LOW);
digitalWrite(PIN_LOUD, HIGH);
}
else {
digitalWrite(PIN_QUIET, LOW);
digitalWrite(PIN_MODERATE, LOW);
digitalWrite(PIN_LOUD, LOW);
}
delay(200);
}
El módulo sensor de sonido KY-038, combinado con el ESP32, ofrece un punto de partida accesible para proyectos de electrónica de audio. Siguiendo este diagrama de cableado y guía de programación del sensor de sonido ESP32, ahora cuenta con los conocimientos necesarios para implementar detección de sonido de calidad profesional en sus proyectos.
Puntos Clave:
* E* El KY-038 utiliza tecnología de micrófono de condensador que capta con precisión niveles de sonido de hasta 100 dB.
* Tanto las salidas digitales como analógicas ofrecen una buena respuesta táctil, lo que resulta ideal para diversas aplicaciones.
* La resolución de 12 bits del ADC del ESP32 proporciona una medición precisa del nivel de decibelios.
* El muestreo pico a pico durante periodos de tiempo permite una lectura precisa del nivel de sonido.
* La muestra solo será precisa si se ha calibrado y se han tenido en cuenta las condiciones ambientales.
* El módulo consume poca energía, lo que supone una ventaja para aplicaciones alimentadas por batería.
Escritor de Letras
l KY-038 utiliza tecnología de micrófono de condensador que capta con precisión * El KY-038 utiliza tecnología de micrófono de condensador que capta con precisión niveles de sonido de hasta 100 dB.
* Tanto las salidas digitales como analógicas ofrecen una buena respuesta táctil, lo que resulta ideal para diversas aplicaciones.
* La resolución de 12 bits del ADC del ESP32 proporciona una medición precisa del nivel de decibelios.
* El muestreo pico a pico durante periodos de tiempo permite una lectura precisa del nivel de sonido.
* La muestra solo será precisa si se ha calibrado y se han tenido en cuenta las condiciones ambientales.
* El módulo consume poca energía, lo que supone una ventaja para aplicaciones IoT alimentadas por batería.niveles de sonido de hasta 100 dB.
* Tanto las salidas digitales como analógicas ofrecen una buena respuesta táctil, lo que resulta ideal para diversas aplicaciones.
* La resolución de 12 bits del ADC del ESP32 proporciona una medición precisa del nivel de decibelios.
* El muestreo pico a pico durante periodos de tiempo permite una lectura precisa del nivel de sonido.
* La muestra solo será precisa si se ha calibrado y se han tenido en cuenta las condiciones ambientales.
* El módulo consume poca energía, lo que supone una ventaja para aplicaciones IoT alimentadas por batería.
* El KY-038 utiliza tecnología de micrófono de condensador que capta con precisión niveles de sonido de hasta 100 dB.
* Tanto las salidas digitales como analógicas ofrecen una buena respuesta táctil, lo que resulta ideal para diversas aplicaciones.
* La resolución de 12 bits del ADC del ESP32 proporciona una medición precisa del nivel de decibelios.
* El muestreo pico a pico durante periodos de tiempo permite una lectura precisa del nivel de sonido.
* La muestra solo será precisa si se ha calibrado y se han tenido en cuenta las condiciones ambientales.
* El módulo consume poca energía, lo que supone una ventaja para aplicaciones IoT alimentadas por batería.
Comentarios
Publicar un comentario
Se agradece hacer comentarios exclusivamente sobre el tema leído. Cualquier otro será anulado.