Taula de continguts:

Alerta Sísmica Temprana .: 4 passos (amb imatges)
Alerta Sísmica Temprana .: 4 passos (amb imatges)

Vídeo: Alerta Sísmica Temprana .: 4 passos (amb imatges)

Vídeo: Alerta Sísmica Temprana .: 4 passos (amb imatges)
Vídeo: Вещи, которые мистеру Уэлчу больше не разрешается делать в сборнике для чтения RPG № 1-2450 2024, Juliol
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 explicació

Durant un sisme es produeixen 3 tipus d’ondes la primària o P que és la important per a aquest projecte, viaja entre 8 i 13 km / s i està registrat pels equips sismògrafs.

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

El present projecte busca crear un sistema d’alerta sísmica temprana a twitter.

Materials a utilitzar

- 1 Arudino UNO (Costo aprox. 25 USD)

- 1 Arduino Shield Ehternet (cost aproximat de 24 USD)

- 1 alarma de terratrèmol (aprox. 30 USD)

- 1 Placa de Circuito impresa para prototipos (Costo Aprox. $ 0.60 usd) o una protoboard

- 3 cables de pont de diferents colors (Costo aprox. $ 0,30 usd)

- 1 connector de bateria de 9V (Costo aprox. $ 0,30 usd)

- Cautin y soldadura

Pas 1: Como Colocar Los Cables

Como Colocar Los Cables
Como Colocar Los Cables
Como Colocar Los Cables
Como Colocar Los Cables
Como Colocar Los Cables
Como Colocar Los Cables
Como Colocar Los Cables
Como Colocar Los Cables

Per poder fer el nostre projecte sense tenir que obrir el sensor "Quake Alarm", vamos a usar el conector de la batería de 9v del mismo.

El Arduino le dará 5v al sensor amb els que va a poder funcionar bé.

El "Quake Alarm" té un parlant per a emetre una alerta i detectar ones P, si aquest parlant el seu voltatge baix, per lo que utilitzarem el Pin A0 per controlar un canvi en el voltatge.

En el següent ordre s'han de posar els cables:

5v - A0 - Cable negre del connector de bateria

Primer el cable de 5V que va a alimentar el sensor, després el A0 que va a monitorear el voltatge i finalment el Cable negre del conector.

En una altra fila connectem el cable Negro que viene el Arduino y el cable rojo que viene del conector.

una vegada els tengem en aquest ordre soldats per a que l’electricitat passi entre ells.

Important que al connectar el conector de 9V al sensor, el cable negre passa a ser el positiu i el vermell el negatiu, molt cuidat amb això.

Pas 2: Codi Arduino

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

  1. Llegiu el voltatge per buscar canvis
  2. Si hi ha una variació en el voltatge fer una trucada a un servei web

Vam explicar un poc el codi, si no volem entendre a profunditat després de l’explicació aquest codi complet i on es descarregui.

Per iniciar vamos a incloure las bibliotecas necesarias para poder usar el shield ethernet y el serial.

#incloure

#incloure

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

#define QUAKEALARM A0

Seguim definits les variables que ens van ajudar a processar la variació de voltatge i el temps per fer la trucada al servei web.

static int diferencia;

int qaVal = 0; int qaPreVal = 0;

llindar int = 10;

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

llarg

ultimaConexion = 0; // Temps en milisegundos des de l’última connexió al servei web

Ahora crear les variables per a l’ús de l’ethernet, on es defineixen el MAC de la targeta de red, la IP que usarà aquesta targeta i la classe de tipus EthernetClient per poder fer l’ús de la targeta de red. També vamos a definir la IP del servidor que rebrà els dades.

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

byte ip = {192, 168, 15, 120}; // Direcció IP del Arduino

byte

servidor = {192, 168, 15, 111}; // Direcció IP del servidor

Client EthernetClient;

Ja amb les variables, biblioteques i classes llistes podem iniciar el programa que tindrà el nostre Arduino:

  • Incialitzem el serial a 57600
  • Luego le decimos al arduino que el pin A0 (constant QUAKEALARM) lo vamos a usar como un pin de entrada.
  • Finalment iniciamos la targeta de vermell.

configuració nul·la () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT);

Ethernet.begin (mac, ip); // Inicialitzem el Ethernet Shield

}

Y para terminar el programa, ponemos en una función cíclica que revise el voltaje si este es inferior a 5v que haga una llamada al servidor y por medio de GET le manda el valor 1 a la variable "sismo". també filtra per a que existeix un lapso de temps de 5 segons entre un enviat d'informació i un altre.

bucle buit () {

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

if ((diferencia> 0) i (diferencia> = threshold) i ((millis () - ultimaConexion)> intervaloTiempo)) {

contador = contador + 1;

Serial.print ("Sismo!");

Serial.println (contador);

ultimaConexion = millis ();

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

Serial.println ("Conecte");

client.print ("GET /? sismo = 1"); // Envieu els dades per GET

client.println ("HTTP / 1.0");

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

}

client.stop ();

client.flush (); }

qaPreVal = qaVal;

}

Puedes descarregar el codi en github.com/bettocr/alertasismo

Codi complet:

#incloure

#incloure

// QuakeAlarm

#define QUAKEALARM A0

// Variable que mantiene el valor anterior del QuakeAlarm

static int diferencia;

int qaVal = 0;

int qaPreVal = 0; llindar int = 10; int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web long ultimaConexion = 0; // Temps en milisegundos des de l’última connexió al servei web

// Variables Ethernet

// Es presenten els valors corresponents 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 servidor de bytes Arduino = {192, 168, 8, 11}; // Direcció IP del servidor EthernetClient client; configuració nul·la () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT); // Ethernet Ethernet.begin (mac, ip); // Inicialitzem el Ethernet Shield}

bucle buit () {

qaVal = analogRead (QUAKEALARM);

diferencia = qaPreVal - qaVal;

if ((diferencia> 0) i (diferencia> = threshold) i ((millis () - ultimaConexion)> intervaloTiempo)) {

contador = contador + 1; Serial.print ("Sismo!"); Serial.println (contador); ultimaConexion = millis (); if (client.connect (servidor, 5002)> 0) {Serial.println ("Conecte"); client.print ("GET /? key = 1122334455 & sismo = 1"); // Envieu les dades per GET client.println ("HTTP / 1.0"); client.println ("Agent d'usuari: Arduino 1.0"); } client.stop (); client.flush (); } qaPreVal = qaVal; }

Pas 3: Codi Python

Código Python
Código Python

Aquest codi bàsicament crea un servei web al port 5002 del servidor (jo lo uso en un Raspberry Pi en mi casa), que rep l'avís de l'Arduino per després enviar un Tuit.

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

Per tal que pugueu haver de crear en apps.twitter.com una aplicació i obtenir les dades Consumer Key (API Key), Consumer Secret (API Secret), Access Token i Access Token Secret. i en la funció tweet canviar les xxxxx pels seus valors respectius.

Pueden descarregar el codi complet en github.com/bettocr/alertasismo o copiarlo a continuació:

#! / usr / bin / python2.7

# - * - codificació: utf-8 - * -

sol·licituds d’importació, urllib2, urllib, tweepy

des de la importació de matràs Matràs, sol·licitud

d'importació de StringIO

a partir de la importació de la data i hora, la data i el temps

tweet definitiu (mensaje):

CONSUMER_KEY = 'xxxxxxx'

CONSUMER_SECRET = 'xxxxxxxx'

ACCESS_KEY = 'xxxxxxxx'

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 (estat = missatge)

app = Flascó (_ nom_)

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

def sismo ():

provar:

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

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

t = datetime.now ()

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

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

excepte IOError com a error: imprimeix "Fallo"

passar

excepte Excepció com a e:

imprimeix "Excepció" + str (e)

passar

torna "D'acord"

Pas 4: Detalls finals

Detalles Finales
Detalles Finales
Detalles Finales
Detalles Finales
Detalles Finales
Detalles Finales
Detalles Finales
Detalles Finales

Com passos addicionals per donar-li una millor imatge és el següent

  • Corte la Placa de Circuito justo para que entrara en el espacio destinado a la batería.
  • Amb un mototool hice un hueco en la tapa en l’esquina superior dreta per als cables entrant.
  • Amb material termo sensible, puse los 3 cables que van al Arduino per que parezca un solo cable.
  • I per posar l'arduino a la paret, es pot obtenir la impressió 3D d'aquest muntatge

Pueden seguir el bot que hice amb estos passos en @SismoTico

Recomanat: