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.
![](https://www.angelalfonso.com.mx/wp-content/uploads/2022/06/01_BotonEnciendeLedOpc02_Arduino_Alerta_Sismica.png)
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.
![](https://www.angelalfonso.com.mx/wp-content/uploads/2022/06/P01-02-SecuenciaLedsVerdes74HC595.png)
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.
![](https://www.angelalfonso.com.mx/wp-content/uploads/2022/06/P01-03-SecuenciaLedsRojos74HC595yZumbador.png)
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
}
}
![](https://www.angelalfonso.com.mx/wp-content/uploads/2022/06/01_BotonEnciendeLedOpc02_Arduino_Alerta_Sismica.png)
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;
}
![](https://www.angelalfonso.com.mx/wp-content/uploads/2022/06/02-SecuenciaLedsVerdes_Arduino_Alerta_Sismica.png)
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);
}
}
![](https://www.angelalfonso.com.mx/wp-content/uploads/2022/06/03-SecuenciaLedsRojosZumbador_Arduino_Alerta_Sismica.png)
Uniendo todo