Cuprins:

Alerta Sísmica Temprana .: 4 pași (cu imagini)
Alerta Sísmica Temprana .: 4 pași (cu imagini)

Video: Alerta Sísmica Temprana .: 4 pași (cu imagini)

Video: Alerta Sísmica Temprana .: 4 pași (cu imagini)
Video: Orizont: Vestul interzis (Filmul) 2024, Iulie
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ón

În timp ce un sism se produce 3 tipuri de onduri la primaria o P care este importantă pentru acest proiect, viața între 8 și 13 km / s și este înregistrată pentru echipamentele sismografice.

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

El presente proyecto busca crear un sistema de alerta sísmica temprana en twitter.

Materiale a utiliza

- 1 Arudino UNO (Costo aprox. 25 USD)

- 1 Arduino Shield Ehternet (Costo Aproximativ 24 USD)

- 1 alarmă de cutremur (aprox. 30 USD USD)

- 1 Placa de Circuit impresa pentru prototipuri (Costo Aprox. $ 0.60 usd) o una protoboard

- 3 cabluri Jumper de diferite culori (aprox. 0,30 USD usd)

- 1 conector de baterie de 9V (aprox. 0,30 USD usd)

- Cautin y soldadura

Pasul 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

Pentru a putea face proiectul nostru fără a deschide senzorul "Quake Alarm", vom folosi conectorul bateriei de 9v del mismo.

El Arduino le dará 5v al sensor con los que va a poder funcționa bine.

El "Quake Alarm" are un parlant pentru a emite o alertă și detecta undele P, dacă este vorba despre un voltaj scăzut, pentru a-l folosi pe Pin A0 pentru a monitoriza un schimb în tensiune.

În următoarea ordine trebuie să pună cablurile:

5v - A0 - Cablu negru al conectorului de baterie

Primerul cablu de 5V care va alimenta senzorul, apoi el A0 care va monitoriza voltajul și în cele din urmă Cable negru del conector.

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

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

Important că al conecta conectorul de 9V al senzorului, cablul negru pasează să fie el pozitiv și roșu negativ, mult îngrijit cu asta.

Pasul 2: Cod Arduino

En el Arduino vamos to create un code that nos va a allowir 2 things:

  1. Leer el voltaje para buscar cambios
  2. Dacă există o variație în tensiunea de a face o chemare la un serviciu web

Vamos a explica un pic codul, dacă nu vreau să înțeleg profunzimea apoi a explicației este codul complet și unde se descarcă.

Pentru a începe să includem bibliotecile necesare pentru a putea folosi ecranul ethernet și serialul.

#include

#include

Luego vamos a create una constant that va to have the PIN Analogico that vamos a use

#define QUAKEALARM A0

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

static int diferencia;

int qaVal = 0; int qaPreVal = 0;

prag int = 10;

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

lung

ultimaConexion = 0; // Tiempo en milisegundos de la ultima conexiune la serviciu web

Ahora create the variables for the use del ethernet, where definimos the MAC de la card de red, the IP that usará this card y the class of type EthernetClient for poder use of the card de red. De asemenea, putem defini IP-ul serverului care va primi datele.

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

octet ip = {192, 168, 15, 120}; // Direccion IP del Arduino

octet

server = {192, 168, 15, 111}; // Direcția IP a serverului

Client EthernetClient;

Ya with the variables, librerías y classes listas we can start the program that tendrá our Arduino:

  • Incializamos el serial a 57600
  • Luego le decimos al arduino that the pin A0 (constant QUAKEALARM) lo vamos a use as a pin de entrada.
  • În cele din urmă începe cartea roșie.

void setup () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT);

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

}

Y para terminar el programa, ponemos en una function cíclica que revise el voltaje si este es inferior a 5v pe care o face o chemare la server și prin mediu de GET le manda el valor 1 la variable "sismo". de asemenea, filtru pentru care există un lapso de timp de 5 secunde între un inviu de informații și altul.

bucla nulă () {

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

if ((diferență> 0) și (diferență> = prag) și ((millis () - ultimaConexion)> intervaloTiempo)) {

contador = contador + 1;

Serial.print („Sismo!”);

Serial.println (contador);

ultimaConexion = millis ();

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

Serial.println ("Conecto");

client.print ("GET /? sismo = 1"); // Trimiteți datele prin GET

client.println ("HTTP / 1.0");

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

}

client.stop ();

client.flush (); }

qaPreVal = qaVal;

}

Puedes descărcați codul în github.com/bettocr/alertasismo

Cod complet:

#include

#include

// QuakeAlarm

#define QUAKEALARM A0

// Variable que mantiene el valor anterior del QuakeAlarm

static int diferencia;

int qaVal = 0;

int qaPreVal = 0; prag int = 10; int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web long ultimaConexion = 0; // Tiempo en milisegundos de la ultima conexiune la serviciu web

// Variabile Ethernet

// Se introduc valorile corespunzătoare MAC, IP local, Puerta de Enlace și Máscara de Red

octet mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; octet ip = {192, 168, 8, 20}; // Direccion IP del Arduino byte server = {192, 168, 8, 11}; // Direcția IP a serverului Client EthernetClient; void setup () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT); // Ethernet Ethernet.begin (mac, ip); // Inicializamos el Ethernet Shield}

bucla nulă () {

qaVal = analogRead (QUAKEALARM);

diferencia = qaPreVal - qaVal;

if ((diferență> 0) și (diferență> = prag) și ((millis () - ultimaConexion)> intervaloTiempo)) {

contador = contador + 1; Serial.print („Sismo!”); Serial.println (contador); ultimaConexion = millis (); if (client.connect (server, 5002)> 0) {Serial.println ("Conecto"); client.print ("GET /? key = 1122334455 & sismo = 1"); // Trimiteți datele pentru GET client.println ("HTTP / 1.0"); client.println ("User-Agent: Arduino 1.0"); } client.stop (); client.flush (); } qaPreVal = qaVal; }

Pasul 3: Código Python

Código Python
Código Python

Este codul esențial creează un serviciu web în portul 5002 del server (yo lo uso en un Raspberry Pi en mi casa), care primește avizul Arduino pentru apoi trimite 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.

Pentru a vă permite să creați în apps.twitter.com o aplicație și obțineți datele Consumer Key (API Key), Consumer Secret (API Secret), Access Token și Access Token Secret. și în funcția tweet schimbă xxxxx-ul pentru valorile respective.

Pueden descarcă codul complet în github.com/bettocr/alertasismo o copiarlo a continuare:

#! / usr / bin / python2.7

# - * - codare: utf-8 - * -

solicitări de import, urllib2, urllib, tweepy

din flacon import Flacon, cerere

din StringIO import StringIO

din datetime import datetime, timedelta

tweet def (mesaj):

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 (status = mensaje)

app = Flask (_ nume_)

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

def sismo ():

încerca:

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

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

t = datetime.now ()

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

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

cu excepția IOError ca eroare: tipăriți „Fallo”

trece

cu excepția excepției ca e:

print "Excepție" + str (e)

trece

returnează „OK”

Pasul 4: Detalii finale

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

Como Pasos adicionales for darle a better image hice lo next

  • Corte la Placa de Circuito justo pentru care intră în spațiul destinat la baterie.
  • Con un mototool hice un hueco en la tapa en la esquina superior dreapta pentru care cablurile intră.
  • Con material termo sensible, puse los 3 cables that van al Arduino for that parezca un solo cable.
  • 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

Recomandat: