0.00(0 items )

No products in the cart.

Detección de sonido con Arduino by Opiron

Eres de los que se ponen los auriculares frente al ordenador y se olvida del resto del mundo? ¿Cuántas veces has dejado de escuchar el timbre de la puerta de tu casa? ¿Cuántas te has llevado un enfado de tu madre cuando te gritaba para cenar y no escuchabas? Si todo esto te suena familiar, este tutorial te interesa. En este tutorial vamos a crear una alarma de detección de sonido con Arduino.

Hardware necesario

Los componentes que vamos a necesitar para este tutorial son:

Software necesario

El software que necesitaremos es:

  • IDE de Arduino. Descargable en el enlace.
  • ¿Quieres documentar el proyecto? Puedes usar Fritzing. Descargable en el enlace.
  • Processing: Para la segunda parte del tutorial. Descargable en el enlace.

Tutorial: Parte 1, detección de sonidos

En este tutorial vamos a hacer algo divertido: Detectar el sonido. Para ello, vamos a utilizar un micrófono Electret, el elemento estrella de este tutorial. Los micrófonos Electret consisten básicamente en un transductor que convierte las ondas sonoras en electricidad. El problema que tienen es que la señal de salida suele ser muy baja (del orden de mV), por lo que conviene procesar la señal con  algún amplificador, lo que complica un poco los circuitos. Sin embargo, la buena noticia es que el micrófono Electret de nuestra tienda tiene integrado el circuito, por lo que no necesitaremos todos estos componentes.

Antes de empezar, una buena idea es echarle un vistazo a los datasheet tanto del micrófono electret como del MAX4469:

El montaje a realizar es el siguiente:

Micrófono Electret, electret, tutorial opiron, Alarma de detección de sonido con Arduino

El código a copiar en el IDE de Arduino es el siguiente:

// www.opiron.com
// by A.Girod, basado en el código escrito por Ladyada 
// Tutorial de sensado de sonido con Micrófono Electret
// más info en:  http://www.opiron.com/portfolio/alarma-de-deteccion-de-sonido-con-arduino
const int sampleWindow = 50; // Ventana de nuestreo en msSample window width in mS (50 mS = 20Hz)
unsigned int sample;
int led=13;                  // Conectamos el LED al pin13 por comodidad

void setup() 
{
   Serial.begin(9600);
   pinMode(led, OUTPUT);
}

void loop() 
{
   unsigned long startMillis= millis();  //Iniciamos la ventana de muestreo
   unsigned int peakToPeak = 0;   // Nivel pico a pico

   unsigned int signalMax = 0;
   unsigned int signalMin = 1024;

   while (millis() - startMillis < sampleWindow) // Recolectamos datos por 50ms
   {
      sample = analogRead(0); // Conectamos la salida analógica del sensor a la entrada A0 de Arduino
      if (sample < 1024)  
      {
         if (sample > signalMax)
         {
            signalMax = sample;  // Señal máxima, muestreo
         }
         else if (sample < signalMin)
         {
            signalMin = sample;  // Señal mínima, muestreo
         }
      }
   }
   peakToPeak = signalMax - signalMin;  // Max - min = amplitud pico a pico
   Serial.print(peakToPeak);
   double volts = (peakToPeak * 3.3) / 1024;  // Conversión a voltios

   Serial.println(volts);
   if (volts>0.4){              // Si el valor leído supera al umbral damos una alarma visual
    digitalWrite(led,HIGH); 
   }
   else if (volts<0.4){        // De lo contrario, no damos ninguna alarma
    digitalWrite(led,LOW); 
   }
}

Una vez hayáis copiado el código en el IDE de Arduino, no olvidéis que es importante que comprobéis que no tenga ningún error al compilarlo. Finalmente, podéis transferir el código a la placa y… ¡Podéis empezar a jugar! Veréis que en función del ruido que hagáis, se encenderá el LED. ¡Mola!

Tutorial: Parte 2, alerta en la pantalla del PC

Supongo que estaréis pensando que tampoco estaréis fijando vuestra vista constantemente en un LED mientras estáis con el PC…por lo tanto, lo que ahora vamos a hacer es escribir un pequeño programa en Processing que nos alerte si se ha producido algún sonido. Veámoslo:

// www.opiron.com by A.Girod
// Tutorial de sensado de sonido con Micrófono Electret
// más info en:  http://www.opiron.com/portfolio/alarma-de-deteccion-de-sonido-con-arduino

import processing.serial.*; //Importo la librería para tratar datos puerto serie
import controlP5.*;      //import controlP5 library
ControlP5 cp5;           //controlP5 object
Serial arduino;
int valor;
int col = color(255);
void setup() {
  cp5 = new ControlP5(this);
  background(0,255,0);
  arduino = new Serial(this, Serial.list()[0], 9600); //Abro el puerto serie
  size(240, 180);  //El tamaño de la pantalla
   cp5.addButton("OK")  //Este botón sirve para aceptar la alarma
     .setValue(0)
     .setPosition(20,140)
     .setSize(50,19)
     ; 
}
void draw() {
  fill(col);
  ellipse(180,140,40,40);          //La elipse cambiará de color en función de si hay alarma
  while (arduino.available() > 0)  // Consulto si hay datos en el puerto serie
  { 
    valor = arduino.read();      //Leo y almaceno el valor del puerto serie
    println(valor);              // Muestro por la consola el valor
    if (valor==1){               //Si valor es 1 es que ha habido un sonido
     textSize(22);
     text("¡Te llaman!", 60, 80);
     fill(0, 102, 153, 51);
     col = color(255,0,0);
    }
  }
}
 public void OK(int theValue) {
   println("OK: "+theValue);
   background(0);
   col = color(255);
 }

De esta manera, una vez ejecutemos este programa con Processing, tendremos una pequeña pantalla que nos alertará de manera visual cuando se produce un sonido externo al que tengamos que prestarle atención (el timbre de nuestra casa, una llamada de un compañero, etc):

Micrófono Electret, electret, tutorial opiron, Alarma de detección de sonido con Arduino

¡Y esto es todo! ¡Esperamos que os haya gustado el tutorial!

Agradecemos tu feedback

Agradecemos tu feedback cuando has leído un tutorial, y puedes hacerlo de diferentes maneras:

  • Si te ha gustado el tutorial te agradecemos que lo compartas con la comunidad de usuarios.
  • Si tienes dudas respecto al tutorial, contacta con nosotros mediante el foro.
  • Si te gustaría recibir formación relacionada con Programación, Arduino, etc, podemos ayudarte, contacta con nosotros mandando un correo a info@opiron.com.
  • Si tienes alguna sugerencia de mejora, o simplemente te gustaría subir un tutorial a nuestra web, será bueno para nosotros. Contacta con nosotros en info@opiron.com.
  • ¿Te gustaría participar en nuestro chat en vivo? Todos los viernes estamos en Google Plus. Podrás exponer tus proyectos y conocernos. También te invitamos a seguirnos en Facebook twitter.
  • Si necesitas un componente y te gusta lo que hacemos, visita nuestra tienda.

El tutorial y su contenido – texto, imágenes y código-  están bajo licencia Creative Commons Attribution-ShareAlike 3.0 License.

Entradas relacionadas

.