Proyecto 33 - Microphone Sound Detection

10 de abril de 2016

En el siguiente tutorial veremos cómo funciona un detector de sonido para Arduino.

Como aplicación del módulo, vamos a hacer una lámpara led que se encienda automáticamente cuando detecte sonido, y se apague transcurrido un tiempo que programaremos a voluntad.

El módulo se alimenta a +5V y GND. Tiene dos salidas: una salida analógica A0, que es la señal en tiempo real que capta el micrófono y otra salida digital D0, que pasa a nivel alto cuando la señal del micrófono alcanza un umbral o threshold. 

La sensibilidad en la detección de sonido ambiente se puede ajustar mediante un potenciómetro.

Esquema

Aunque en el esquema aparecen conectadas las dos salidas del módulo, no es necesario conectar ambas salidas al Arduino para que el detector funcione. Depende de cómo se programe el sketch o del uso que vayamos a dar al detector, se puede conectar solamente la salida que vayamos a utilizar.

En la salida D6 he colocado un transistor, que será el encargado de encender los leds cuando el sensor detecte sonido.

Diseño de la tarjeta

Una imagen de la tarjeta terminada.

El detector con los leds encendidos

El código lo he modificado a partir del original que Hayato Nakamura dedica a los módulos detectores de sonido.

Como indicaba más arriba, se puede utilizar solo una de las salidas del sensor. 

En este caso he conectado la salida analógica A0 a la entrada A0 del Arduino. La primera vez que subáis el sketch al Arduino recomiendo desmarcar las barras de Modo depuración o Debug mode, así veremos en el monitor serie el volumen en tiempo real del sonido ambiente, y ajustando el potenciómetro en el módulo y el valor del umbral o threshold en el sketch, podemos hacer que las luces se enciendan al volumen deseado.

En las pruebas que he hecho con este detector he visto que se consigue una mayor precisión al utilizar la salida analógica para disparar en transistor que con la salida digital. Utilizar una u otra salida dependerá del uso o de los requerimientos del proyecto de cada uno.


Sketch

int led = 6;

int sensor = A0;

int threshold = 730; //Change This

int volume = 0;

 

void setup() {                

  //Serial.begin(9600); // Debug mode

  pinMode(led, OUTPUT);

  pinMode(sensor, INPUT);     

}

 

void loop() {

  

  volume = analogRead(sensor); // Reads the value from the Analog PIN A0

  

  /*

    //Debug mode

    Serial.println(volume);

    delay(100);

  */ 

  

  if(volume>=threshold){

    digitalWrite(led, HIGH); //Turn ON the Leds

    delay(60000); // The leds remains On for 1 minute, change this 

  }

  digitalWrite(led, LOW); 

  if(volume<threshold){

    digitalWrite(led, LOW); // Turn OFF the Leds

  }

 

}


Links

Summerfuel Robotics: Arduino Sound Sensor

Descarga el proyecto en un .zip aquí abajo.