C021 Arduino y el detector de sonidos KY038


Descripción
Este circuito hará que podamos conectar o desconectar otro circuito con una palmada o al sonar un sonido moderadamente fuerte.  De hecho vamos a encender y apagar un led hablando al micrófono.

Circuito
El circuito es simple de montar, el Módulo KY-038 de Keyes cuyas conexiones son A0 que la conectamos a la entrada analógica A0 de arduino, G que la conectamos a GND, + que va al positivo de la alimentación y D0 que en este caso la hemos conectado al pin digital 2 de arduino. Para ver como reacciona el circuito, hemos conectado un LED con su resistencia limitadora al pin 10 de arduino.




Código
Para empezar hemos declarado 4 variable globales, 3 de tipo entero y una de tipo boleana. Las de tipo entero son LED y le hemos asignado el pin donde hemos conectado el LED, la segunda es sensor y le hemos asignado el pin 2 que es donde hemos conectado la salida digital del módulo KY.038. y la tercera es analog, a la que le hemos asignado la entrada analógica de arduino A0 a la que hemos conectado la misma salida del módulo.  La única variable tipo bool o boleana la hemos llamado estado y se encargará de guardar el último estado en que quedó la salida del circuito, le hemos asignado el valor false, para empezar.

En el void setup, hemos inicializado el puerto serie, para poder ver los datos a la típica velocidad de 9600.
Luego hemos declarado con pinMode el pin LED como salida y el Pin sensor como entrada conectada a una resistencia interna pullup. y ademas inicializamos el programa con un LOW en el pin LED, eso hará que el programa empiece con el LED apagado. No hemos añadido un pinMode (analog, INPUT); porque no ha sido necesario, y hemos ahorrado una línea de código. Solo hemos usado este pin para calibrar el circuito y ha funcionado sin esta instrucción.

En el void loop, hemos declarado una variable local tipo boleana llamada valor y le hemos asignado como valor la lectura digital en la entrada del sensor. Y hemos creado una condición if que es necesario que valor sea igual a true, para que en la variable estado se cambie lo contrario del valor que haya almacenado, y luego se escriba en la salida LED, el nuevo estado almacenado y se espere un segundo antes de continuar para evitar falsos positivo o rebotes.
La última línea fuera de if , imprimir la lectura en el pin analógico A0, esta lectura debe estar entre 518 y 610 para que funcione el circuito con normalidad.





Un par de notas: 

Lo primero es que sustituyendo el LED por un transistor con relé o por un optoacoplador o un triac, podemos gobernar cualquier otro circuito incluso de mayor potencia.  

La segunda nota es que si queremos aumentar la sensibilidad o la distancia, podemos hacerlo amplificando la señal del micrófono, intercalando entre el micrófono y el módulo, un amplificador o un pre amplificador de señal.