Crea un sistema con el Sensor de Impacto y luces de sirena con los módulos KY-031 y KY-016

En esta ocasión trabajaremos con el Sensor de Impacto KY-031, el cual manda una señal de salida en el momento que recibe un choque o contacto físico, esta señal es fácilmente procesada por alguna tarjeta de desarrollo UNO R3.

Adicional integraremos el módulo RGB KY-016,que es capaz de emitir la mezcla de colores del sistema RGB (rojo, verde y azul).

¿Cómo funciona el módulo KY-031?

El Sensor de Impacto KY-031 es un contacto normalmente abierto(NA), es decir, cuando está inactivo funciona como un dispositivo abierto y posteriormente cuando se interactúa con el módulo el interruptor se cierra, permitiendo a circulación eléctrica a través del sistema.

Para realizar este proyecto necesitamos los siguientes materiales:

Diagrama de Conexión Arduino y KY-031

Primero realizaremos la conexión simple entre nuestra placa UNO R3 y el sensor de impacto para comprobar que esté realizando su funcionamiento adecuado.

Código en Arduino IDE para probar el módulo KY-031

Para el siguiente programa no es necesaria ninguna librería extra, solo realizaremos la declaración de variables y usaremos el Monitor Serial para visualizar el golpe en el sensor, el LED integrado en tarjeta UNO R3 (Pin 13) encenderá cada vez que el KY-031 reciba un impacto.

                                       //Declaración de variables
int led=13;                            //Led correspondiente al PIN 13 de Arduino
int hit=3;                               //Variable de entrada de datos a través del KY-031
int valor;                               //Variable entera para guardar el status del sensor KY-031

void setup() {
  Serial.begin(9600);                 // Velocidad de comunicación serial a 9600 baudios
  pinMode(Led,OUTPUT);                // Se configura LED como pin de salida
  pinMode(hit,INPUT);                 //Se configura el KY-031 como entrada
}

void loop() {
  val=digitalRead(hit);               // Se lee el valor digital del ky-031 y se asigna a valor
  if(valor==LOW){                     // Como es su estado en reposo es NA su valor inicial es 0(LOW) 
    Serial.print("Inactivo");         // Se imprime un texto en el monitor serial Inactivo...
    Serial.println (valor");          // ... y con valor 0
    digitalRead(Led,LOW);             // ademas el LED del pin 13 NO encenderá
  }
  else {                              // Sí el valor es igual a 1(HIGH) se ejecuta la instrucción  
   Serial.print("Golpe Avisa");       // Se imprime Golpe Avisa
   Serial.println (valor");           // ... y con valor 1
   digitalRead(Led,HIGH);             // ademas el LED del pin 13 SI encenderá 
   delay(2000);                       //este estado durara 2 segundos
}
}

Como se puede observar en el video, cuando sufre una perturbación el módulo KY-031, en el Monitor Serial imprime “Golpe Avisa” y enseguida el valor 1; adicionalmente prende el LED. Ahora procederemos a realizar la conexión con el módulo RGB KY-016.

Código en Arduino IDE para Módulos KY-016 y KY-031

El propósito del siguiente programa es que cada vez que el Módulo de Impacto KY-031 reciba un golpe, el Led RGB (KY-016) simule una sirena y cuando ambos dispositivos estén en reposo el LED RGB estará emitiendo luz verde.

int ky31 = 3;                           // Pin para el módulo de impacto KY031
int LR = 11;                            // Pin para el Pin del LED ROJO del módulo KY016                           
int LA = 10;                            // Pin para el Pin del LED AZUL del módulo KY016 
int LV = 9;                             // Pin para el Pin del LED VERDE del módulo KY016
int valor;                              //Variable tipo entero que sera utilizada para guardar el dato del KY031

void setup()
{
 Serial.begin(9600);                    // Inicializar el Monitor Serial a 9600 bd
 pinMode(ky31, INPUT);                  // Se declara al KY31 como pin de entrada
 pinMode(LR, OUTPUT);                   // Se declara al LED ROJO del KY016 como pin de salida
 pinMode(LA, OUTPUT);                   // Se declara al LED AZUL del KY016 como pin de salida
 pinMode(LV, OUTPUT);                   // Se declara al LED VERDE del KY016 como pin de salida
}
void loop()
 {
    valor= digitalRead (ky31);          // Se asigna el dato registrado por el KY31 a la variable valor          
    if (valor == LOW){                  // Si esa variable esta en estado BAJO/LOW/0 entonces
    Serial.print("Inactivo");           // En el Monitor Serial imprimirá INACTIVO
    Serial.println (valor);             // ..Y el valor registrado
    digitalWrite ( LA, 0) ;             //Configuración de LED RGB...
    digitalWrite ( LV, 255) ;           //...solo encenderá con luz Verde
    digitalWrite (LR, 0) ;
    }
    else                                    // Si esa variable esta en estado ALTA/HIGH/1 entonces
    {
    Serial.print("Sirena");                 // En el Monitor Serial imprimirá Sirena
          for (int t = 0; t < 10; t++) {    //Loop de 10 repeticiones de la secuencia de colores por el LED RGB
          digitalWrite ( LA, 0) ;           //Secuencia para encender solo luz ROJA
          digitalWrite ( LV, 0) ;
          digitalWrite (LR, 255) ;
          delay (100) ;                     //Duración de Led Rojo encendido 0.1 segundo

          digitalWrite ( LA, 255) ;         //Secuencia para encender solo luz ROJA
          digitalWrite ( LV, 0) ;
          digitalWrite (LR, 0) ;
          delay (100) ;                    //Duración de Led Azul encendido 0.1 segundo

          digitalWrite ( LA, 0) ;          //Secuencia para encender apagar LED RGB
          digitalWrite ( LV, 0) ;
          digitalWrite (LR, 0) ;
         }
    }
}

Ahora ya contamos con un sistema que nos permite tener diferente estados de nuestro LED RGB dependiendo de la perturbación en nuestro módulo de impacto.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *