Inhaltsverzeichnis:

Alerta Sísmica Temprana. - Gunook
Alerta Sísmica Temprana. - Gunook

Video: Alerta Sísmica Temprana. - Gunook

Video: Alerta Sísmica Temprana. - Gunook
Video: Sistema de Alerta Temprana 2024, November
Anonim
Alerta Sísmica Temprana
Alerta Sísmica Temprana
Alerta Sísmica Temprana
Alerta Sísmica Temprana
Alerta Sísmica Temprana
Alerta Sísmica Temprana
Alerta Sísmica Temprana
Alerta Sísmica Temprana

Breve Erklärung

Durante un sismo se produziert 3 tipos de ondas la primaria o P que es la majore para este proyecto, viaja entre 8 y 13 km/s y es registrada por los equipos sismógrafos.

Existen sensores caseros, que nos dan una alerta Detectando estas ondas P, dándonos unos segundos antes que el sismo suceda.

Es ist ein Projekt für Busca-Crear-un-sistema de alerta sísmica temprana en twitter.

Materialien ein utilizar

- 1 Arudino UNO (Kosten ca. 25 USD)

- 1 Arduino Shield Ehternet (Kosten ca. 24 USD)

- 1 Bebenalarm (Costo ca. 30 USD)

- 1 Placa de Circuito impresa für prototipos (Kosten ca. $0,60 USD) oder ein Protoboard

- 3 Kabel Jumper de diferentes colores (Kosten ca. 0,30 USD)

- 1 Batteriestecker 9V (Kosten ca. 0,30 USD)

- Vorsicht und soldadura

Schritt 1: Como Colocar Los Kabel

Como Colocar Los Kabel
Como Colocar Los Kabel
Como Colocar Los Kabel
Como Colocar Los Kabel
Como Colocar Los Kabel
Como Colocar Los Kabel
Como Colocar Los Kabel
Como Colocar Los Kabel

Para poder hacer nuestro proyecto sin tener que abrir el sensor "Quake Alarm", vamos a usar el conector de la batería de 9v del mismo.

El Arduino le dará 5v al sensor con los que va a poder funcionar bien.

Der "Quake Alarm" ist ein öffentlicher Alarm für eine Erkennung von P, er ist ein öffentlicher Anruf für eine voltaje baja, von der Benutzeroberfläche des Pin A0 für einen Monitor im Freien.

En el siguiente orden se deben poner los cable:

5v - A0 - Kabel negro del conector de batería

Primero el cable de 5V que va a alimentar el sensor, luego el A0 que va a monitorear el voltaje y finalmente el Cable negro del conector.

En otra fila conectamos el cable Negro que viene el Arduino und el cable rojo que viene del conector.

una vez los tengamos en este orden soldamos para que la electricidad pase entre ellos.

Wichtiger que al conectar el conector de 9V al sensor, el cable negro pasa a ser el positivo y el rojo el negativo, mucho cuidado con esto.

Schritt 2: Código Arduino

En el Arduino vamos a crear un código que nos va apermitir 2 cosas:

  1. Leer el voltaje para buscar cambios
  2. Si hay una variación en el voltaje hacer una llamada a un servicio web

Vamos a explicar un poco el código, si no quieres entenderlo a profundidad luego de la explicación esta el código completo y donde descargarlo.

Para iniciar vamos a incluir las librerías necesarias para poder usar el Shield Ethernet und el Serial.

#enthalten

#enthalten

Luego vamos a crear una constante que va a tener el PIN Analógico que vamos a usar

#define BEBENALARM A0

Seguido definimos las variables que nos van ayudar al processamiento de la variación de voltaje y el tiempo para hacer la llamada al servicio web.

statische int diferencia;

int qaVal = 0;int qaPreVal = 0;

int-Schwellenwert = 10;

int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web

lang

ultimaConexion = 0; // Tiempo en milisegundos desde la ultima conexion al servicio web

Ahora crear las Variablen für den Ethernet-Client, definiert den MAC für den roten Tarjeta, die IP-Quote für den Tarjeta-Benutzer und die EthernetClient-Klasse für den Router für den roten Tarjeta-Server. También vamos a definir la IP del servidor que recibirá lo datos.

Byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

Byte-IP = {192, 168, 15, 120}; // Direccion IP del Arduino

Byte

server = {192, 168, 15, 111}; // Direccion IP del servidor

EthernetClient-Client;

Ya con las Variablen, Bibliotheken und Klassen listas podemos iniciar el programa que tendrá nuestro Arduino:

  • Incializamos el serial a 57600
  • Luego le decimos al arduino que el pin A0 (konstanter QUAKEALARM) lo vamos a usar como un pin de entrada.
  • Finalmente iniciamos la tarjeta de red.

Void setup () {Serial.begin (57600); pinMode (BEBENALARM, EINGANG);

Ethernet.begin(mac, ip); // Initialisierung des Ethernet-Shields

}

Y para terminar el programa, ponemos en a función cíclica que revise el voltaje si est es inferior a 5v que haga una llamada al servidor y por medio de GET le manda el valor 1 a la variable "sismo". también filtra para que exista un lapso de tiempo de 5 segundos entre un envió de información y otro.

Leere Schleife () {

qaVal = analogRead (QUAKEALARM); diferencia = qaPreVal - qaVal;

if ((diferencia > 0) und (diferencia >= Schwellenwert) und ((millis() - ultimaConexion) > intervaloTiempo)) {

Kontador = Kontador + 1;

Serial.print ("Sismo!");

Serial.println (Kontador);

ultimaConexion = millis();

if (client.connect(server, 5002)>0) {

Serial.println ("Conecto");

client.print("GET /?sismo=1"); // Enviamos los datos por GET

client.println("HTTP/1.0");

client.println("Benutzer-Agent: Arduino 1.0");

}

client.stop();

client.flush(); }

qaPreVal = qaVal;

}

Puedes descargar el código en github.com/bettocr/alertasismo

Código komplett:

#enthalten

#enthalten

// QuakeAlarm

#define BEBENALARM A0

// Variable que mantiene el valor anterior del QuakeAlarm

statische int diferencia;

int qaVal = 0;

int qaPreVal = 0; int-Schwellenwert = 10; int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web long ultimaConexion = 0; // Tiempo en milisegundos desde la ultima conexion al servicio web

// Variablen Ethernet

//Se eingeführt los valores Correspondientes a MAC, IP local, Puerta de Enlace y Máscara de Red

Byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; Byte-IP = {192, 168, 8, 20}; // Direccion IP del Arduino Byte-Server = {192, 168, 8, 11}; // Direccion IP del servidor EthernetClient-Client; Void setup () {Serial.begin (57600); pinMode (BEBENALARM, EINGANG); // Ethernet Ethernet.begin (mac, ip); // Initialisierung des Ethernet-Schildes }

Leere Schleife () {

qaVal = analogRead (QUAKEALARM);

diferencia = qaPreVal - qaVal;

if ((diferencia > 0) und (diferencia >= Schwellenwert) und ((millis() - ultimaConexion) > intervaloTiempo)) {

Kontador = Kontador + 1; Serial.print ("Sismo!"); Serial.println (Kontador); ultimaConexion = millis(); if (client.connect(server, 5002)>0) {Serial.println("Conecto"); client.print("GET/?key=1122334455&sismo=1"); // Enviamos los datatos por GET client.println(" HTTP/1.0"); client.println("Benutzer-Agent: Arduino 1.0"); } client.stop(); client.flush(); } qaPreVal = qaVal; }

Schritt 3: Código-Python

Código-Python
Código-Python

Este código básicamente crea a servicio web and el puerto 5002 del servidor (yo lo uso in einem Raspberry Pi in mi casa), que recibe el aviso del Arduino für luego enviar un Tuit.

Lo hice de esta manera para poder implementar estadísticas y en a futuro poderlo usar en algún servicio de Benachrichtigungen PUSH para móviles.

Para que pueda tuitear deben crear en apps.twitter.com una aplicación and obtener los datatos Consumer Key (API Key), Consumer Secret (API Secret), Access Token y Access Token Secret. y en la función tweet cambiar las xxxxx por sus respektivos valores.

Pueden descargar el código completo en github.com/bettocr/alertasismo o copiarlo a continuación:

#!/usr/bin/python2.7

# -*- Kodierung: utf-8 -*-

Importanfragen, urllib2, urllib, tweepy

aus Flaschenimport Flasche, Anfrage

aus StringIO importieren StringIO

von datetime import datetime, timedelta

def tweet(mensaje):

CONSUMER_KEY = 'xxxxxxx'

CONSUMER_SECRET = 'xxxxxxxx'

ACCESS_KEY = 'xxxxxxxxx'

ACCESS_SECRET = 'xxxxxxxx'

auth = tweepy. OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)

auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)

api = tweepy. API(auth, parser=tweepy.parsers. JSONParser())

tweetid = api.update_status(status=mensaje)

app = Flasche(_name_)

@app.route("/", Methoden=['GET'])

def sismo():

Versuchen:

sismo = request.args.get("sismo")

if (str(sismo) == "1"):

t = datetime.now()

hora = t.strftime("%-I:%M %p")

tweet("[En Pruebas] Mögliche sismo en los próximos segundos ("+hora+")")

außer IOError as err: print 'Fallo'

passieren

außer Ausnahme wie e:

print "Ausnahme "+str(e)

passieren

zurück "OK"

Schritt 4: Details Finales

Details Finale
Details Finale
Details Finale
Details Finale
Details Finale
Details Finale
Details Finale
Details Finale

Como Pasos adicionales para darle una mejor imagen hice lo siguiente

  • Corte la Placa de Circuito justo para que entrara en el espacio destinado a la batería.
  • Mit einem mototool hice ein hueco en la tapa und la esquina Superior derecha para que los cable entraran.
  • Con material termo vernünftig, puse los 3 kabel que van al Arduino para que parezca un solo kabel.
  • Y para poner el arduino en la pared, hice la impresión 3D de este mount

Pueden seguir el bot que hice con estos pasos en @SismoTico