¿Qué es un Micrófono?
Un micrófono es un transductor que convierte las ondas sonoras en señales eléctricas. Podemos conectar un micrófono a un procesador como Arduino para detectar sonidos.
La salida producida por un micrófono es una señal eléctrica analógica que representa el sonido recibido. Sin embargo, en general, esta señal demasiado baja para ser medida y tiene que ser amplificada.
Existen placas como la KY-038 que incorporan un micrófono junto con un comparador LM393, que permite obtener la lectura tanto como un valor analógico como de forma digital.
El uso habitual de este tipo de sensores no amplificados es emplear la salida digital para detectar el sonido cuando este supera un cierto umbral, regulado a través de un potenciómetro ubicado en la placa.
La salida analógica permite obtener una estimación del volumen registrado. Sin embargo, como hemos comentado, este tipo de módulos con micrófono no resultan adecuados para medir el sonido de forma analógica ya que carecen de amplificación.
i solo queremos detectar el sonido, y no medirlo, este tipo de sensores son más apropiados ya que únicamente requieren la lectura de una señal digital, sin necesitar realizar más cálculos.
Este tipo de sensores pueden ser útiles, por ejemplo, para encender un dispositivo cuando se detecte sonido, encender una lámpara con una palmada, o incluso orientar un robot o una torre con servos mediante sonido.
Esquema de Montaje
El esquema eléctrico es sencillo. Alimentamos el módulo conectando GND y 5V a los pines correspondientes de Arduino.
Ahora si queremos usar la lectura digital, conectamos la salida DO a una de las entradas digitales de Arduino.
Deberemos calibrar el umbral de disparo de la salida digital con el potenciómetro instalado en el módulo para el nivel de sonido deseado.
Mientras que la conexión vista desde Arduino quedaría así,
Si quisiéramos emplear el valor analógico, simplemente conectaríamos la salida AO del sensor a una entrada analógica de Arduino. Aunque, como hemos dicho, en este caso sería mejor optar por un modelo amplificado.
Código de ejemplo
En el primer ejemplo de código, empleamos la señal digital del sensor para encender el LED integrado en Arduino si se detecta sonido, y apagarlo en caso contrario.
const int pinLED = 13;
const int pinMicrophone = 9;
void setup ()
{
pinMode (pinLED, OUTPUT);
pinMode (pinMicrophone, INPUT);
}
void loop ()
{
bool soundDetected = digitalRead(pinMicrophone);
if (soundDetected)
{
digitalWrite (pinLED, HIGH);
delay(1000);
}
else
{
digitalWrite (pinLED, LOW);
delay(10);
}
}
En el siguiente ejemplo almacenamos un estado (ON/OFF) y hacemos que varíe cada vez que se detecte un sonido. En el ejemplo empleamos el estado para encender o apagar el LED integrado, pero en un caso real realizaríamos las acciones oportunas como activar un relé.
const int pinLED = 13;
const int pinMicrophone = 9;
bool state;
void setup()
{
pinMode(pinLED, OUTPUT);
pinMode(pinMicrophone, INPUT_PULLUP);
}
void loop()
{
bool soundDetected = digitalRead(pinMicrophone);
if (soundDetected == true)
{
state = ! state;
digitalWrite(pinLED , state);
delay (1000);
}
delay(10);
}