Monitor de Nivel de Sonido con Arduino: Sensor KY‑038, LEDs e LCD en Tiempo Real
Componentes y materiales
- Arduino UNO ×1
- Protoboard grande ×1
- Batería 9 V + conector barrel jack (opcional) ×1
- Cables jumper macho/macho y macho/hembra ×1
- LCD 16×2 I2C (mochila PCF8574) ×1
- Módulo sensor de sonido KY‑038 ×1
- LEDs 5 mm: Amarillo ×2, Verde ×4, Rojo ×2, Blanco ×4, Azul ×4
- Resistencias: 100 Ω (blanco/azul) ×8, 220 Ω (rojo/amarillo) ×4, 330 Ω (verde) ×4
Aplicaciones y servicios online
- Arduino IDE
Sobre el proyecto
Proyecto de curiosidad y ocio: monitoriza el nivel de sonido captado por un micrófono KY‑038 y lo muestra en una barra de 12 LEDs (amarillo = bajo, verde = medio, rojo = alto) más un LCD opcional con el valor numérico.
El proceso:
- Leer valores analógicos (A0) y digitales (DO, pin 2) del sensor.
- Recopilar datos en el Monitor Serie, exportar a hoja de cálculo y definir umbrales para cada color.
- Programar la activación progresiva de los LEDs según el nivel detectado.
- Solucionar artefactos en el LCD (dígitos residuales) añadiendo espacios en blanco tras cada impresión.
Código
SoundSensorLEDwData.ino (comentado en español)
#include <Arduino.h>
#include <LiquidCrystal_PCF8574.h>
#define LCD_ADDRESS 0x27
#define LCD_ROWS 2
#define LCD_COLUMNS 16
#define SCROLL_DELAY 150
#define BACKLIGHT 255
LiquidCrystal_PCF8574 LCDi2C;
// Pines de los 8 LEDs (PWM)
int LED1=3, LED2=4, LED3=5, LED4=6, LED5=7, LED6=8, LED7=9, LED8=10;
int soundSensor = 2; // Pin DO del KY-038
int sensorValue = A0; // Pin AO del KY-038
boolean LEDStatus = false;
void setup() {
Serial.begin(9600);
LCDi2C.begin(LCD_COLUMNS, LCD_ROWS, LCD_ADDRESS, BACKLIGHT);
pinMode(soundSensor, INPUT);
pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT); pinMode(LED8, OUTPUT);
}
void loop() {
int val = analogRead(sensorValue);
int digitalVal = digitalRead(soundSensor);
if (digitalVal == 1) {
if (!LEDStatus) {
LEDStatus = true;
Serial.println(val);
LCDi2C.setCursor(0,0);
LCDi2C.print("Nivel Sonido: "); // Espacios para borrar residuos
LCDi2C.setCursor(0,1);
LCDi2C.print(val);
LCDi2C.print(" ");
}
// Umbrales (ajustar según calibración)
if (val >= 750) digitalWrite(LED8, HIGH); else { LEDStatus=false; digitalWrite(LED8, LOW); }
if (val >= 735) digitalWrite(LED7, HIGH); else { LEDStatus=false; digitalWrite(LED7, LOW); }
if (val >= 725) digitalWrite(LED6, HIGH); else { LEDStatus=false; digitalWrite(LED6, LOW); }
if (val >= 720) digitalWrite(LED5, HIGH); else { LEDStatus=false; digitalWrite(LED5, LOW); }
if (val >= 715) digitalWrite(LED4, HIGH); else { LEDStatus=false; digitalWrite(LED4, LOW); }
if (val >= 700) digitalWrite(LED3, HIGH); else { LEDStatus=false; digitalWrite(LED3, LOW); }
if (val >= 675) digitalWrite(LED2, HIGH); else { LEDStatus=false; digitalWrite(LED2, LOW); }
if (val >= 650) digitalWrite(LED1, HIGH); else { LEDStatus=false; digitalWrite(LED1, LOW); }
} else {
LEDStatus = false;
for (int i=1; i<=8; i++) digitalWrite(i+2, LOW); // Apaga LED1-LED8 (pines 3-10)
}
}
Esquemas
Sigue las conexiones cable a cable en la imagen del esquema.
Proceso de manufactura
- Integración de datos de sensores en Raspberry Pi: Guía práctica
- Sensor de seguimiento de línea con Raspberry Pi – Detector simple KY‑033 para puerta/línea
- Construya una API robusta de temperatura y sensores en Raspberry Pi usando el módulo GY‑91
- Arch Systems y Flex se asocian para transformar datos de fabricación con analítica avanzada
- Würth Elektronik presenta WSEN‑ITDS: Acelerómetro MEMS 3‑ejes compacto, bajo consumo, para Industrial IoT
- BASELABS lanza Dynamic Grid: Fusión de sensores de datos brutos para modelado automotriz avanzado
- Pinza robótica con sensor táctil blando similar a la piel para manipulación de precisión
- Seguimiento preciso de RSSI WiFi para sensores de la ISS
- Desatando el Poder de los Datos Visuales en el Ecosistema IoT
- Seis principios clave para construir aplicaciones IoT impulsadas por sensores de alto impacto
- Materiales Revolucionarios Impulsan Comunicaciones de Datos LED de Próxima Generación