Todo Igual 2
Todo Igual 2
FACULTAD DE CIENCIAS
TESIS
PRESENTADA POR:
PIURA – PERÚ
2020
1
UNIVERSIDAD NACIONAL DE PIURA
FACULTAD DE CIENCIAS
___________________________________________
EJECUTOR DE TESIS
_________________________________________
ASESOR
2
DECLARACION JURADA DE AUTENTICIDAD DE TESIS
____________________________________________
DEYVI DICSON AGURTO VALVERDE
DNI: 47221143
3
UNIVERSIDAD NACIONAL DE PIURA
FACULTAD DE CIENCIAS
JURADO EVALUADOR:
PRESIDENTE:
_________________________________________
SECRETARIO:
___________________________________________
VOCAL:
___________________________________________
4
5
DEDICATORIA
A Dios por darme la vida, inteligencia y fortaleza
para afrontar cada obstáculo que se me presentó.
6
AGRADECIMIENTO
A cada persona que decidió apoyarme y que hizo posible en ésta parte de mi vida,
ayudarme a cumplir un objetivo más, a todos ellos muchas gracias.
7
CONTENIDO
ABSTRACT 14
CAPÍTULO 1 15
PLANTEAMIENTO METODOLÓGICO 15
CAPITULO 2 18
MARCO TEORICO 18
8
2.4.1 PRESENTACIÓN 32
2.4.2. LOS COMPONENTES DE LA RASPBERRY PI3 32
2.4.2.1. VISTA DESDE ARRIBA 32
2.4.2.2 VISTA INFERIOR 33
2.4.3. EL SOC DE LA RASPBERRY PI3 33
2.4.3.1. LA CPU DE LA RASPBERRY PI3 34
2.4.3.2. LA GPU DE LA RASPBERRY PI3 34
2.4.4. LOS PUERTOS USB Y ETHERNET DE LA RASPBERRY PI3 36
2.4.5. EL WI-FI Y EL BLUETOOTH DE LA RASPBERRY PI3 38
2.5. SERVIDOR WEB COMPONENTES LAMP ............................................. 40
2.5.1. SERVIDOR HTTP APACHE 41
2.5.2. PHP 43
2.5.3. MY SQL 43
2.5.4. PHPMYADMIN 45
2.6. SENSORES ............................................................................................. 45
2.6.1. SENSOR DE HUMEDAD Y TEMPERATURA DHT11 45
2.6.1.1. ESPECIFICACIONES TECNICAS 47
2.6.1.2. PINES 47
2.6.1.3. ESQUEMA DE CONEXIÓN CON ARDUINO 47
CAPITULO 3 48
MARCO METODOLÓGICO 48
CAPITULO 4 50
RESULTADOS Y DISCUSION 50
9
4.3. CONFIGURACION DEL RASPBERRY PI3 COMO SERVIDOR WEB Y
BASE DE DATOS ........................................................................................... 53
4.3.1. INSTALAR LAMP EN LA RASPBERRY PI3 53
4.3.1.1. INSTALAR APACHE 54
4.3.1.2. INSTALAR PHP 56
4.3.1.3. INSTALAR MySQL 56
4.3.1.4. INSTALAR PHPmyAdmin 57
4.4. PROGRAMACION DEL ARDUINOMEGA2560 ........................................ 58
FIGURAS
11
FIGURA 27. DIAGRAMA GENERAL DEL SISTEMA DE ADQUISICON DE
DATOS INTEGRANDO EL ARDUINOMEGA, MODULO ESP8266 Y
RASPBERRY PI3 (PROPIO) .................................................................... 50
FIGURA 28. DISPOSITIVO INALAMBRICO CON ARDUINOMEGA Y MODULO
ESP8266 (PROPIO) ................................................................................. 52
FIGURA 29. CONEXIÓN ELECTRICA DEL SERVIDOR RASPBERRY PI3
(PROPIO) ................................................................................................. 52
FIGURA 30. LAMP COMPONENTES PARA SERVIDOR WEB (PROPIO) ..... 53
FIGURA 31. PROCEDIMIENTOS DE UN SERVIDOR WEB (PROPIO) .......... 53
FIGURA 32. SOFTWARE NECESARIO PARA SERVIDOR WEB Y DE BASE
DE DATOS (PROPIO) .............................................................................. 54
FIGURA 33.PANTALLA AL INGRESAR EL IP DE LA RASPBERRY PI3
DESPUES DE INSTALAR APACHE (PROPIO)........................................ 55
FIGURA 34. PANTALLA AL INGRESAR 192.168.8.201/INFO.PHP DESPUES
DE INSTALAR PHP (PROPIO) ................................................................. 56
FIGURA 35. PANTALLA AL INGRESAR 192.168.0.201/ PHPMYADMIN
DESPUES DE INSTALAR PHPMYADMIN (PROPIO) .............................. 57
FIGURA 36. DECLARACION DE LIBRERIAS QUE UTILIZARA EL CODIGO
DE PROGRAMA (PROPIO)...................................................................... 58
FIGURA 37. CONFIGURACION INICIAL DEL ARDUINOMEGA Y MODULO
ESP8266, CONEXION CON ROUTER (PROPIO).................................... 58
FIGURA 38. LECTURA DE SENSORES DE HUMEDAD Y TEMPERATURA
(PROPIO) ................................................................................................. 59
FIGURA 39. ENVIO DE DATOS DE SENSORES POR TCP USANDO EL
METODO GET (PROPIO) ........................................................................ 60
FIGURA 40. INGRESO A LA BASE DE DATOS CON
HTTP://192.168.0.201/PHPMYADMIN (PROPIO) .................................... 61
FIGURA 41. BASE DE DATOS "SENSORES" Y TABLA CREADA PARA EL
PROYECTO SE UTILIZA LA TABLA “DATOS” (PROPIO) ....................... 61
FIGURA 42. ESTRUCTURA DE LA TABLA DATOS (PROPIO) ...................... 62
FIGURA 43. CODIGO PHP PARA CONEXION CON BASE DE DATOS PARA
ENVIO DE DATOS DE SENSORES (PROPIO)........................................ 62
FIGURA 44. CONFIGURACION PARA CONEXION CON BASE DE DATOS
(PROPIO) ................................................................................................. 63
FIGURA 45. DATOS GUARDADOS EN LA BASE DE DATOS SENSORES
TABLA DATOS (PROPIO) ........................................................................ 63
FIGURA 46. DATOS GRAFICADOS DE LA BASE DE DATOS “SENSORES”
TABLA “DATOS” - 25 PRIMEROS VALORES (PROPIO) ......................... 64
FIGURA 47. DATOS GRAFICADOS DE LA BASE DE DATOS “SENSORES”
TABLA “DATOS” - 100 PRIMEROS VALORES (PROPIO) ....................... 64
FIGURA 48. INTERFAZ DE ACCESO A BASE DE DATOS (PROPIO)........... 65
FIGURA 49. VISUALIZACION DE DATOS DE SENSOR (PROPIO).............. 65
FIGURA 50. VISUALIZACION DE GRAFICA DE DATOS DE SENSOR
(PROPIO) ................................................................................................. 66
12
RESUMEN
13
ABSTRACT
14
CAPÍTULO 1
PLANTEAMIENTO METODOLÓGICO
1.1. INTRODUCCION
En la Escuela de Ingeniería Electrónica y Telecomunicaciones de la Universidad
Nacional de Piura, no se cuenta con un sistema de adquisición de datos (de
software libre y económico), que sea capaz de recolectar información del medio,
la almacene, tome medidas de acuerdo a los valores capturados y pueda generar
un reporte; además de ser consultado en tiempo real, desde cualquier dispositivo
que cuente con conexión a Internet.
Cuando se trabaja en el área industrial o en el área de la investigación, muchas
veces se requiere estar monitoreando variables externas en un sistema, para
poder actuar sobre él de alguna manera o simplemente para llevar un registro de
los datos capturados, es por ello que en este trabajo se pretende desarrollar un
sistema de adquisición de datos de propósito general para poder visualizar
información en un entorno web y poder almacenarla en una base de datos, para
luego generar un reporte que será de gran utilidad para los procesos que se
desarrollan en estos campos.
Este sistema a desarrollar, no sólo puede utilizarse en el área de la investigación,
sino también en el área tecnológica, ya que puede ser implementado en muchas
partes, adecuando el sistema con los sensores y actuadores necesarios.
Este proyecto permite integrar tecnologías que usualmente se usan de manera
individual, pero al ser unidas dan como resultado el desarrollo de aplicaciones,
que son capaces de capturar, analizar y almacenar datos de variables físicas del
medio, y cuya flexibilidad les permitirá adaptarse y ser usadas en cualquier
entorno que requiera de este tipo de registros.
1.2. DESCRIPCION DE LA REALIDAD PROBLEMÁTICA
15
1.3. FORMULACIÓN DEL PROBLEMA
1.3.1. PROBLEMA GENERAL.
17
CAPITULO 2
MARCO TEORICO
Existen alternativas comerciales que permiten realizar una o todas las fases de
automatización en un solo componente como tarjetas de adquisición de datos o
controladores lógicos programables (PLCs).
En este trabajo se presenta el diseño, construcción y prueba de una tarjeta
programable capaz de realizar las 3 funciones de automatización de un proceso
con la capacidad de trabajar de forma autónoma. Se diseñó y fabricó una tarjeta
de aplicación para la realización de las pruebas de los módulos de:
entradas/salidas digitales, entradas analógicas, potencia para motores,
comunicación con la computadora y memorias EEPROM.
Además de las pruebas funcionales, se diseñaron, construyeron y probaron 3
plantas mecatrónicas con la tarjeta programable. Las 3 plantas son: un robot
móvil seguidor de línea, un modelo a escala de una plataforma de seguimiento
solar y una cámara térmica con temperatura controlada.
Este sistema está diseñado para dar una implementación específica a las
microcomputadoras y microcontroladores que han surgido en los últimos años.
Se pretende utilizarlas para automatizar los métodos de recolección de datos, ya
que existen infinidad de procesos que deben ser monitoreados constantemente
para ubicar alguna falla en los sistemas en cualquier momento, con esto se
impulsa a la utilización de las Tecnologías de la Información y Comunicación
(TIC), que permiten automatizar la medición de variables físicas que puedan
representar datos o información. Los Sistemas de Adquisición de Datos (SAD),
son sistemas automatizados para obtener y almacenar dicha información, así
como alertar al usuario cuando alguna de las variables físicas sobrepasa los
límites o rangos establecidos.
Este trabajo de tesis está pensado y desarrollado de tal manera que cualquier
persona que no sea experto en la materia de ciencias de la computación pueda
utilizar el sistema para la captura y almacenamiento de datos provenientes de
mediciones de variables físicas, tal es el caso de investigadores, técnicos y
profesionistas que tengan el interés de llevar un registro del estudio de
fenómenos físicos de manera automatizada. Debido a lo anterior en el Capítulo
2 “Conceptos principales” se desarrolla una investigación de los conceptos
19
básicos utilizados en este trabajo, tales como; características principales de un
SAD, microcomputadoras y microcontroladores (Arduino y Raspberry-Pi),
incluyendo los elementos externos necesarios para captura y análisis de señales
(transductores) y actuadores responsables de llevar a cabo una acción cuando
el sistema o el usuario lo requiera.
En el capítulo 3 “Desarrollo del proyecto” se explica a detalle cómo se desarrolló
el SAD, incorporando todos los elementos responsables para que el sistema
funcione adecuadamente. Se pretende que el SAD pueda ser replicado por
personas que no tienen conocimientos de la administración de los sistemas
operativos Linux y Windows, debido a esto, se describe paso a paso la
instalación de las herramientas necesarias para desarrollar el SAD en los
sistemas operativos mencionados anteriormente. Cabe destacar que el sistema
que se describe en este capítulo es moldeable, dependiendo de las variables
físicas a medir y los transductores utilizados, es decir un sistema base, o en otros
términos un sistema de propósito general, que es posible modificar de acuerdo
a la señal proveniente de los transductores seleccionados. El sistema es capaz
de alertar al usuario si es que, alguna de las variables sobrepasa los rangos
permitidos, para que el usuario pueda tomar una decisión, que le permita
controlar las variables, además de un relevador que se activa o desactiva
mediante la aplicación web y un motor a pasos que el usuario puede mover a
libertad.
Para aplicar el sistema desarrollado en el trabajo de esta tesis en el Capítulo 4
“Análisis de resultados” se implementó el sistema descrito en el Capítulo 3
“Desarrollo del proyecto”. Para este ejemplo de funcionamiento del sistema se
utilizaron transductores de temperatura y luz, y se midieron variables eléctricas
(voltajes y corrientes) para su estudio.
Por último, en el Capítulo 5 “Conclusiones y trabajo a futuro” se muestran las
conclusiones del trabajo de tesis, así como las posibles mejoras que puede tener
el SAD con base en la investigación realizada y a las nuevas y existentes
tecnologías.
20
2.2. MODULO ESP- 8266
21
2.2.1. MÓDULOS CON ESP8266
El ESP8266 está incluido en una gran variedad de módulos de diferentes formas
y formatos.
22
Tomar en cuenta lo siguiente al usar el módulo:
El ESP8266 se alimenta con 3.3V, ¡no usar 5V!
El ESP8266 NO tiene entradas tolerantes a 5V, así que necesitas
convertir el nivel de las entradas si quieres comunicarte con dispositivos
de 5V.
Durante los periodos de comunicación inalámbrica el ESP8266 puede
necesitar hasta 250mA, por lo que sin una buena fuente de alimentación
el ESP8266 se puede resetear. Si este es el caso utilizar un capacitor en
las entradas de alimentación o una fuente de mayor potencia.
23
2.3.2. MAPEO DE PINES
Microcontrolador ATmega2560.
Voltaje de funcionamiento 5V.
Voltaje de entrada (recomendado) 7-12V.
Voltaje de entrada (limite) 6-20V.
Pines E/S digitales 54 (15 proporcionan salida PWM).
Pines de entrada analógica 16.
Intensidad por pin 40 mA.
Intensidad en pin 3.3V 50 mA.
Memoria Flash 256 KB de las cuales 8 KB las usa el gestor de arranque
(bootloader).
SRAM 8 KB.
EEPROM 4 KB.
Velocidad de reloj 16 MHz.
24
FIGURA 6. DIAGRAMA DE PINES DEL ARDUINO MEGA 2560. (www.robotshop.com)
25
FIGURA 7. DIAGRAMA DE PINES DEL MICROCONTROLADOR MEGA 2560
(www.robotshop.com)
2.3.3 ALIMENTACIÓN
El ARDUINO MEGA puede ser alimentado por la conexión USB o por una fuente
de alimentación externa. El origen de la alimentación es seleccionado
automáticamente. (ATMEL, s.f.)
Las fuentes de alimentación externas (no-USB) pueden ser un transformador o
una batería. El transformador se puede conectar usando un conector macho de
2.1mm con centro positivo en el conector hembra de la placa. Los cables de la
26
batería pueden conectarse a los pines GND y Vin en los conectores de
alimentación (POWER).
La placa puede trabajar con una alimentación externa de entre 6 a 20 voltios. Si
el voltaje suministrado es inferior a 7V el pin de 5V puede proporcionar menos
de 5 Voltios y la placa puede volverse inestable, si se usan más de 12V los
reguladores de voltaje se pueden sobrecalentar y dañar la placa. El rango
recomendado es de 7 a 12 voltios. (ATMEL, s.f.)
Los pines de alimentación son los siguientes:
Cada uno de los 54 pines digitales en el Mega pueden utilizarse como entradas
o salidas usando las funciones pinMode(), digitalWrite(), y digitalRead() . Las E/S
operan a 5 voltios. Cada pin puede proporcionar o recibir una intensidad máxima
de 40mA y tiene una resistencia interna (desconectada por defecto) de 20-
50kOhms. Además, algunos pines tienen funciones especializadas: (ATMEL,
s.f.)
27
SERIE: 0 (RX) y 1 (TX), Serie 1: 19 (RX) y 18 (TX); Serie 2: 17 (RX) y 16
(TX); Serie 3: 15 (RX) y 14 (TX). Usado para recibir (RX) transmitir (TX)
datos a través de puerto serie TTL. Los pines Serie: 0 (RX) y 1 (TX) están
conectados a los pines correspondientes del chip ATmega16U2.
INTERRUPCIONES EXTERNAS: 2 (interrupción 0), 3 (interrupción 1), 18
(interrupción 5), 19 (interrupción 4), 20 (interrupción 3), y 21 (interrupción
2). Estos pines se pueden configurar para lanzar una interrupción en un
valor LOW (0V), en flancos de subida o bajada (cambio de LOW a HIGH
(5V) o viceversa), o en cambios de valor.
PWM: de 2 a 13 y 44 a 46. Proporciona una salida PWM (Pulse Wave
Modulation, modulación de onda por pulsos) de 8 bits de resolución
(valores de 0 a 255) a través de la función analogWrite().
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Estos pines soportan
comunicación SPI utilizando la biblioteca de SPI . Los pines SPI también
se desglosan en la cabecera ICSP, que es físicamente compatible con el
Uno, Duemilanove y Diecimila.
LED: 13. Hay un LED integrado en la placa conectado al pin digital 13,
cuando este pin tiene un valor HIGH(5V) el LED se enciende y cuando
este tiene un valor LOW(0V) este se apaga.
TWI: 20 (SDA) y 21 (SCL) Apoyar la comunicación TWI utilizando la
librería Wire.
El Mega2560 tiene 16 entradas analógicas, cada una de las cuales
proporcionan una resolución de 10 bits (1.024 valores diferentes). Por
defecto se miden desde el tierra a 5 voltios, aunque es posible cambiar la
cota superior de su rango utilizando el pin AREF y función
analogReference ().
Hay unos otros pines en la placa:
AREF. Voltaje de referencia para las entradas analógicas. Usado por
analogReference(). (ATMEL, s.f.)
RESET. Suministrar un valor LOW (0V) para reiniciar el microcontrolador.
Típicamente usado para añadir un botón de reset a los shields que no
dejan acceso a este botón en la placa.
28
2.3.5. COMUNICACIÓN
2.3.6. PROGRAMACIÓN
29
para permitir cargar los sketches con solo apretar un botón del entorno. Dado
que el gestor de arranque tiene un lapso de tiempo para ello, la activación del
DTR y la carga del sketch se coordinan perfectamente.
Esta configuración tiene otras implicaciones. Cuando el Mega2560 se conecta a
un ordenador con Mac OS X o Linux, este reinicia la placa cada vez que se
realiza una conexión desde el software (vía USB). El medio segundo
aproximadamente posterior, el gestor de arranque se ejecutará. A pesar de estar
programado para ignorar datos mal formateados intercepta los primeros bytes
que se envían a la placa justo después de que se abra la conexión. Si un sketch
que se está ejecutando en la placa recibe algún tipo de configuración inicial u
otro tipo de información al inicio del programa, asegúrese de que el software con
el cual se comunica espere un segundo después de abrir la conexión antes de
enviar los datos.
El Mega2560 contiene una pista que puede ser cortada para deshabilitar el auto-
reset. Las terminaciones a cada lado pueden ser soldadas entre ellas para
rehabilitarlo. Están etiquetadas con "RESET-EN". También se puede deshabilitar
el auto-reset conectando una resistencia de 110 Ω desde el pin 5V al pin de reset.
(ATMEL, s.f.)
30
2.3.9. REVISIONES
Pines1.0: Pines SDA y SCL - cerca del pin AREF - y otros dos nuevos
pines colocados cerca del pin de RESET, el IOREF que permite a los
escudos adaptarse a la tensión suministrada desde la placa. En el futuro,
los escudos serán compatibles tanto con la placa que utilice el AVR, que
operan con 5 V como con la placa que utiliza ATSAM3X8E, que opera con
3.3 V. El segundo es un pin no está conectado, que está reservado para
usos futuros.
Circuito de RESET más vigoroso.
ATmega 16U2 sustituye al 8U2. (ATMEL, s.f.)
31
2.4.1 PRESENTACIÓN
32
2.4.2.2 VISTA INFERIOR
33
2.4.3.1. LA CPU DE LA RASPBERRY PI3
La CPU es un modelo de 64 bits, compatible con 32 bits, basado en una
arquitectura ARMv8. Es un microprocesador de cuatro núcleos Cortex A53
que funcionan a 1.2GHz.
Con la introducción de esta CPU la Fundación anunció un rendimiento que
duplicaba el de la Raspberry Pi2 y que era diez veces mejor que el de la
Raspberry Pi original. Las pruebas muestran que, si se usa un único núcleo,
la ganancia es cercana a tres veces. Con el uso de 4 núcleos es cuando la
ganancia se multiplica por 10, incluso más. Sin embargo, es necesario que el
sistema operativo y las aplicaciones gestionen el uso de los 4 núcleos.
(Halfacree, 2018)
34
imágenes bitmap, formadas por puntos (siguiente ejemplo
Bitmap_VS_SVG.svg: Yug, CC BY-SA 2.5). (Halfacree, 2018)
35
Originalmente, la GPU VideoCore no era libre, es decir, que la información
necesaria para su uso no se difundía por Broadcom.
A finales de octubre de 2012, la Fundación Raspberry Pi pone en línea
información correspondiente a la liberación de la pila gráfica de la GPU. De
hecho, en ese momento solo se publicó la capa que permite llamar al programa
binario (no libre) que funciona en la GPU.
El 28 de febrero de 2014, Eben Upton anunció la disponibilidad de la
documentación de la GPU por parte de Broadcom. Se ha liberado la descripción
completa de la GPU, así como las fuentes de los drivers OpenGL. (Halfacree,
2018)
FIGURA 14. PUERTOS USB Y ETHERNET DEL RASPBERRY PI3 (Halfacree, 2018)
Este circuito integrado LAN9514 encierra un hub de 6 puertos USB 2.0. Cuatro
de los puertos USB están conectados físicamente a dos tomas USB dobles de
la Raspberry Pi. Un quinto puerto está conectado en modo interno a un
controlador Ethernet 10/100. El sexto puerto está conectado al SoC BCM2837.
El resumen anterior presenta la organización de la LAN9514. (Halfacree, 2018)
Incluso aquí, se puede discutir la opción de este componente, en el que la unión
Ethernet pasa por un puerto USB de la BCM2837, porque el tráfico de red y la
carga de los puertos USB van a tomar la misma ruta hacia el SoC y causar
eventuales cuellos de botella. De nuevo, es una opción barata que ha permitido,
36
aceptando una posible degradación del rendimiento, mantener el precio de la
tarjeta por debajo de los 35 €. (Halfacree, 2018)
FIGURA 15. PUERTOS USB Y ETHERNET DEL RASPBERRY PI3 - VISTA SUPERIOR
(Halfacree, 2018)
FIGURA 17. BCM43438 WIFI Y BLUETOOTH DEL RASPBERRY PI3 (Halfacree, 2018)
38
FIGURA 18. ANTENA CERAMICA DEL WIFI Y BLUETOOTH DEL RASPBERRY PI3
(Halfacree, 2018)
FIGURA 19. CIRCUITO WIFI Y BLUETOOTH DEL RASPBERRY PI3 (Halfacree, 2018)
39
En esta imagen se reconoce el BCM43438, que es un circuito WL-CSP. Esta
tecnología, empleada en la construcción de los teléfonos móviles, consiste en
utilizar el circuito desnudo, sin protegerlo por una caja. Durante la fabricación,
las bolas de soldadura se colocan directamente en el chip que, en ése
momento, se suelda igual que en el circuito impreso. (Halfacree, 2018)
WL = Wafer-level packaging (empaquetado en el wafer) es una tecnología que
consiste en acondicionar un circuito integrado mientras que todavía está sobre
el wafer, soporte en silicio que se utiliza para la fabricación. Tradicionalmente
se corta el chip y después se deposita en un zócalo antes de que las lengüetas
del zócalo se unan por finos cables al chip. A continuación, se cierra y se sella
el zócalo. Aquí ocurre a la inversa, el circuito se prepara para el montaje
mientras que todavía está en el wafer. (Halfacree, 2018)
CSP = Chip-Scale Package (zócalo del tamaño del chip), implica que el
componente tiene prácticamente el mismo tamaño que el chip. (Halfacree, 2018)
Esta tecnología permite, en el lugar de fabricación del wafer, condicionar,
probar y presentar los componentes en un plazo de tiempo para poder depurar.
Esto permite encadenar en un único lugar toda la cadena de fabricación, desde
el silicio hasta el envío a los clientes. (Halfacree, 2018)
En la imagen anterior se puede ver una ubicación vacía marcada cómo J13.
Podría permitir dotar a la Raspberry Pi de un conector U.FL que permitiera
conectar un cable y una antena a la salida, para aumentar el alcance.
Posiblemente, la Fundación ha renunciado a montar éste conector para ajustarse
a la reglamentación Wi-Fi. (Halfacree, 2018)
El Wi-Fi y el Bluetooth pueden funcionar al mismo tiempo. Por ejemplo, esto
permite ver un vídeo en línea a través de Wi-Fi, enviando el sonido a un altavoz
Bluetooth. (Halfacree, 2018)
40
Linux, el sistema operativo.
Apache, el servidor Web.
MySQL, el gestor de bases de datos.
Perl, PHP o Python, los lenguajes de programación.
42
2.5.2. PHP
2.5.3. MY SQL
43
y una de las más populares en general junto a Oracle y Microsoft SQL Server,
sobre todo para entornos de desarrollo web.
MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por
David Axmark, Allan Larsson y Michael Widenius). MySQL AB fue adquirida por
Sun Microsystems en 2008, y ésta a su vez fue comprada por Oracle Corporation
en 2010, la cual ya era dueña desde 2005 de Innobase Oy, empresa finlandesa
desarrolladora del motor InnoDB para MySQL.
(https://es.wikipedia.org/wiki/MySQL, 2019)
44
2.5.4. PHPMYADMIN
Este proyecto se encuentra vigente desde el año 1998, siendo el mejor evaluado
en la comunidad de descargas de SourceForge.net como la descarga del mes
de diciembre del 2002. Como esta herramienta corre en máquinas con
Servidores Webs y Soporte de PHP y MySQL, la tecnología utilizada ha ido
variando durante su desarrollo. (https://en.wikipedia.org/wiki/PhpMyAdmin,
2019)
2.6. SENSORES
Para probar el funcionamiento del sistema que se propone se utilizara el Sensor DHT11
que mide Humedad y Temperatura que enviara los datos hacia la base de datos
instalada en el RASPBERRY PI3.
45
relacionadas al control automático de temperatura, aire acondicionado,
monitoreo ambiental en agricultura y más.
(https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/,
2019)
46
2.6.1.1. ESPECIFICACIONES TECNICAS
2.6.1.2. PINES
FIGURA 26. CONEXIÓN DEL ARDUINO UNO CON EL SENSOR DHT11 (PROPIO)
47
CAPITULO 3
MARCO METODOLÓGICO
49
CAPITULO 4
RESULTADOS Y DISCUSION
50
El microcomputador RASPBERRY PI3 funciona como SERVIDOR DE BASE DE
DATOS y SERVIDOR WEB para lo cual se ha usado el software APACHE como
servidor WEB, MY SQL COMO base de datos y PHPMYADMIN para la
administración de los datos generados.
El ARDUINOMEGA conectado con el modulo ESP8266 son los dispositivos
inalambricos que se encargan de medir la temperatura, humedad y generan los
datos que se enviaran via WIFI hacia el SERVIDOR para ser almacenados
usando MYSQL.
Para las pruebas respectivas se ha configurado una RED INALAMBRICA WIFI
local, para acceso al servidor de Base de datos (RASPBERRY PI3).
Ha la Base de datos creada se accesa de cualquier dispositvo siempre que se
ingrese el usuario y clave. Se ingresa con http://192.168.8.201/phpmyadmin
El dispositivo basado en el ARDUINOMEGA conectado con el modulo ESP8266
se conectan directamente hacia la base datos, envian las mediciones de
Humedad y Temperatura.
ARDUINOMEGA 2560
MODULO ESP8266
Sensor de humedad DHT11
Fuente de alimentación para Arduino Mega 2560 12v/2A
51
FIGURA 28. DISPOSITIVO INALAMBRICO CON ARDUINOMEGA Y MODULO ESP8266.
(PROPIO)
52
4.3. CONFIGURACION DEL RASPBERRY PI3 COMO SERVIDOR WEB Y
BASE DE DATOS
53
Para la implementación de este proyecto se instalará el APACHE, PHP, MYSQL
Y PHPMYADMID en el minicomputador RASPBERRY PI3 y así poder tener
preparado nuestro servidor.
Para instalar el servidor web Apache, primero tendremos que crear un grupo de
usuarios para el servidor usando los siguientes comandos:
sudo groupadd www-data
sudo usermod -a -G www-data www-data
Instalamos el Apache:
sudo apt-get install apache2
Una vez finalizado, vemos que se ha creado un directorio en /var/www donde se
ubicaran los archivos HTML y PHP del servidor.
Si ponemos en un navegador la dirección IP de la Raspberry Pi3 veremos una
página con la frase It works!. Esto quiere decir que el servidor se ha instalado
correctamente.
54
FIGURA 33.PANTALLA AL INGRESAR EL IP DE LA RASPBERRY PI3 DESPUES DE
INSTALAR APACHE. (PROPIO)
<html>
<head>
<title>PROBANDO</title>
</head>
<body>
<h1>Probando </h1>
<p>hola mundo…..</p>
</body>
</html>
55
4.3.1.2. INSTALAR PHP
El lenguaje de programación PHP sirve para poder crear webs dinámicas.
Procedemos a instalar el lenguaje PHP en la Raspberry PI3:
sudo apt install php php-mbstring
Cuando termine reiniciamos la Raspberry PI3:
sudo reboot
Cuando vuelva a arrancar, vamos a comprobar que efectivamente funciona
correctamente PHP creando este archivo:
sudo nano /var/www/html/info.php
Tenemos que dejarlo así: <?php phpinfo();?>
Volvemos a abrir el navegador e introducimos la IP de la Raspberry PI3 seguido
de /info.php. (192.168.8.201/info.php)
MySQL es una base de datos Open Source que sirve para almacenar datos.
Para su instalación escribimos lo siguiente:
sudo apt install mysql-server php-mysql
Nos pedirá que pongamos una contraseña que nosotros queramos. Al terminar
la instalación, debemos iniciar el MySQL:
sudo service mysql start
56
Para comprobar si se ha instalado correctamente, tenemos que escribir el
siguiente comando poniendo la contraseña que hemos establecido antes en la
instalación de MySQL después de la letra p:
mysql -uroot –Pcontraseña
Si aparece el comando mysql> quiere decir que funciona correctamente. Para
salir pulsamos CTRL+C.
57
4.4. PROGRAMACION DEL ARDUINOMEGA2560
59
FIGURA 39. ENVIO DE DATOS DE SENSORES POR TCP USANDO EL METODO GET
(PROPIO)
60
4.5. CREACION CONFIGURACION DE BASE DATOS USANDO
PHPMYADMIN
Usando PHPMYADMIN se creara la Base de datos con la tabla, para hacer esto
se ingresa a la base de datos del servidor con: http://192.168.8.201/phpmyadmin
usando el usuario root y la clave establecida. (Figura 40)
61
FIGURA 42. ESTRUCTURA DE LA TABLA DATOS (PROPIO)
FIGURA 43. CODIGO PHP PARA CONEXION CON BASE DE DATOS PARA ENVIO DE
DATOS DE SENSORES (PROPIO)
62
FIGURA 44. CONFIGURACION PARA CONEXION CON BASE DE DATOS (PROPIO)
63
FIGURA 46. DATOS GRAFICADOS DE LA BASE DE DATOS “SENSORES” TABLA
“DATOS” – 25 PRIMEROS VALORES (PROPIO)
64
FIGURA 48. INTERFAZ DE ACCESO A BASE DE DATOS (PROPIO)
65
4.6.2. PRUEBA DE GRAFICA DE DATOS EN PAGINA WEB
66
CONCLUSIONES
Se logró realizar la Integración de un sistema de adquisición de datos
mediante el uso de un ARDUINO MEGA, MODULO WIFI ESP8266 Y
RASPBERRY PI 3 como servidor web y base de datos.
Se logró diseñar la arquitectura de todo el sistema basado en ARDUINO
MEGA, MODULO WIFI ESP8266 Y RASPBERRY PI3 como servidor web
y base de datos y se usó el sensor DHT11.
Se logró diseñar el sistema de adquisición de datos basados en el
ARDUINOMEGA2560.
Se logró configurar el módulo ESP8266 para la comunicación vía WIFI
con el RASPBERRY PI3.
Se logró instalar el sistema LAMP (RASPBIAN DE LINUX, APACHE, PHP,
PHPMYADMN) en la RASPBERRY PI3.
Se logró instalar y configurar la minicomputadora RASBERRY PI3 como
servidor WEB y Base de datos.
Se logró levantar la base de datos usando PHPMYADMIN.
Se logró programar el ARDUINO MEGA para la adquisición de datos e
integración con el módulo WIFI ESP8266.
Se logró desarrollar los códigos de programación en lenguaje HTML Y
PHP para la visualización de datos y graficas en páginas WEB, estas
páginas están almacenadas en el Servidor WEB RASPBERRY PI3.
Se logró realizar pruebas al sistema.
67
RECOMENDACIONES
68
BIBLIOGRAFÍA
Aguirre Daza, J. E., & Marquez Farfan, F. J. (26 de Agosto de 2016). Diseño e implementación de un
sistema de supervisión y monitoreo para contenedores Reefer de bajo costo aplicando
tecnologías de la información TI. TESIS. Piura, Piura, Peru: UNIVERSIDAD NACIONAL DE
PIURA.
ATMEL. (s.f.). Obtenido de http://www.atmel.com/devices/atmega32.aspx?tab=documents.(2)
Creus, A. (2013). Instrumentacion Industrial. En A. Creus, Instrumentacion Industrial (8va ed.). Madrid,
España: Alfa y Omega.
Diego José Luis Botia, R. P. (2016). Implementación de un Sistema Domótico Basado en una Plataforma
de Internet de las Cosas. Memorias de la Décima Quinta Conferencia Iberoamericana en
Sistemas, Cibernética e Informática (CISCI 2016). MEDELLIN, COLOMBIA.
EL-KHOURI, N. (2016). ADAPTACION E IMPLEMENTACION DE UN SISTEMA AUTONOMO DE
BAJO COSTE DE LA MONITORIZACION DE LA CALIDAD DEL AGUA EN TIEMPO
REAL. MADRID, ESPAÑA.
Evans, D. (2011). Internet de las cosas Cómo la próxima evolución de Internet lo cambia todo. CISC0.
F.MORENO. (2004). SISTEMA DE CONTROL SUPERVISOR DE LAS CONDICIONES
AMBIENTALES DE UNA BODEGA DE PECES ORNAMENTALES. BOGOTA,
COLOMBIA: TESIS.
Gómez Calidonio, L. A. (2013). Diseño y construcción de un data logger multiparámetro con
comunicación vía internet. TESIS. El Salvador: Universidad de El Salvador.
Guaña Moya, E. J. (9 de Noviembre de 2016). Diseño de una Red de Sensores Inalámbricos (WSN) para
monitorear parámetros relacionados con la agricultura. Tesis. Quito: Escuela Politecnica
Nacional.
Halfacree, G. (2018). Raspberry Pi Beginner’s Guide How to use your new computer. RASPBERRY PI
PRESS.
http://www.comunidadandina.org/pradican.htm. (s.f.). http://www.comunidadandina.org. Obtenido de
http://www.comunidadandina.org/DS/Manual%20Contenedores.pdf
https://en.wikipedia.org/wiki/PhpMyAdmin. (2019). https://en.wikipedia.org/wiki/PhpMyAdmin.
Obtenido de https://en.wikipedia.org/wiki/PhpMyAdmin:
https://en.wikipedia.org/wiki/PhpMyAdmin
https://es.wikipedia.org/wiki/LAMP. (2019). https://es.wikipedia.org/wiki/LAMP. Obtenido de
https://es.wikipedia.org/wiki/LAMP
https://es.wikipedia.org/wiki/MySQL. (2019). https://es.wikipedia.org/wiki/MySQL. Obtenido de
https://es.wikipedia.org/wiki/MySQL: https://es.wikipedia.org/wiki/MySQL
https://es.wikipedia.org/wiki/PHP. (2019). https://es.wikipedia.org/wiki/PHP. Obtenido de
https://es.wikipedia.org/wiki/PHP
https://es.wikipedia.org/wiki/Servidor_HTTP_Apache. (2019).
https://es.wikipedia.org/wiki/Servidor_HTTP_Apache. Obtenido de
https://es.wikipedia.org/wiki/Servidor_HTTP_Apache
https://programarfacil.com/podcast/nodemcu-tutorial-paso-a-paso/. (2018). https://programarfacil.com/.
Obtenido de https://programarfacil.com/podcast/nodemcu-tutorial-paso-a-paso/
https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/. (2019).
https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/. Obtenido de
https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/
Larrea Broch, A. C. (2016). Registrador de datos de bajo coste y acceso remoto. TESIS. VALENCIA,
ESPAÑA: UNIVERSIDAD POLITECNICA DE VALENCIA.
Monter, A. C. (SEPTIEMBRE de 2017). Desarrollo de un sistema de monitorización domiciliaria basado
en la plataforma NodeMCU V3. TESIS. VALENCIA, ESPAÑA: UNIVERSIDA
POLITECNICA DE VALENCIA.
Omar E. Barra Zapata, F. B. (2011). Microcontroladores PIC con Programacion PBP. MADRID:
RAMA.
wikipedia.org. (12 de FEBRERO de 2010). wikipedia.org. Obtenido de wikipedia.org:
https://es.wikipedia.org/wiki/Registrador_de_datos
69
ANEXOS
70
ANEXO 2. CODIGO DE PAGINA PHP (TABLANODOX.PHP)
<html>
<head>
<TITLE>Muestra los resultados de una consulta MySQL.</TITLE>
</head>
<body>
<div align='center'>
DATOS MEDIDOS POR ARDUINOMEGA2560
<table border='1' cellpadding='0' cellspacing='0' width='600' bgcolor='#F6F6F6' bordercolor='#FFFFFF'>
<tr>
<td width='100' style='font-weight: bold'>ID</td>
<td width='100' style='font-weight: bold'>TEMPERATURA</td>
<td width='150' style='font-weight: bold'>HUMEDAD</td>
<td width='200' style='font-weight: bold'>TIEMPO</td>
<td width='10' style='font-weight: bold'></td>
</tr>
<?php
// Se conecta al SGBD
if(!($iden = mysql_connect("localhost", "root", "fbarraz8907")))
die("Error: No se pudo conectar");
</tr>
";
}
// Libera la memoria del resultado
mysql_free_result($resultado);
</html>
71
ANEXO 3. CODIGO DE PAGINA PHP (GRAFICANODOX.PHP)
<?php
function conectarBD(){
$server = "localhost";
$usuario = "root";
$pass = "fbarraz8907";
$BD = "sensores";
//variable que guarda la conexión de la base de datos
$conexion = mysqli_connect($server, $usuario, $pass, $BD);
//Comprobamos si la conexión ha tenido exito
if(!$conexion){
echo 'Ha sucedido un error inexperado en la conexion de la base de datos<br>';
}
//devolvemos el objeto de conexión para usarlo en las consultas
return $conexion;
}
/*Desconectar la conexion a la base de datos*/
function desconectarBD($conexion){
//Cierra la conexión y guarda el estado de la operación en una variable
$close = mysqli_close($conexion);
//Comprobamos si se ha cerrado la conexión correctamente
if(!$close){
echo 'Ha sucedido un error inexperado en la desconexion de la base de datos<br>';
}
//devuelve el estado del cierre de conexión
return $close;
}
$rawdata = array();
//guardamos en un array multidimensional todos los datos de la consulta
$i=0;
while($row = mysqli_fetch_array($result))
{
//guardamos en rawdata todos los vectores/filas que nos devuelve la consulta
$rawdata[$i] = $row;
$i++;
}
//Cerramos la base de datos
desconectarBD($conexion);
//devolvemos rawdata
return $rawdata;
}
//Sentencia SQL
$sql = "SELECT ID,Temperatura,Humedad,Tiempo from datos;";
//Array Multidimensional
$rawdata = getArraySQL($sql);
?>
<HTML>
<BODY>
<meta charset="utf-8">
<!-- Latest compiled and minified JavaScript -->
<script src="https://code.jquery.com/jquery.js"></script>
<!-- Importo el archivo Javascript de Highcharts directamente desde su servidor -->
<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<div id="container">
</div>
<script type='text/javascript'>
$(function () {
$(document).ready(function() {
Highcharts.setOptions({
global: {
useUTC: false
}
72
});
var chart;
$('#container').highcharts({
chart: {
type: 'spline',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
}
}
},
title: {
text: 'Variables Medidas por ARDUINOMEGA2560'
},
xAxis: {
tickPixelInterval: 150
},
yAxis: {
title: {
text: 'Value'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.numberFormat(this.y, 2);
}
},
legend: {
enabled: true
},
exporting: {
enabled: true
},
series: [{
name: 'Temperatura',
color:'#013ADF',
data: (function() {
var data = [];
<?php
for($i = 0 ;$i<count($rawdata);$i++){
?>
data.push([<?php echo $rawdata[$i]["ID"];?>,<?php echo $rawdata[$i]["Temperatura"];?>]);
<?php } ?>
return data;
})()
},{
name: 'Humedad',
color: '#00FF00',
data: (function() {
var data = [];
<?php
for($i = 0 ;$i<count($rawdata);$i++){
?>
data.push([<?php echo $rawdata[$i]["ID"];?>,<?php echo $rawdata[$i]["Humedad"];?>]);
<?php } ?>
return data;
})()
}]
});
});
});
</script>
</html>
73
ANEXO 4. CODIGO DE ARDUINOMEGA2560
#include "DHT.h" // Librería sensores DHT
#include <SoftwareSerial.h>
SoftwareSerial SerialESP8266(19,18); // RX, TX
#define DHTPIN 47 // pin al que hemos conectado el DHT 11
String server = "192.168.0.201";
//variables para enviar al servidor
String cadena="";
DHT dht(DHTPIN, DHT11);
void setup() {
SerialESP8266.begin(9600);
Serial.begin(9600);
SerialESP8266.setTimeout(2000);
dht.begin(); // Inicia el sensor
//Verificamos si el ESP8266 responde
SerialESP8266.println("AT");
if(SerialESP8266.find("OK"))
Serial.println("Respuesta AT correcto");
else
Serial.println("Error en ESP8266");
//------fin de configuracion-------------------
delay(1000);
void loop() {
//--- programa----------------------
74
//otras operaciones
// . . .
boolean fin_respuesta=false;
long tiempo_inicio=millis();
cadena="";
while(fin_respuesta==false)
{
while(SerialESP8266.available()>0)
{
char c=SerialESP8266.read();
Serial.write(c);
cadena.concat(c); //guardamos la respuesta en el string "cadena"
}
//finalizamos si la respuesta es mayor a 500 caracteres
if(cadena.length()>500) //Pueden aumentar si tenen suficiente espacio en la memoria
{
Serial.println("La respuesta a excedido el tamaño maximo");
SerialESP8266.println("AT+CIPCLOSE");
if( SerialESP8266.find("OK"))
Serial.println("Conexion finalizada");
fin_respuesta=true;
}
if((millis()-tiempo_inicio)>10000) //Finalizamos si ya han transcurrido 10 seg
{
Serial.println("Tiempo de espera agotado");
SerialESP8266.println("AT+CIPCLOSE");
if( SerialESP8266.find("OK"))
Serial.println("Conexion finalizada");
fin_respuesta=true;
}
if(cadena.indexOf("CLOSED")>0) //si recibimos un CLOSED significa que ha finalizado la respuesta
{
Serial.println();
Serial.println("Cadena recibida correctamente, conexion finalizada");
fin_respuesta=true;
}
}
75
else
{
Serial.println("No se ha podido enviar HTTP.....");
}
}
}
else
{
Serial.println("No se ha podido conectarse con el servidor");
}
//-------------------------------------------------------------------------------
76
ANEXO 5. ESPECIFICACOINES TECNICAS DEL RASPBERRY PI 3
77
78
79
80
81
82
ANEXO 6. ESPECIFICACOINES TECNICAS DEL ARDUINOMEGA2560
83
84
85
86
87
88
89
ANEXO 7. ESPECIFICACOINES TECNICAS DEL MODULO WIFI ESP8266
90
91
92
93
94
ANEXO 8. ESPECIFICACOINES TECNICAS DEL SENSOR DE HUMEDAD Y
TEMPERTURA
95
96
97
98
99
100
101
102