Alarma en Red Para La Detección de Vibraciones en Estructuras Mediante La Implementación de...
-
Upload
donaldo-garcia-mendieta -
Category
Documents
-
view
3 -
download
0
description
Transcript of Alarma en Red Para La Detección de Vibraciones en Estructuras Mediante La Implementación de...
Alarma en red para la detección de vibraciones en
estructuras mediante la implementación de
arduino y php
Paulo Andrés Morillo Muñoz
Donaldo García Mendieta
Mateo Flórez Lozano
Universidad de San Buenaventura Bogotá, Colombia
Facultad de ingeniería-Ingeniería de Sonido [email protected]
I. INTRODUCCIÓN
El trabajo muestra cómo se realizó una
alarma en red de detección de vibraciones
para estructuras mediante la
implementación de una página de internet
de servidor local o local host y
programación en arduino. Para esto se
utilizó un dispositivo de medición de
vibraciones (acelerómetro sísmico) el cual
mediante su conexión a la red muestra los
valores medidos para la vibración y así
mismo generar un reporte detallado y un
historial de datos los cuales serán
guardados y almacenados dentro de una
página php.
II. MARCO TEÓRICO
II.I ¿Qué es PHP?
Se conoce php como una herramienta
para la programación de páginas de
internet, es un lenguaje abierto es decir de
software libre y de fácil acceso. Php es un
lenguaje que permite ser trabajado desde
direcciones HTML lo cual lo hace un
lenguaje universal pues muchos portales
web están creados con php.
Entre los rasgos más definidos del
lenguaje php se encuentra la capacidad de
creación de imágenes a partir de datos, en
donde se genera gráficas automáticamente
solo conociendo una serie de datos o
valores de entrada. Es posible la creación
de páginas web con contenidos mucho
más dinámicos además de ofrecer un sin
número de características avanzadas que
permiten a los desarrolladores y
programadores una alta cantidad de
posibilidades. Este lenguaje es fácil de
percibir en una gran cantidad de
dispositivos con sistema operativo
Android, además en dispositivos con
software de compatibilidad como Java,
Linux y Apache.
II.II ¿Qué es una red informática?
Se define como red informática a una
serie de dispositivos conectados entre sí
por medio de de comunicación,
ordenadores equipos informáticos y
dispositivos físicos ya sea un cable, un
módem o un switch de internet, estos
dispositivos conectados envían o reciben
información para así ofrecer recursos y
ofrecer servicios.
II.III ¿Qué es Arduino?
Arduino es un hardware que permite
mediante su aplicación crear programas
los cuales se ejecutan en un medio físico,
su diseño se basa en una placa de metal la
cual posee un micro controlador capaz de
correr los programas que allí se ejecutan,
esta herramienta permite el uso de la
electrónica análoga y digital además de
ser una plataforma libre.
Este hardware presenta dentro de su
estructura una serie de puertos tanto de
entrada como de salida (análogos y
digitales) y requiere una alimentación
para su funcionamiento la cual es
suministrada mediante un puerto USB,
este hardware permite la implementación
de capas de hardware expansibles las
cuales permiten el uso de una mayor
cantidad de puertos y de suplir conectores
de internet para ampliar el rango de
aplicaciones del dispositivo.
III. DESARROLLO
El proyecto se basó en la conexión
mediante una red de comunicación del
arduino y el computador los cuales
estarían conectados a un módem o un
switch de internet, mediante la realización
de esta conexión se busca que tanto el
computador como el arduino estén
conectados a un mismo punto de red, es
decir, que ambos presenten la misma IP y
así mismo poner a funcionar la página
web cargada para el mismo IP a donde se
está conectado.
Este mediante un código realizado para la
captura de los datos en la entrada análoga
del arduino permitiría el envío de estos
datos por red a la página web de local
host y esta página permitiría al usuario la
revisión de estos datos si se superaba un
límite permitido, si este límite llegara a
sobrepasarse la página guardaría los datos
en donde se estaría expuesto a un valor
mayor del permitido generando un
informe detallado y una señal de alarma.
Mediante el código php se programa la
página de internet la cual permite la toma
de 100 datos iniciales o una mayor
cantidad de datos requerida por el
usuario, esta además tomaría x cantidad
de datos en el intervalo de tiempo que el
usuario ingrese. Se muestra la gráfica
de captura de los datos arrojados por el
acelerómetro sísmico en “tiempo real”
permitiendo al usuario un completo
control para la detección de vibraciones
en estructuras, además la página de
internet cuenta con un usuario y una
contraseña la que permite al usuario una
mayor confidencialidad a la hora de
chequear los datos obtenidos en el sensor.
La programación dentro de la página
permite la actualización cada de 3
segundos de los datos captados por el
sensor, es decir que el usuario podría
además revisar los datos medidos en
tiempo real. Se muestra el código que se
programó tanto para el arduino como para
la página php.
De esta manera se obtiene una
herramienta capaz de generar mediante la
conexión en red un informe detallado de
la medición de vibración en estructuras y
así mismo poder con la herramienta
prevenir futuros daños a la estructura y
fomentar puestos de control de
vibraciones en tiempo real.
IV. CONCLUSIONES
Este proyecto permitió aprender el
tipo de entornos en los que se
pueden llegar a desarrollar
distintas conexiones de redes para
aplicarlos al desarrollo de
mediciones u otra aplicación y
monitorización desde un servidor
y pagina web.
III.I Código en Arduino
#include "SPI.h"
#include "Ethernet.h"
#include "sha1.h" #include "mysql.h"
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//Setup for Ethernet Library
IPAddress server_addr(172,16,3,138);
Connector my_conn; // The Connector/Arduino reference char user[] = "mateo";
char password[] = "mateo987";
const char INSERT_DATA[] = "INSERT INTO test_mateo.tablaredes (ID,entrada,fecha) VALUES
(ID,%s,now())";
void setup()
{
Ethernet.begin(mac); Serial.begin(115200);
delay(1000);
Serial.println("Connecting..."); if (my_conn.mysql_connect(server_addr, 3306, user,
password))
{ delay(500);
float value_read = analogRead(A0);
for (int i=0; i <= 100; i++)
{
char query[64];
char temperature[10]; dtostrf(value_read, 1, 1, temperature);
sprintf(query, INSERT_DATA, temperature);
my_conn.cmd_query(query);
delay(100);
value_read =analogRead(A0); Serial.println(value_read);
}
} else
Serial.println("Connection failed.");
}
void loop()
{}
III.II Código PHP
<HTML>
<BODY>
<?php
echo " <br><br><center><h1> ALARMA DE ESTRUCTURAS </h1></center>" ;
if(isset($_POST["enviar_btn"])) {
if ($_POST["clave_txt"]=="server") {
echo "<h1>
BIENVIENIDO</h1><br>".$_POST["nombre_txt"]."<br>";
$tim=time() ; echo date("<br/> D-m-Y
(h:i:s)<br><br> <br><br>",$tim);
echo "<br>"; }
else {
echo "CLAVE INCORRECTA REGRESE Y VERIFIQUE";
break;
} }
else {
echo "nada papá"; break;
}
?>
<?php
$server = "172.16.3.138";
$usuario = "mateo";
$pass = "mateo987";
$BD = "test_mateo";
//variable que guarda la conexión de la base de datos
$conexion= mysql_connect($server, $usuario, $pass, $BD)or
die("No se pudo conectar con el server de BD") ; //echo "estoy conectado a MySQL";
// 2) seleccionar BD con la que se va a trabajar.
mysql_select_db($BD) or die ("mo se ha seleccionado la BD");
//echo "<br>base de datos seleccionada"; //3) crear consulta
$consulta="SELECT*FROM tablaredes";
//4)jecutar consulta mysql_query necesita consulta y conexion
$ejecutar=mysql_query($consulta,$conexion) or
die("No se pudo ejecutar consulta"); //echo "<br>se ejecutó la consulta SQL";
//5) MOstrar resultados dentro de un ciclo y en
una variable se ingresar la función mysql_fetch_array $a=0;
while ($registro=mysql_fetch_array($ejecutar)){
//echo "<br>".$registro["entrada"]." ".$registro["fecha"]."<br>";
//cerrar 1a conexión a la BD
//mysql_close($conexion) or die("ocurrio un error
al cerrar conexión");
//echo " conexión cerrada";
$rawdata[$a][1]=$registro["entrada"]; $rawdata[$a][2]=$registro["fecha"];
$a=$a+1;
}
//nos creamos dos arrays para almacenar el tiempo y el valor
numérico $valoresArray;
$timeArray;
//en un bucle for obtenemos en cada iteración el valor númerico y
//el TIMESTAMP del tiempo y lo almacenamos en los arrays
header("refresh:4;url=http://localhost/ALarma/alarma2.php");
$b=0; for($i = 0 ;$i<count($rawdata);$i++){
$valoresArray[$i]= $rawdata[$i][1];
//OBTENEMOS EL TIMESTAMP $time= $rawdata[$i][2];
$date = new DateTime($time);
// $msj="Buenas Vibras";
//ALMACENAMOS EL TIMESTAMP EN EL ARRAY
$timeArray[$i] = $date->getTimestamp()*1000; if ($rawdata[$i][1] >= 95){
$valorg[$b]= $rawdata[$i][1];
$tiempog[$b]=$time; $consulta="INSERT INTO random2
(valores,tiempos) VALUES ('$valorg[$b]','$tiempog[$b]')";
$ejecutar=mysql_query($consulta,$conexion);
$b=$b+1;
//$msj="corran estructura en riesgo";
} //echo $msj;
}
//print_r ($valorg);
// print_r ($datosa);
?> <div id="contenedor"></div>
<script src="https://code.jquery.com/jquery.js"></script> <!-- Importo el archivo Javascript de Highcharts
directamente desde su servidor -->
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script
src="https://code.highcharts.com/modules/exporting.js"></script>
<script>
chartCPU = new Highcharts.StockChart({
chart: { renderTo: 'contenedor'
//defaultSeriesType: 'spline'
},
rangeSelector : {
enabled: false },
title: {
text: 'Gráfica de Amplitud contra tiempo' },
xAxis: {
type: 'datetime'
//tickPixelInterval: 150,
//maxZoom: 20 * 1000
}, yAxis: {
minPadding: 0.2,
maxPadding: 0.2, title: {
text: 'Velocidad RMS',
margin: 10 }
},
series: [{ name: 'valor',
data: (function() {
// generate an array of random data
var data = [];
<?php for($i = 0 ;$i<count($rawdata);$i++){
?>
data.push([<?php echo $timeArray[$i];?>,<?php echo $valoresArray[$i];?>]);
<?php } ?>
return data; })()
}],
credits: { enabled: false
}
});
</script>
<a href="http://localhost/ALarma/historial.php" target="_blank">Historial</a>
</BODY>
</html>
ANEXOS
Grafica de los datos obtenidos por el acelerómetro.
Tabla de datos de los valores sobrepasados por el umbral.
Ventana de ingreso
Configuración de las bases de datos