InicioTarjetas de DesarrolloArduinoUso de los Sensores de sonido KY-038/KY-037 para controlar el encendido de...

Uso de los Sensores de sonido KY-038/KY-037 para controlar el encendido de un foco

En este tutorial realizaremos un proyecto con los sensores de sonido KY-038 y KY-037 que controlarán el encendido y apagado de un LED; y posteriormente de un foco, auxiliándonos con del módulo relevador de 5V KY-019.

INTRODUCCIÓN

Los sensores de sonido KY-038 y KY-037 son muy similares, ya que ambos cuentan con un micrófono para la detección de sonidos, la única diferencia es la sensibilidad que tiene cada uno.

El ajuste de la sensibilidad es a través del trimpot, siendo que en forma horaria aumenta la sensibilidad y de lado contrario se reduce.

Los dispositivos tienen dos LEDs:

  • L1: Confirma que el dispositivo esta alimentado (3 a 5 V).
  • L2: Detección de sonido, si enciende; entonces se ha detectado el sonido en el rango ajustado.
  • Ahora realizaremos la prueba de funcionamiento y ajuste de sensibilidad de ambos sensores, para lo cual requeriremos:

    Diagrama de conexión de los sensores de sonido

    La siguiente conexión es útil para ambos sensores:KY-037 y KY-038, ya que ambos cuentan con los mismos pines. El led que estaremos conectando nos confirmará la detección de sonido

    Código de prueba de Sensores de Sonido

    El siguiente programa tiene como función detectar los pulsos(que llamaremos flancos) que está recibiendo la tarjeta de desarrollo cada vez que detecte sonido.

     
    //Nota: Ajustar la sensibilidad del micrófono con el trimpot
    
    int KY037= 4;    //Pin 4 para la salida digital del KY
    int flanco= 0;   //Variable de apoyo para saber la lectura del sensor
    
    void setup()
    {
      Serial.begin(9600);      //Inicialización del puerto serial a 9600 baudios
      pinMode( KY037, INPUT) ; //pin del KY como entrada de datos
    }
    
    void loop()
    {
      if (digitalRead(KY037)==HIGH )          //Si se detecta un sonido el KY(dependiente a la sensibilidad determinada por el usuario)
      {
        flanco= flanco + 1;                  // Se realiza un contador +1 por cada vez que el sensor detecte un flanco ALTO
        Serial.print("Número de Flancos: "); // Escribe el número de flancos detectados dependiendo el sonido censado...
        Serial.println(flanco, DEC) ;        // escribiendo el valor en forma decimal
      }
    }

    En nuestro Monitor Serial visualizaremos cuando efectuemos algún sonido como se comporta el módulo, podremos ver que el contador varia dependiendo a la intensidad del sonido. Si es bajo sólo se vera uno o dos flancos y si es más fuerte crecerá el valor del contador.

    Para calibrar nuestro sistema, consideramos que un sonido con 4 flancos en ALTO, son suficientes para poder tener un sonido actuador. Prueba en ambos sensores <> con el mismo código, pero considera que para el KY-038 se tiene que aumentar la sensibilidad.

    Teniendo en cuenta que que ya se efectuó una calibración en la sensibilidad y ya conocemos los datos obtenidos de los dispositivos, modificaremos un poco nuestro código como se muestra a continuación:

     
    //Nota: Ajustar la sensibilidad del micrófono con el trimpot
    
    int led = 13;    //Colocaremos un Led en el Pin 13 del Arduino para saber cuando sea activado el Sensor de Sonido
    int KY037= 4;    //Pin 4 para la salida digital del KY
    int flanco= 0;   //Variable de apoyo para saber la lectura del sensor
    
    void setup()
    {
      Serial.begin(9600);      //Inicialización del puerto serial a 9600 baudios
      pinMode( led, OUTPUT) ;  //pin 13/led como pin de salida
      pinMode( KY037, INPUT) ; //pin del KY como entrada de datos
    }
    
    void loop()
    {
      if (digitalRead(KY037)==HIGH )          //Si se detecta un sonido el KY(dependiente a la sensibilidad determinada por el usuario)
      {
        flanco= flanco + 1;                  // Se realiza un contador +1 por cada vez que el sensor detecte un flanco ALTO
        Serial.print("Número de Flancos: "); // Escribe el número de flancos detectados dependiendo el sonido censado...
        Serial.println(flanco, DEC) ;        // escribiendo el valor en forma decimal
    
    if (flanco == 4) {                      //Si el contador llega a 4, que es el valor anteriormente calibrado a nuestro sistema
          Serial.println(flanco);          //Escribe el valor del flanco=4 y...
          digitalWrite(led, HIGH);         //...enciende el led 
    
        } else if (flanco== 8) {          //El contador esperara un nuevo sonido para desactivar el led y eso es cuando se llega al valor de flanco=8
          Serial.println(flanco);         //Escribe el valor del flanco=8 y... 
          digitalWrite(led, LOW);         //...se apagará el led y ..
          flanco= 0;                      //Se reiniciara el valor del flanco para que no se quede ningún valor guardad en flanco                  
          }
       }
    }

    Con estas nuevas instrucciones se notará que cada vez que se realice un sonido alrededor de 4 flancos se encenderá el LED y cuando se vuelva a llegar a otros 4 flancos (Número de Flancos=8) se apagará el LED.

    Prueba del KY-037 con el código de prueba

    Se puede observar que si el sonido es débil los flancos detectados son menores a 4 y por lo tanto no se podrá encender el led. Esto se realiza para poder “filtrar” el sonido y que nuestro dispositivo solo detecte un aplauso en especifico y que no se confunda con otro sonido.

    Por otro lado, el KY-038 incrementamos la sensibilidad y a la menor provocación dispara los flancos con un “chasquido” o con una palmada débil.

    Prueba del KY-038 con el código de prueba

    Ahora que ya tenemos calibrados los módulos, remplazaremos el led por un foco y nos auxiliaremos de el Modulo KY-019. Para adicionalmente requeriremos:

    Diagrama de conexión

    Trabajaremos con el KY-037 debido a que el ajuste de sensibilidad que realizamos es ideal para que solo se active con un aplauso previamente predeterminado a 4 flancos.

    Programa en IDE Arduino

    El programa previamente realizado, para el el encendido de un LED lo modificaremos para que ahora el actuador afecte al relevador de 5V.

     
    //Nota: Ajustar la sensibilidad del micrófono con el trimpot
    
    int reley= 13;    //Salida al reley en el Pin 13 del Arduino que activara a su vez el foco
    int KY037= 4;    //Pin 4 para la salida digital del KY
    int FlancoKY= 0;   //Variable de apoyo para saber la lectura del sensor
    
    void setup()
    {
      Serial.begin(9600);         //Inicialización del puerto serial a 9600 baudios
      pinMode( reley, OUTPUT) ;   //pin 13/reley como pin de salida
      pinMode( KY037, INPUT) ;    //pin del KY como entrada de datos
    }
    
    void loop()
    {
      if (digitalRead(KY037)==HIGH )          //Si se detecta un sonido el KY(dependiente a la sensibilidad determinada por el usuario)
      {
        FlancoKY= FlancoKY+ 1;                  // Se realiza un contador +1 por cada vez que el sensor detecte un flanco ALTO
        Serial.print("Número de Flancos: "); // Escribe el número de flancos detectados dependiendo el sonido censado...
        Serial.println(FlancoKY, DEC) ;        // escribiendo el valor en forma decimal
    
    if (FlancoKY== 4) {                      //Si el contador llega a 4, que es el valor anteriormente calibrado a nuestro sistema
          Serial.println(FlancoKY);          //Escribe el valor del flanco=4 y...
          digitalWrite(reley, HIGH);         //...enciende el RELE
    
        } else if (FlancoKY== 8) {          //El contador esperara un nuevo sonido para desactivar el RELE y eso es cuando se llega al valor de flanco=8
          Serial.println(FlancoKY);         //Escribe el valor del flanco=8 y... 
          digitalWrite(reley, LOW);         //...se apagará el RELE y ..
          FlancoKY= 0;                      //Se reiniciara el valor del flanco para que no se quede ningún valor guardad en flanco                  
          }
       }
    }

    En el caso del relevador se realizo la conexión en NO(Normalmente Abierto) para que se activará con una entrada en ALTO.

    Y de esta manera podremos controlar nuestra lámpara por medio de aplausos. 👏👏👏👏👏👏👏

    TUTORIALES RELACIONADOS