Tabla de contenido:
- Paso 1: Como Colocar Los Cables
- Paso 2: Código Arduino
- Paso 3: Código Python
- Paso 4: Detalles Finales
Video: Alerta Sísmica Temprana .: 4 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Breve explicación
Durante un sismo se producen 3 tipos de ondas la primaria o P que es la importante para este proyecto, viaja 8 y 13 km / s y es registrado 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.
El presente proyecto busca crear un sistema de alerta sísmica temprana en twitter.
Materiales a utilizar
- 1 Arudino UNO (Costo aprox. $ 25usd)
- 1 Arduino Shield Ehternet (Costo Aprox $ 24 usd)
- 1 alarma de terremoto (Costo Aprox. $ 30 usd)
- 1 Placa de Circuito impresa para prototipos (Costo Aprox. $ 0.60 usd) o una protoboard
- Jumper 3 Cables de diferentes colores (Costo Aprox. $ 0.30 usd)
- 1 Conector de batería de 9V (Costo Aprox. $ 0.30 usd)
- Cautin y soldadura
Paso 1: Como Colocar Los Cables
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.
El "Quake Alarm" tiene un parlante para emitir una alerta si detecta ondas P, si este parlante suena el voltaje bajo, por lo que usaremos el Pin A0 para monitorear un cambio en el voltaje.
En el siguiente orden se deben poner los cables:
5v - A0 - Cable 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 y el cable rojo que viene del conector.
una vez los tengamos en este orden soldamos para que la electricidad pase entre ellos.
Importante 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.
Paso 2: Código Arduino
En el Arduino vamos a crear un código que nos va a permitir 2 cosas:
- Leer el voltaje para buscar cambios
- 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 y el serial.
#incluir
#incluir
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 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;
int umbral = 10;
int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web
largo
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 tipo EthernetClient para poder hacer uso de la tarjeta de red. También vamos a definir la IP del servidor que ocurrió lo datos.
byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip = {192, 168, 15, 120}; // Dirección IP del Arduino
byte
servidor = {192, 168, 15, 111}; // Dirección IP del servidor
Cliente EthernetClient;
Ya con las variables, librerías y clases listas podemos iniciar el programa que tendrá nuestro Arduino:
- Incializamos el serial a 57600
- Luego 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.
configuración vacía () {Serial.begin (57600); pinMode (QUAKEALARM, ENTRADA);
Ethernet.begin (mac, ip); // Inicializamos 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". también filtra para que exista un lapso de tiempo de 5 segundos entre un enviado de información y otro.
bucle vacío () {
qaVal = analogRead (QUAKEALARM); diferencia = qaPreVal - qaVal;
if ((diferencia> 0) y (diferencia> = umbral) y ((millis () - ultimaConexion)> intervaloTiempo)) {
contador = contador + 1;
Serial.print ("¡Sismo!");
Serial.println (contador);
ultimaConexion = millis ();
if (client.connect (servidor, 5002)> 0) {
Serial.println ("Conecto");
client.print ("GET /? sismo = 1"); // Enviamos los datos por GET
client.println ("HTTP / 1.0");
client.println ("Usuario-Agente: Arduino 1.0");
}
client.stop ();
cliente.flush (); }
qaPreVal = qaVal;
}
Puedes descargar el código en github.com/bettocr/alertasismo
Código completo:
#incluir
#incluir
// QuakeAlarm
#define QUAKEALARM A0
// Variable que mantiene el valor anterior del QuakeAlarm
static int diferencia;
int qaVal = 0;
int qaPreVal = 0; int umbral = 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
// Variables Ethernet
// Se introducen 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}; // Dirección IP del servidor de bytes Arduino = {192, 168, 8, 11}; // Dirección IP del servidor EthernetClient client; configuración vacía () {Serial.begin (57600); pinMode (QUAKEALARM, ENTRADA); // ethernet Ethernet.begin (mac, ip); // Inicializamos el Ethernet Shield}
bucle vacío () {
qaVal = analogRead (QUAKEALARM);
diferencia = qaPreVal - qaVal;
if ((diferencia> 0) y (diferencia> = umbral) y ((millis () - ultimaConexion)> intervaloTiempo)) {
contador = contador + 1; Serial.print ("¡Sismo!"); Serial.println (contador); ultimaConexion = millis (); if (client.connect (servidor, 5002)> 0) {Serial.println ("Conecto"); client.print ("GET /? key = 1122334455 & sismo = 1"); // Enviamos los datos por GET client.println ("HTTP / 1.0"); client.println ("Usuario-Agente: Arduino 1.0"); } client.stop (); cliente.flush (); } qaPreVal = qaVal; }
Paso 3: 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 un futuro poderlo usar en algún servicio de notificaciones PUSH para móviles.
Para que pueda tuitear deben crear en apps.twitter.com una aplicación 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 propios valores.
Pueden descargar el código completo en github.com/bettocr/alertasismo o copiarlo a continuación:
#! / usr / bin / python2.7
# - * - codificación: utf-8 - * -
solicitudes de importación, urllib2, urllib, tweepy
desde el matraz de importación Matraz, solicitud
desde StringIO importar StringIO
desde datetime import datetime, timedelta
def 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 (estado = mensaje)
app = Frasco (_ nombre_)
@ app.route ("/", métodos = ['OBTENER'])
def sismo ():
tratar:
sismo = request.args.get ("sismo")
si (str (sismo) == "1"):
t = fecha y hora.now ()
hora = t.strftime ("% - I:% M% p")
tweet ("[En Pruebas] Posible sismo en los próximos segundos (" + hora + ")")
excepto IOError como err: imprime 'Fallo'
aprobar
excepto la excepción como e:
imprimir "Excepción" + str (e)
aprobar
devuelve "OK"
Paso 4: Detalles Finales
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.
- Con un mototool hice un hueco en la tapa en la esquina superior derecha para que los cables entraran.
- Con material termo sensible, puse los 3 cables 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 en @SismoTico
Recomendado:
Alerta UD. para un niño con autismo: 7 pasos (con imágenes)
Alerta UD. para un niño con autismo: Ud-Alert, o mejor Undress Alert, pero ¿para qué? Nuestro hijo, Scott, de 13 años, sufre de autismo. No habla y todavía tiene problemas para indicarnos cuándo debe ir al baño. Debido a su comunicación limitada, se quita la ropa
Luz de pista Raspberry PI de alerta temprana con datos de mapas de vuelo: 14 pasos (con imágenes)
Luz de pista de alerta temprana Raspberry PI usando datos de mapas de vuelo: esta lámpara surgió por varias razones, ya que siempre me interesan los aviones que sobrevuelan y durante el verano, los fines de semana, a menudo hay algunos bastante emocionantes volando. Aunque solo sueles escucharlos cuando pasan
Makey Makey - Sistema de alerta temprana para vientos fuertes: 5 pasos
Makey Makey - Sistema de alerta temprana para vientos fuertes: este " sistema de alerta temprana " El desafío de diseño se le daría a un grupo de estudiantes. El objetivo es que un equipo de estudiantes (dos o tres por grupo) diseñe un sistema que advierte a las personas que busquen refugio de los vientos que se están volviendo peligrosos
Alerta de lavadora secadora Arduino - Notificación de inserción al teléfono con Blynk: 5 pasos (con imágenes)
Alerta de lavadora secadora Arduino - Notificación de empuje al teléfono con Blynk: Nuestra lavadora está en el garaje y no podemos escuchar los pitidos que indican que el lavado está completo. Quería encontrar una manera de recibir una notificación, donde sea que estemos en la casa, cuando el ciclo haya terminado. He estado jugando con Arduino, ESP8266 WiFi
Sistema de seguimiento de bicicletas con alerta de hombre muerto con Sigfox: 7 pasos (con imágenes)
Sistema de seguimiento de bicicletas con alerta de hombre muerto con Sigfox: sistema de seguridad para ciclistas con funciones de seguimiento y envío de alertas. En caso de accidente se envía una alarma con posición GPS. La seguridad para los ciclistas es imprescindible, con accidentes de bicicleta de carretera o de montaña ocurren y tan pronto como sea posible emergencia por