InicioTarjetas de DesarrolloArduinoCrea un sistema con el Sensor de Impacto y luces de sirena...

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.

TUTORIALES RELACIONADOS