Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Breve selgitus
Durante un sismo se producen 3 tipos de ondas la primaria o P que es la importante 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.
Esialgne proyecto busca crear un süsteem de alerta sísmica temprana ja twitter.
Materjalid on utizar
- 1 Arudino UNO (Costo umbes 25 dollarit USD)
- 1 Arduino Shield Ehternet (Costo Aprox 24 USD)
- 1 maavärinahäire (Costo Aprox. 30 USD)
- 1 Placa de Circuito impresa para prototipos (Costo Aprox. 0,60 USA dollarit) või protoboard
- 3 kaablit Jumper de diferentes colores (Costo Aprox. 0,30 USD)
- 1 9V patarei (Costo Aprox. 0,30 USD)
- Cautin y soldadura
Samm: Como Colocar Los kaablid
Kasutage hacer nuestro proyecto sin tener que abrir el sensor "Quake Alarm", mis on tavaliselt kasutusel ja ühendab 9v del mismo akud.
El Arduino le dará 5v al sensor and los cone que va and poder funcionar bien.
El "Quake Alarm" on un parlante para emitir una alerta and detecta ondas P, si este parlante suena el voltaje baja, por lo que usaremos el Pin A0 para monitororear un cambio en el voltaje.
En el siguiente orden se deben poner los kaablid:
5v - A0 - akukaablite kaabel
Esmane 5 V kaabel, mis on alimentaarne andur, luego el A0 que va a monitororear el voltaje y finalmente el Cable negro 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.
Kui oluline on 9 V al -andur, siis kaabel -negro pasa a ser el positivo y el rojo el negativo, mucho cuidado con esto.
2. samm: Código Arduino
En el Arduino vamos a crear un código que nos va a allowir 2 cosas:
- Leer el voltaje para buscar cambios
- Si hay una variación en el voltaje hacer una lalamada and a service web
Vamos a explicar un poco el código, si no quieres entenderlo a profundidad luego de la explicación esta el código complete y donde descargarlo.
Para iniciar vamos a incluir las librerías necesarias para poder usar el shield ethernet y el serial.
#kaasake
#kaasake
Luego vamos a crear una constante que va a tener el PIN Analógico que vamos a usar
#define QUAKEALARM A0
Seguido definimos las variables que nos van a ayudar al processamiento de la variación de voltaje y el tiempo para hacer la llamada al servicio web.
staatiline diferentsiaal;
int qaVal = 0; int qaPreVal = 0;
int lävi = 10;
int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web
pikk
ultimaConexion = 0; // Tiempo en milisegundos desde la ultima conexion al servicio web
Ahora crear las variables para el uso del ethernet, donde definimos el MAC de la tarjeta de red, la IP que usará esta tarjeta y la clase de type EthernetClient for poder hacer uso de la tarjeta de red. También vamos a IPir servidor que recibirá lo datos.
bait mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
bait ip = {192, 168, 15, 120}; // Direccion IP del Arduino
bait
server = {192, 168, 15, 111}; // Direction IP -teenus
EthernetClient klient;
Ya con las muutujad, librerias y clases listas podemos iniciar el program que tendrá nuestro Arduino:
- Incializamos on 57600 seeria
- Loe le decimos al arduino que el pin A0 (Constante QUAKEALARM) lo vamos a usar como un pin de entrada.
- Finalmente iniciamos la tarjeta de red.
void setup () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT);
Ethernet.begin (mac, ip); // Inicializamos el Ethernet Shield
}
Y para terminar el program, ponemos en una función cíclica que revize 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". también filtra para que exista un lapso de tiempo de 5 segundos entre un envió de informationción y otro.
void loop () {
qaVal = analogRead (QUAKEALARM); diferencia = qaPreVal - qaVal;
kui ((diferencia> 0) ja (diferencia> = künnis) ja ((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 ("Kasutajaagent: Arduino 1.0");
}
client.stop ();
client.flush (); }
qaPreVal = qaVal;
}
Puedes descargar el código en github.com/bettocr/alertasismo
Täielik kood:
#kaasake
#kaasake
// QuakeAlarm
#define QUAKEALARM A0
// Variable que mantiene el valor anterior del QuakeAlarm
staatiline diferentsiaal;
int qaVal = 0;
int qaPreVal = 0; int lävi = 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
// Muutujad Ethernet
// Tutvuge los valoresrespondentidega MAC, IP local, Puerta de Enlace y Máscara de Red
bait mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; bait ip = {192, 168, 8, 20}; // Direccion IP del Arduino bait server = {192, 168, 8, 11}; // Direccion IP del servidor EthernetClient klient; void setup () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT); // ethernet Ethernet.begin (mac, ip); // Inicializamos el Ethernet Shield}
void loop () {
qaVal = analogRead (QUAKEALARM);
diferencia = qaPreVal - qaVal;
kui ((diferencia> 0) ja (diferencia> = künnis) ja ((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 /? võti = 1122334455 & sismo = 1"); // Enviamos los datos por GET client.println ("HTTP/1.0"); client.println ("Kasutajaagent: Arduino 1.0"); } client.stop (); client.flush (); } qaPreVal = qaVal; }
3. samm: Código Python
Este código básicamente crea un servicio web en el puerto 5002 del servidor (yo lo uso en un Raspberry Pi en mi casa), que recibe el aviso del Arduino para luego enviar un Tuit.
Lo hice de esta manera para poder implementar estadísticas y en futuro poderlo usar en algún servicio de notificaciones PUSH para móviles.
Para que pueda tuitear deben crear en apps.twitter.com una applica y obtener los datos 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 respectivos valores.
Laadige alla koodide täielik allalaadimine saidil github.com/bettocr/alertasismo või copiarlo a continuación:
#!/usr/bin/python2.7
#-*-kodeerimine: utf-8-*-
imporditaotlused, urllib2, urllib, tweepy
kolvi impordist Kolb, taotlus
StringIO import StringIO
kuupäevast ja ajast impordi kuupäevast, timedelta
tweet (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 (olek = mensaje)
app = kolb (_ nimi_)
@app.route ("/", metoodika = ['GET'])
def sismo ():
proovige:
sismo = request.args.get ("sismo")
kui (str (sismo) == "1"):
t = datetime.now ()
hora = t.strftime ("%-I:%M%p")
tweet ("[En Pruebas] Posible sismo en los próximos segundos ("+hora+")")
välja arvatud IOError kui viga: prindi "Fallo"
üle andma
välja arvatud erand nagu e:
print "Erand"+str (e)
üle andma
tagasta "OK"
4. samm: täpsustage finaalid
Como Pasos nägemused 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.
- Con un mototool hice un hueco en la tapa en la esquina superior derecha para que los cable entraran.
- Materjal on mõistlik, pool los 3 kaablit que van al Arduino para que 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 ja @SismoTico