Índice:
- Etapa 1: Como Colocar Los Cables
- Etapa 2: Código Arduino
- Etapa 3: Código Python
- Etapa 4: Detalles Finais
Vídeo: Alerta Sísmica Temprana .: 4 Passos (com Imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Breve explicación
Durante um sismo se produz 3 tipos de ondas da primaria ou P que é importante para este projeto, viaja entre 8 e 13 km / s e é registrado por los equipos sismógrafos.
Existem sensores caseros, que nos dan um alerta detectando estas ondas P, dándonos unos segundos antes que el sismo suceda.
O presente projeto busca criar um sistema de alerta sísmico temprana no Twitter.
Materiales a utilizar
- 1 Arudino UNO (custo aproximado de $ 25 USD)
- 1 Ehternet Arduino Shield (custo aproximado de $ 24 usd)
- 1 alarme de terremoto (custo aproximado de $ 30 usd)
- 1 Placa de Circuito Impresa para Prototipos (Custo Aprox. $ 0,60 usd) ou um Protoboard
- 3 cabos Jumper de diferentes colores (Costo Aprox. $ 0,30 usd)
- 1 Conector de bateria de 9V (Custo Aprox. $ 0,30 usd)
- Cautin y soldadura
Etapa 1: Como Colocar Los Cables
Para poder hacer novo projeto sem tener que abrir o sensor "Quake Alarm", vamos usar o conector da bateria de 9v do mismo.
El Arduino le cria 5v al sensor con los que va a poder funcionar bien.
O "Alarme de terremoto" tem um parlamento para emitir um alerta si detecta ondas P, se este parlante suena el voltaje baja, por lo que usaremos o Pin A0 para monitorar uma mudança no voltaje.
En el siguiente orden se deben poner los cabos:
5v - A0 - Cabo negro do conector de bateria
Primeiro o cabo de 5V que vai a alimentar o sensor, luego el A0 que vai a monitor o voltaje e finalmente o cabo negro do conector.
Em outra fila conectamos o cabo Negro que vi o Arduino e o cabo vermelho que vi do conector.
una vez los tengamos en este orden soldamos para que la electricidad pase entre ellos.
Importante que ao conectar o conector de 9V ao sensor, o cabo negro passa a ser o positivo e o vermelho o negativo, muito cuidado com isso.
Etapa 2: Código Arduino
En el Arduino vamos criar um código que nos vai permitir 2 cosas:
- Leer el voltaje para buscar câmbio
- Si hay una variación en el voltaje hacer una llamada a un servicio web
Vamos a explicar un poco el código, se não quieres entendrelo a profundidad luego de la explicación este el código completo y donde descargarlo.
Para iniciar, vamos incluir as bibliotecas necesarias para poder usar o escudo ethernet e serial.
#incluir
#incluir
Luego vamos a crear uma constante que va a tener el PIN Analógico que vamos a usar
# define QUAKEALARM A0
Seguido definimos las variables que nos van 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;
limite interno = 10;
intervaloTiempo int = 5000; // Intervalo de tiempo entre dos llamadas al servicio web
grande
ultimaConexion = 0; // Tiempo en milisegundos from la ultima conexion al servicio web
Agora crie as variáveis para o uso da ethernet, faça definições no MAC da tarja de vermelho, o IP que usará esta tarja e a classe de tipo EthernetClient para poder hacer o uso da tarja de vermelho. También vamos definir la IP del servidor que recibirá lo datos.
byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip = {192, 168, 15, 120}; // Direccion IP del Arduino
byte
servidor = {192, 168, 15, 111}; // Direccion IP del servidor
Cliente EthernetClient;
Ya com as variáveis, bibliotecas e listas de classes podemos iniciar o programa que tendrá nuestro Arduino:
- Incializamos el serial a 57600
- Luego le decimos al arduino that el pin A0 (constante QUAKEALARM) lo vamos a usar como un pin de entrada.
- Finalmente iniciamos a tarjeta de tinto.
void setup () {Serial.begin (57600); pinMode (QUAKEALARM, INPUT);
Ethernet.begin (mac, ip); // Inicializamos el Ethernet Shield
}
Y para terminar o programa, ponemos em uma função cíclica que revisar o voltaje si este es inferior a 5v que haga uma llamada al servidor e por meio de GET le manda el valor 1 a la variável "sismo". también filtra para que exista un lapso de tiempo de 5 segundos between un envió de información y otro.
void loop () {
qaVal = analogRead (QUAKEALARM); diferencia = qaPreVal - qaVal;
if ((diferencia> 0) and (diferencia> = threshold) and ((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"); // Enviamos los datos por GET
client.println ("HTTP / 1.0");
client.println ("User-Agent: Arduino 1.0");
}
client.stop ();
client.flush (); }
qaPreVal = qaVal;
}
Puedes descargar el código em github.com/bettocr/alertasismo
Código completo:
#incluir
#incluir
// QuakeAlarm
# define QUAKEALARM A0
// Variável que mantiene el valor anterior del QuakeAlarm
static int diferencia;
int qaVal = 0;
int qaPreVal = 0; limite interno = 10; intervaloTiempo int = 5000; // Intervalo de tiempo entre dos llamadas al servicio web long ultimaConexion = 0; // Tiempo en milisegundos from la ultima conexion al servicio web
// Variáveis 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}; // Servidor de bytes do Direccion IP del Arduino = {192, 168, 8, 11}; // Endereço IP do servidor EthernetClient cliente; 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;
if ((diferencia> 0) and (diferencia> = threshold) and ((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"); // Enviamos los datos por GET client.println ("HTTP / 1.0"); client.println ("User-Agent: Arduino 1.0"); } client.stop (); client.flush (); } qaPreVal = qaVal; }
Etapa 3: Código Python
Este código básicamente criado um serviço web no porto 5002 do servidor (yo lo uso em um Raspberry Pi em minha casa), que recebe o aviso del Arduino para luego enviar um Tuit.
Lo hice de esta manera para poder implementar estadísticas e em um futuro poderlo usar em algún servicio de notificaciones PUSH for mobile.
Para que você possa abrir o deben criar em apps.twitter.com, uma aplicação e obtener os dados Chave do consumidor (chave API), Segredo do consumidor (Segredo API), Token de acesso e Segredo do token de acesso. y en la función tweet cambiar las xxxxx por sus respectivos valores.
Pueden descargar el código completo em github.com/bettocr/alertasismo ou copiarlo a continuação:
#! / usr / bin / python2.7
# - * - codificação: utf-8 - * -
solicitações de importação, urllib2, urllib, tweepy
from flask importar Flask, solicitar
de StringIO import StringIO
from 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 (status = mensaje)
app = Flask (_ name_)
@ app.route ("/", métodos = ['GET'])
def sismo ():
Experimente:
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 + ")")
exceto IOError como err: imprimir 'Fallo'
passar
exceto exceção como e:
imprimir "Exceção" + str (e)
passar
retornar "OK"
Etapa 4: Detalles Finais
Como Pasos adicionales para darle una mejor imagen hice lo siguiente
- Corte la Placa de Circuito justo para que entrara no espaço destinado à bateria.
- Com uma mototool hice un hueco en la tapa en la esquina derecha superior para que los cabos entraran.
- Com material termo sensível, puse os 3 cabos que vão para o Arduino para que parezca um cabo solo.
- Y para poner o arduino no pared, hice a impressão 3D de este mount
Pueden seguir o bot que hice con estos pasos en @SismoTico
Recomendado:
Luz de pista do Raspberry PI de alerta precoce usando dados de mapeamento de vôo: 14 etapas (com imagens)
Luz de pista do Raspberry PI de alerta antecipado usando dados de mapeamento de vôo: Esta lâmpada surgiu por vários motivos, pois estou sempre interessado nos aviões que voam lá em cima e, durante o verão, nos finais de semana, muitas vezes há alguns muito emocionantes voando por aí. Embora você só tenda a ouvi-los enquanto passam
Sistema de alerta de nível de ruído inseguro: 11 etapas (com imagens)
Sistema de alerta de nível de ruído inseguro: O Oshman Engineering Design Kitchen (OEDK) é o maior makerpace da Rice University, oferecendo um espaço para todos os alunos projetarem e prototiparem soluções para desafios do mundo real. Para atender a esse propósito, o OEDK possui uma série de ferramentas elétricas
HaptiGuard - Sistema de alerta lateral: 3 etapas (com imagens)
HaptiGuard - Sideway Warning System: sistema de alerta lateral rápido e sujo como ideia lateral da Personal Photonics do Media Computing Group Aachen, financiado pelo ministério alemão da educação e da ciência. Sempre que algo acontece com você e você não consegue ouvir (ou porque o
Alerta residencial: Arduino + Cloud Messaging em uma tela grande: 14 etapas (com imagens)
Alerta residencial: Arduino + Cloud Messaging em uma tela grande: na era dos telefones celulares, você esperaria que as pessoas respondessem às suas chamadas 24 horas por dia, 7 dias por semana. Ou … não. Quando minha esposa chega em casa, o telefone fica enterrado em sua bolsa de mão ou a bateria acaba. Não temos telefone fixo. Ligando ou
Alerta Arduino Washer Dryer - Notificação push para telefone com Blynk: 5 etapas (com imagens)
Alerta do Arduino Washer Dryer - Push Notification to Phone With Blynk: Nossa máquina de lavar está na garagem e não podemos ouvir os bipes que indicam que a lavagem foi concluída. Eu queria encontrar uma maneira de ser avisado, onde quer que estejamos na casa, quando o ciclo terminasse. Tenho mexido no Arduino, ESP8266 WiFi