0% encontró este documento útil (0 votos)
66 vistas102 páginas

Todo Igual 2

Cargado por

Pao JP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
66 vistas102 páginas

Todo Igual 2

Cargado por

Pao JP
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 102

“UNIVERSIDAD NACIONAL DE PIURA”

FACULTAD DE CIENCIAS

ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICA


Y TELECOMUNICACIONES

TESIS

“INTEGRACIÓN DE UN SISTEMA DE ADQUISICIÓN DE DATOS


MEDIANTE EL USO DE UN ARDUINO MEGA Y RASPBERRY PI3
COMO SERVIDOR WEB Y BASE DE DATOS”

PRESENTADA POR:

DEYVI DICSON AGURTO VALVERDE

PARA OPTAR EL TÍTULO PROFESIONAL DE INGENIERO


ELECTRÓNICO Y TELECOMUNICACIONES

LINEA DE INVESTIGACION: INFORMATICA, ELECTRONICA Y TELECOMUNICACIONES

SUB LINEA DE INVESTIGACION: SISTEMAS DIGITALES

PIURA – PERÚ

2020

1
UNIVERSIDAD NACIONAL DE PIURA

FACULTAD DE CIENCIAS

ESCUELA DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES

“INTEGRACIÓN DE UN SISTEMA DE ADQUISICIÓN DE DATOS MEDIANTE EL


USO DE UN ARDUINO MEGA Y RASPBERRY PI3 COMO SERVIDOR WEB Y
BASE DE DATOS”

LINEA DE INVESTIGACION: INFORMATICA, ELECTRONICA Y TELECOMUNICACIONES

SUB LINEA DE INVESTIGACION: SISTEMAS DIGITALES

___________________________________________

Bach. DEYVI DICSON AGURTO VALVERDE

EJECUTOR DE TESIS

_________________________________________

MSc. FRANKLIN BARRA ZAPATA

ASESOR

2
DECLARACION JURADA DE AUTENTICIDAD DE TESIS

Yo, DEYVI DICSON AGURTO VALVERDE, identificado con DNI N° 47221143,


bachiller de la Escuela Profesional de Ingeniería Electrónica y Telecomunicaciones de
la Facultad de Ciencias de la Universidad Nacional de Piura con Domicilio TALARA
ALTA CALLE 3 52 Talara - Piura con celular número 946580931, correo electrónico:
[email protected] ante usted con el debido respeto me
presento y expongo:

DECLARO BAJO JURAMENTO:


Que la tesis que presento es auténtica no siendo copia parcial y total de una tesis
desarrollada y/o realizada en el Perú o el extranjero en caso contrario de encontrar
falsa la información que proporciono me sujeto a los alcances de lo establecido en el
art. N°411 del código penal concordante con el art. N° 27444, y ley del procedimiento
administrativo general y las normas legales de protección a los derechos de autor.
En la Fe de lo cual firmo la presente

Piura 22 Enero del 2021

____________________________________________
DEYVI DICSON AGURTO VALVERDE
DNI: 47221143

3
UNIVERSIDAD NACIONAL DE PIURA

FACULTAD DE CIENCIAS

ESCUELA DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES

“INTEGRACIÓN DE UN SISTEMA DE ADQUISICIÓN DE DATOS MEDIANTE EL


USO DE UN ARDUINO MEGA Y RASPBERRY PI3 COMO SERVIDOR WEB Y
BASE DE DATOS”

LINEA DE INVESTIGACION: INFORMATICA, ELECTRONICA Y TELECOMUNICACIONES

SUB LINEA DE INVESTIGACION: SISTEMAS DIGITALES

JURADO EVALUADOR:

PRESIDENTE:

_________________________________________

MSC. JUAN MANUEL JACINTO SANDOVAL

SECRETARIO:

___________________________________________

ING. EDWIN ARNALDO OCAS INFANTE

VOCAL:

___________________________________________

DR. CALOS ENRIQUE ARELLANO RAMIREZ

4
5
DEDICATORIA
A Dios por darme la vida, inteligencia y fortaleza
para afrontar cada obstáculo que se me presentó.

A mis padres, doña Deysi Valverde Namuche y


don Edwar Fernando Agurto Salvador, por todo el
esfuerzo y sacrificio que hicieron para darme la
oportunidad de realizar mis estudios
universitarios, que con su amor y apoyo moral
hicieron que llegue a cumplir esta meta en mi
vida. MUCHAS GRACIAS.

DEYVI DICSON AGURTO VALVERDE

6
AGRADECIMIENTO

Esta tesis es el resultado de la constancia y sacrificio, del apoyo reunido de aquellas


personas que decidieron aportar en éste logro con su experiencia, tiempo y
conocimientos, ya que han desarrollado un papel importante en este material,
empezando por mi asesor de tesis el Ing. Franklin Barra Zapata a quién agradezco
por su apoyo incondicional, por el tiempo que dispuso para guiarme en mi proyecto
“INTEGRACIÓN DE UN SISTEMA DE ADQUISICIÓN DE DATOS MEDIANTE EL
USO DE UN ARDUINO MEGA Y RASPBERRY PI3 COMO SERVIDOR WEB Y BASE
DE DATOS” A la comisión de evaluación por sus críticas y comentarios constructivos
y acertados durante la elaboración de éste proyecto, por la intervención oportuna para
un mejor resultado del presente trabajo.

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.

DEYVI DICSON AGURTO VALVERDE

7
CONTENIDO
ABSTRACT 14
CAPÍTULO 1 15
PLANTEAMIENTO METODOLÓGICO 15

1.1. INTRODUCCION ...................................................................................... 15

1.2. DESCRIPCION DE LA REALIDAD PROBLEMÁTICA .............................. 15

1.3. FORMULACIÓN DEL PROBLEMA ........................................................... 16


1.3.1. PROBLEMA GENERAL. 16
1.3.2. PROBLEMAS ESPECÍFICOS. 16
1.4. OBJETIVOS DE LA INVESTIGACIÓN ..................................................... 16
1.4.1. OBJETIVO GENERAL. 16
1.4.2 OBJETIVOS ESPECÍFICOS. 16
1.5. HIPÓTESIS GENERAL............................................................................. 17

1.6. JUSTIFICACION DE LA INVESTIGACION .............................................. 17

1.7. IMPORTANCIA DE LA INVESTIGACIÓN ................................................. 17

CAPITULO 2 18
MARCO TEORICO 18

2.1 ANTECEDENTES DE LA INVESTIGACIÓN ............................................. 18

2.2. MODULO ESP- 8266 .............................................................................. 21


2.2.1. MÓDULOS CON ESP8266 22
2.2.2. FIRMWARE PARA EL ESP8266 22
2.2.3. CONEXIONES DEL ESP-01 22
2.3. ARDUINO MEGA 2560 ............................................................................ 23
2.3.1. VISION GENERAL 23
2.3.2. MAPEO DE PINES 24
2.3.3 ALIMENTACIÓN 26
2.3.4 ENTRADAS Y SALIDAS 27
2.3.5. COMUNICACIÓN 29
2.3.6. PROGRAMACIÓN 29
2.3.7. REINICIO AUTOMÁTICO POR SOFTWARE 29
2.3.8. CARACTERÍSTICAS FÍSICAS Y COMPATIBILIDAD DE SHIELDS 30
2.3.9. REVISIONES 31
2.4. LA RASPBERRY PI3 ............................................................................... 31

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

3.1. ENFOQUE Y DISEÑO .............................................................................. 48

3.2. SUJETOS DE LA INVESTIGACIÓN ...................................................... …48

3.3. MÉTODOS Y PROCEDIMIENTOS. .......................................................... 48

3.4. TÉCNICAS E INSTRUMENTOS. .............................................................. 48

3.5. ASPECTOS ÉTICOS ................................................................................ 49

CAPITULO 4 50
RESULTADOS Y DISCUSION 50

4.1 DESCRIPCION GENERAL DEL SISTEMA DE ADQUISICIÓN DE DATOS


MEDIANTE EL USO DE UN ARDUINOMEGA+ESP8266 Y RASPBERRY PI3
COMO SERVIDOR WEB Y BASE DE DATOS. .............................................. 50

4.2. DISPOSITIVO INALAMBRICO PARA MEDICION DE VARIABLES DE


HUMEDAD Y TEMPERTURA ......................................................................... 51
4.2.1. CIRCUITO DE CONEXIÓN DE SERVIDOR WEB Y DE BASE DE DATOS CON
RASPBERRY PI3 52

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

4.5. CREACION CONFIGURACION DE BASE DATOS USANDO


PHPMYADMIN ................................................................................................ 61
4.5.1. CODIGO PHP PARA CONEXIÓN DEL ARDUINOMEGA2560 CON BASE DATOS
EN RASPBERRY PI3 62
4.5.2 PRUEBA DE CONEXIÓN Y ALMACENAMIENTO EN BASE DE DATOS 63
4.5.3 PRUEBA DE CONEXIÓN Y GRAFICAS DE DATOS ALMACENADOS 63
4.6. VISUALIZAR DATOS EN PAGINA WEB .................................................. 64
4.6.1. PRUEBA DE VISUALIZACION DE DATOS EN PAGINA WEB 65
4.6.2. PRUEBA DE GRAFICA DE DATOS EN PAGINA WEB 66
CONCLUSIONES 67
RECOMENDACIONES 68
BIBLIOGRAFÍA 69
ANEXOS 70
ANEXO 1. CODIGO DE PAGINA WEB (INDEX.HTML) 70
ANEXO 2. CODIGO DE PAGINA PHP (TABLANODOX.PHP) 71
ANEXO 3. CODIGO DE PAGINA PHP (GRAFICANODOX.PHP) 72
ANEXO 4. CODIGO DE ARDUINOMEGA2560 74
ANEXO 5. ESPECIFICACOINES TECNICAS DEL RASPBERRY PI 3 77
ANEXO 6. ESPECIFICACOINES TECNICAS DEL ARDUINOMEGA2560 83
ANEXO 7. ESPECIFICACOINES TECNICAS DEL MODULO WIFI ESP8266 90
ANEXO 8. ESPECIFICACOINES TECNICAS DEL SENSOR DE HUMEDAD Y
TEMPERTURA 95

FIGURAS

FIGURA 1. MODULO ESP 8266 ..................................................................... 21


FIGURA 2. VARIEDAD DE MODULOS ESP8266 .........................................222
FIGURA 3. PINES DEL ESP8266 ..................................................................222
10
FIGURA 4. ARDUINO MEGA 2560 (WWW.ROBOTSHOP.COM) ................... 23
FIGURA 5. DISTRIBUCION DE PINES DEL ARDUINO MEGA 2560
(WWW.ROBOTSHOP.COM) ................................................................... 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) ................................................................... 26
FIGURA 8. RASPBERRY PI3 B (HALFACREE, 2018) .................................... 32
FIGURA 9. RASPBERRY PI3 B VISTA DESDE ARRIBA (HALFACREE, 2018)
................................................................................................................. 32
FIGURA 10. RASPBERRY PI3 B VISTA INFERIOR (HALFACREE, 2018) .... 33
FIGURA 11. SOC BCM2837 (HALFACREE, 2018) ........................................ 33
FIGURA 12. GPU DE LA RASPBERRY PI 3 (HALFACREE, 2018) ............... 34
FIGURA 13. IMAGEN BITMAN E IMAGEN POR VECTORES (HALFACREE,
2018) ........................................................................................................ 35
FIGURA 14. PUERTOS USB Y ETHERNET DEL RASPBERRY PI3
(HALFACREE, 2018) ................................................................................ 36
FIGURA 15. PUERTOS USB Y ETHERNET DEL RASPBERRY PI3 - VISTA
SUPERIOR (HALFACREE, 2018) ........................................................... 37
FIGURA 16. PUERTOS USB Y ETHERNET DEL RASPBERRY PI3 - VISTA
LATERAL (HALFACREE, 2018) ............................................................... 37
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) ................................................... 39
FIGURA 19. CIRCUITO WIFI Y BLUETOOTH DEL RASPBERRY PI3
(HALFACREE, 2018) ................................................................................ 39
FIGURA 20. COMPONENTES LAMP DE SERVIDOR WEB
(HTTPS://ES.WIKIPEDIA.ORG/WIKI/LAMP, 2019) .................................. 41
FIGURA 21. LOGO DEL SERVIDOR APACHE
(HTTPS://ES.WIKIPEDIA.ORG/WIKI/SERVIDOR_HTTP_APACHE, 2019)
................................................................................................................. 42
FIGURA 22. LOGO DEL LENGUAJE DE PROGRAMACION PHP
(HTTPS://ES.WIKIPEDIA.ORG/WIKI/PHP, 2019) ..................................... 43
FIGURA 23. LOGO DE MY SQL (HTTPS://ES.WIKIPEDIA.ORG/WIKI/MYSQL,
2019) ........................................................................................................ 44
FIGURA 24. LOGO PHPMYADMIN
(HTTPS://EN.WIKIPEDIA.ORG/WIKI/PHPMYADMIN, 2019) .................... 45
FIGURA 25. SENSOR DE HUMEDAD Y TEMPERATURA DHT11
(HTTPS://WWW.GEEKFACTORY.MX/TUTORIALES/TUTORIALES-
ARDUINO/DHT11-CON-ARDUINO/, 2019) .............................................. 46
FIGURA 26. CONEXIÓN DEL ARDUINO UNO CON EL SENSOR DHT11
(PROPIO) ................................................................................................. 47

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

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. En este proyecto, se pretende realizar la
Integración de un sistema de adquisición de datos mediante el uso de un
ARDUINO MEGA, MODULO WIFI ESP8266 Y RASPBERRY PI3 como servidor
web y base de datos.
En el primer capítulo se describe la problemática y se establece el objetivo
general y los objetivos específicos de la tesis, así como la justificación, los
alcances y los límites de la misma. El segundo capítulo hace referencia al marco
teórico y las definiciones que nos permiten entender desde la base la aplicación
desarrollada. En el tercer capítulo se muestra el Marco Metodológico, en el
cuarto capítulo se muestra el desarrollo del sistema paso a paso tanto en el
diseño del hardware como del software para el ARDUINOMEGA2560 +
MODULO ESP8266, PHP para el RASPBERRY PI3, conexión con la base de
datos MYSQL, como guardar los datos del sensor DHT11 que se utiliza para
comprobar el funcionamiento del sistema, se hace el desarrollo de una página
WEB en HTML y PHP, para mostrar los datos y graficas de los diferentes valores
almacenados en la tabla de la base de datos, al final se muestra las
conclusiones.
PALABRAS CLAVE: ARDUINOMEGA, TEMPERATURA, HUMEDAD, WEB,
LAMP, RASPBERRY PI3, ESP8266, MYSQL, PHPMYADMIN.

13
ABSTRACT

In the School of Electronic Engineering and Telecommunications of the National


University of Piura, there is no data acquisition system (free and economic
software), which is able to collect information from the environment, store it, take
measures according to the captured values and can generate a report; In addition
to being consulted in real time, from any device that has an Internet connection.
When working in the industrial area or in the area of research, it is often required
to be monitoring external variables in a system, to be able to act on it in some
way or simply to keep a record of the captured data, which is why This paper
aims to develop a general purpose data acquisition system to be able to visualize
information in a web environment and be able to store it in a database, and then
generate a report that will be very useful for the processes that are developed in
these fields In this project, it is intended to Integrate a data acquisition system
through the use of an ARDUINO MEGA, WIFI MODULE ESP8266 AND
RASPBERRY PI3 as a web server and database.
The first chapter describes the problem and establishes the general objective and
specific objectives of the thesis, as well as the justification, scope and limits of
the thesis. The second chapter refers to the theoretical framework and the
definitions that allow us to understand from the base the developed application.
The third chapter shows the Methodological Framework, the fourth chapter
shows the development of the step-by-step system in both the hardware and
software design for the ARDUINOMEGA2560 + MODULE ESP8266, PHP for the
RASPBERRY PI3, connection to the base of MYSQL data, such as saving the
data of the DHT11 sensor that is used to check the operation of the system, the
development of a web page in HTML and PHP is done, to show the data and
graphs of the different values stored in the base table of data, in the end the
conclusions are shown.
KEY WORDS: ARDUINOMEGA, TEMPERATURE, HUMIDITY, WEB, LAMP,
RASPBERRY PI3, ESP8266, MYSQL, PHPMYADMIN.

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

El tema del estudio se enfoca en el diseño de un sistema de adquisición de datos


para la Universidad Nacional de Piura que integre el ARDUINO MEGA 2560 +
MODULO ESP8266 con el RASPBERRY PI3 donde se almacenara los datos
obtenidos por el ARDUINOMEGA.

15
1.3. FORMULACIÓN DEL PROBLEMA
1.3.1. PROBLEMA GENERAL.

¿Es posible la integración de un sistema de adquisición de datos mediante el


uso de un ARDUINOMEGA2560+MODULO ESP8266 Y RASPBERRY PI3
como servidor web y base de datos?

1.3.2. PROBLEMAS ESPECÍFICOS.


 ¿Se podrá diseñar Arquitectura de todo el sistema q se propone?
 ¿Se podrá diseñar el sistema de adquisición de datos basados en el
ARDUINOMEGA2560?
 ¿Se podrá Instalar y configurar la minicomputadora RASBERRY PI3
como servidor WEB y Base de datos?
 ¿Se podrá integrar el ARDUINO MEGA con el RASPBERRY PI3?
 ¿Se podrá utilizar el módulo WIFI ESP8266 para comunicar el
ARDUINOMEGA2560 con el RASPBERRY PI3?

1.4. OBJETIVOS DE LA INVESTIGACIÓN

1.4.1. OBJETIVO GENERAL.

Realizar la Integración de un sistema de adquisición de datos mediante el uso


de un ARDUINO MEGA, MODULO WIFI ESP8266 Y RASPBERRY PI3 como
servidor web y base de datos.

1.4.2 OBJETIVOS ESPECÍFICOS.

 Diseñar la arquitectura de todo el sistema que se propone.


 Diseñar sistema de adquisición de datos basados en el
ARDUINOMEGA2560.
 Configurar módulo ESP8266.
 Instalar y configurar la minicomputadora RASBERRY PI3 como
servidor WEB y Base de datos.
 Programar el ARDUINO MEGA para la adquisición de datos.
 Integrar el ARDUINO MEGA con el RASPBERRY PI3 usando el módulo
WIFIESP8266 para la comunicación.
 Realizar pruebas al sistema.
16
1.5. HIPÓTESIS GENERAL

Usando las tecnologías existentes, si es posible la integración de un sistema de


adquisición de datos mediante el uso de un ARDUINO MEGA Y RASPBERRY
PI3 como servidor web y base de datos.

1.6. JUSTIFICACION DE LA INVESTIGACION


Con la implementación y/o integración de un sistema de adquisición de datos
mediante el uso de un ARDUINO MEGA Y RASPBERRY PI3 como servidor web
y base de datos, se cubrirá la necesidad que tiene el mercado, de un adecuado
sistema de adquisición de datos con conexión a un servidor WEB y Base de
datos sin costo elevado.
Durante el desarrollo de esta tesis se aplicarán todos los conocimientos que he
adquirido en las materias electrónica como, microcontroladores, potencia,
telecomunicaciones y teleinformática, donde se podrá comprobar todos los
principios que se estudiaron en las mismas.
Al implementar este sistema, esto será de gran ayuda para que todos los
estudiantes que conforman la Escuela Profesional de Ingeniería Electrónica y
Telecomunicaciones de la Universidad Nacional de Piura, tengan otro enfoque
de lo que es la ingeniería electrónica en este caso particular, aplicada a la
industria de la Telemetría.

1.7. IMPORTANCIA DE LA INVESTIGACIÓN


Esta investigación es muy importante ya que no hay antecedentes de diseño
de un sistema de adquisición de datos mediante el uso de un ARDUINO
MEGA Y RASPBERRY PI3 como servidor web y base de datos en la
Universidad Nacional de Piura, con lo cual contribuye al conocimiento ya que
será de interés para poder aplicarlo en un inicio en la Región de Piura y luego
ampliarlo al país por su bajo costo.

17
CAPITULO 2

MARCO TEORICO

2.1 ANTECEDENTES DE LA INVESTIGACIÓN

A. Según FÉLIX VICENTE JÍMENEZ RÍOS y JOAQUÍN RIVERO JUÁREZ, en


su Tesis titulada “DISEÑO Y CONSTRUCCIÓN DE UNA TARJETA
PROGRAMABLE DE ADQUISICIÓN, PROCESAMIENTO DE DATOS Y
CONTROL”, indica lo siguiente: La automatización industrial se divide en 3
fases: adquisición de datos, procesamiento o tratamiento de la información y
control de elementos actuadores.

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.

B. Según LOJAN HERRERA, CHRISTIAN EMANUEL, en su Tesis titulada


“DISEÑO E IMPLEMENTACIÓN DE UN SERVIDOR WEB EMBEBIDO
BASADO EN UNA ARQUITECTURA RECONFIGURABLE CON FPGAS PARA
EL CONTROL Y MONITOREO DE PERIFÉRICOS”, indica lo siguiente: El
presente trabajo trata del diseño e implementación de un servidor web embebido
en una tarjeta Spartan 3E Starter Kit de Digilent con el propósito de monitoreo y
control de periféricos. El sistema fue diseñado con el método SoC que permite
18
incluir módulos de propiedad intelectual (IPCORES), a manera de
coprocesadores, con funcionalidades como: procesadores, periféricos,
memorias y protocolos. La plataforma de hardware y software fue diseñada y
desarrollada en ISE 11.1 de Xilinx, y está gestionada por el procesador Firmcore
Microblaze para proveer: un servicio de transporte basado en la pila TCP/IP de
bajo peso LWIP, transporte HTTP y funcionalidades de testeo de red. Además,
posee un módulo ADC externo basado en el microcontrolador ATMEGA32. Se
ha desarrollado una interfaz gráfica basada en: HTML, CSS y JS, con
características dinámicas, la misma que mediante métodos y objetos HMTL,
DOM y JS, permite modificar y acceder a recursos específicos del sistema. Por
último, se ha realizado pruebas de estabilidad, conectividad, procesos de carga,
ancho de banda y eficiencia energética del sistema.
C. Según NÚÑEZ RODRÍGUEZ JUAN ALFREDO, en su Tesis titulada
“DISEÑO E INTEGRACIÓN DE UN SISTEMA DE ADQUISICIÓN DE DATOS
MEDIANTE EL USO DE ARDUINO Y RASPBERRY-PI”, indica lo siguiente:

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

EL ESP8266 es un chip que, gracias a la comunidad, sus características y un


gran precio ha logrado convertirse en uno de los adaptadores WIFI más
populares, y es que este chip alberga gran potencia en un pequeño tamaño, tiene
las siguientes características:

 Soporta el protocolo 802.11 b/g/n.


 Capacidad para Wi-Fi Direct (P2P), Soft-AP.
 Tiene integrado el stack del protocolo TCP/IP.
 Tiene un núcleo Diamond Standard Core (LX3) hecho por Tensilica.
 Su núcleo de arquitectura RISC 32bits corre a 80Mhz.
 64KBytes de RAM de instrucciones.
 96KBytes de RAM de datos.
 Tiene GPIOs, I2C, ADC, SPI, PWM, y más:
http://www.esp8266.com/wiki/doku.php?id=feature_set.
 Los módulos cuentan con una memoria flash SPI Winbond
W25Q40BVNIG.
 Los ESP8266 son fabricados por Espressif.
 Los módulos que usan este chip son de varios fabricantes y vienen en
diferentes formatos.

FIGURA 1 MODULO ESP 8266 (https://naylampmechatronics.com/blog/21_Tutorial-


ESP8266-Parte-I.html)

21
2.2.1. MÓDULOS CON ESP8266
El ESP8266 está incluido en una gran variedad de módulos de diferentes formas
y formatos.

FIGURA 2. VARIEDAD DE MODULOS ESP8266


https://naylampmechatronics.com/blog/21_Tutorial-ESP8266-Parte-I.html

2.2.2. FIRMWARE PARA EL ESP8266


El ESP-01 viene inicialmente con el “firmware AT”, con el cual puedes usarlo
como un adaptador wifi-serial, usando un microcontrolador externo como un
Arduino para controlarlo y comunicarse con la red inalámbrica.
Como cualquier microcontrolador se puede cambiar el firmware del ESP8266 y
usar cualquiera de los disponibles, entre los más destacables están, uLUA,
microPython, y hasta programas hechos en Arduino.
2.2.3. CONEXIONES DEL ESP-01
La conexión es bien sencilla solamente se necesita alimentar el módulo, conectar
el pin Rx y Tx serial, y conectar el pin CH_PD a 3.3V para activar el chip.

FIGURA 3. PINES DEL ESP8266 (https://naylampmechatronics.com/blog/21_Tutorial-


ESP8266-Parte-I.html)

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.

2.3. ARDUINO MEGA 2560

La placa ARDUINO MEGA 2560 es la que se muestra en la siguiente Figura 4.

FIGURA 4. ARDUINO MEGA 2560 (www.robotshop.com)

2.3.1. VISION GENERAL

El ARDUINO MEGA 2560 es una placa basada en el microprocesador


Atmega2560. Tiene 54 entradas/salidas digitales (de las cuales 15 pueden
utilizarse para salidas PWM), 16 entradas analógicas, 4 UARTs (puertos serie
por hardware), un oscilador de 16MHz, una conexión USB, entrada de corriente,
conector ICSP y botón de RESET. Contiene todo lo necesario para hacer
funcionar el microcontrolador, simplemente conectarlo a un ordenador con un
cable USB, o alimentarlo con un adaptador de corriente AC a DC para empezar.
MEGA 2560 difiere de todas las placas anteriores ya que no utiliza el chip
controlador de USB a serial FTDI. En su lugar, ofrece el ATMEGA16U2
programado como convertidor USB a serie. (ATMEL, s.f.)

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.

FIGURA 5. DISTRIBUCION DE PINES DEL ARDUINO MEGA 2560 (www.robotshop.com)

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:

 VIN. La entrada de voltaje a la placa ARDUINO cuando se está usando


una fuente externa de alimentación (en contraposición a los 5 voltios de
la conexión USB). Se puede proporcionar voltaje a través de este pin, o,
si se está alimentado a través de la conexión de 2.1mm, acceder a ella a
través de este pin.
 5V. La fuente de voltaje estabilizado usado para alimentar el
microcontrolador y otros componentes de la placa. Esta puede provenir
de VIN a través de un regulador integrado en la placa, o proporcionada
directamente por el USB u otra fuente estabilizada de 5V.
 3.3V Una fuente de voltaje a 3.3 voltios generada en el chip FTDI
integrado en la placa. La corriente máxima soportada 50mA.
 GND. Pines de toma de tierra.
 IOREF. Este pin proporciona la referencia de tensión con la que opera el
microcontrolador. Un shield configurado puede leer el voltaje pin IOREF y
seleccionar la fuente de alimentación adecuada o habilitar traductores de
tensión en las salidas para trabajar con los 5V o 3.3V. (ATMEL, s.f.)

2.3.4 ENTRADAS Y SALIDAS

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

El ARDUINO MEGA2560 tiene una serie de facilidades para la comunicación


con un ordenador, otro ARDUINO, u otros microcontroladores. El ATMEGA2560
proporciona cuatro UART hardware para TTL (5V) de comunicación serie. Un
ATMEGA16U2 canaliza a uno de ellos sobre el USB y proporciona un puerto
com virtual para software al equipo (máquinas de Windows tendrá un archivo .inf,
pero las máquinas OSX y Linux reconocerán la placa automáticamente). El
SOFTWARE DE ARDUINO incluye un monitor serie que permite enviar datos
desde y hacia la placa. Los LEDs RX y TX de la placa parpadearán cuando se
están transmitiendo datos a través de ATmega8U2/ATmega16U2 chip y la
conexión USB al ordenador (pero no para la comunicación serial en los pines 0
y 1).
La biblioteca SoftwareSerial permite la comunicación en serie en cualquiera de
los pines digitales del MEGA2560.
El ATMEGA2560 también soporta TWI y la comunicación SPI. (ATMEL, s.f.)

2.3.6. PROGRAMACIÓN

El ATMEGA2560 en el ARDUINO MEGA viene precargado con un gestor de


arranque (BOOTLOADER) que permite cargar nuevo código sin necesidad de
un programador por hardware externo. Se comunica utilizando el protocolo
STK500 original.
También se puede saltar el gestor de arranque y programar directamente el
microcontrolador a través del puerto ISCP (In Circuit Serial Programming).
(ATMEL, s.f.)

2.3.7. REINICIO AUTOMÁTICO POR SOFTWARE

En vez de necesitar reiniciar presionando físicamente el botón de reset antes de


cargar, el Arduino Mega2560 está diseñado de manera que es posible reiniciar
por software desde el ordenador al que esté conectado. Una de las líneas de
control de flujo (DTR) del ATmega8U2 está conectada a la línea de reinicio del
ATmega2560 a través de un condensador de 100 nanofaradios. Cuando la línea
se pone a LOW (0V), la línea de reinicio también se pone a LOW el tiempo
suficiente para reiniciar el chip. El software de Arduino utiliza esta característica

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.)

2.3.8. CARACTERÍSTICAS FÍSICAS Y COMPATIBILIDAD DE SHIELDS

La longitud y amplitud máxima de la placa Mega2560 es de 4 y 2.1 pulgadas


respectivamente, con el conector USB y la conexión de alimentación
sobresaliendo de estas dimensiones. Tres agujeros para fijación con tornillos
permiten colocar la placa en superficies y cajas.
El Mega está diseñado para ser compatible con la mayoría de shields diseñados
para el Uno, Diecimila o Duemilanove. Pines digitales 0 a 13 (y los pines AREF
y GND adyacentes), las entradas analógicas de 0 a 5, los conectores de
alimentación, y los conectores ICSP están todos ubicados en posiciones
equivalentes. Además, la UART principal (puerto serie) se encuentra en los
mismos pines (0 y 1), al igual que las interrupciones externas 0 y 1 (pines 2 y 3,
respectivamente). SPI está disponible a través de la cabecera ICSP tanto en el
Mega2560 y Duemilanove / Diecimila. (ATMEL, s.f.)

30
2.3.9. REVISIONES

El Mega 2560 no utiliza el chip controlador FTDI USB-a-serie utilizados en los


diseños anteriores. En lugar de ello, se cuenta con el ATmega16U2 (placas
Arduino ATmega8U2 revisión 1 y 2) programado como un convertidor de USB a
serie.
La revisión 2 de la placa Mega 2560 tiene una resistencia que lleva la línea 8U2
HWB a tierra, por lo que es más fácil de poner en modo DFU.
La revisión 3 de la placa ARDUINO y la actual GENUINO MEGA 2560 tienen las
siguientes características mejoradas:

 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.)

2.4. LA RASPBERRY PI3

La Raspberry Pi3 modelo B marca una nueva evolución importante en la serie.


Este modelo está equipado con un SoC de tipo BCM2837. Provisto de cuatro
núcleos, el procesador de 64 bits de la Raspberry Pi3 funciona a 1,2 GHz. Es
el primer modelo de Raspberry PI equipado de un procesador de 64 bits. Los
sistemas operativos disponibles durante la salida de la Raspberry Pi3
funcionaban con 32 bits, pero la posibilidad de utilizar sistemas de 64 bits abre
nuevas posibilidades de desarrollo. (Halfacree, 2018)

31
2.4.1 PRESENTACIÓN

FIGURA 8. RASPBERRY PI3 B (Halfacree, 2018)

El factor de forma es idéntico al resto de modelos anteriores.


2.4.2. LOS COMPONENTES DE LA RASPBERRY PI3

2.4.2.1. VISTA DESDE ARRIBA

FIGURA 9 . RASPBERRY PI3 B VISTA DESDE ARRIBA (Halfacree, 2018)

Los componentes principales de la Raspberry Pi3 están reunidos en la imagen


anterior. Observe sin embargo que la adición de la Wi-Fi a la Raspberry Pi3 ha
implicado mover los LED de estado de un lado al otro del conector DSI. Los
espacios cerrados opacos destinados a los antiguos modelos ya no permiten
observar el estado de los LED. (Halfacree, 2018)

32
2.4.2.2 VISTA INFERIOR

FIGURA 10. RASPBERRY PI3 B VISTA INFERIOR (Halfacree, 2018)

Debajo de la tarjeta Raspberry Pi3 los componentes principales son la


memoria de 1 GB y el conector de tarjeta micro SD. Estos dos elementos
tienen un espesor reducido, inferior a la longitud de las clavijas de la GPIO y
de otros conectores soldados a la tarjeta. (Halfacree, 2018)

2.4.3. EL SOC DE LA RASPBERRY PI3

La Raspberry Pi3 está equipada con un SoC de la familia BCM2837, que


integra todos los periféricos del SoC (bus SPI, I2C…). Este núcleo es la base
de toda la gama de procesadores utilizados sucesivamente en los diferentes
modelos de Raspberry Pi. (Halfacree, 2018)

FIGURA 11. SOC BCM2837 (Halfacree, 2018)

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)

2.4.3.2. LA GPU DE LA RASPBERRY PI3

FIGURA 12 . GPU DE LA RASPBERRY PI3 (Halfacree, 2018)

La GPU es un procesador gráfico VideoCore IV de doble núcleo que funciona


a 400 MHz. Soporta OpenGL ES 2.0 (Open Graphics Library = Librería gráfica
abierta), que es una interfaz que permite a los programas generar objetos en
2D o 3D, en forma de puntos, vectores o polígonos. OpenGL se encarga de
calcular la imagen que se debe mostrar en la pantalla, teniendo en cuenta el
punto de referencia seleccionado, la claridad, textura, reflejos, objetos ocultos
por otros, etc. Muchas aplicaciones usan la norma OpenGL para el cálculo
de imágenes 2D y 3D (CAO-DAO, videojuegos, modelización 3D...).
VideoCore IV también soporta la aceleración de hardware OpenVG.
Diseñada originalmente para los dispositivos móviles, OpenVG deja a la GPU
los cálculos necesarios para la visualización de los diseños vectoriales 2D.
Esto permite crear interfaces en formato SVG (Scalable Vector Graphics =
Gráficos vectoriales redimensionables), que permiten redimensionar una
imagen o una tarjeta, conservando la calidad original, a diferencia de las

34
imágenes bitmap, formadas por puntos (siguiente ejemplo
Bitmap_VS_SVG.svg: Yug, CC BY-SA 2.5). (Halfacree, 2018)

FIGURA 13. IMAGEN BITMAN E IMAGEN POR VECTORES (Halfacree, 2018)

La GPU de la Raspberry Pi3 también decodifica el 1080p30 H.264 high-


profile. High Profile (HiP) es el perfil utilizado para la difusión de la televisión
HD y para el almacenamiento de vídeos en Blu-ray. También puede mostrar
el 1080p H.264 a 60 fps (frames per second = frames por segundo) usando
una decodificación por software. (Halfacree, 2018)
El reloj de la GPU VideoCore IV trabaja a 400 MHz y el nodo de cálculo 3D
funciona a 300 MHz. Las versiones anteriores lo hacían a 250 MHz. Por tanto,
esta nueva versión de la Raspberry Pi implica una aceleración en el
tratamiento de imágenes, que hace más fluida la difusión de los vídeos. La
memoria de la Raspberry Pi3 funciona a 900 MHz, y también participa en la
mejora del rendimiento. (Halfacree, 2018)
La GPU también es capaz de decodificar el formato MPEG-2, utilizado por la
TDT y el DVD. Puede tratar el formato Microsoft VC-1, competencia del H.264,
utilizado en los discos Blu-ray de Sony. El uso de estos dos codec´s se puede
hacer comprando una licencia en el sitio de la Fundación. Hay que introducir
el número de serie del procesador de su Raspberry Pi, porque esta licencia
está relacionada con el procesador de su máquina, de modo que no es
transferible a otra Raspberry Pi. La licencia MPEG-2 cuesta cerca de 3 €. La
licencia VC-1 cuesta 1.50 € (junio de 2016 - variable en función de la evolución
de la libra). (Halfacree, 2018)
También puede gestionar una cámara HD en directo y codificar vídeo. En el
mercado hay tarjetas que convierten una señal HDMI en CSI, para guardar
un vídeo o mostrarlo en la pantalla de la Raspberry Pi. (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)

2.4.4. LOS PUERTOS USB Y ETHERNET DE LA RASPBERRY PI3

En la Raspberry Pi3, el puerto USB del SoC BCM2837 está conectado a un


circuito LAN9514 del fabricante SMSC en lugar de estar conectado directamente
a la toma USB como en la Raspberry Pi Zero. (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)

En la imagen anterior figuran, de abajo hacia arriba y de izquierda a derecha:


la toma Ethernet y los cuatro puertos USB, el circuito LAN9514 y los
componentes utilizados para administrar la corriente necesaria para los
puertos USB. Los LED de estado de la LAN9514 (Link y 100 Mb/s) se sitúan
sobre el conector Ethernet (siguiente imagen). El LED amarillo situado en la
parte inferior izquierda del conector Ethernet indica la velocidad de
transmisión y se enciende para una velocidad de 100 Mb/s. El LED verde, en
la parte inferior derecha del conector Ethernet, se ilumina cuando el enlace
físico es estable y parpadea cuando hay actividad en la red. (Halfacree,
2018)

FIGURA 16. PUERTOS USB Y ETHERNET DEL RASPBERRY PI 3 - VISTA LATERAL


(Halfacree, 2018)

El controlador Ethernet de la LAN9514 ofrece una dirección MAC (Media


Access Control) y una conexión que cumplen las normas IEEE 802.3 en
10BASE-T (10 Mbit/s) y 802.3u en 100BASE-T (100 Mbit/s). La norma 802.3
se conoce generalmente con el nombre de Ethernet. (Halfacree, 2018)
El puerto Ethernet gestiona la auto negociación, la configuración half o full-
dúplex y la auto-MDIX (Medium Dependent Interface Crossover). En otras
palabras, esto significa que es capaz de detectar solo la configuración del
enlace de red que se le conecta y se adapta rápidamente (normalmente en
37
menos de 0.5 segundos). Esto evita que el usuario tenga que administrar el
tipo de unión de red que se debe establecer (switch, PC, router...) y adaptar
el cable Ethernet en consecuencia (cable recto o cruzado). (Halfacree, 2018)
Se soportan muchos métodos de gestión del despertador, como los Magic
Packets (paquetes mágicos), Wake on LAN (despertador en red) y Link Status
Change (cambio de estado de la conexión). Esto puede permitir despertar
una Raspberry Pi desde otra máquina para que ejecute tareas que no
necesitan un funcionamiento permanente de la tarjeta, o cuando la
alimentación de la Raspberry Pi se realiza con baterías o con paneles
solares. (Halfacree, 2018)
La documentación del fabricante indica que el consumo de la LAN9514 es de
solo 180 mA cuando la interfaz Ethernet transfiere los datos en 10BASE-T,
frente a 288 mA en 100BASE-T. Esto puede tener importancia para las
aplicaciones embebidas, donde el consumo de energía es un elemento crítico.
(Halfacree, 2018)
2.4.5. EL WI-FI Y EL BLUETOOTH DE LA RASPBERRY PI3

Con la adopción de un microprocesador de 64 bits, la adición de la conectividad


sin cables es la otra gran novedad de la Raspberry Pi3. (Halfacree, 2018)

FIGURA 17. BCM43438 WIFI Y BLUETOOTH DEL RASPBERRY PI3 (Halfacree, 2018)

El circuito seleccionado por la Fundación para asegurar esta función es el


Broadcom BCM43438. Este circuito, que mide menos de 5 mm x 3 mm, está
implementado en la tarjeta. Es un circuito destinado a los dispositivos móviles,
poco consumidores de energía. Ofrece conectividad Wi-Fi 802.11 b/g/n hasta
150 Mbps, así como Bluetooth 4.1 LE. (Halfacree, 2018)
El circuito funciona a 2.4 GHz. La Fundación ha implementado una antena
cerámica de 2.4 GHZ, compartida entre el Wi-Fi y el Bluetooth (siguiente
imagen). (Halfacree, 2018)

38
FIGURA 18. ANTENA CERAMICA DEL WIFI Y BLUETOOTH DEL RASPBERRY PI3
(Halfacree, 2018)

Esta antena, de dimensiones reducidas, ofrece Bluetooth con un rendimiento


aceptable. Es cercano a 10 m en línea recta. En Wi-Fi, por el contrario, el
alcance obtenido también es de 10 m en campo abierto, lo cual resulta inferior
al rendimiento de una mini llave USB Wi-Fi, habitualmente utilizada hasta 30
m. Además, la antena de dimensiones reducidas de la Raspberry Pi3 es muy
sensible al entorno (carcasa de metal, por ejemplo). La posición de la antena
también influye en la calidad de la unión, el Wi-Fi usa principalmente ondas
polarizadas verticalmente, mientras que la antena de la Raspberry Pi3
polariza las ondas horizontalmente. Situar la Raspberry Pi3 en posición
vertical puede aumentar ligeramente el alcance del W i-Fi. (Halfacree, 2018)
El BCM43438 permite recibir radio FM. La entrada prevista para la
antena FM está en el circuito y no ha sido conectada. (Halfacree, 2018)
Debido al espacio limitado disponible en la tarjeta de la Raspberry Pi y a las
dimensiones limitadas similares a las de una tarjeta de crédito, fue necesario
volver a reacondicionar la implantación de los componentes. Los LED de
estado y sus transistores de control se han movido para dejar sitio al circuito
Wi-Fi/Bluetooth, que ocupa algo más de un centímetro cuadrado (siguiente
imagen). (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)

2.5. SERVIDOR WEB COMPONENTES LAMP

LAMP. Hace referencia a un conjunto de subsistemas de software necesarios


para alcanzar una solución general, en este caso configurar sitios Web o
servidores dinámicos con un esfuerzo reducido.
(https://es.wikipedia.org/wiki/LAMP, 2019)
LAMP es la unión de las siguientes tecnologías:

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.

FIGURA 20. COMPONENTES LAMP DE SERVIDOR WEB


(https://es.wikipedia.org/wiki/LAMP, 2019)

La combinación de estas tecnologías es usada primariamente para definir la infra


estructura de un servidor Web, utilizando un paradigma de programación para el
desarrollo. A pesar de que originalmente estos programas de código abierto no
han sido específicamente diseñados para trabajar entre sí, la combinación se
popularizó debido a su bajo coste de adquisición y ubicuidad de sus
componentes (ya que vienen pre-instalados en la mayoría de las distribuciones
Linux). Cuando son combinados, representan un conjunto de soluciones que
soportan servidores de aplicaciones. (https://es.wikipedia.org/wiki/LAMP, 2019)

2.5.1. SERVIDOR HTTP APACHE

El servidor HTTP Apache es un servidor web HTTP de código abierto, para


plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras,
que implementa el protocolo HTTP/1.1 y la noción de sitio virtual según la
normativa RFC 2616. Cuando comenzó su desarrollo en 1995 se basó
inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue
reescrito por completo. Su nombre se debe a que alguien quería que tuviese la
connotación de algo que es firme y enérgico, pero no agresivo, y la tribu Apache
fue la última en rendirse al que pronto se convertiría en gobierno de Estados
Unidos, y en esos momentos la preocupación de su grupo era que llegasen las
empresas y "civilizasen" el paisaje que habían creado los primeros ingenieros de
internet. Además, Apache consistía solamente en un conjunto de parches a
41
aplicar al servidor de NCSA. En inglés, a patchy server (un servidor "parcheado")
suena igual que Apache Server.
(https://es.wikipedia.org/wiki/Servidor_HTTP_Apache, 2019)
El servidor Apache es desarrollado y mantenido por una comunidad de usuarios
bajo la supervisión de la Apache Software Foundation dentro del proyecto HTTP
Server (httpd). (https://es.wikipedia.org/wiki/Servidor_HTTP_Apache, 2019)
Apache presenta entre otras características altamente configurables, bases de
datos de autenticación y negociado de contenido, pero fue criticado por la falta
de una interfaz gráfica que ayude en su configuración.
Apache tiene amplia aceptación en la red: desde 1996, Apache es el servidor
HTTP más usado. Jugó un papel fundamental en el desarrollo de la World Wide
Web y alcanzó su máxima cuota de mercado en 2005, siendo el servidor
empleado en el 70% de los sitios web en el mundo. Sin embargo, ha sufrido un
descenso en su cuota de mercado en los últimos años (estadísticas históricas y
de uso diario proporcionadas por Netcraft2). En 2009, se convirtió en el primer
servidor web que alojó más de 100 millones de sitios web.
La mayoría de las vulnerabilidades de la seguridad descubiertas y resueltas tan
sólo pueden ser aprovechadas por usuarios locales y no remotamente. Sin
embargo, algunas se pueden accionar remotamente en ciertas situaciones, o
explotar por los usuarios locales maliciosos en las disposiciones de recibimiento
compartidas que utilizan PHP como módulo de Apache.
(https://es.wikipedia.org/wiki/Servidor_HTTP_Apache, 2019)

FIGURA 21. LOGO DEL SERVIDOR APACHE


(https://es.wikipedia.org/wiki/Servidor_HTTP_Apache, 2019)

42
2.5.2. PHP

PHP, acrónimo recursivo en inglés de PHP: Hypertext Preprocessor


(preprocesador de hipertexto), es un lenguaje de programación de propósito
general de código del lado del servidor originalmente diseñado para el desarrollo
web de contenido dinámico. Fue uno de los primeros lenguajes de programación
del lado del servidor que se podían incorporar directamente en un documento
HTML en lugar de llamar a un archivo externo que procese los datos. El código
es interpretado por un servidor web con un módulo de procesador de PHP que
genera el HTML resultante.
PHP ha evolucionado por lo que ahora incluye también una interfaz de línea de
comandos que puede ser usada en aplicaciones gráficas independientes. Puede
ser usado en la mayoría de los servidores web al igual que en muchos sistemas
operativos y plataformas sin ningún costo. (https://es.wikipedia.org/wiki/PHP,
2019)

FIGURA 22. LOGO DEL LENGUAJE DE PROGRAMACION PHP


(https://es.wikipedia.org/wiki/PHP, 2019)

Fue creado originalmente por Rasmus Lerdorf en el año 1995. Actualmente el


lenguaje sigue siendo desarrollado con nuevas funciones por el grupo PHP.2
Este lenguaje forma parte del software libre publicado bajo la licencia PHPv3_01,
es una licencia Open Source validada por Open Source Initiative. La licencia de
PHP es del estilo de licencias BSD, esta licencia no tiene restricciones de
copyleft asociadas con GPL. (https://es.wikipedia.org/wiki/PHP, 2019)

2.5.3. MY SQL

MySQL es un sistema de gestión de bases de datos relacional desarrollado bajo


licencia dual: Licencia pública general/Licencia comercial por Oracle Corporation
y está considerada como la base datos de código abierto más popular del mundo,

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)

FIGURA 23. LOGO DE MY SQL (https://es.wikipedia.org/wiki/MySQL, 2019)

Al contrario de proyectos como Apache, donde el software es desarrollado por


una comunidad pública y los derechos de autor del código están en poder del
autor individual, MySQL es patrocinado por una empresa privada, que posee el
copyright de la mayor parte del código. Esto es lo que posibilita el esquema de
doble licenciamiento anteriormente mencionado. La base de datos se distribuye
en varias versiones, una Community, distribuida bajo la Licencia pública general
de GNU, versión 2, y varias versiones Enterprise, para aquellas empresas que
quieran incorporarlo en productos privativos. Las versiones Enterprise incluyen
productos o servicios adicionales tales como herramientas de monitorización y
asistencia técnica oficial. En 2009 se creó un fork denominado MariaDB por
algunos desarrolladores (incluido algunos desarrolladores originales de MySQL)
descontentos con el modelo de desarrollo y el hecho de que una misma empresa
controle a la vez los productos MySQL y Oracle Database.
(https://es.wikipedia.org/wiki/PHP, 2019)
Está desarrollado en su mayor parte en ANSI C y C++.4 Tradicionalmente se
considera uno de los cuatro componentes de la pila de desarrollo LAMP y
WAMP. (https://es.wikipedia.org/wiki/MySQL, 2019)

44
2.5.4. PHPMYADMIN

PhpMyAdmin es una herramienta escrita en PHP con la intención de manejar la


administración de MySQL a través de páginas web, utilizando un navegador web.
Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar
tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL,
administrar claves en campos, administrar privilegios, exportar datos en varios
formatos y está disponible en 72 idiomas. Se encuentra disponible bajo la licencia
GPL Versión 2. (https://en.wikipedia.org/wiki/PhpMyAdmin, 2019)

FIGURA 24. LOGO PHPMYADMIN (https://en.wikipedia.org/wiki/PhpMyAdmin, 2019)

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.

2.6.1. SENSOR DE HUMEDAD Y TEMPERATURA DHT11

El DHT11 es un sensor digital de temperatura y humedad relativa de bajo costo


y fácil uso. Integra un sensor capacitivo de humedad y un termistor para medir el
aire circundante, y muestra los datos mediante una señal digital en el pin de
datos (no posee salida analógica). Utilizado en aplicaciones académicas

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)

FIGURA 25. SENSOR DE HUMEDAD Y TEMPERATURA DHT11


(https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/, 2019)

Utilizar el sensor DHT11 con las plataformas Arduino/Raspberry Pi/Nodemcu es


muy sencillo tanto a nivel de software como hardware. A nivel de software se
dispone de librerías para ARDUINO con soporte para el protocolo "Single bus".
En cuanto al hardware, solo es necesario conectar el pin VCC de alimentación a
3V - 5V, el pin GND a Tierra (0V) y el pin de datos a un pin digital en nuestro
Arduino. Si se desea conectar varios sensores DHT11 a un mismo ARDUINO,
cada sensor debe tener su propio pin de datos. Quizá la única desventaja del
sensor es que sólo se puede obtener nuevos datos cada 2 segundos. Cada
sensor es calibrado en fábrica para obtener unos coeficientes de calibración
grabados en su memoria OTP, asegurando alta estabilidad y fiabilidad a lo largo
del tiempo. El protocolo de comunicación entre el sensor y el microcontrolador
emplea un único hilo o cable, la distancia máxima recomendable de longitud de
cable es de 20m, de preferencia utilizar cable apantallado. Proteger el sensor de
la luz directa del sol (radiación UV).
(https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/,
2019)
En comparación con el DHT22 y DHT21, este sensor es menos preciso, menos
exacto y funciona en un rango más pequeño de temperatura / humedad, pero su
empaque es más pequeño y de menor costo.
(https://www.geekfactory.mx/tutoriales/tutoriales-arduino/dht11-con-arduino/,
2019)

46
2.6.1.1. ESPECIFICACIONES TECNICAS

 Voltaje de Operación: 3V - 5V DC.


 Rango de medición de temperatura: 0 a 50 °C.
 Precisión de medición de temperatura: ±2.0 °C.
 Resolución Temperatura: 0.1°C.
 Rango de medición de humedad: 20% a 90% RH.
 Precisión de medición de humedad: 5% RH.
 Resolución Humedad: 1% RH.
 Tiempo de sensado: 1 seg.
 Interface digital: Single-bus (bidireccional).
 Modelo: DHT11.
 Dimensiones: 16*12*5 mm.
 Peso: 1 gr.
 Carcasa de plástico celeste.

2.6.1.2. PINES

1- Alimentación: +5V (VCC)


2- Datos (DATA)
3- No Usado (NC)
4- Tierra (GND)

2.6.1.3. ESQUEMA DE CONEXIÓN CON ARDUINO

FIGURA 26. CONEXIÓN DEL ARDUINO UNO CON EL SENSOR DHT11 (PROPIO)

47
CAPITULO 3

MARCO METODOLÓGICO

3.1. ENFOQUE Y DISEÑO


 Enfoque mixto: Cuantitativo y Cualitativo.
DISEÑO.
 Cuantitativo: Experimental.
 Cualitativo: Estudios de Caso.
NIVEL.
 Descriptivo y diseño.
TIPO.
 Tipología Básica/Aplicada.
3.2. SUJETOS DE LA INVESTIGACIÓN.
 Universo: Región de Piura - Perú.
 Población: Laboratorio de Electrónica de la UNP
3.3. MÉTODOS Y PROCEDIMIENTOS.
Los pasos que se seguirán en el desarrollo de la investigación, en cumplimiento
de los objetivos específicos, son los siguientes:
 Diseñar Arquitectura para sistema privado en la nube.
 Diseñar sistema de adquisición de datos basados en el ARDUINO.
 Instalar y configurar la minicomputadora RASBERRY PI 3.
 Programar el ARDUINO para la adquisición de datos.
 Integrar el ARDUINO con el RASPBERRY PI 3.
 Realizar pruebas al sistema.
3.4. TÉCNICAS E INSTRUMENTOS.
 Técnicas de muestreo: Simple. Se seleccionará un número determinado de
variables físicas, de mayor interés de acuerdo con los Objetivos del
Proyecto para determinar el sistema de adquisición de datos y sistema de
base de datos y servidor web más adecuado.
48
 Técnicas de recolección de datos: De gabinete. Todo el estudio se realizará
en gabinete usando la información de Internet con respecto a
ADQUISICIÓN DE DATOS, RASPBERRY PI, ARDUINOMEGA y
ACCESOS REMOTOS.
 Instrumentos de recolección de datos: Revisión de información estadística
de portales gubernamentales: INEI, MINEDU, entre otros portales
especializados y de interés en ADQUISICION DATOS Y SERVIDORES DE
BASE DE DATOS.
 Confiabilidad y validez de los instrumentos: La información es
proporcionada por entes gubernamentales. Dicha información es confiable
y válida, y por tanto no se requiere validación de algún especialista externo.
Así como los portales especializados en ADQUISICIÓN DE DATOS,
SERVIDORES WEB Y DE DATOS

3.5. ASPECTOS ÉTICOS


Para el desarrollo de la Tesis se seguirán los principios éticos de acuerdo con el
marco legal vigente de la Universidad Nacional de Piura y los entes
administrativos nacionales correspondientes.

49
CAPITULO 4

RESULTADOS Y DISCUSION

4.1 DESCRIPCION GENERAL DEL SISTEMA DE ADQUISICIÓN DE DATOS


MEDIANTE EL USO DE UN ARDUINOMEGA+ESP8266 Y RASPBERRY PI3
COMO SERVIDOR WEB Y BASE DE DATOS.
En la Figura 27 se muestra el diagrama general de un Sistema de adquisicón de
datos usando el ARDUINOMEGA2560, para comprobar el sistema que se
propone se utiliza el sensor DHT11 que mide Humedad y Temperatura. Los
datos adquiridos luego son enviados via WIFI usando el modulo ESP8266 hacia
la RASPBERRY PI3 que actuara como servidor de Base de datos y servidor
WEB.

FIGURA 27. DIAGRAMA GENERAL DEL SISTEMA DE ADQUISICON DE DATOS


INTEGRANDO EL ARDUINOMEGA, MODULO ESP8266 Y RASPBERRY PI 3 (PROPIO)

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.

4.2. DISPOSITIVO INALAMBRICO PARA MEDICION DE VARIABLES DE


HUMEDAD Y TEMPERTURA
Este dispositivo (ver Figura 28) basado en el ARDUINOMEGA conectado con el
modulo ESP8266 se encarga de medir temperatura, humedad, y luego
conectarse con la BASE DE DATOS en el RASPBERRY PI3, y enviar los datos
medidos.
Los componentes de este dispositivo son:

 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)

4.2.1. CIRCUITO DE CONEXIÓN DE SERVIDOR WEB Y DE BASE DE


DATOS CON RASPBERRY PI3

FIGURA 29. CONEXIÓN ELECTRICA DEL SERVIDOR RASPBERRY PI3 (PROPIO)

52
4.3. CONFIGURACION DEL RASPBERRY PI3 COMO SERVIDOR WEB Y
BASE DE DATOS

4.3.1. INSTALAR LAMP EN LA RASPBERRY PI3

LAMP (LinuxApacheMySQLPHP) son un conjunto de componentes que


debemos instalar en la Raspberry Pi3 para poder crear un servidor Web.
 Apache: Servidor Web HTTP open source.
 MySQL: Base de datos Open Source.
 PHP (Personal Home Pages): Lenguaje de programación que forma parte
del servidor web para crear webs dinámicas.
 PHPmyAdmin: Sirve para administrar la base de datos a través de interfaz
web.

FIGURA 30. LAMP COMPONENTES PARA SERVIDOR WEB (PROPIO)

En la siguiente imagen se puede observar el procedimiento de un servidor Web:

FIGURA 31. PROCEDIMIENTOS DE UN SERVIDOR WEB (PROPIO)

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.

FIGURA 32. SOFTWARE NECESARIO PARA SERVIDOR WEB Y DE BASE DE DATOS


(PROPIO)

Antes de empezar con la instalación del servidor, se recomienda actualizar la


RASPBERRY PI3, para lo cual se utiliza los siguientes comandos:
sudo apt-get update
sudo apt-get upgrade

4.3.1.1. INSTALAR APACHE

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)

El siguiente paso es poder habilitar al directorio html creado el poder copiar


archivos.
COMANDO PARA DAR PERMISO Y PODER COPIAR ARCHIVOS EN EL
DIRECTORIO HTML
sudo chmod 777 /var/www/html/
Ahora podemos probar creando un archivo html:
sudo nano /var/www/prueba.html
Escribimos el siguiente código:

<html>
<head>
<title>PROBANDO</title>
</head>
<body>
<h1>Probando </h1>
<p>hola mundo…..</p>
</body>
</html>

Para guardar pulsamos CTRL+X, luego S e INTRO. Ahora en el navegador


ponemos la dirección IP de la Raspberry PI3 más el nombre del archivo html
para ver nuestra web:
http://192.168.8.201/prueba.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)

FIGURA 34. PANTALLA AL INGRESAR 192.168.8.201/info.php DESPUES DE INSTALAR


PHP. (PROPIO)

4.3.1.3. INSTALAR MySQL

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.

4.3.1.4. INSTALAR PHPmyAdmin

PHPmyAdmin és un software basado en PHP que sirve para administrar la base


de datos MySQL a través de interfaz web. Para su instalación escribimos el
siguiente comando:
sudo apt install phpmyadmin
Nos preguntará que servidor web hemos instalado. Seleccionamos Apache con
la tecla Espacio y pulsamos Enter. Después preguntará si queremos configurar
la base de datos, decimos que Sí. Luego tendremos que poner la contraseña
que establecimos previamente en el MySQL y finalmente nos pedirá que
pongamos una nueva contraseña para PHPmyAdmin.
Si todo ha ido bien y escribes en el navegador la dirección IP de la Raspberry
PI3 seguida de /phpmyadmin se verá una pantalla en la que nos pedirá las
credenciales. El usuario es root y la contraseña que se ha elegido. En caso de
que no funcione, reiniciar la Raspberry PI3.

FIGURA 35. PANTALLA AL INGRESAR 192.168.0.201/ phpmyadmin DESPUES DE


INSTALAR PHPMYADMIN. (PROPIO)

57
4.4. PROGRAMACION DEL ARDUINOMEGA2560

A continuación, se muestra la programación del ARDUINOMEGA2560, en la


Figura 36 se muestra las declaraciones de las Librerías que utilizara.

FIGURA 36. DECLARACION DE LIBRERIAS QUE UTILIZARA EL CODIGO DE PROGRAMA


(PROPIO)

En la Figura 37 se muestra el código donde se inicializa, el módulo WIFI


ESP8266, se inicializa el puerto serial y el sensor de DHT11 y por último se
realiza la conexión WIFI con el ROUTER., indicando nombre de la red y
password.

FIGURA 37. CONFIGURACION INICIAL DEL ARDUINOMEGA Y MODULO ESP8266,


CONEXION CON ROUTER (PROPIO)
58
En la Figura 38 se muestra el código para leer los sensores conectados al
ARDUINOMEGA2560.

FIGURA 38. LECTURA DE SENSORES DE HUMEDAD Y TEMPERATURA (PROPIO)

En la Figura 39 se muestra el código para enviar los datos de los sensores


(Temperatura, Humedad) hacia el servidor usando el método GET. Para lo cual
se conecta con el servidor usando el archivo escrito en PHP “subirdatosx.php”.
Un ejemplo de envío de datos usando el método GET seria:
http://192.168.0.201/subirdatosx.php?Temperatura=25.3&Humedad=65.6

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)

FIGURA 40. INGRESO A LA BASE DE DATOS CON http://192.168.0.201/phpmyadmin


(PROPIO))

En la Figura 41 se muestra la Base de datos “sensores” con la tabla creada


“datos” que se utilizara para este proyecto.

FIGURA 41. BASE DE DATOS "SENSORES" Y TABLA CREADA PARA EL PROYECTO SE


UTILIZA LA TABLA “DATOS” (PROPIO)

En la Figura 42 se muestra la estructura de la tabla “datos”, donde se visualiza


los campos creados: ID, Temperatura, Humedad y Tiempo.

61
FIGURA 42. ESTRUCTURA DE LA TABLA DATOS (PROPIO)

4.5.1. CODIGO PHP PARA CONEXIÓN DEL ARDUINOMEGA2560 CON


BASE DATOS EN RASPBERRY PI3

En la Figura 43 se muestra el código PHP del archivo “subirdatosx.php”, este


archivo sirve para conectarse con la base de datos y grabar datos de los
sensores en la tabla datos de la base sensores.

FIGURA 43. CODIGO PHP PARA CONEXION CON BASE DE DATOS PARA ENVIO DE
DATOS DE SENSORES (PROPIO)

En la Figura 44 se muestra el archivo “config.php” este archivo es llamado desde


el archivo “subirdatosx.php”, este archivo contiene las credenciales para
conectarse con el servidor de base de datos.

62
FIGURA 44. CONFIGURACION PARA CONEXION CON BASE DE DATOS (PROPIO)

4.5.2 PRUEBA DE CONEXIÓN Y ALMACENAMIENTO EN BASE DE DATOS

En la FIGURA 45 se demuestra que si se logra la conexión con la base de datos


desde el ARDUINOMEGA CON ESP8266. Se visualiza que se están grabando
los datos del sensor de Humedad y Temperatura.

FIGURA 45. DATOS GUARDADOS EN LA BASE DE DATOS SENSORES TABLA DATOS


(PROPIO)

4.5.3 PRUEBA DE CONEXIÓN Y GRAFICAS DE DATOS ALMACENADOS

En la FIGURA 46 y FIGURA 47 se demuestra que si se logra la conexión con la


base de datos desde el ARDUINOMEGA + ESP8266. Se visualiza que se están
graficando los datos de los sensores de Humedad y Temperatura.

63
FIGURA 46. DATOS GRAFICADOS DE LA BASE DE DATOS “SENSORES” TABLA
“DATOS” – 25 PRIMEROS VALORES (PROPIO)

FIGURA 47. DATOS GRAFICADOS DE LA BASE DE DATOS “SENSORES” TABLA


“DATOS” – 100 PRIMEROS VALORES (PROPIO)

4.6. VISUALIZAR DATOS EN PAGINA WEB


Se visualizarán las pantallas de las aplicaciones web en HTML y PHP realizadas
para mostrar los datos y graficas de los datos del sensor medido por el
ARDUINOMEGA2560. Los códigos HTML y PHP se encuentran en los anexos.

64
FIGURA 48. INTERFAZ DE ACCESO A BASE DE DATOS (PROPIO)

4.6.1. PRUEBA DE VISUALIZACION DE DATOS EN PAGINA WEB

FIGURA 49. VISUALIZACION DE DATOS DE SENSOR (PROPIO)

65
4.6.2. PRUEBA DE GRAFICA DE DATOS EN PAGINA WEB

FIGURA 50. VISUALIZACION DE GRAFICA DE DATOS DE SENSOR (PROPIO)

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

 Para este tipo de proyectos se recomienda que los dispositivos a usar


sean de bajo costo para que sea accesible al público en general.
 Tener en cuenta el tipo de alimentación de cada uno de los dispositivos
para no tener problemas, se vayan a estropear.
 Usar software de licencia libre.
 Tener a disposición un buen computador e internet para hacer las pruebas
necesarias durante el proceso.
 Verificar las fuentes que nos proporcionan la información necesaria del
proyecto.

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

ANEXO 1. CODIGO DE PAGINA WEB (INDEX.HTML)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.Estilo1 {
font-family: Arial, Helvetica, sans-serif;
font-weight: bold;
}.
Estilo4 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Estilo5 {font-size: 60px}
.Estilo6 {font-size: 50px}
.Estilo7 {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 50px; }
-->
</style>
</head>
<body >
<div align="center" class="Estilo1" style="background-color: aqua">
<p class="Estilo5">
MEDIDOR INALAMBRICO CON ARDUINOMEGA2560 + ESP8266 &nbsp;</p>
<p>
&nbsp;</p>
<table width="1000" border="1" style="background-color: olive; border-top-style: groove; border-right-style: groove; border-left-
style: groove; border-bottom-style: groove;" rules="all">
<tr bgcolor="#00FF00">
<td style="height: 213px; background-color: #009999; border-left-color: black; border-bottom-color: black; border-top-style: ridge;
border-top-color: black; border-right-style: ridge; border-left-style: ridge; border-right-color: black; border-bottom-style:
ridge;"><div align="center" class="Estilo4 Estilo6"><a href="tablanodox.php" style="color: yellow">Datos</a></div></td>
<td style="height: 213px; background-color: #009999; border-left-color: black; border-bottom-color: black; border-top-style: ridge;
border-top-color: black; border-right-style: ridge; border-left-style: ridge; border-right-color: black; border-bottom-style:
ridge;"><div align="center" class="Estilo7"><a href="graficanodox.php" style="color: maroon">Graficos</a></div></td>
</tr>
</table>
<p>&nbsp;</p>
</div>
</body>
</html>

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");

// Selecciona la base de datos


if(!mysql_select_db("sensores", $iden))
die("Error: No existe la base de datos");

$query = "select * from datos"; // Esta linea hace la consulta


$result = mysql_query($query);

while ($registro = mysql_fetch_array($result)){


echo "
<tr>
<td width='100'>".$registro['ID']."</td>
<td width='100'>".$registro['Temperatura']."</td>
<td width='150'>".$registro['Humedad']."</td>
<td width='200'>".$registro['Tiempo']."</td>
<td width='10'></td>

</tr>
";
}
// Libera la memoria del resultado
mysql_free_result($resultado);

// Cierra la conexión con la base de datos


mysql_close($iden);
?>
</table>
</div>
</body>

</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;
}

//Devuelve un array multidimensional con el resultado de la consulta


function getArraySQL($sql){
//Creamos la conexión
$conexion = conectarBD();
//generamos la consulta
if(!$result = mysqli_query($conexion, $sql)) die();

$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");

//-----Configuración de red-------//Podemos comentar si el ESP ya está configurado

//ESP8266 en modo estación (nos conectaremos a una red existente)


SerialESP8266.println("AT+CWMODE=1");
if(SerialESP8266.find("OK"))
Serial.println("ESP8266 en modo Estacion");

//Nos conectamos a una red wifi


SerialESP8266.println("AT+CWJAP='Noelia','GFAgfa123'");
Serial.println("Conectandose a la red ...");
SerialESP8266.setTimeout(10000); //Aumentar si demora la conexion
if(SerialESP8266.find("OK"))
Serial.println("WIFI conectado");
else
Serial.println("Error al conectarse en la red");
SerialESP8266.setTimeout(2000);
//Desabilitamos las conexiones multiples
SerialESP8266.println("AT+CIPMUX=0");
if(SerialESP8266.find("OK"))
Serial.println("Multiconexiones deshabilitadas");

//------fin de configuracion-------------------

delay(1000);

void loop() {

//--- programa----------------------

//al sensor le cuesta 250ms leer estos datos


//leemos humedad
float h1 = dht.readHumidity();
// usamos variables tipo float para guardar valores decimales
// Leemos temperatura del DHT
float t1 = dht.readTemperature();
// Comprobamos si las lecturas pueden dar algún fallo mediante la función isnan()
// Esta función devuelve un 1 en caso de que el valor no sea numérico
// Los caracteres || son como un OR. Si se cumple una de las dos condiciones mostramos error
if (isnan(h1) || isnan(t1)) {
Serial.println("Fallo en la lectura del sensor DHT!");
return;
}
Serial.print(" Humedad: ");
Serial.print(h1);
Serial.print(" %\t");
Serial.print("Temperatura 1: ");
Serial.print(t1);
Serial.println(" *C\t ");
delay(1000);

74
//otras operaciones
// . . .

//---------enviamos las variables al servidor---------------------

//Nos conectamos con el servidor:

SerialESP8266.println("AT+CIPSTART='TCP',"" + server + "",80");


if( SerialESP8266.find("OK"))
{
Serial.println();
Serial.println();
Serial.println();
Serial.println("ESP8266 conectado con el servidor...");
//Armamos el encabezado de la peticion http
String peticionHTTP= "GET /subirdatosx.php?Temperatura=";
peticionHTTP=peticionHTTP+String(t1)+"&Humedad="+String(h1)+" HTTP/1.1rn";
peticionHTTP=peticionHTTP+"Host: 192.168.0.1";
//Enviamos el tamaño en caracteres de la peticion http:
SerialESP8266.print("AT+CIPSEND=");
SerialESP8266.println(peticionHTTP.length());

//esperamos a ">" para enviar la petcion http


if(SerialESP8266.find(">")) // ">" indica que podemos enviar la peticion http
{
Serial.println("Enviando HTTP . . .");
SerialESP8266.println(peticionHTTP);
if( SerialESP8266.find("SEND OK"))
{
Serial.println("Peticion HTTP enviada:");
Serial.println();
Serial.println(peticionHTTP);
Serial.println("Esperando respuesta...");

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");
}

//-------------------------------------------------------------------------------

delay(5000); //pausa de 10seg antes de conectarse nuevamente al servidor (opcional)


}

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

También podría gustarte