Skip to main content

Práctica 6: Arduino y micrófono

Para esta práctica, vamos a necesitar el micrófono que venía en nuestro kit:

image-1668164217036.jpg

Lo que haremos será detectar el sonido de una palmada y encender el LED que viene integrado en nuestro Arduino UNO. El propósito de esta práctica es poder activar diferentes sonidos en Pure Data cuando, más adelante, veamos cómo conectar este programa a nuestro Arduino.


El micrófono

El módulo que vamos a utilizar detecta el sonido con la ayuda de un micrófono conectado a un amplificador. También consta de un potenciómetro que se utiliza para ajustar el nivel de sonido de salida y la sensibilidad del micrófono.

Hay dos tipos de salidas accesibles desde este sensor y son la salida digital y la salida analógica. La salida digital se obtiene cuando el sonido está en un umbral determinado. El potenciómetro se utiliza para ajustar la sensibilidad del pin de salida digital. Cuando un determinado sonido sea mayor/menor que el nivel de umbral, la salida digital será baja/alta. La salida analógica representa la señal directa del micrófono como un nivel de tensión que cambia con la intensidad del sonido y será la que utilicemos en este proyecto.


Los pines

Este módulo consta de cuatro pines AO, G, + y DO:

image-1668165598279.jpg


El pin AO se utiliza para la salida analógica.
El pin G lo conectaremos al pin GND (Ground o masa) de nuestro Arduino.
El + se utiliza para alimentar a nuestro sensor conectándolo al pin de 5V de nuestro Arduino.
El pin D0 se utiliza para la salida digital. 


Las conexiones

En la siguiente imagen puedes ver un esquema de las conexiones que tendrás que realizar:

image-1668442696237.18.04.png

Como puedes ver, el pin D0 no vamos a utilizarlo para esta práctica.

En nuestro caso, para realizar las conexiones vamos a usar la protoboard, pero tendremos que tener cuidado con cómo realizamos la conexiones, ya que todos los puntitos están conectados entre sí de la siguiente manera:image-1668253913399.51.11.png

Por tanto, tendremos que colocar nuestro sensor paralelo a las líneas azul y roja, como en la siguiente imagen: image-1668444673967.jpg

Una vez tengamos las conexiones preparadas, pasaremos a ver el código que hará funcionar nuestro sensor.


El código

Como vas a ver, no consta de muchas líneas. Lo primero que haremos será crear la variable que almacenará el valor que leamos con nuestro micrófono, este valor será un entero y la variable se llamará soundPin:


int soundPin = A0;

A continuación, encontramos la función void setup() que se ejecutará una sola vez y lo que en ella haremos es comenzar la comunicación con el puerto serie a una velocidad de 9600 baudios:


void setup()
{
  Serial.begin(9600);
}

En la función void loop() vamos a encontrar una variable de un tamaño mayor que el número entero anterior, por eso la almacenamos en un long. Esta variable sum va a ir almacenando los valores que se lean desde nuestro sensor agrupados en grupos de 100 y calcularemos la media dividiendo el valor obtenido en 100 (sum=sum/100). Esa agrupación viene dada por el bucle for, que ya mencionamos en este apartado, en el que decimos que en la variable sum se vayan almacenando los valores que se detecten en nuestro soundPin. ¿Recuerdas los contadores que explicamos en este capítulo? Pues la sentencia sum += analogRead(soundPin); funciona como un contador que va almacenando valores gracias a +=. Si escribiésemos sum = sum + analogRead(soundPin) obtendríamos el mismo resultado.

Lo siguiente es imprimir por el puerto serie el valor obtenido (Serial.println(sum);)y pedirle a nuestro Arduino que espere 10 milisegundos a detectar un nuevo valor (delay(10);).

void loop()
{
    long sum = 0;
    for(int i=0; i<100; i++)
    {
        sum += analogRead(soundPin);
    }
    sum = sum/100;
    Serial.println(sum);
    delay(10);
}


Ver el sonido

Para ver cómo varía el sonido, tendremos que abrir nuestro Monitor Serie en modo Serial Plotter. Para ello, tendremos que pulsar la tecla SHIFT (o flecha hacia arriba) en nuestro teclado mientras nuestro ratón está colocado sobre la imagen de la lupa:

image-1668545580948.52.10.png

El resultado será algo así:

image-1668546970018.gif

¿Qué tenemos que presentar?

Será necesario que presentéis un video o un .gif en el que se vea el sensor de sonido y en el puerto serie abierto, veamos cómo cambia la onda al tocarlo, similar al .gif que puedes ver encima de esta sección.

REFERENCIAS:
Tutorial Arduino y micrófono: https://microcontrollerslab.com/ky-038-microphone-sound-sensor-module-arduino-tutorial/
Tutorial Arduino y micrófono 2: https://kolwidi.com/blogs/blog-kolwidi/como-usar-un-microfono-con-arduino
Imagen Arduino y micrófono http://arduinolearning.com/wp-content/uploads/2018/07/ky038-example_bb.jpg