Objetivos
Material requerido.
Arduino Uno o compatible. |
|
Una Protoboard. | |
Un diodo LED. | |
Una resistencia de 330 Ohmios. | |
Algunos cables de Protoboard. |
EL SENSOR DE SONYDO KY-038
Este tipo de sensor tiene montura Keyes para facilitarnos el montaje.
En la parte de la izquierda vemos lo pines de conexión:
- En el centro tenemos la conexión a 5V y a GND (+ y G).
- D0 es una salida digital que actúa a modo de comparador. Si el sonido captado por el micrófono supera un determinado nivel se pone a HIGH.
- A0 es una salida analógica que nos da un valor entre 0 y 1023 en función del volumen del sonido.[/fancy-ul] [/three-fourth]
Además tenemos dos LEDs, uno que nos indica si hay alimentación en el sensor y otro que se ilumina si D0 está a HIGH.
El ajuste de sensibilidad del micrófono lo hacemos mediante un potenciómetro que tendremos que girar con un destornillador plano.
CIRCUITO DE ILUMINACIÓN ACTIVADO POR SONIDO
Primero vamos a usar la salida digital D0 como señal para encender un LED, de forma que cuando demos una palmada, un silbido o hagamos algún ruido un poco alto, se encienda o se apague un LED.
Sólo necesitamos conectar el pin D0 y los dos pines de alimentación, tal como se ve en el diagrama electrónico y el montaje en la protoboard:
Si hemos conectado bien el sensor, se debería iluminar el LED de alimentación. El de salida digital accionada puede o no estar encendido.
AJUSTANDO EL LÍMITE DE DISPARO
Esta es seguramente la parte más complicada de esta sesión. Para ajustar el límite de disparo lo que hacemos es girar el potenciómetro con un destornillador. Tenemos que dejarlo de tal forma que el LED que marca si está accionada la salida digital esté apagado, pero lo más próximo posible al límite en el que se enciende.
- Si lo ajustamos mal y el LED se está encendido, no detectaremos ningún cambio y no podremos reaccionar a ningún estímulo sonoro.
- Si lo ajustamos de forma que esté apagado pero demasiado lejos del límite en el que se enciende, habrá que llamar al increíble Hulk para que dé una palmada por nosotros.
PROGRAMANDO EL SENSOR
El programa para controlarlo es muy sencillo y es el mismo que hemos utilizado varias veces para controlar un interruptor. La diferencia es que en vez de utilizar un pulsador, si el sensor detecta un sonido por encima del límite enviará una señal que recogeremos en la entrada digital 2.
int LED = 13 ; int sensor = 6 ; bool estado = false ; void setup() { pinMode( LED, OUTPUT) ; pinMode( sensor , INPUT_PULLUP) ; digitalWrite(LED , LOW) ; // Apagamos el LED al empezar } void loop() { bool valor = digitalRead(sensor) ; //leemos el estado del sensor if ( valor == true ) //Si está activada la salida D0 { estado = ! estado ; // cambiamos el estado del LED digitalWrite(LED, estado) ; // escribimos el nuevo valor delay (1000); } }
Podéis descargar el programa completo para el arduino aquí: Sensor_sonido_D0.
UTILIZANDO EL PIN A0 PARA LEER LAS MEDIDAS DEL SENSOR
Como hemos explicado al principio, el pin A0 nos devuelve un valor entre 0 y 1023 en función del volumen del sonido que esté registrando.
Las conexiones serían las mismas pero conectando la salida A0 del sensor a cualquier entrada analógica del Arduino. Podéis desconectar la salida D0 o dejarla conectada y seguir usándola. El potenciómetro del sensor serviría en este caso para fijar la sensibilidad del sensor.
El programa para mostrar las medidas del sensor en el monitor serie sería muy sencillito y ya lo hemos utilizado varias veces:
void setup() { Serial.begin(9600); // Iniciamos la puerta serie } void loop() { int Lectura = analogRead(A0) ; Serial.println( Lectura); delay(200) ; }
RESUMEN DE LA SESIÓN
En esta sesión hemos aprendido varias cosas importantes: