Академический Документы
Профессиональный Документы
Культура Документы
2018-II
Analizador de Señales
Sísmicas
Contenido
ÁREA ELECTRÓNICA .................................................................................................................. 4
Sistema embebido local ........................................................................................................ 4
Sistema embebido para internet ........................................................................................... 4
Implementación .................................................................................................................... 4
ÁREA MECÁNICA ....................................................................................................................... 5
Diseño mecánico ................................................................................................................... 5
Implementación del módulo ................................................................................................. 6
ÁREA DE PROGRAMACIÓN ........................................................................................................ 8
Sistema implementado ......................................................................................................... 8
Diagrama de flujo para el sistema ......................................................................................... 9
Programación para el sistema embebido (área local) .......................................................... 11
• C compiler ............................................................................................................... 11
• Matlab ..................................................................................................................... 13
para el sistema embebido (área de internet) ....................................................................... 14
• ¿HTTP para IOT? ...................................................................................................... 14
• Protocolo MQTT: Creación del Servidor por CLOUDMQTT ........................................ 14
• IDE de Arduino para el NodeMCU y ESP8266 (configuración y código) ..................... 20
Programación del Servidor WEB .......................................................................................... 31
• Obteniendo hosting y dominio gratis ....................................................................... 31
• Utilización de Brackets ............................................................................................. 39
• Estructuras de las páginas (Lenguaje HTML) ............................................................. 42
• Diseño estético de las páginas (Lenguaje CSS) .......................................................... 43
• Bondades del FileZilla .............................................................................................. 45
Programación del Proyecto 1: envío de datos para graficarlo online .................................... 48
• Recepción de datos del MQTT (Lenguaje JavaScript) ................................................ 48
• Realización de gráficos (Highcharts) ......................................................................... 49
• Limitantes del Proyecto 1 ........................................................................................ 50
Programación del Proyecto 2: envío de datos para una base de datos y graficarlos ............. 53
• Instalación de WampServer ......................................................................................... 53
• Utilización de phpmyadmin (base de datos en área local) ............................................ 55
• Envió de datos a la base de datos del servidor local (Lenguaje PHP)............................. 56
• Gráficos de los datos desde la base de datos (Highcharts con PHP) .............................. 60
• Ajustes de la configuración de MySQL para la base de datos del servidor Web ............ 64
• Hallando su aceleración por Excel ................................................................................ 66
• Utilización de Matlab para el procesamiento ............................................................... 68
ÁREA ELECTRÓNICA
Implementación
Diseño mecánico
Sistema implementado
• C compiler
Se implementó un código que consistía en recibir la señal muestreada por un
acelerómetro ubicada en nuestro módulo de simulación. Este código nos permitía
obtener la aceleración en X de nuestro acelerómetro para después enviarlo a un
ordenador mediante comunicación serial RS232 y poder comparar la señal simulada con
la señal con la obtenida en el módulo del muestreador.
LIBRERÍA "mpu6050lite.c"
#define W_DATA 0xD0 //REGISTROS NECESARIOS
#define R_DATA 0xD1 //PARA EL MPU6050
#define PWR_MGMT_1 0x6B
#define PWR_MGMT_2 0x6C
#define SMPRT_DIV 0x19
#define CONFIG_R 0x1A
#define GYRO_CONFIG 0x1B
#define ACCEL_CONFIG 0x1C
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
signed int8 A_data[6]; //VARAIBLE DE 8 BITS: AXL, AXH, AYL, AYH, AZL, AZH
signed int8 temp_data[2]; //VARAIBLE DE 8 BITS: TL, TH
signed int8 G_data[6]; //VARAIBLE DE 8 BITS: GXL, GXH, GYL, GYH, GZL, GZH
signed int16 Xa=0,Ya=0,Za=0; //VARIABLES PARA UNIR: AXL y AXH
signed int16 temp=0; //VARIABLES PARA UNIR: TL y TH
signed int16 Xg=0,Yg=0,Zg=0; //VARIABLES PARA UNIR: GXL y GXH
int8 dato=0;
void main(){
delay_ms(2);
mpu6050_init(); //INICILAIZAR EL SENSOR MPU6050
while(TRUE) {
output_high(PIN_B0); //INDICADOR: SE EMPEZÓ A ENVIAR
temp_data[0]=mpu6050_read(0x41);
temp_data[1]=mpu6050_read(0x42);
temp=make16(temp_data[0],temp_data[1]);
temp=temp/340 + 36.53;
}
}
• Matlab
global pos;
global tt;
axes(handles.axes1);
hold on;
Datos=0;
title('DATOS DE ACELERÓMETRO');
xlabel('Tiempo(s)');
ylabel('Posición(X)');
grid off;
Para los proyectos IOT se suele utilizar el protocolo MQTT el cual mediante un WebSocket (el
terminal) es por donde entran y salen tus datos de tu sistema embebido con ESP8266, su
velocidad de envío es inmediata y más depende de tu frecuencia de muestreo, para esto se
utiliza servidores MQTT que a continuación se pasa a detallar la obtención de uno de ellos de
manera gratuita
Haciendo un zoom a mis detalles POR FAVOR NO USAR MIS DATOS, NO LO ESTOY
PIXELEANDO PARA QUE PUEDAN ENTENDER EL USO EN LA PROGRAMACIÓN, GRACIAS.
En la siguiente pestaña (USERS AND ACL) creamos nuestro usuario ESP1 con clave: 12345 y clic
en + Add
Zoom
Teniendo listo ahora podemos recibir y enviar datos por el WebSocket
Para la instalación de la tarjeta primero tener asegurado de tener instalado el Driver CH340 el
mismo driver de Arduino one.
Tener en cuenta que el ip del servidor MQTT lo obtenemos de la siguiente forma desde cmd.
El código es elaborado en el IDE de Arduino con su previa configuración para las tarjetas
Hacemos usos de librerías, creamos las variables con su valor para la configuración de
conexión Wifi y el servidor MQTT
En esta sección nuestro ESP8266 estará en modo cliente ya que se conecta a la red Wifi y no
gobierna en las demás clientes la función reconnect es solo para cuando la conexión cae y
necesita volver a conectar.
En el setup configuramos una entrada digital, establecemos los pines D2 y D1 por defectos en
SDA y SCL respectivamente, también la librería Wire hace uso para la configuración del
acelerómetro MPU6050
Por último, en Clientset Server. Se establece la conexión hacia el servidor MQTT y con su
puerto ya declarado al inicio
Se establece un cliente y luego calculo del ángulo en eje X por el filtro complementario,
permitiendo que utilicemos el acelerómetro y giroscopio para comparar los resultados del
ángulo y así obtener uno muy exacto. La ventaja es que al integrar la velocidad angular por el
giroscopio no se acumule el error.
Para la entrada digital si está en 0 (LOW) enviará un dato cada 500 milisegundo, esto será útil
para el PROYECTO1 que es ver los datos online, tener cuidado que su frecuencia de muestreo
será 2Hz
Cuando está en 1 (HIGH) enviará un paquete de 8 números, pero cada número se esta
muestreando a 25 milisegundo por lo que su frecuencia de muestreo es de 40 Hz
importantísimo la muestrear una señal símica.
Observación:
Si disminuimos más el tiempo de envío hasta menos de 200 milisegundos habrá muchísima
latencia, lo cual origina un problema en el WebSocket, las variables se acumulan y se saturan
originando así que una variable se envíe después de 5 segundos o más
La máxima cantidad de acumular las variables son de a 8 ya que en el WebSocket hay un límite
de tamaño de variable.
Compilación del código y su recepción en el WebSocket:
Para obtener tu hosting y dominio gratis seguir los siguientes pasos de imágenes
Clic en lo verde con letras azules para el envío del mensaje de activación
Y aquí tenemos el hosting creado con un subdominio dentro de online, esto basta para operar
nuestro servidor Web (Solo para tener y ver el desarrollo del proyecto) tener en cuenta que la
transferencia de los datos es por el Servidor MQTT
Recibiremos un correo sobre nuestras contraseñas para esto nos vamos a nuestro correo
En el mensaje bajamos hasta esta sección
LAS CONTRASEÑAS ESTAN DESCUBIERTAS PARA QUE PUEDAN SABER CUANDO LA UTILIZO Y
PARA QUE MOTIVO, POR FAVOR NO USAR MIS DATOS YA QUE ESTROPIARÍA LA PÁGINA
HASTA EL PEOR DE LOS CASOS LA SUSPENSIÓN DE MI CORREO ,GRACIAS
Nos vamos al cpanel.elmejorhosting.online utilizamos el user y pass del Cpanel (Log In):
Obtenemos el Cpanel
Lo importante en el Cpanel es utilizar su gestor ftp (FileZilla) que lo detallaré más adelante y
bases de datos para esto crearemos por medio del MySQL databases
Clic en Crear base de datos
Luego Tenemos
Esta tabla de base de datos será útil para el Proyecto2 que por medio del JavaScript almacenará
la variable que llega al WebSocket y utilizando AJAX esa variable migrará a una variable de PHP
para que luego lo envié a la base de datos de nuestro servidor que se encuentra en Internet
(Hosting)
• Utilización de Brackets
Para la edición de nuestras páginas Web utilizaremos un entorno muy amigable que es
Brackets, este programa soporta los lenguajes de programación que utilizaremos como HTML,
CSS. PHP, y JavaScript.
Es muy potente el programa ya que tienes una vista previa de tu diseño en tiempo real para la
programación HTML, CSS y JavaScript (Para PHP es distinto luego se detallará)
En el index siempre se separa las secciones que se va a utilizar.
Para una mejor configuración del programa de Brackets les dejo el siguiente enlace:
Link: https://www.youtube.com/watch?v=8YNVQ3dO0y4
Los diseños Web se procura ser Responsive ya que es más cómodo para verlo desde celular,
table u otro artefacto con dimensiones distintas.
• Estructuras de las páginas (Lenguaje HTML)
<html> </html> : Esta etiqueta significa el inicio de la página y el cierra de ella misma
todo debe estar dentro de aquella etiqueta
<body> </body> : Esta etiqueta es para englobar todo el contenido de la página Web
<header> </header> : Esta etiqueta es el encabezado que incluye en este caso el nombre de
la universidad y también las opciones a otras paginas
<div> </div> : Esta etiqueta podemos poner cuantas veces queremos e incluir
botones, imágenes, subtítulos u otros
<footer> </footer> : Es para la última parte donde se coloca los derechos Reservados o los
contactos de las redes sociales
Link: https://www.youtube.com/watch?v=RgSWh5jIx2A&t=1355s
• Diseño estético de las páginas (Lenguaje CSS)
Para la vincular con CSS es necesario definir los links donde se ubica el archivo CSS con el
código que se encargará del diseño estético, y además definir las “class” de cada parte, el cual
lo identificará en el código para su respectivo diseño sea imagen, texto u otro
Se presenta al costado el
código CSS el cual es un fin
estético y ordenado de la
página Web:
También se hace un
llamado a la clase como
por ejemplo “contenedor”
el cual tiene algunas
instrucciones como, por
ejemplo:
• margin: auto;
• width: 98%;
• entre otros
Link: https://www.youtube.com/watch?v=RgSWh5jIx2A&t=1355s
• Bondades del FileZilla
Su entorno es:
Su configuración recomendada y también se utiliza el FTP Server Login y password del correo
electrónico
Aquí en esta sección subiremos todos nuestros archivos que deseemos para nuestra proyecto
https://www.youtube.com/watch?v=yQvng5ooBv0&t=439s
Programación del Proyecto 1: envío de datos para graficarlo online
Primero se establece user y pass propios del usuario del servidor MQTT. Luego se observa que
este Script se encarga de establecer funciones para que cuando halla una entrada en el
WebSocket del servidor MQTT se guarde en una variable y poder manipularla. Esto ocurre en
la función onMessageArrived lo guarda en angulo y lo vuelve una variable flotante.
Se hace la configuración con respecto a su Servidor MQTT (verde) y se ejecuta las funciones
Al principio el ESP8266 envía hacia el servidor MQTT las variables a una frecuencia de 2Hz
Luego, El WebSocket lo recibe
Por último en el Servidor Web, en esta página corre un Script de java la cual si hay una entrada
en el WebSocket del servidor MQTT lo guarda en una variable y luego lo grafica.
• Instalación de WampServer
Se hará uso de un servidor local para las pruebas con base de datos y también para evitar la
suspensión del servidor por sobrepasar la cantidad de espacio permitido para esto utilizaremos
WampServer se recomienda usar 3.0.6 ya que aun admite código en mysql, las versiones más
desarrolladas ya no permiten usar el código mysql sino mysqli.
Para que esté operativo se debe tener en cuenta que el programa debe estar de esta forma
ejecutada
Es importantísimo que los archivos que manejan base de datos estén alojados en esa carpeta
ya que el código php para que se ejecute debe estar en la carpeta del servidor como previa
configuración para añadir a la vista previa bastará con seleccionar nuestra carpeta de trabajo y
copiar su link
Y le damos clic a esta vista preliminar para seguir con la programación PHP
Link: https://www.youtube.com/watch?v=m4wtuq-Z5sU&t=652s
• Utilización de phpmyadmin (base de datos en área local)
Para la creación de su base de datos es similar al que hicimos para el servidor luego solo que
ahora será para local para eso nos vamos a phpMyAdmin:
Conectarse a la base de datos es solo darle Continuar (Base de datos local del WampServer)
Hacemos esa configuración
Se sigue lo mismos paso que la base de datos del servidor Web y se debe dejar de esta forma.
Se utiliza estos 2 librerías más de la que ya habían para trasladar una variable de JavaScript a
PHP
• Para el cuadro rojo: Se declara una variable ya que ese se va a encargar de ordenar los datos.
• Para el cuadro amarillo: se obtiene el paquete de variable con 8 datos en el for se encarga de
separar las variables obteniendo 8 datos para ser guardados en variables flotantes
• Para el cuadro verde: Se utiliza la librería de Ajax para trasladar la variable de java a PHP y así
poder ingresarlo a una base de datos.
En el rectángulo
rojo:
• Contenedor es para
utilizar el archivo
Enviobd.php
• La acción
respuesta.php es para
graficar a partir de la
base de datos
• La acción limpiar.php
es para limpiar toda la
base de datos de
manera automática
El archivo Enviobd.php se encuentra como el angulobd variable de javascript pasó a PHP y se
guarda en la base de datos llamado: base_de_datos_sismicos
Solo bastará estar en está pagina para que el script de JavaScript, este siendo ejecutado, esa
variable será guardado en una base de datos.
• Gráficos de los datos desde la base de datos (Highcharts con PHP)
La siguiente función es Tabla se encarga de ordenar los datos en una tabla para poder
copiarlos en una hoja de Excel y así hacer un procesamiento digital de señales
Cuando presiono el botón limpiar se ejecuta la acción limpiar.php que elimina toda la base de
datos y también coloca en 1 al ID esto sirve no almacenar muchos datos
Nota la variable contadora se reinicia a 0 cada vez que actualice la pagina o se vuelva a entrar.
root lmjr_23183534
123456
base_de_datos_sismicos lmjr_23183534_bd_sismo
bd bd
Nota: Un archivo php se ejecuta siempre en su servidor a la que se conecte, por esa razón se
tiene que subir al servidor todos los archivos.
Dar Clic en la pestaña Proyecto2 para ver gráfica (Se desactivará la opción limpiar.php)
Pasando toda la tabla a Excel (Cabe resaltar que una fila del Excel se puede pasar a Matlab)
• Hallando su aceleración por Excel
Para esto tener en cuenta la segunda derivada, en diferencias finitas
𝑦(𝑛) − 2 ∗ 𝑦(𝑛 − 1) + 𝑦(𝑛 − 2)
𝑎=
𝑇2
Para el primer valor:
Observación: Tener en cuenta que el script y el archivo en Excel deben estar en la misma
carpeta