Categorías
Electrónica y Robótica Programación Proyectos Outsourcing Offshoring

Arduino – Alarma sísmica

Sensor con leds y zumbador para alerta de sismos, incendios e incidentes de índole natural, que proporcione tiempo suficiente para evacuar indicando con led verdes la dirección de los lugares seguros y durante el evento, los leds en rojo para que la gente permanezca en un lugar seguro en caso de no poder evacuar.

Uso esencial:

  • Tener una luz para uso normal
  • Leds verdes que se habilitan en secuencia para indicar la dirección de evacuación (antes del suceso con segundos o quizá minutos de anticipación para evacuar el área
  • Leds rojos en secuencia indicando el momento del evento, para que la gente tome precauciones en el lugar cuando no pudo evacuar el lugar.
  • Un botón de pánico para incidentes

Escalabilidad

  • Conectividad con alertas nacionales por medios inalámbricos.
  • Conectividad con dispositivos de control y cierre: para evitar fugas de gas, agua y cortos circuitos, habilitar accesos, etc. Todo tipo de servicios integrados (gas, agua, cortes de suministro eléctrico, habilitar puertas con seguro eléctrico para salida de emergencias))
  • Análisis de fugas en tuberías de gas, agua, registros, cortos, para mantenimiento correctivo.
  • Medidor de zona civiles más afectada durante el sismo/terremoto, para evaluar demolición o mantenimiento correctivo.

Prototipo 1

Dispositivos utilizados:

1 led blanco

3 leds verdes

3 leds rojos

7 resistencias (2,100 Ohms(Ω))

3 botones

1 Registro de desplazamiento (74HC595)

El primer diseño que se realizó, constaba de tres botones que realizabas las siguientes acciones:

Botón 1: para encender y apagar un led blanco. con la finalidad de utilizarlo como luz blanca para iluminar el lugar.

Botón 2: para encender y apagar una serie de leds verdes en secuencia con un intervalo de tiempo de 0,3 segundos entre cada un. Con la finalidad de utilizarlo como guía e indicando la dirección a seguir.

Botón 3: para encender y apagar una serie de leds rojos intermitentes con un intervalo de tiempo de 0,3 segundos entre cada un y un zumbador (buzzer). Con la finalidad de utilizarlo como indicación de que se esta teniendo un suceso de índole natural.

Este prototipo fue hecho para poder materializar las necesidades de la alarma sísmica.

Prototipo 2

Dispositivos utilizados:

Encender y apagar luz

Permitirá utilizar el dispositivo como luz alterna.

int estado=0;                //0=led apagado, 1=led encendido
int interruptor=0;           //almacena el estado del botón
int interruptorAnt=0;        //almacena el estado anterior del botón
 
//** Programa **//
void setup() {
  pinMode(3, OUTPUT);       //declaramos el pin 2 como salida
  pinMode(2, INPUT);        //declaramos el pin 4 como entrada
}

void loop() {
  interruptor = digitalRead(2); //lee si el botón está pulsado
  //if(interruptor==HIGH)
  if((interruptor==HIGH)&&(interruptorAnt==LOW)) //si el botón es pulsado y antes no lo estaba // con corrección de rebote
  {         //si el botón es pulsado
    estado=1-estado;
    delay(50);               //pausa de 50 ms
  }

  interruptorAnt=interruptor;      //actualiza el nuevo estado del botón 

  if(estado==1) {                 //si el estado es 1
    digitalWrite(3, HIGH);    //se enciende el led
  }
  else {                                //si el estado es 0
    digitalWrite(3, LOW);    //se apaga el led
  }
}

Encender leds verdes en secuencia

#include <Adafruit_NeoPixel.h>
#define PIN 2	 // input pin Neopixel is attached to
#define NUMPIXELS      8 //12 number of neopixels in strip

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 160; //100 timing delay in milliseconds

int redColor = 0;
int greenColor = 0;
int blueColor = 0;

void setup() {
  // Initialize the NeoPixel library.
  pixels.begin();
}

void loop() {
  setColorGreen();

  for (int i=0; i < NUMPIXELS; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));

    // This sends the updated pixel color to the hardware.
    pixels.show();

    // Delay for a period of time (in milliseconds).
    delay(delayval);
  }
  setColorWhite();
  //+
  for (int j=0; j < NUMPIXELS; j++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(j, pixels.Color(redColor, greenColor, blueColor));

    // This sends the updated pixel color to the hardware.
    pixels.show();

    // Delay for a period of time (in milliseconds).
    delay(delayval);
  }
  //+
}

// setColor()
// picks random values to set for RGB
void setColorGreen(){
  //redColor = random(0, 255);
  //greenColor = random(0,255);
  //blueColor = random(0, 255);
  redColor = 0;
  greenColor = 255;
  blueColor = 0;
}

void setColorWhite(){
  redColor = 0;
  greenColor = 0;
  blueColor = 0;
}

Encender led rojos con zumbador

#include <Adafruit_NeoPixel.h>
#define PIN 2	 // input pin Neopixel is attached to
#define NUMPIXELS      8 //12 number of neopixels in strip

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 160; //100 timing delay in milliseconds

int redColor = 0;
int greenColor = 0;
int blueColor = 0;

//Zumbador
#define NOTE_C4  262
#define NOTE_G3  196
#define NOTE_A3  220
#define NOTE_B3  247
#define NOTE_C4  262


// notes in the melody:
int melody[] = {
 NOTE_C4, 0, 0, NOTE_C4, 0, 0, NOTE_C4   
};

// note durations: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
  4, 4, 4, 4, 4, 4, 4
};


void setup() {
  // Initialize the NeoPixel library.
  pixels.begin();
  
  //Zumbador
  
  
}

void loop() {
  setColorRed();
  zumbador();

  for (int i=0; i < NUMPIXELS; i++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));

    // This sends the updated pixel color to the hardware.
    pixels.show();

    // Delay for a period of time (in milliseconds).
    delay(delayval);
  }
  setColorWhite();
  //+
  for (int j=0; j < NUMPIXELS; j++) {
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    pixels.setPixelColor(j, pixels.Color(redColor, greenColor, blueColor));

    // This sends the updated pixel color to the hardware.
    pixels.show();

    // Delay for a period of time (in milliseconds).
    delay(delayval);
  }
  //+
}

// setColor()
// picks random values to set for RGB
void setColorRed(){
  //redColor = random(0, 255);
  //greenColor = random(0,255);
  //blueColor = random(0, 255);
  redColor = 255;
  greenColor = 0;
  blueColor = 0;
}

void setColorWhite(){
  redColor = 0;
  greenColor = 0;
  blueColor = 0;
}

void zumbador(){
// iterate over the notes of the melody:
  for (int thisNote = 0; thisNote < 8; thisNote++) {

    // to calculate the note duration, take one second
    // divided by the note type.
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
    int noteDuration = 1000 / noteDurations[thisNote];
    tone(8, melody[thisNote], noteDuration);

    // to distinguish the notes, set a minimum time between them.
    // the note's duration + 30% seems to work well:
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    // stop the tone playing:
    noTone(8);
  }
}

Uniendo todo

Deja una respuesta

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