Cov txheej txheem:
- Kauj Ruam 1: Como Colocar Los Cables
- Kauj ruam 2: Código Arduino
- Kauj ruam 3: Código Python
- Kauj ruam 4: Detalles Finales
Video: Alerta Sísmica Temprana: 4 Kauj Ruam (nrog Duab)
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:27
Breve explicación
Durante un sismo se productionn 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.
Muaj cov neeg hnov zoo li 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.
Cov ntaub ntawv siv tau
- 1 Arudino UNO (Tus nqi kwv yees li $ 25 usd)
- 1 Arduino Shield Ehternet (Tus nqi kwv yees $ 24 usd)
- 1 Tswb Tswb (Costo Aprox. $ 30 usd)
- 1 Placa de Circuito impresa para prototipos (Costo Aprox. $ 0.60 usd) o una protoboard
- 3 Cables Jumper de diferentes colores (Costo Aprox. $ 0.30 usd)
- 1 Conector de batería de 9V (Costo Aprox. $ 0.30 usd)
- Cautin y soldadura
Kauj Ruam 1: Como Colocar Los Cables
Para poder hacer nuestro proyecto sin tener que abrir el sensor "Quake Tswb", 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 Tswb" tiene un parlante para emitir una alerta si detecta ondas P, si este parlante suena el voltaje baja, 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 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.
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.
Kauj ruam 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 profundidad luego de la explicación esta el código ua tiav y donde descargarlo.
Para iniciar vamos a incluir las librerías necesarias para poder usar el shield ethernet y el serial.
#suav nrog
#suav nrog
Luego vamos a crear una constante que va a tener el PIN Analógico que vamos a usar
#define QUAKEALARM A0
Seguido definimos las hloov pauv que nos van ayudar al procesamiento de la variación de voltaje y el tiempo para hacer la llamada al servicio web.
zoo li qub sib txawv;
int qaVal = 0; int qaPreVal = 0;
int pib = 10;
int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web
ntev
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 rau poder hacer uso de la tarjeta de liab. También vamos a definir la IP del servidor que recibirá lo datos.
byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte tus ip = {192, 168, 15, 120}; // Direccion IP del Arduino
byte ib
neeg rau zaub mov = {192, 168, 15, 111}; // Direccion IP del servidor
EthernetClient tus thov kev pab;
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 liab.
teeb tsa tsis muaj dab tsi () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT);
Ethernet.begin (mac, ip); // Kev lees paub ntawm Ethernet Shield
}
Y para terminar el programa, ponemos en una función cíclica que rov kho dua voltaje si este es qis dua 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.
void voj () {
qaVal = analogRead (QUAKEALARM); diferencia = qaPreVal - qaVal;
yog ((diferencia> 0) thiab (diferencia> = threshold) thiab ((millis () - ultimaConexion)> intervaloTiempo)) {
tus neeg sib tw = tus neeg sib tw + 1;
Serial.print ("Sismo!");
Serial.println (tus neeg sib tw);
ultimaConexion = millis ();
yog (client.connect (server, 5002)> 0) {
Serial.println ("Conecto");
client.print ("Tau txais /? sismo = 1"); // Enviamos los datos por GET
client.println ("HTTP/1.0");
client.println ("Tus neeg siv-Tus sawv cev: Arduino 1.0");
}
client.stop (); cov.
client.flush (); cov. }
qaPreVal = qaVal;
}
Puedes download el código en github.com/bettocr/alertasismo
Daim ntawv pov thawj:
#suav nrog
#suav nrog
// QuakeAlarm
#define QUAKEALARM A0
// Variable que mantiene el valor anterior del QuakeAlarm
zoo li qub sib txawv;
int qaVal = 0;
int qaPreVal = 0; int pib = 10; int intervaloTiempo = 5000; // Intervalo de tiempo entre dos llamadas al servicio web ntev ultimaConexion = 0; // Tiempo en milisegundos desde la ultima conexion al servicio web
// Variables Ethernet
// Se introducen los valores correspondientes MAC, IP local, Puerta de Enlace y Máscara de Red
byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; byte tus ip = {192, 168, 8, 20}; // Direccion IP del Arduino byte server = {192, 168, 8, 11}; // Direccion IP del servidor EthernetClient tus thov kev pab; teeb tsa tsis muaj dab tsi () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT); // ethernet Ethernet.begin (mac, ip); // Cov ntaub ntawv tiv thaiv Ethernet}
void voj () {
qaVal = analogRead (QUAKEALARM);
diferencia = qaPreVal - qaVal;
yog ((diferencia> 0) thiab (diferencia> = threshold) thiab ((millis () - ultimaConexion)> intervaloTiempo)) {
tus neeg sib tw = tus neeg sib tw + 1; Serial.print ("Sismo!"); Serial.println (tus neeg sib tw); ultimaConexion = millis (); yog (client.connect (server, 5002)> 0) {Serial.println ("Conecto"); client.print ("Tau txais /? qhov tseem ceeb = 1122334455 & sismo = 1"); // Enviamos los datos por GET client.println ("HTTP/1.0"); client.println ("Tus neeg siv-Tus sawv cev: Arduino 1.0"); } client.stop (); client.flush (); cov. } qaPreVal = qaVal; }
Kauj ruam 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 rau 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 respectivos valores.
Pueden download el código completo en github.com/bettocr/alertasismo o copiarlo a continuación:
#!/usr/bin/python2.7
#-*-coding: utf-8-*-
ntshuam thov, urllib2, urllib, tweepy
los ntawm lub raj mis ntshuam Flask, thov
los ntawm StringIO ntshuam StringIO
los ntawm datetime ntshuam datetime, timedelta
def tweet (mensaje):
CONSUMER_KEY = 'xxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxx'
ACCESS_KEY = 'xxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxx'
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 (xwm txheej = mensaje)
app = Flask (_ npe_)
@app.route ("/", cov hau kev = ['GET'])
def sismo (): ua
sim:
sismo = thov.args.get ("sismo")
yog (str (sismo) == "1"):
t = datetime.now ()
hora = t.strftime ("%-Kuv:%M%p")
tweet ("[En Pruebas] Posible sismo en los próximos segundos ("+hora+")")
tshwj tsis yog IOError li yuam kev: luam 'Fallo'
dhau
tsuas yog Kev zam raws li e:
luam "Kev zam"+str (e)
dhau
rov qab "OK"
Kauj ruam 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 la la batería.
- Con un mototool hice un hueco en la tapa en la esquina superior derecha para que los cables entraran.
- Con cov khoom siv lub sijhawm paub tab, siv los 3 cable 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
Pom zoo:
YADPF (YET Lwm Tus Duab Duab Duab): 7 Kauj Ruam (nrog Duab)
YADPF (YET Lwm Tus Duab Duab Duab): Kuv paub qhov no tsis yog khoom tshiab, Kuv paub, Kuv tau pom qee qhov ntawm cov haujlwm no ntawm no, tab sis kuv ib txwm xav tsim kuv tus kheej cov duab thav duab. Txhua daim duab thav duab kuv tau pom yog qhov zoo, tab sis kuv tab tom nrhiav lwm yam, Kuv tab tom nrhiav qhov zoo nkauj tiag tiag
Kev Tsim Qauv Duab Duab/Duab Duab Duab: 4 Kauj Ruam
Kev Tsim Qauv Duab Duab/Duab Duab Duab: Nyob zoo txhua tus, Hauv qhov kev qhia no, Kuv yuav qhia koj cov txheej txheem ntawm yuav ua li cas thiaj tsim 3D qauv siv cov duab digital. Cov txheej txheem hu ua Photogrammetry, tseem hu ua Image-Based Modeling (IBM). Tshwj xeeb, hom txheej txheem no tau siv los rov ua dua
Cov Duab Duab Duab thiab Cov Duab 1: 4 Cov Kauj Ruam (nrog Duab)
Cov Duab Duab Cubes thiab Cov Duab 1: Thaum sim nrog qee cov ntoo ntoo thiab cov duab los qhia, kuv pom ob peb txoj hauv kev los ua cov voos thiab lwm yam duab los ntawm cov khoom siv yooj yim. Los ntawm kev muab cov no los ua Cov Ntawv Qhia, Kuv vam tias yuav txhawb nqa kev ua si thiab kev kawm. Kev hloov pauv ntawm qhov kev qhia no
Yuav Ua Li Cas Thiaj Li Tshem Tawm Lub Computer Nrog Cov Kauj Ruam Yooj Yim thiab Duab: 13 Kauj Ruam (nrog Duab)
Yuav Tsum Tshem Tawm Lub Khoos Phis Tawj Li Cas Nrog Cov Kauj Ruam Yooj Yim thiab Duab: Nov yog cov lus qhia txog yuav ua li cas tshem lub PC. Feem ntau ntawm cov khoom siv yooj yim yog hloov pauv thiab tshem tawm tau yooj yim. Txawm li cas los xij nws yog ib qho tseem ceeb uas koj tau koom nrog nws. Qhov no yuav pab tiv thaiv koj kom tsis txhob poob ib feem, thiab tseem ua rau kev rov ua dua tshiab
Cov Duab Duab Duab Duab, WiFi Txuas - Raspberry Pi: 4 Cov Kauj Ruam (nrog Duab)
Cov Duab Duab Duab Duab, WiFi Txuas - Raspberry Pi: Nov yog txoj hauv kev yooj yim heev thiab tus nqi qis mus rau cov duab thav duab digital - nrog qhov zoo ntawm kev ntxiv /tshem cov duab hla WiFi ntawm 'nyem thiab luag' siv (pub dawb) xa cov ntaub ntawv . Nws tuaj yeem siv tau los ntawm qhov me me £ 4.50 Pi Zero. Koj tseem tuaj yeem hloov pauv