facultad de ciencias físicas y matemáticas escuela profesional ...
-
Upload
khangminh22 -
Category
Documents
-
view
0 -
download
0
Transcript of facultad de ciencias físicas y matemáticas escuela profesional ...
UNIVERSIDAD NACIONAL
“PEDRO RUIZ GALLO”
FACULTAD DE CIENCIAS FÍSICAS Y
MATEMÁTICAS
ESCUELA PROFESIONAL DE INGENIERÍA EN
COMPUTACIÓN E INFORMÁTICA
“DISEÑO DE UN SISTEMA INMÓTICO UTILIZANDO LA
PLATAFORMA ARDUINO PARA EL LABORATORIO DE
COMPUTACIÓN E INFORMÁTICA DE LA FACULTAD DE CIENCIAS
FÍSICAS Y MATEMÁTICAS DE LA U.N.P.R.G., LAMBAYEQUE - 2017”
TESIS
Presentada Por:
Vasquez Chamay Yoreli Meilin
Primo Paico Diana Medalit
Para optar por el título profesional de:
Ingeniero en Computación e Informática
Lambayeque-Perú
2019
i
UNIVERSIDAD NACIONAL
“PEDRO RUIZ GALLO”
FACULTAD DE CIENCIAS FÍSICAS Y
MATEMÁTICAS
ESCUELA PROFESIONAL DE INGENIERÍA EN
COMPUTACIÓN E INFORMÁTICA
“DISEÑO DE UN SISTEMA INMÓTICO UTILIZANDO LA
PLATAFORMA ARDUINO PARA EL LABORATORIO DE
COMPUTACIÓN E INFORMÁTICA DE LA FACULTAD DE
CIENCIAS FÍSICAS Y MATEMÁTICAS DE LA U.N.P.R.G.,
LAMBAYEQUE 2017”
TESIS
Presentada Por:
Vasquez Chamay Yoreli Meilin
Primo Paico Diana Medalit
Para optar por el título profesional de:
Ingeniero en Computación e Informática
Lambayeque-Perú
2019
vi
DEDICATORIA
A mis queridos padres Luisa Pilar y Santiago por
su incondicional apoyo, por apostar en mi futuro
y por toda la confianza depositada y por estar a
mi lado y ayudarme a superar todas las
adversidades.
A mi hermano Kevin por compartir junto a mí
muchos momentos que atesoro y por ser la razón
por la que me esfuerzo día a día.
A mis familiares y amigos quienes siempre
estuvieron a mi lado apoyándome y motivándome
en cada momento y compartiendo conmigo este
proceso de aprendizaje.
A todos y cada uno de los docentes quienes nos
brindaron sus conocimientos y experiencias
adquiridas, y sobre todo por sus grandes consejos.
A todos ustedes gracias por todo.
Yoreli Vasquez
Dedico mi tesis con mucho amor y cariño a Dios,
por haberme dado salud para lograr mis objetivos,
por su infinita bondad y amor.
A mis padres Martha y Alejandro, por su apoyo
en todo momento, por sus consejos, sus valores,
que me han permitido ser una persona de bien,
pero más que nada, por su amor.
A mis hermanas Laura y Sonia, por ser el ejemplo
de hermanas mayores, de las cuales he aprendido
mucho, por estar siempre presentes,
acompañándome para poderme realizar.
Diana Primo.
vii
AGRADECIMIENTOS
En primera instancia agradecemos a Dios por el regalo de la vida, por las bendiciones
recibidas y por guiar e iluminar nuestros caminos para alcanzar nuestras metas.
También expresamos nuestro sincero y profundo agradecimiento Al ingeniero Martin
Manuel Leiva Castillo por aceptar ser nuestro asesor y brindarnos su apoyo, capacidad,
experiencia y conocimientos durante el desarrollo de nuestro proyecto, por la paciencia y
por guiar nuestro trabajo a través de sus correcciones y pautas.
A los integrantes del jurado: Dr. Armando José Moreno Heredia, Mg. Roger Ernesto Alarcón
García y Dra. Giuliana Fiorella Lecca Orrego, quienes fueron nuestros docentes durante
nuestra formación como profesionales, porque gracias a sus sugerencias hemos podido
mejorar este proyecto de investigación.
A todas aquellas personas que colaboraron de manera directa e indirecta a que se haga
posible la culminación de este proyecto.
viii
RESUMEN
En las últimas décadas, los avances tecnológicos han ido creciendo cada día más, y los
lugares donde vivimos, trabajamos, o estudiamos no han sido exentos de estos cambios; los
mismos que vienen teniendo un impacto muy significativo en cuanto a confort y seguridad,
automatizando cada una de sus funciones, llevando de esta forma un uso adecuado de estos.
Debido al escenario actual en el que se encuentra los laboratorios de la Escuela Profesional
de Computación e Informática y a la importancia de brindar un servicio de calidad, donde
alumnos y docentes cuenten con ambientes cómodos y seguros, así como para los bienes
existentes, es necesario contar con tecnología que nos permitan mejorar la calidad de
servicio. Por tal motivo, se optó por proponer un sistema inmótico, el mismo que tiene como
finalidad mejorar la seguridad, iluminación y confort en los ambientes del Laboratorio.
El estudio se inició con el análisis de los requerimientos los cuales nos permitieron
desarrollar la estructura del sistema, así como los eventos de actuación para cada escena
(encendido y apagado de alarmas, focos y aires).
Para la implementación se utilizó la tecnología Arduino, y una aplicación web a través del
cual se tendrá el control de los sensores de forma remota.
Palabras Clave: Domótica e Inmótica, Tecnología Arduino, Normativa de Domótica e
Inmótica
ix
ABSTRACT
In recent decades, technological advances have been growing, and the places where we live,
work, or study have not been exempt from these changes; the same ones that been having a
very significant impact in terms of comfort and safety, automating each of their functions,
thus carrying out an appropriate use of these.
Due to the current scenario in which the laboratories of Escuela Profesional de Computación
e Informática are located and the importance of providing a quality service, where students
and teachers have comfortable and safe environments, it is necessary to have technology that
allows us to improve the quality of service for users. For this reason, the study and design of
an immotic system was chosen, the same that aims to improve safety, lighting and comfort
in the laboratory's environments.
The study began with the analysis of the requirements by the users which allowed us to
develop the structure of the system, as well as the action events for each scene (turn on and
turn off of alarms, spotlights and air conditioners).
For the implementation, Arduino technology (open source electronic platform) will be used,
as well as a web page through which the sensors will be controlled remotely.
Keywords: Domotic and Inmotic, Arduino Technology, Domotics and Inmotics Regulations.
x
INDICE GENERAL
INTRODUCCIÓN ................................................................................................................. 1
1. CAPITULO I: DISEÑO TEÓRICO .............................................................................. 4
1.1 DATOS GENERALES DE LA ORGANIZACIÓN ................................................................ 4
1.1.1 Descripción de la Organización ......................................................................... 4
1.1.2 Misión, Visión y Objetivos de la Organización ................................................ 5
1.1.3 Estructura Orgánica ........................................................................................... 6
1.2 PROBLEMÁTICA DE LA INVESTIGACIÓN ....................................................................... 8
1.2.1 Planteamiento del Problema .............................................................................. 8
1.2.2 Formulación del Problema................................................................................. 9
1.2.3 Justificación e Importancia de la investigación ................................................. 9
1.3 OBJETIVOS DE LA INVESTIGACIÓN ............................................................................ 11
1.3.1 Objetivo General.............................................................................................. 11
1.3.2 Objetivos Específicos ...................................................................................... 11
1.3.3 Limitaciones de la Investigación ..................................................................... 11
1.4 MARCO METODOLÓGICO .......................................................................................... 12
1.4.1 Tipo de Investigación ...................................................................................... 12
1.4.2 Hipótesis .......................................................................................................... 12
1.4.3 Operacionalización de Variables ..................................................................... 12
1.5 MARCO TEÓRICO ...................................................................................................... 15
1.5.1 Antecedentes .................................................................................................... 15
1.6 BASE TEÓRICA ......................................................................................................... 19
1.6.1 Domótica e Inmótica ....................................................................................... 19
1.6.2 Arquitecturas ................................................................................................... 21
1.6.3 Dispositivos para la automatización ................................................................ 24
1.6.4 Tecnologías de control y automatización ........................................................ 25
1.6.5 Tecnologías de control de datos ...................................................................... 29
1.6.6 Normativas ...................................................................................................... 32
1.6.7 Organismos de normalización ......................................................................... 33
1.6.8 Arduino ............................................................................................................ 34
1.7 SELECCIÓN DE LA METODOLOGÍA PARA EL DESARROLLO DEL PROYECTO ................ 66
1.7.1 Metodología en Cascada .................................................................................. 66
1.8 CONSIDERACIONES DEL DISEÑO DOMÓTICO EN LA VIDA REAL .................................. 68
xi
1.8.1 Normas y Certificaciones Técnicas ................................................................. 70
1.9 CONCEPTOS Y DEFINICIONES .................................................................................... 75
2. CAPITULO II: MÉTODOS Y MATERIALES .......................................................... 79
2.1 PLANTEAMIENTO DEL PROYECTO.............................................................................. 79
2.1.1 Identificación del escenario del proyecto ........................................................ 79
2.2 IDENTIFICACIÓN DE LOS USUARIOS Y ÁREAS INTERVINIENTES .................................. 79
2.2.1 Áreas intervinientes ......................................................................................... 79
2.2.2 Usuarios ........................................................................................................... 80
2.3 ANÁLISIS DE FACTIBILIDAD ...................................................................................... 81
2.3.1 Factibilidad operativa ...................................................................................... 81
2.3.2 Factibilidad técnica .......................................................................................... 81
2.3.3 Factibilidad económica .................................................................................... 81
2.4 DEFINICIÓN DE REQUERIMIENTOS DE NEGOCIO ......................................................... 82
2.4.1 Requerimientos funcionales ............................................................................ 82
2.4.2 Requerimientos no funcionales ....................................................................... 83
2.5 DISEÑO DE LA ARQUITECTURA TÉCNICA ................................................................... 83
2.6 DISEÑO Y DESARROLLO DE PRESTACIÓN DE DATOS .................................................. 85
2.6.1 Materiales utilizados para el circuito ............................................................... 85
3. CAPITULO III: RESULTADOS Y DISCUSIÓN ...................................................... 88
3.1 IDENTIFICACIÓN DE SITUACIÓN ACTUAL ................................................................... 88
3.2 DEFINICIÓN DE ESCENARIOS ..................................................................................... 88
3.3 CREACIÓN DEL CIRCUITO ......................................................................................... 91
3.4 PROGRAMACIÓN DEL ARDUINO ................................................................................ 97
3.5 DISEÑO DEL SISTEMA ............................................................................................... 99
3.5.1 Diagramas de caso de uso ................................................................................ 99
3.5.2 Diseño de Base de Datos ............................................................................... 102
3.5.3 Diseño Físico ................................................................................................. 107
3.5.4 Interfaz web ................................................................................................... 113
3.6 CONSTRUCCIÓN DE MAQUETA ................................................................................ 119
3.7 VERIFICACIÓN DE SENSORES .................................................................................. 120
3.8 PRUEBAS MÍNIMAS PARA EL PROYECTO .................................................................. 122
3.9 RESULTADO DE PRUEBAS DE SIMULACIÓN .............................................................. 170
xii
3.10 ANÁLISIS DE COSTOS .............................................................................................. 172
3.10.1 Costos de implementación ......................................................................... 172
3.11 ANÁLISIS DE RENTABILIDAD DEL PROYECTO.......................................................... 173
3.11.1 Umbral de Rentabilidad ............................................................................. 173
3.11.2 Proyección de ahorros ............................................................................... 174
3.11.3 Periodo de tiempo estimado para la rentabilidad....................................... 176
3.12 BENEFICIOS............................................................................................................. 177
3.12.1 Beneficios Tangibles ................................................................................. 177
3.12.2 Beneficios intangibles ............................................................................... 178
4. CAPITULO IV: CONCLUSIONES .......................................................................... 180
5. CAPITULO V: RECOMENDACIONES .................................................................. 183
6. BIBLIOGRAFIA ....................................................................................................... 184
ANEXOS ........................................................................................................................... 187
Índice de Tablas
Tabla 1: Variable Independiente.......................................................................................... 13
Tabla 2: Variable Dependiente ............................................................................................ 14
Tabla 3: Tecnologías de Control y Automatización ............................................................ 25
Tabla 4: Tecnologías de Control de Datos .......................................................................... 29
Tabla 5: Especificaciones Técnicas Arduino Mega ............................................................ 37
Tabla 6: Especificaciones Técnicas Arduino Nano ............................................................. 41
Tabla 7: Definición de escenario de actuación .................................................................... 90
Tabla 8: Descripción de entidades y atributos ................................................................... 103
Tabla 9: Descripción de entidades y atributos ................................................................... 103
Tabla 10: Descripción de entidades y atributos ................................................................. 104
Tabla 11: Descripción de entidades y atributos ................................................................. 104
Tabla 12: Descripción de entidades y atributos ................................................................. 105
Tabla 13: Descripción de entidades y atributos ................................................................. 105
Tabla 14: Descripción de entidades y atributos ................................................................. 106
Tabla 15: Descripción de entidades y atributos ................................................................. 107
xiii
Tabla 16: Descripción de tablas y campos ........................................................................ 109
Tabla 17: Descripción de tablas y campos ........................................................................ 109
Tabla 18: Descripción de tablas y campos ........................................................................ 110
Tabla 19: Descripción de tablas y campos ........................................................................ 110
Tabla 20: Descripción de tablas y campos ........................................................................ 110
Tabla 21: Descripción de tablas y campos ........................................................................ 111
Tabla 22: Descripción de tablas y campos ........................................................................ 112
Tabla 23: Descripción de tablas y campos ........................................................................ 113
Tabla 24: Resultado de pruebas de simulación ................................................................. 170
Tabla 25: Costos de implementación ................................................................................ 173
Tabla 26: Resumen de Costos ........................................................................................... 173
Tabla 27: Análisis de Rentabilidad .................................................................................... 173
Tabla 28: Análisis de Rentabilidad .................................................................................... 175
Tabla 29: Depreciación de Equipos de Laboratorio .......................................................... 175
Tabla 30: Flujo de Caja ..................................................................................................... 176
Tabla 31: Costos de Mantenimiento .................................................................................. 177
Índice de Figuras
Figura 1: Esquema organizaciones de la facultad de Ciencias Físicas y Matemáticas ......... 7
Figura 2: Modelo de casa domótica ..................................................................................... 20
Figura 3: Esquema de Arquitectura de Sistema Domótica Centralizada ............................. 22
Figura 4: Esquema de Arquitectura de Sistema Domótica Descentralizada ....................... 22
Figura 5: Esquema de Arquitectura de Sistema Domótica Distribuida ............................... 23
Figura 6: Dispositivos de Sistemas Domóticos ................................................................... 25
Figura 7: Arduino Mega ...................................................................................................... 35
Figura 8: Arduino Nano ....................................................................................................... 44
Figura 9: Orientación de los pines y elementos en el Arduino Uno .................................... 46
Figura 10: Modelo de Protocolo I2C ................................................................................... 49
Figura 11: Modelo de Protocolo SPI ................................................................................... 50
Figura 12: Lista de Bibliotecas Arduino.............................................................................. 58
Figura 13: IDE Arduino ....................................................................................................... 63
Figura 14: Componentes principales del sketch de Arduino ............................................... 64
Figura 15: Fases del modelo Cascada.................................................................................. 68
xiv
Figura 16: Representación de bombilla conectada al Arduino ............................................ 70
Figura 17: Laboratorio FACFYM ....................................................................................... 80
Figura 18: Laboratorio FACFYM ....................................................................................... 80
Figura 19: Diseño Arquitectónico ....................................................................................... 84
Figura 20: Diseño Arquitectónico (1er proceso) ................................................................. 84
Figura 21: Diseño Arquitectónico (2do proceso) ................................................................ 85
Figura 22: Esquemático de la placa shield del arduino mega. ............................................. 91
Figura 23: Esquemático de la placa shield del arduino mega. ............................................. 92
Figura 24: Entradas digitales del arduino mega .................................................................. 92
Figura 25: Etapa de iluminación .......................................................................................... 93
Figura 26: Alimentación de la casa inmotica ...................................................................... 93
Figura 27: Shield Arduino Mega ......................................................................................... 94
Figura 28: Arduino nano ..................................................................................................... 95
Figura 29: LCD 16x2 caracteres .......................................................................................... 95
Figura 30: Teclado ............................................................................................................... 96
Figura 31: Periferia del Arduino Nano ................................................................................ 96
Figura 32: Administrador de dispositivos ........................................................................... 97
Figura 33: Conexión de placa arduino con el computador .................................................. 98
Figura 34: Selección de placa en IDE Arduino ................................................................... 98
Figura 35: Selección de puerto en IDE Arduino ................................................................. 99
Figura 36: Diagrama de caso de uso Sistema Inmótico..................................................... 100
Figura 37: Diagrama de caso de uso Administrar Sistema ................................................ 100
Figura 38: Diagrama de caso de uso Controlar Luces y Aires .......................................... 101
Figura 39: Diagrama de caso de uso Gestionar Alarmas................................................... 101
Figura 40: Diseño lógico de la Base de Datos ................................................................... 102
Figura 41: Diseño físico de la Base de Datos .................................................................... 108
Figura 42: Pantalla de acceso al sistema ........................................................................... 114
Figura 43: Pantalla de inicio al sistema ............................................................................. 114
Figura 44: Pantalla de luces ............................................................................................... 115
Figura 45: Pantalla de Aires Acondicionados ................................................................... 115
Figura 46: Pantalla de Alarmas ......................................................................................... 116
Figura 47: Pantalla de Reporte de Alarmas ....................................................................... 116
Figura 48: Pantalla de Reporte Acciones por Alarma ....................................................... 117
Figura 49: Pantalla de Configuraciones............................................................................. 117
xv
Figura 50: Pantalla de Usuarios ......................................................................................... 118
Figura 51: Pantalla de Inicio para Docentes ...................................................................... 118
Figura 52: Pantalla de Restricción para Docentes ............................................................. 119
Figura 53: Segundo Piso Edificio FACFYM .................................................................... 119
Figura 54: Maqueta del Segundo Piso Edificio FACFYM ............................................... 120
Figura 55: Verificación de mediciones con monitor serial ............................................... 121
1
INTRODUCCIÓN
En la actualidad se viene hablando de Inmótica para referirse a la automatización de
edificios terciarios o de servicios (hoteles, oficinas, hospitales, plantas industriales,
universidades…)”, (Hugo Martín Domínguez y Fernando Sáez Vacas. (2006). Domótica:
Un enfoque sociotécnico, Madrid - España) es por tanto "aquella que integra un conjunto de
automatismos en materia de electricidad, electrónica, robótica, informática y
telecomunicaciones, con el objetivo de asegurar al usuario un aumento del confort, la
seguridad, el ahorro energético, las facilidades de comunicación y las posibilidades de
entretenimiento".
La presente investigación se realiza debido a la falta de ambientes que van de acuerdo
al avance de la tecnología, y que permitan brindar un servicio de calidad para todos los que
hacen uso de los ambientes donde se imparten cursos con los que cuenta la malla curricular.
Por tal motivo nuestro principal objetivo es diseñar e implementar un sistema
inmótico, mediante el uso de la plataforma Arduino, que nos permita mejorar la calidad de
servicio a un bajo costo, para ello, es necesario identificar los efectos de actuación, definir
la infraestructura de intercambio de información, así como el desarrollo de una aplicación
web para tener el control de forma remota de los dispositivos que se desean controlar, para
la implementación de la misma será a través de un prototipo el cual nos permita representar
los ambientes de los laboratorios a pequeña escala.
En dicho contexto se optó por el uso de la metodología en cascada, la misma que nos
permitirá tener bien definidos los puntos de revisión antes de avanzar a una siguiente etapa
del proyecto; la investigación se realizó a través de una entrevista con el jefe de laboratorio,
la cual sirvió para definir los requerimientos del sistema, posteriormente se definieron los
escenarios de actuación, así como la tecnología que se emplearía para el diseño de circuitos
y las herramienta de programación para el desarrollo de la aplicación que me permita
controlar remotamente los dispositivos.
En el capítulo I se abordan las cuestiones teóricas que sustentan el planteamiento de
la investigación, el problema, los objetivos, la justificación y el marco teórico el cual incluye
los antecedentes generales sobre la Domótica e Inmótica, sus características principales,
arquitecturas, aplicaciones y su potencial frente al ahorro energético. También se hace una
descripción de las placas y del software Arduino, principal tecnología empleada para el
desarrollo del proyecto, posteriormente se nombra algunas normas de gestión de energía.
2
En el capítulo II se identifica el escenario del proyecto, las áreas intervinientes y los
usuarios, se realiza el análisis de factibilidad, así como la definición de los requerimientos
de negocio, por ultimo encontramos el diseño de la arquitectura técnica y los materiales a
utilizar en el circuito.
En el capítulo III se ofrece la discusión e interpretación de los resultados, se puede
apreciar los esquemas de los circuitos creados para la implementación de los sensores y
actuadores asociados al proyecto, así como las directivas para el desarrollo del código fuente.
En el capítulo IV y V se presentan las conclusiones y recomendaciones de esta tesis
respectivamente.
4
1. CAPITULO I: DISEÑO TEÓRICO
1.1 Datos Generales de la Organización
1.1.1 Descripción de la Organización
La Facultad de Ciencias Físicas y Matemáticas es una de las 14 facultades con
las que cuenta la Universidad Nacional Pedro Ruiz Gallo, fue creada por
resolución N° 568-81-R del 25 de mayo de 1981.
Inicialmente contaba con las especialidades de Física, Matemática y Estadística,
otorgando a sus egresados el grado de Bachiller en las especiales antes
mencionadas y los títulos de Licenciado en Física, Licenciado en Matemática y
Licenciado en Estadística.
La escuela profesional de Computación e Informática se creó con resolución N°
444-92-R de fecha 27 de abril de 1992, adscribiéndola a la facultad de Ciencias
Físicas y Matemáticas, mientras que la escuela de Ingeniería Electrónica se creó
con resolución N° 007-98-AU-R.
Está formada por:
Consejo de Facultad
Los departamentos académicos de Matemática, Física, Estadística,
Ingeniería en Computación e Informática e Ingeniería Electrónica.
Centro de Investigación.
Unidad de Responsabilidad Social.
La oficina de Procesos Académicos.
La oficina de administración.
Las escuelas profesionales de Matemática, Física, Estadística, Ingeniería
en Computación e Informática e Ingeniería Electrónica.
Unidades de Producción.
5
1.1.2 Misión, Visión y Objetivos de la Organización
La definición de la misión y visión y objetivos de la organización fueron tomados
del Documento Plan Estratégico de la Facultad de Ciencias Físicas y
Matemáticas.
Misión
Somos una facultad líder en la formación humanística, científica y tecnológica
en el norte del país.
(Vásquez & Ortiz, s.f., pág. 25)
Visión
Formamos licenciados en Física, Matemática y Estadística; ingenieros
electrónicos e ingenieros en computación e informática, altamente competitivos
en ciencia y tecnología para el desarrollo sostenible y sustentable.
(Vásquez & Ortiz, s.f., pág. 25)
Objetivos Estratégicos
Según el Plan Estratégico de la Facultad de Ciencias Físicas y Matemáticas sus
objetivos estratégicos son:
Desarrollar un modelo de educación universitaria basado en
competencias permitiendo la innovación de los métodos de enseñanza-
aprendizaje, la investigación como eje integrador en el plan de estudios,
la proyección social y la extensión universitaria como eje de la inserción
en la sociedad.
Realizar investigación científica y tecnológica para los sectores de la
producción y servicios.
Incentivar proyectos de proyección social y de extensión universitaria en
el ámbito local y regional.
Gestionar estrategias de cooperación nacional e internacional que
permitan a nuestros docentes desarrollar proyectos compartidos.
(Vásquez & Ortiz, s.f., págs. 26,27,28)
6
1.1.3 Estructura Orgánica
La Facultad de Ciencias Físicas y Matemáticas es la unidad de formación
académica y de gestión, donde cultiva y enseña Estadística, Matemática, Física,
Ingeniería en Computación e Informática e Ingeniería Electrónica.
Está integrado por profesores y alumnos agrupados en cuatro departamentos
académicos: de Estadística, de Física, de Matemática, de Ingeniería en
Computación e Informática. La facultad a diferencia del departamento
académico, cuenta con organismos asesores: consejo de facultad, escuelas
profesionales, comisiones de currículo, institutos de investigación, conformados
por los propios profesores para fines de administración de lo académico.
El departamento es la unidad fundamental de la academia (conjunto de
intelectuales que crean conocimiento) y son los docentes adscritos los
responsables de la gestión de los syllabus de las disciplinas que imparten.
Tal como se observa en la figura 1 orgánicamente consta de:
a) Consejo de Facultad, constituido por el decano (máxima autoridad de la línea
de la facultad), quien lo preside 5 profesores principales, 3 docentes
asociados, 2 maestros auxiliares, 1 graduado y 6 estudiantes.
b) Los departamentos académicos de Matemática, Física, Estadística, Ingeniería
en Computación e Informática.
c) Centro de Investigación, integrado por el jefe del centro y todos los docentes
adscritos a él.
d) Unidad de responsabilidad social, compuesto por el jefe del centro y todos
los docentes adscritos a él.
e) La oficina de procesos académicos.
f) La oficina de administración.
g) Las escuelas profesionales de Matemática, Física, Estadística, Ingeniería en
Computación e Informática e Ingeniería Electrónica.
h) Unidades de Producción: Centro de idiomas FACFyM
(Vásquez & Ortiz, s.f., pág. 5)
7
Figura 1: Esquema organizaciones de la facultad de Ciencias Físicas y Matemáticas
Fuente: Plan Estratégico de la Facultad de Ciencias Físicas y Matemáticas.
8
1.2 Problemática de la investigación
1.2.1 Planteamiento del Problema
En los últimos años hemos sido testigos del avance de la tecnología y las
comunicaciones, los hogares y edificios no han sido la excepción; es por ello que
la domótica e inmótica vienen siendo una alternativa para volver nuestros
edificios “inteligentes”.
La Escuela Profesional de Ingeniería en Computación e Informática podría
beneficiarse con estos avances; que se aplicarían de manera específica en los
cinco laboratorios que brindan servicios principalmente a los cursos de pre-grado
de dicha escuela profesional, así como el dictado de cursos libres que se
organizan en sus ambientes, ya que en dichos laboratorios hemos observado que
presentan deficiencias en cuanto al control de aparatos eléctricos y electrónicos,
en los que debería intervenir algún dispositivo que los ayude a tener un mejor y/o
adecuado control de las funciones que realiza.
Los sectores que hemos podido identificar y que se tomarán para este caso de
estudio serán los siguientes:
Seguridad y protección : En cuanto al tema de seguridad es una de las principales
preocupaciones que se presenta, ya que los laboratorios cuentan con bienes de
alto valor económico; el mismo que en ocasiones ha sido víctima de robos; por
tal razón consideramos que es indispensable que éstos cuenten con un sistema de
video vigilancia inteligente dentro de las instalaciones y fuera del mismo,
permitiendo de esta manera mantener a buen recaudo el patrimonio, dicho
sistema podrá enviar mensajes de alerta a los usuarios, así como tener la
capacidad de activar las diferentes alarmas con las que cuente.
Otra de las preocupaciones en cuanto al tema de seguridad es el de incendios, que
podría traer grandes pérdidas y daños materiales, es por ello que se plantea el uso
de alarmas técnicas (incendio, humo), que permitan detectar a tiempo un siniestro
y alertar al personal correspondiente al área.
Iluminación: Se ha podido reconocer que en los ambientes donde se desarrollan
las labores académicas (laboratorios) en muchas ocasiones no se cuenta con una
9
adecuada iluminación que permita un ambiente de trabajo adecuado, por lo que
se necesita de un sistema de luminaria automatizado que opere de acuerdo a
diferentes escenarios que se planteen, así como el encendido y apagado de luces
a través de un sistema web, permitiendo de este modo mejorar la calidad de
servicio y contribuir con el cuidado del medio ambiente, al mismo tiempo que
reducimos costes.
Confort: Para garantizar un buen ambiente laboral y de estudios es necesario
contar con un clima adecuado, los laboratorios por el simple hecho de contar con
un gran número de computadoras crea un ambiente de calor extremo en época de
verano, por ello es necesario contar con un sistema de aire acondicionado
automatizado, y para que funcione es necesario contar con un sistema de sensores
que mide las condiciones, calidad y temperatura dentro del inmueble y poder
regularla a través del encendido o apagado del aire acondicionado a la vez que
pueda funcionar a través de otros escenarios; a través de la automatización de la
calefacción se ahorraría un gran porcentaje de costos por ahorro de energía.
Para efectos de nuestra investigación solo se considerarán lo concerniente a
seguridad e iluminación y confort; para ello planteamos la solución a través de la
implementación de un prototipo con una aplicación hecha a medida para el
control de los dispositivos desde internet de acuerdo a los requerimientos,
haciendo uso de la plataforma Arduino y software de bajo coste, permitiendo que
el usuario controle y automatice tareas.
1.2.2 Formulación del Problema
¿El diseño y la implementación de un sistema inmótico mediante el uso de la
plataforma Arduino permitirán mejorar la seguridad, iluminación y confort en los
ambientes del Laboratorio de Computación e Informática de la Facultad de
Ciencias Físicas y Matemáticas?
1.2.3 Justificación e Importancia de la investigación
10
Si bien es cierto en los últimos años la domótica e inmótica han tenido mayor
presencia en nuestras vidas, una serie de tecnologías se han venido desarrollando
a lo largo de este tiempo, con la finalidad de contribuir a mejorar nuestra calidad
de vida.
En este proyecto se realizarán estudios de los diferentes sistemas de
automatización; como lo son: sistemas de iluminación, sistemas de seguridad
(sistema de intrusión, sistema de detección en caso de incendio), los mismos que
servirán de referente para nuevas investigaciones en la región; contribuyendo de
este modo en la difusión de estas nuevas tecnologías y en el uso de las mismas.
El avance de la electrónica ha logrado que se desarrollen un sinnúmero de placas
para cada necesidad o requerimiento, es así que la Plataforma Arduino nos
presenta su micro controlador a un bajo precio y muy sencillo de utilizar que nos
permitirán desarrollar cualquier diseño de control.
La implementación de estas soluciones puede llegar a ser muy cara o muy
económica, dependiendo de tres factores, quien va a realizar la implementación,
las dimensiones de los ambientes y el tipo de tecnología que se utilizará; sin
embargo, es posible que una implementación domótica/inmótica resulte
totalmente económica, si tenemos que adaptar los equipos y sistemas con los que
ya se cuenta dependiendo de nuestras necesidades y gustos. El ahorro que se
genera con sistemas automatizados se ve en el consumo de energía eléctrica, dado
que tenemos diferentes opciones para gestionar los dispositivos de manera
automática y remota.
La domótica ha cambiado la forma en cómo se realizan las tareas del hogar o
como se controlan los diferentes aparatos que se encuentran en un edificio,
ofreciendo no solo seguridad y confort a los seres humanos, en especial de
aquellos que presentan algún tipo de discapacidad; sino también contribuyendo
con el medio ambiente, ya que nos permite optimizar el uso de energía eléctrica.
Por lo expuesto la domótica se presenta como una alternativa a nuestra nueva
forma de vida, integrando diferentes tipos de tecnológicas con la única finalidad
de generar soluciones integradas y a la vez estar a la vanguardia tecnológica.
11
1.3 Objetivos de la Investigación
1.3.1 Objetivo General
Diseñar e implementar un sistema inmótico mediante el uso de la plataforma
Arduino, para mejorar la seguridad, iluminación y confort en los ambientes del
Laboratorio de Computación e Informática de la Facultad de Ciencias Físicas y
Matemáticas.
1.3.2 Objetivos Específicos
Identificar los problemas o deficiencias que presenta el Laboratorio de
Computación e Informática de la Facultad de Ciencias Físicas y Matemáticas.
Identificar los eventos de actuación para cada tipo de escena de acuerdo a las
actividades que se realizan en cada laboratorio.
Diseñar el esquema de intercambio de información para los ambientes de los
laboratorios.
Realizar investigación y programación de las placas Arduino que nos
permitirá automatizar los dispositivos electrónicos y eléctricos, así como
también para servicios SMS, a través de la tarjeta GSM/GPRS, la misma que
enviará las alertas respectivas a los teléfonos móviles de los encargados del
laboratorio.
Diseñar y desarrollar la interfaz gráfica con la que se controlará los sensores
y actuadores que se encuentran distribuidos en los diferentes laboratorios.
Construir una maqueta a pequeña escala que representaran los ambientes de
los laboratorios para la implementación de la automatización.
Verificar el funcionamiento de los sensores de intromisión, así como la
activación de alarmas respectivas.
Realizar las pruebas y correcciones respectivas del sistema inmótico para el
laboratorio.
1.3.3 Limitaciones de la Investigación
El presente proyecto cuenta con limitaciones que a continuación se detallan.
A pesar de que este sistema ha sido pensado para ser utilizado por un amplio
número de personas con distintos tipos de discapacidades, en algunos casos
12
extremos, como es el caso de personas ciegas, este sistema no podría ajustarse
a sus necesidades particulares, debido principalmente a que no podrían
interactuar con el sistema.
Puesto que el sistema propuesto se enmarca dentro de una investigación, es
que no se incluyen pruebas formales del sistema, ya que el resultado sólo es
un software y circuito "Prototipo", y sólo se realizarán pruebas funcionales.
Esto se debe principalmente a que el sistema no pasará por la etapa de
implantación puesto que esto puede retrasar toda la investigación en general.
Se necesita conocimientos previos de los lenguajes que se ocuparán en el
desarrollo del sistema Inmótico tales como PHP, ARDUINO y MYSQL.
Se necesita conocimientos de electrónica para poder ensamblar dicho
proyecto.
1.4 Marco Metodológico
1.4.1 Tipo de Investigación
Tecnológica - Formal
1.4.2 Hipótesis
Si se diseña e implementa un sistema inmótico mediante el uso de la plataforma
Arduino, entonces permitirá mejorar la seguridad, iluminación y confort en los
ambientes del Laboratorio de Computación e Informática de la Facultad de
Ciencias Físicas y Matemáticas.
1.4.3 Operacionalización de Variables
13
1.4.3.1 Variable Independiente
VARIABLE
INDEPENDIENTE DEFINICION
DIMENSIONES INDICADOR
Sistema Inmótico
Sistema informático en el cual mediante el uso
de Arduino y PHP nos permitirá automatizar y
controlar los diferentes ambientes del
laboratorio, éste consta de una red de
comunicación que permite interconectar los
diferentes equipos para obtener información
del ambiente y basado en ello, ejecutar una
serie de acciones sobre el entorno. Este sistema
tendrá conexión con el exterior a través de
internet, para el control y monitoreo de forma
remota de los laboratorios de Computación e
Informática.
Accesibilidad Económica
Tiempo
Cantidad de dinero que se
invierte en la implementación
del proyecto.
Tiempo de demora del
desarrollo de la aplicación
web.
Tiempo de desarrollo del
código Arduino.
Tiempo de elaboración placas
adicionales y cableado del
prototipo
Tabla 1: Variable Independiente
Fuente: Elaboración propia
14
1.4.3.2 Variable Dependiente
VARIABLE DEPENDIENTE DESCRIPCION DIMENSIONES INDICADOR
Mejorar la seguridad, iluminación
y confort
Se busca la mejora de la
iluminación, seguridad y confort
de los laboratorios de Ingeniería
en Computación Informática para
aumentar la calidad de servicio a
través del encendido y apagado de
luces, aires y el reporte de alarmas
de acuerdo a los escenarios
activados.
SEGURIDAD
Tiempo promedio de lectura
de números telefónicos para
envío de SMS.
Tiempo promedio para
activar una alarma.
ILUMINACIÓN
Tiempo promedio para
encender y apagar focos.
CONFORT
Tiempo promedio para
encender y apagar aires
acondicionados.
Tabla 2: Variable Dependiente
Fuente: Elaboración propia
15
1.5 Marco Teórico
1.5.1 Antecedentes
1.5.1.1 Antecedentes en el contexto Internacional
Lledó, E. (2012): Diseño de un sistema de control domótico basado en la
plataforma Arduino. Valencia – España
Conclusiones:
El proyecto se basaba en construir un sistema domótico con una placa
Arduino y un servidor que trabajase sobre Linux, he decidido
desviarme un poco y he cambiado el servidor por otra placa Arduino.
Con esto he conseguido ver que, aunque se puede hacer, reduce las
posibilidades de ampliación del sistema.
Se ha podido demostrar que es posible instalar un sistema domótico
apoyándonos en la plataforma Arduino, con un coste muy inferior al
que se utiliza en las viviendas de lujo, a cambio de dedicarle un poco
de tiempo.
A la hora de programar los distintos elementos ayuda mucho realizar
de antemano un esquema con las funciones que necesitamos y no
alterarlo ya que un proyecto cada vez va haciéndose más grande y
tener que cambiar una cosa que a priori parece insignificante puede
dar mucho trabajo adicional.
Balderon, D. y Congacha, M. (2014): “Estudio y diseño de un sistema
domótico aplicado en el edificio de laboratorios para la facultad de mecánica.
Riobamba - Ecuador”.
Conclusiones:
Se ha demostrado que el proyecto domótico del edificio de laboratorios
de la Facultad de Mecánica beneficiará a sus usuarios, por el hecho de
realizar tareas con mayor facilidad y el control de dispositivos a distancia
16
brinda un escenario adecuado incluso a personas con algún tipo de
discapacidad.
Se realizó un análisis de las condiciones del diseño de la edificación a ser
intervenida, la cual resultó apta para incorporar un sistema domótico X-
10, integrando los sistemas de iluminación. Persianas y circuito cerrado
de cámaras en una solución centralizada, permitiendo al usuario
monitorizar y controlar los sistemas desde una misma aplicación, cuya
interfaz es de fácil manejo.
Se ha estudiado y diseñado el presente proyecto que ofrecerá una gran
flexibilidad para poder expandir el sistema con aplicaciones futuras, pues
la facilidad que presenta el trabajar con el cableado eléctrico permite
integrar dispositivos a la red sin la necesidad de efectuar trabajos
adicionales que afecten a la estética del inmueble.
1.5.1.2 Antecedentes en el contexto Nacional
Rodríguez, W. (2012): “Sistema de control domótico utilizando una central
IP PBX basado en software libre. Lima - Perú”.
Conclusiones:
El uso del controlador ENC28J60 en el módulo de comunicaciones
permitió al Controlador de Equipos la comunicación vía Internet o
LAN. Permitiendo así eliminar cualquier limitante de distancia con el
Servidor Domótico. Además, gracias a la arquitectura planteada, a la
independencia entre el Módulo de Control y Comunicaciones en el
Controlador de Equipos, y al estándar SPI que soporta el controlador
ENC28j60 el sistema planteado es heterogéneo y escalable.
La implementación del Gestor de eventos mediante lenguaje de
programación PHP basado en sockets y el mapeo de puertos en los
router, permitió la comunicación por Internet o LAN entre el Servidor
Domótico y los Controladores de Equipos.
La implementación de la base de datos Modelo de área en MySQL
permitió no solo integrar las tablas con el SID, sino también con el
servidor WEB.
17
DÍAZ, A. (2010): “Diseño de un sistema automatizado de seguridad contra
intrusión en un edificio de departamentos utilizando el estándar de
tecnología inalámbrica Zigbee. Lima - Perú”.
Conclusiones:
El sistema de seguridad diseñado en la presente tesis asegura el
cumplimiento de las características esenciales de: bajo costo , bajo
consumo de energía, estética: es libre de cables y su tamaño es
reducido, transportabilidad: es un sistema inalámbrico que se
desinstala con sencillez y puede llevarse en caso de mudanza, bajo
mantenimiento: al no tener cableado no se requieren reajustes y se
elimina el riesgo de corte de cables por delincuentes, sencillez de
uso para el cliente: el sistema tiene un control remoto de solo 2
botones, seguridad: cuenta con el respaldo de la tecnología IEEE
802.15.4 y ZigBee para las transmisiones y retransmisiones con
CSMA-CA.
El sistema de seguridad contiene elementos esenciales como: el
módulo coordinador, diferentes módulos de monitoreo: sensor de
rotura de vidrio, contactos magnéticos y el módulo control remoto.
Opcionalmente el sistema de seguridad también acepta la
integración de un módulo de aviso para alertar en la zona común piso
del departamento.
1.5.1.3 Antecedentes en el contexto Local
Carrillo, M. y Vite, C., 2016: “Aplicación de una red neuronal para el control
domótico de encendido de luces en una vivienda de la urbanización Santa
Ángela – Chiclayo 2015. Lambayeque - Perú”.
Conclusiones:
18
La red neuronal utilizada es de tipo RNA con tres capas: capa de
entrada, capa oculta y capa de salida. El circuito electrónico
encargado de controlar el fluido eléctrico en la maqueta está
compuesto por focos LED, resistencias, diodos, ácido férrico, fuente
de poder, cables y una placa Arduino UNO que es la encargada de
transmitir los datos del programa MATLAB para que generen
instrucciones de encendido o pagado de luces dentro de la maqueta.
Los dispositivos electrónicos han sido soldados con ácido férrico y
unidos a la placa Arduino UNO, la cual mediante un cable USB se
conecta con un computador que va a conectar el programa MATLAB,
mediante el puerto COM5, posteriormente se declaran los pines de
salida de la placa Arduino para el encendido y apagado de luces.
Chasquero, M. y Guerrero, L. (2015): “Mejoramiento de la eficiencia
eléctrica en el Jockey Club de Chiclayo con aplicación de domótica.
Pimentel - Perú”.
Conclusiones:
La realización de una auditoría eléctrica tiene como objetivo obtener
el máximo rendimiento de la energía consumida y de las instalaciones
necesarias para su generación, transporte, distribución y utilización;
garantizando un funcionamiento sin interferencias de todos los
receptores conectados a la red eléctrica.
Para lograr optimizar un sistema eléctrico se requiere conocer como
están repartidos los consumos a lo largo del tiempo, cuales son las
cargas con factor de potencia más desfavorable y cuál es la causa en
definitiva del bajo rendimiento de la instalación. Todo ello requiere
fundamentalmente de instrumentación adecuada para la medida,
registro y tratamiento de datos.
El beneficio esperado post propuestas de mejora será 541.6 soles por
mes; y un ahorro de emisiones de 836.48 kg CO2 por mes.
19
1.6 Base Teórica
1.6.1 Domótica e Inmótica
Vivimos en la era de la tecnología y la modernidad donde las comunicaciones se
han vuelto cada vez más importantes e indispensables en nuestras vidas tan
agitadas. Es este ritmo de vida el que ha provocado que dispongamos de menos
tiempo para realizar las labores del hogar el que ha provocado que surja la
necesidad de automatizar dichas labores; es así como nace la domótica e inmótica
El termino domótica proviene del latín domus (casa, domicilio) y tica de la
palabra griega “automática”; aunque hay autores quienes dice que deriva de
informática, como define el Diccionario de la RAE, o incluso de robótica.
Lorente S. (2004) a través de un análisis realizado a dicha palabra propone que
deriva del acrónimo Domo-TIC-A; donde “Domo” viene siendo casa o vivienda,
"TIC" por Tecnologías de la Información y las Comunicaciones y finalmente "A"
denotará automatización; pero esto está fuera del marco etimológico.
Huidobro J.M. y Millán R. (2004) dicen que los orígenes de la Domótica se
remontan a los años setenta, cuando en Estados Unidos de Norte América
aparecieron los primeros dispositivos de automatización de edificios basados en
la muy reconocida tecnología X-10. Ya para los años noventa con la aparición de
las computadoras personales y el cableado estructurado aparecen también las
aplicaciones de control y seguridad.
20
Según CEDOM, la domótica es “el conjunto de tecnologías aplicadas al control y la
automatización inteligente de la vivienda, que permite una gestión eficiente del uso
de la energía, que aporta seguridad y confort, además de comunicación entre el
usuario y el sistema”, tal como se muestra en la figura 2.
Mientras que la inmótica según la asociación española de domótica e inmótica define
la inmótica como: “El conjunto de tecnologías aplicadas al control y la
automatización inteligente de edificios no destinados a vivienda, como hoteles,
centros comerciales, escuelas, universidades, hospitales y todos los edificios
terciarios, permitiendo una gestión eficiente del uso de la energía, además de aportar
seguridad, confort, y comunicación entre el usuario y el sistema.”
Tanto la domótica e inmótica se aplican en los siguientes campos:
Climatización y consumo energético
Programación del encendido y apagado de todo tipo de aparatos (aire
acondicionado, toldos, luces, calderas, etc.) según las condiciones
ambientales y otros eventos
Adaptación a los planes de tarifas reducidas (tarifa nocturna)
Contadores eléctricos que informan el consumo de energía.
Entretenimiento y confort
Conexión a internet desde cualquier punto
Juegos en red
Visión de canales de tv en cualquier habitación
Fuente: http://www.cdigitalit.com/que-es-domotica/
Figura 2: Modelo de casa domótica
21
Control de los dispositivos eléctricos y electrónicos del hogar desde
un PC por internet o desde un teléfono.
Seguridad
Configuración de procedimientos de avisos en caso de intrusión o
avería (alarmas técnicas).
Instalación de cámaras y micrófonos para tener un sistema de
seguridad y control de acceso a la vivienda.
Servicios comunitarios
Control de la iluminación en zonas comunes.
Alarmas de seguridad y alarmas técnicas.
1.6.2 Arquitecturas
Según la Dirección General de Industria, Energía y Minas de la Comunidad de
Madrid y Fundación de la Energía de Comunidad de Madrid, en el documento
denominado “La Domótica como solución del futuro” considera las siguientes
arquitecturas:
Arquitectura Centralizada – Los sistemas centralizados se caracterizan por
tener un único nodo que recibe toda la información de las entradas, que la
procesa y envía a las salidas las órdenes de acción correspondiente. Están
unidas a un nodo central que dispone las funciones de control y mando.
(López Jimeno, Hidobro, Novel, & Calafat, 2007).
En la figura 3, se puede observar que a un único controlador se conectan
actuadores, sensores e interfaces.
22
Fuente: https://sltecnologia.wikispaces.com/Domotica
Arquitectura Descentralizada – En un sistema descentralizado, todos los
elementos de red actúan de forma independiente unos de otros. Comparten la
misma línea de comunicación y cada uno de ellos dispone de funciones de
control y mando tal como se observa en la figura 4. Es necesario en estos
entornos, un protocolo de comunicaciones, para que todos los elementos
produzcan una acción coordinada. (López Jimeno, Hidobro, Novel, &
Calafat, 2007).
Fuente: https://sltecnologia.wikispaces.com/Domotica
Figura 3: Esquema de Arquitectura de Sistema Domótica Centralizada
Figura 4: Esquema de Arquitectura de Sistema Domótica Descentralizada
23
Arquitectura Distribuida – Los sistemas distribuidos combinan las
topologías centralizada y descentralizada. La inteligencia del sistema está
localizada en cada uno de los nodos de control y cada nodo tiene acceso físico
directo a una serie limitada de elementos en la red. Es necesario al igual que
en el caso de los sistemas descentralizados, un protocolo de comunicaciones
para que todos los módulos produzcan una acción coordinada, tal como lo
muestra la figura 5 (López Jimeno, Hidobro, Novel, & Calafat, 2007)
Fuente: https://sltecnologia.wikispaces.com/Domotica
Algunos autores consideran una clasificación adicional
Arquitectura Híbrida / Mixta – En este tipo de sistema se combinan las
arquitecturas de los sistemas centralizadas, descentralizadas y distribuidas.
En éstos, se combinan las arquitecturas de los anteriormente mencionados.
Puede contar con un controlador central, como en el caso de la Arquitectura
Centralizada, o varios controladores descentralizados; asimismo, los
diferentes módulos que lo componen (actuadores, interfaces, sensores)
pueden operar como controladores, como en el caso de la Arquitectura
Distribuida. En este caso, los diferentes dispositivos pueden recoger,
gestionar y transmitir la información recibida al resto de los que componen el
sistema y que se encuentran distribuidos por la vivienda, sin que ésta tenga
que pasar, necesariamente, por un controlador principal. (HogarTec, 2012)
Figura 5: Esquema de Arquitectura de Sistema Domótica Distribuida
24
1.6.3 Dispositivos para la automatización
Los elementos que se deben de utilizar para el control y automatización de
cualquier edificio básicamente son los siguientes:
Controlador, es el dispositivo que interconecta los distintos dispositivos
destinados a la automatización del edificio, haciendo de interfaz común de
todos hacia las redes externas. Permite el control local o remoto de los
dispositivos.
El sistema, es el dispositivo responsable de llevar el control de los
dispositivos que se encargan de la automatización, de acuerdo a los
parámetros de actuación.
Canal de comunicación; es aquel que se encarga de comunicar a los
diferentes elementos que componen el sistema y que hacen posible la
comunicación y transmisión de datos e información. Los diversos sistemas
domóticos ofrecidos actualmente te permiten establecer la comunicación de
los diversos elementos a través de un cableado exclusivo para el sistema, sin
embargo, también se puede hacer uso de la red Ethernet, WIFI o utilizando la
red eléctrica de la vivienda o edificio.
Los sensores, dispositivos encargados de recoger la información de los
diferentes parámetros (temperatura, presencia, fugas etc.) y enviarla a la
pasarela para que ejecute las tareas programadas.
Los actuadores, son dispositivos utilizados para modificar los estados de
equipos e instalaciones (alarmas, control de calefacción, ventilación,
luminosidad, etc.). (López Jimeno, Hidobro, Novel, & Calafat, 2007).
En la figura 6 se pueden observar ejemplos de cada uno de estos elementos
que podrían formar parte de un sistema de automatización
25
Fuente https://www.ecured.cu/Dom%C3%B3tica
1.6.4 Tecnologías de control y automatización
Fuente: Junestrand et al (2005), ProHome (2003a)
Recogemos en la tabla 4 el grupo de tecnologías más conocidas que permiten el
intercambio de paquetes de datos de pequeño tamaño y baja latencia, propias de las
redes de control y automatización. Se trata de tecnologías que han nacido y madurado
Figura 6: Dispositivos de Sistemas Domóticos
Tabla 3: Tecnologías de Control y Automatización
26
en los últimos años con origen en las necesidades de control y automatización, de
quieres a continuación se hará una breve descripción. (Domínguez & Sáez Vacas,
2006)
Konnex (KNX)
La KNX Association es creadora y propietaria de «la tecnología KNX:
el ESTÁNDAR mundial para el control de viviendas y edificios» y también
propietaria a nivel mundial del logotipo de la marca KNX. Los miembros son
fabricantes que desarrollan dispositivos para múltiples aplicaciones para el control
de viviendas y edificios basado en KNX, como por ejemplo control de la iluminación,
control de persianas y toldos, calefacción, ventilación, aire acondicionado, gestión
energética, medición, supervisión, monitorización, sistemas de alarmas/intrusos,
electrodomésticos, sistemas de audio y video y muchas otras más.
KNX es el único estándar mundial para el control de la vivienda y del edificio con:
Una única herramienta de puesta en marcha (ETS) independiente de cualquier
fabricante.
Una completa gama de medios de transmisión (TP, PL, RF e IP).
Una completa gama de modos de configuración (modos System y Easy).
KNX está aprobado como:
Estándar Europeo (CENELEC EN 50090 y CEN EN 13321-1).
Estándar Internacional (ISO/IEC 14543-3).
Estándar Chino (GB/T 20965).
Estándar Norteamericano (ANSI/ASHRAE 135).
LonWorks
Echelon desarrolló la Tecnología LonWorks (hardware y software) y la presenta
hacia 1990.
Entre el Software desarrollado tenemos:
Herramienta de Integración LonMaker
Analizadores de Red.
27
Y tecnología Hardware como:
Chip Neuron Transceivers
Módulos Routers
Adaptadores LonTalk
Módulos LonPoint – Nodos
Es una tecnología para la gestión técnica y el control de las instalaciones. Presenta
un control distribuido y descentralizado, permitiendo distribuir la inteligencia entre
sensores y actuadores. Fabricantes de sistemas de control pueden acortar el tiempo
de desarrollo de producto, y los integradores la implantación.
Los dispositivos en una red de LonWorks se comunican a través de un protocolo
específico para redes de control creado por la compañía Echelon. El protocolo ha
sido ratificado como un estándar oficial por un gran número de normas nacionales e
internacionales, incluyendo ANSI, IEEE, CEN y EN. En enero de 2009, el protocolo,
que es la base de la plataforma LonWorks, fue ratificado como un estándar mundial
de control de edificios. Formalmente conocido ahora como ISO/IEC 14908-1.
X10
La tecnología X10, basada en corrientes portadoras, fue desarrollada entre 1976 y
1978 por los ingenieros de Pico Electronics Ltd, en Glenrothes, Scontland. X10
surgió de una familia de chips denominada los proyectos X (o series X). Esta empresa
comenzó a desarrollar este proyecto con la idea de obtener un circuito que pudiera
ser insertado en un sistema mayor y controlado remotamente. En colaboración con
BSR, una empresa dedicada a los sistemas de audio, comenzaron a construir los
dispositivos X10.
Existe una amplia gama de equipos que implementan el protocolo X10, desde
interruptores para iluminación a completos paneles de control, emisores y receptores
de radiofrecuencias, sensores de movimiento e incluso cámaras. La instalación de
casi todos esos dispositivos se reduce a enchufarlos a una toma de corriente
convencional de la casa, y para el caso de los dispositivos inalámbricos, su colocación
se reduce a fijarlos a una superficie.
28
X10 es el "lenguaje" de comunicación que utilizan los productos compatibles X10
para hablarse entre ellos, aprovechando para ello la instalación eléctrica existente de
220V de su casa, y evitando tener que instalar cables.
Los productos de automatización del hogar X10 están diseñados para que puedan ser
instalados fácilmente por cualquier persona sin necesidad de conocimientos
especiales. Cada aparato tiene una dirección a la que responde o envía, existiendo un
total de 256 direcciones. Todos los productos X10 son compatibles entre sí por lo
que se pueden combinar para formar el sistema más adecuado a sus preferencias.
ZigBee
ZigBee es un estándar de comunicaciones inalámbricas diseñado por la ZigBee
Alliance. Es un conjunto estandarizado de soluciones que pueden ser implementadas
por cualquier fabricante. ZigBee está basado en el estándar IEEE 802.15.4 de redes
inalámbricas de área personal (Wireless personal área Newark, WPAN) y tiene como
objetivo las aplicaciones que requieren comunicaciones seguras con baja tasa de
envío de datos y maximización de la vida útil de sus baterías. ZigBee es un sistema
ideal para redes domóticas, específicamente diseñado para reemplazar la
proliferación de sensores/actuadores individuales. ZigBee fue creado para cubrir la
necesidad del mercado de un sistema a bajo coste, un estándar para redes Wireless
de pequeños paquetes de información, de bajo consumo eléctrico, seguro y fiable.
Si hablamos de los tipos de dispositivos, nos encontramos con tres categorías de
nodos:
El primero y más importante ya que ha de existir obligatoriamente en una red.
El Coordinador ZigBee es el nodo más completo y se encarga de controlar
toda la red y los caminos para su comunicación.
Por debajo tenemos el Router ZigBee que interconecta los nodos para poder
ejecutar código del usuario, es decir, ofrece un nivel de aplicación dentro de
la torre de protocolos.
Por último, el Dispositivo final ZigBee sólo recibe información y se comunica
únicamente con el nodo padre. La ventaja de este dispositivo es que puede
29
permanecer dormido y ‘despertarse’ en ciertos momentos para alargar la
duración de batería.
1.6.5 Tecnologías de control de datos
Originarias en su mayoría de los entornos empresariales, las tecnologías de redes
de datos se han introducido en los hogares a un ritmo vertiginoso. Si bien el
predominio de las soluciones cableadas tipo Ethernet sigue siendo claro, han
aparecido numerosas alternativas inalámbricas como WiFi o que aprovechan las
infraestructuras ya existentes en la vivienda como HomePlug, que hace uso del
cableado eléctrico, o HomePNA, que aprovecha la red y tomas telefónicas.
(Domínguez & Sáez Vacas, 2006)
Fuente: Junestrand et al (2005), ProHome (2003a)
Ethernet
La primera LAN (Red de área local) del mundo fue la versión original de
Ethernet. El primer estándar de Ethernet fue publicado por un consorcio formado
por Digital Equipment Corporation, Intel y Xerox (DIX). El estándar para
Ethernet es el 802.3. El IEEE quería asegurar que sus estándares fueran
compatibles con los del modelo OSI de la Organización Internacional para la
Estandarización (ISO). Ethernet opera a través de dos capas del modelo OSI. El
modelo ofrece una referencia sobre con qué puede relacionarse Ethernet, pero en
realidad se implementa sólo en la mitad inferior de la capa de Enlace de datos,
Tabla 4: Tecnologías de Control de Datos
30
que se conoce como subcapa Control de acceso al medio (Media Access Control,
MAC), y la capa física.
Las primeras versiones de Ethernet utilizaban cable coaxial para conectar
computadoras en una topología de bus. La capacidad de migrar la
implementación original de Ethernet a las implementaciones de Ethernet actuales
y futuras se basa en la estructura de la trama de Capa 2, que prácticamente no ha
cambiado.
Los medios físicos originales de cable coaxial grueso y fino se reemplazaron por
categorías iniciales de cables UTP. En comparación con los cables coaxiales, los
cables UTP eran más fáciles de utilizar, más livianos y menos costosos. La
topología física también se cambió por una topología en estrella utilizando hubs,
quienes concentran las conexiones.
HomePlug
HomePlug es una alianza de varias empresas que trabajan en el desarrollo de una
tecnología que permita implementar redes de área local usando la instalación
eléctrica de baja tensión de las viviendas, oficinas o industrias, evitando así la
instalación de nuevos cables. Con velocidades que, en su primera versión llega a
los 14 Mbps tal como se menciona en la tabla resumen 5. El usuario podrá
conectarse a Internet desde cualquier zona de la vivienda en donde disponga de
una toma eléctrica estándar, consiguiendo así la movilidad y flexibilidad que
necesitan la mayoría de los usuarios en sus aplicaciones cotidianas.
HomePNA
Históricamente, el HomePNA y la tecnología inalámbrica 802.11 han seguido los
mismos pasos. Ambas nacieron con el objetivo de ofrecer 2-3 Mbps de ancho de
banda (HomePNA 1.0 y 802.11) y fallaron al intentar captar la atención del
mercado. Posteriormente, fueron mejoradas para alcanzar los 10 Mbps
(HomePNA 2.0 y 802.11b (WiFi)) cifra similar a la que los usuarios están
acostumbrados con el Ethernet cableado. El objetivo es construir una red de área
local sin nuevos cables ni obras que permitan unir ordenadores, impresoras y
31
otros recursos como hubs específicos, routers ADSL o pasarelas residenciales. Al
igual que las tecnologías de bucle de acceso xDSL, la HomePNA usa el ancho de
banda libre de los cables telefónicos de la vivienda para inyectar su señal
modulada por encima de los 2 MHz. Al igual que xDSL, el HomePNA usa
modulación FDM (Frequency Division Multiplexing) formadas por multitud de
portadoras ocupando un gran ancho de banda. HomePNA es una iniciativa
desarrollada para el mercado norteamericano, donde la mayoría de las viviendas
tienen una toma telefónica en cada habitación.
IEEE 802.11 WiFi
Una red Wi-Fi es una red de comunicaciones de datos y, por lo tanto, permite
conectar servidores, PC, impresoras, etc., con la particularidad de alcanzarlo sin
necesidad de cableado. El acrónimo Wi-Fi se utiliza para identificar los productos
que incorporan cualquier tecnología sin hilos de los estándares IEEE 802.11, que
permiten la creación de redes de área local sin hilos conocidas como WLAN, y
que son plenamente compatibles con los de cualquier otro fabricante que utilice
estos estándares.
Las características generales de funcionamiento de una red Wi-Fi son las mismas
que las de una red con cableado. La particularidad es que el Wi-Fi utiliza el aire
como medio de transmisión. Los componentes básicos de una red Wi-Fi son:
• El punto de acceso (AP): es la unión entre las redes con cableado y la red WiFi,
o entre diversas zonas cubiertas por redes Wi-Fi, que actúa entonces como
repetidor de la señal entre estas zonas (celdas).
• Unas o más antenas conectadas al punto de acceso.
• Un terminal Wi-Fi. Éste puede tener forma de dispositivo externo Wi-Fi, que se
instala en el PC del usuario, o bien puede encontrarse ya integrado, como sucede
habitualmente con los ordenadores portátiles.
La mayoría de los dispositivos inalámbricos comerciales (teléfonos móviles,
televisión, radio, etc.) usan frecuencias de radio adjudicadas mediante una
licencia. Las grandes organizaciones pagan elevados cánones por el derecho de
utilizar esas frecuencias. WiFi utiliza porciones del espectro que no requieren
licencia, tales como:
32
Las bandas ISM (Industrial, Scientific and Medical) permiten el uso de
las porciones 2.4-2.5 GHz, 5.8 GHz, y muchas otras frecuencias (no
utilizadas en WiFi).
Las bandas UNII (Unlicensed National Information Infrastructure)
permiten el uso sin licencia de otras porciones del espectro de 5
GHz.HomeRF
HomeRF
HomeRF es la tecnología que compite directamente con los productos de la IEEE
802.11b y Bluetooth en la banda de 2.4 GHz. La velocidad máxima de HomeRF
es 10 Mbps, ideal para las aplicaciones caseras, aunque se manejan otras
velocidades de 5, 1.6 y 0.8 Mbps. Según el grupo de trabajo, HomeRF ofrece más
seguridad, los dispositivos consumen menos potencia que los productos de las
tecnologías contrincantes, además de permitir aplicaciones para telefonía y video.
1.6.6 Normativas
La guía 2:1996 de ISO define las normas como documentos elaborados por
consenso y aprobados por un organismo reconocido que ofrecen, para uso común
reglas, directrices o características para actividades o los resultados de éstas, con
el fin de lograr un óptimo nivel de orden en un contexto determinado.
La certificación de instalaciones domóticas se basa en la especificación de
AENOR EA0026: 2006 Instalaciones de sistemas domóticos en viviendas.
Prescripciones generales de instalación y evaluación.
La especificación técnica EA0026, confeccionada por el Comité de
Normalización AENOR 202/SC205 fue aprobada en septiembre de 2013 a nivel
europeo y se convierte en documento de referencia para la norma europea UNE-
EN 50491-6-1 "Sistemas Electrónicos para Viviendas y Edificios", que se
encuentra en fase de elaboración.
La EA0026 permite certificar instalaciones domóticas de acuerdo a una
clasificación de tres niveles que se han definido basándose en el principio de
alcanzar un nivel considerado "básico" Nivel 1, "intermedio" o Nivel 2, y el que
se corresponde con "excelente" o Nivel 3.
33
Se considera que un sistema es domótico si alcanza el Nivel 1.
1.6.7 Organismos de normalización
CENELEC: Comité Europeo de Normalización Electrotécnica y es
responsable de la normalización en el campo de la ingeniería
electrotécnica. La misión de CENELEC preparar estándares de carácter
voluntario, que ayudan a facilitar el comercio entre los países, crear nuevos
mercados, reducir los costos de cumplimiento y apoyar el desarrollo de un
mercado único europeo.
CEN el Comité Europeo de Normalización (CEN) es un catalizador de
negocios en Europa, la eliminación de las barreras comerciales para los
agentes europeos, como la industria, la administración pública, los
proveedores de servicios, los consumidores y otras partes interesadas. Su
misión es fomentar la economía europea en el comercio mundial, el bienestar
de los ciudadanos europeos y el medio ambiente. A través de sus servicios
CEN proporciona una plataforma para el desarrollo de las normas europeas y
otras especificaciones.
ETSI: Eurpean Telecommunications Standards Instiitute (ETSI) creada en
1988 produce normas de aplicación mundial para Tecnologías de
Información y Comunicación (TIC), incluyendo telefonía fija, móvil, radio y
convergentes, tecnologías aeronáuticas, de difusión y de Internet y es
reconocido oficialmente por la Unión Europea como una organización de
estándares europeos. ETSI es una asociación independiente sin fines de lucro
que tiene más 800 organizaciones miembros, procedentes de 67 países de los
5 continentes.
ITU es el organismo especializado de las Naciones Unidas encargado de
regular las tecnologías de la información y la comunicación – TIC. Desarrolla
las normas técnicas que garanticen las redes y tecnologías de interconexión a
34
la perfección, y se esfuerzan por mejorar el acceso a las TIC a comunidades
en todo el mundo.
La UIT se ha comprometido a conectar todas las personas del mundo -
dondequiera que vivan y sean cuales sean sus medios.
IEC Fundada en 1906, la IEC (Comisión Electrotécnica Internacional) es la
organización líder en el mundo para la preparación y publicación de normas
internacionales para todas las tecnologías eléctricas, electrónicas y
relacionadas. Estos son conocidos colectivamente como "electrotecnia". IEC
proporciona una plataforma para empresas, industrias y gobiernos para
reunirse, discutir y desarrollar las Normas Internacionales que requieren.
Todas las normas internacionales de la IEC representan las necesidades de
las partes interesadas de cada nación que participan en el trabajo de IEC.
1.6.8 Arduino
Arduino es una plataforma electrónica de código abierto basado en hardware y
software fácil de usar.
Arduino nació en el año 2005 en el Instituto de Diseño Interactivo de Ivrea
(Italia), centro académico donde los estudiantes se dedicaban a experimentar con
la interacción entre humanos y diferentes dispositivos (muchos de ellos basados
en microcontroladores) para conseguir generar espacios únicos, especialmente
artísticos. Arduino apareció por la necesidad de contar con un dispositivo para
utilizar en las aulas que fuera de bajo coste, que funcionase bajo cualquier sistema
operativo y que contase con documentación adaptada a gente que quisiera
empezar de cero.
El principal responsable de la idea y diseño de Arduino, y la cabeza visible del
proyecto es el llamado “Arduino Team”, formado por Massimo Banzi (profesor
en aquella época del Instituto Ivrea), David Cuartielles (profesor de la Escuela de
Artes y Comunicación de la Universidad de Mälmo, Suecia), David Mellis (por
aquel entonces estudiante en Ivrea y actualmente miembro del grupo de
investigación High-Low Tech del MIT Media Lab), Tom Igoe (profesor de la
Escuela de Arte Tisch de Nueva York), y Gianluca Martino (responsable de
35
empresa fabricante de los prototipos de las placas, cuya web oficial es:
http://www.smartprojects.it).
1.6.8.1 Hardware Arduino
Es una placa hardware libre que incorpora un microcontrolador
reprogramable y una serie de pines-hembra (los cuales están unidos
internamente a las patillas de E/S del microcontrolador) que permiten
conectar allí de forma muy sencilla y cómoda diferentes sensores y
actuadores.
No obstante, cuando hablamos de “placa Arduino”, deberíamos especificar el
modelo concreto, ya que existen varias placas Arduino oficiales, cada una con
diferentes características (como el tamaño físico, el número de pines-hembra
ofrecidos, el modelo de microcontrolador incorporado –y como consecuencia,
entre otras cosas, la cantidad de memoria utilizable–, etc.). Conviene conocer
estas características para identificar qué placa Arduino es la que nos
convendrá más en cada proyecto. (Arduino.cc, Arduino, 2019).
1.6.8.2 Arduino Mega
El Mega 2560 es una placa electrónica basada en el Atmega2560; dicha placa
tiene 54 pines digitales de entrada / salida (de los cuales 15 se pueden utilizar
como salidas PWM), 16 entradas analógicas, 4 UARTs (puertos serie de
hardware), un oscilador de 16MHz, una conexión USB, un conector de
alimentación, una cabecera ICSP, y un botón de reinicio; y es compatible de
con la mayoría de Shields Arduino. (Arduino.cc, 2019)
Figura 7: Arduino Mega
36
Fuente: https://arduino.cl/arduino-mega-2560/
ESPECIFICACIONES TÉCNICAS
En la tabla 6 se hace un listado de las características que se deben tener en cuenta al
momento de implementar un proyecto utilizando la placa Arduino que se muestra en
la figura 7.
Microcontrolador ATmega2560
Tensión de trabajo 5V
Tensión de entrada (recomendada) 7-12V
Tensión de entrada (límite) 6-20V
Pines Digitales I/O 54 (de los cuales 15 proporcionan salida PWM)
Pines de entradas Analógicas 16
DC Corriente por Pin I/O 20 mA
DC Corriente por Pin 3.3V 50 mA
Memoria Flash 256 KB de los cuales 8 KB se usan por el
bootloader
SRAM 8 KB
EEPROM 4 KB
Velocidad del reloj 16 MHz
Largo 101.52 mm
Ancho 53.3 mm
37
Peso 37 g
Tabla 5: Especificaciones Técnicas Arduino Mega
Fuente: https://store.arduino.cc/usa/arduino- mega-2560-rev3
Alimentación eléctrica
El Arduino Mega puede ser alimentado a través de la conexión USB o con una fuente
de alimentación externa.
La alimentación externa (no USB) puede venir de un adaptador de CA a CC o de una
batería.
La tarjeta puede funcionar con un suministro externo de 6 a 20 voltios. Si se alimenta
con menos de 7 V, sin embargo, el pin de 5V puede suministrar menos de cinco
voltios y la placa se puede volver inestable. Si se utiliza más de 12 V, el regulador
de voltaje se puede sobrecalentar y dañar la placa. El rango recomendado es de 7 a
12 voltios.
Los pines de alimentación son los siguientes:
VIN: A través de este pin es posible proporcionar alimentación a la placa
cuando se utiliza una fuente de alimentación externa.
5V: Podemos obtener un voltaje de 5V y una corriente de 40mA desde este
pin; que se obtiene desde el conector de alimentación de CC (7 a 12 V); sin
embargo, este suministro de energía no pasa por el regulador y en caso de
sobrecarga de tensión podría dañar la placa.
3.3V: Podemos obtener un voltaje de 3.3V y una corriente de 50mA desde
este pin.
GND: El ground (0V) de la placa.
IOREF. Este pin en la placa proporciona la referencia de tensión con la que
opera el microcontrolador. Un escudo bien configurado puede leer la tensión
del pin IOREF y seleccionar la fuente de alimentación adecuada o habilitar
traductores de tensión en las salidas para trabajar con el 5 V o 3.3 V.
(Arduino.cc, 2019)
Memoria
38
El Atmega2560 tiene 256 KB de memoria flash para almacenar el código (de la que
se utilizan 8 KB para el cargador de arranque), 8 KB de SRAM y 4 KB de EEPROM
(que puede ser leída y escrita con la biblioteca EEPROM).
(Arduino.cc, 2019)
Entrada y Salida
Cada uno de los 54 pines digitales del Mega se puede utilizar como una entrada o
como una salida, utilizando las funciones pinMode(), digitalWrite() y digitalRead().
Cada pin puede proporcionar o recibir 20 mA como condición de funcionamiento
recomendada y tiene una resistencia de pull-up (desconectada por defecto) de 20-50
k ohmios. Un máximo de 40 mA es el valor que no debe superarse para evitar daños
permanentes en el microcontrolador.
Además, algunos pines tienen funciones especializadas:
Serial: 0 (RX) y 1 (TX); Serial 1: 19 (RX) y 18 (TX); Serial 2: 17 (RX) y 16
(TX); Serial 3: 15 (RX) y 14 (TX). Usado para recibir (RX) y transmitir (TX)
TTL datos por serial. Los Pines 0 y 1 también están conectados a los pines
correspondientes ATmega8U2 USB-to-TTL Serial chip.
Interrupciones Externas: 2 (interruptor 0), 3 (interruptor 1), 18 (interruptor 5), 19
(interruptor 4), 20 (interruptor 3), y 21 (interruptor 2). Estos pines se pueden
configurar para activar una interrupción en un valor bajo, un flanco ascendente o
descendente, o un cambio en el valor.
PWM: 0 a 13. Proporciona 8-bit PWM de salida con la función analogWrite().
SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Estos pines soportan la
comunicación SPI usando la librería SPI. Los Pines SPI también se dividen en el
encabezado de ICSP, que es físicamente compatible con Uno, Duemilanove y
Diecimila.
39
LED: 13. Hay un LED incorporado conectado al pin digital 13. Cuando este pin
está a nivel HIGH (Alto), el led se encuentra encendido, sin embargo; cuando el
pin está a nivel LOW (Bajo), éste está apagado.
I2C: 20 (SDA) y 21 (SCL). Soporta la comunicación I2C (TWI) utilizando la
librería Wire. Tenga en cuenta que estos pines no están en la misma ubicación
que los pines I2C en Duemilanove o Diecimila
El Mega 2560 tiene 16 entradas analógicas, cada una de las cuales proporcionan 10
bits de resolución (es decir, 1024 valores diferentes).
Hay un par de pines en la placa:
AREF. Tensión de referencia para las entradas analógicas. Se utiliza
con analogReference().
Reset. Llevar esta línea a nivel LOW para reiniciar el microcontrolador.
(Arduino.cc, 2019)
ATmega2560-Arduino Pin Mapping
Las ubicaciones de los pines las podemos observar en el anexo 1 y el detalle de cada
uno de ellos en la tabla del anexo 2.
Comunicación
La placa Mega 2560 tiene permite la comunicación con un ordenador, otra placa, u
otros microcontroladores a través de una serie de puertos que vienen incorporados en
esta.
La conexión USB con la PC es necesaria para programar la placa y no solo para
encenderla.
El software de Arduino (IDE) incluye un monitor serial que permite que los datos de
texto simples puedan ser enviados hacia y desde la placa. Los LEDs RX y TX de la
placa parpadean indicando que se están transmitiendo datos a través de él.
La biblioteca SoftwareSerial permite la comunicación serie en cualquiera de los pines
digitales del Mega 2560.
40
El Mega 2560 también es compatible con la comunicación TWI y SPI. El software
de Arduino (IDE) incluye una biblioteca Wire para simplificar el uso del bus
TWI. Para la comunicación SPI, utilice la biblioteca SPI.
(Arduino.cc, 2019)
Programación
La placa Mega 2560 se puede programar con el software de Arduino (IDE) y vienen
pre programadas con un cargador de arranque (bootloader) que le permite cargar un
nuevo código en ella sin el uso de un programador de hardware externo. Se comunica
utilizando el protocolo original STK500.
También puede pasar por alto el gestor de arranque y programar el microcontrolador
a través del conector ICSP (In Chip Serial Programmer).
(Arduino.cc, 2019)
1.6.8.3 Arduino Nano
El Arduino Nano es una placa pequeña, completa y fácil de utilizar basado en
el ATmega328P (Arduino Nano 3.x). Tiene más o menos la misma
funcionalidad del Arduino Duemilanove, pero en un paquete diferente (figura
8).
A continuación, en la tabla 7 se detallan las características técnicas que se
deben tener en cuenta al momento de implementar un proyecto.
Microcontroller ATmega328
Architecture AVR
Operating Voltage 5 V
Flash Memory 32 KB of which 2 KB used by bootloader
SRAM 2 KB
Clock Speed 16 MHz
Analog IN Pins 8
41
EEPROM 1 KB
DC Current per I/O Pins 40 mA (I/O Pins)
Input Voltage 7-12 V
Digital I/O Pins 22 (6 of which are PWM)
PWM Output 6
Power Consumption 19 mA
PCB Size 18 x 45 mm
Weight 7 g
Product Code A000005
Tabla 6: Especificaciones Técnicas Arduino Nano
Fuente: https://store.arduino.cc/usa/arduino-nano
Alimentación
El Arduino Nano se puede alimentar a través de la conexión USB Mini-B,
una fuente de alimentación externa no regulada de 6-20 V (pin 30) o una
fuente de alimentación externa regulada de 5 V (pin 27). La fuente de poder
se selecciona automáticamente a la fuente de voltaje más alto.
(Arduino.cc, 2019)
Memoria
El ATmega328 tiene 32 KB (con 2 KB utilizados para el cargador de
arranque). El ATmega328 tiene 2 KB de SRAM y 1 KB de EEPROM.
(Arduino.cc, 2019)
Entradas y salidas.
42
Cada uno de los 14 pines digitales del Nano se puede usar como entrada o
salida, usando las funciones pinMode (), digitalWrite () y digitalRead (). Esto
funciona a 5 voltios. Cada pin puede proporcionar o recibir un máximo de 40
mA y tiene una resistencia de pull-up interna (desconectada por defecto) de
20-50 KOhms. Además, algunos pines tienen funciones especializadas:
Serie: 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y transmitir (TX)
datos serie TTL. Estos pines se conectan a los pines correspondientes
del chip serial FTDI USB a TTL.
Interrupciones externas: 2 y 3. Estos pines se pueden configurar para
activar una interrupción en un valor bajo, un flanco ascendente o
descendente, o un cambio en el valor utilzando la función
attachInterrupt().
PWM: 3, 5, 6, 9, 10 y 11. Proporciona una salida PWM de 8 bits con
la función analogWrite ().
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines son
compatibles con la comunicación SPI, que, aunque proporcionada por
el hardware subyacente, no se incluye actualmente en el lenguaje
Arduino.
LED: 13. Hay un LED incorporado conectado al pin digital 13.
Cuando el pin tiene un valor ALTO, el LED está encendido, cuando
el pin está BAJO, está apagado.
El Arduino Nano tiene 8 entradas analógicas, cada una de las cuales
proporciona 10 bits de resolución (es decir, 1024 valores diferentes). Por
defecto, miden desde tierra hasta 5 voltios, aunque es posible cambiar el
extremo superior de su rango utilizando la función analogReference(). Los
pines analógicos 6 y 7 no pueden usarse como pines digitales. Además,
algunos pines tienen funcionalidad especializada:
I2C: A4 (SDA) y A5 (SCL). Admite la comunicación I2C (TWI)
utilizando la librería Wire.
Hay un par de otros pines en la placa los cuales son:
43
AREF. Tensión de referencia para las entradas analógicas. Utilizado
con analogReference().
Reiniciar. Normalmente se usa para agregar un botón de reinicio a las Shields
cuando se bloquea el de la placa.
(Arduino.cc, 2019)
Comunicación
El Arduino Nano tiene una serie de instalaciones para comunicarse con una
computadora, otro Arduino u otros microcontroladores. El ATmega328
proporciona comunicación serial UART TTL (5V), que está disponible en los
pines digitales 0 (RX) y 1 (TX). Un FTDI FT232RL en la placa canaliza esta
comunicación serie a través de USB y los controladores FTDI (incluido con
el software Arduino) proporcionan un puerto de comunicaciones virtual para
el software en la computadora. El software Arduino incluye un monitor en
serie que permite enviar datos textuales simples hacia y desde la placa
Arduino. Los LED de RX y TX en la placa parpadearán cuando los datos se
transmitan a través del chip FTDI y la conexión USB a la computadora (pero
no para la comunicación en serie en los pines 0 y 1). La librería SoftwareSerial
permite la comunicación en serie en cualquiera de los pines digitales del
Nano. El ATmega328 también admite la comunicación I2C (TWI) y SPI. El
software Arduino incluye una biblioteca Wire para simplificar el uso del bus
I2C.
(Arduino.cc, 2019)
Programación
El Arduino Nano se puede programar con el software Arduino. Únicamente
se debe seleccionar "Arduino Duemilanove o Nano w / ATmega328" en el
menú Herramientas> Placa (de acuerdo con el microcontrolador en su placa).
44
El ATmega328 en el Arduino Nano viene precargado con un cargador de
arranque que le permite cargar un nuevo código sin el uso de un programador
de hardware externo. Se comunica utilizando el protocolo original STK500.
También puede omitir el gestor de arranque y programar el microcontrolador
a través del encabezado de ICSP (Programación en Serie en Circuito) usando
Arduino ISP o similar.
(Arduino.cc, 2019)
Fuente: https://arduino.cl/arduino-nano/
1.6.8.4 Otras placas oficiales de Arduino
Entre una de las placas más conocidas se encuentra la mundialmente famosa
Arduino Uno.
Arduino UNO
Arduino / Genuino Uno es una placa electrónica basada en el ATmega328P.
Cuenta con 14 pines digitales de entrada / salida (de los cuales 6 se podrán
utilizar como salidas PWM), 6 entradas analógicas, un cristal de cuarzo de 16
MHz, una conexión USB, un conector de alimentación, una cabecera ICSP y
Figura 8: Arduino Nano
45
un botón de reinicio. Contiene todo lo necesario para soportar el
microcontrolador; basta con conectarlo a un ordenador con un cable USB o
la corriente con un adaptador de CA a CC o una batería para empezar. Fue
elegido para marcar el lanzamiento de Arduino Software (IDE) 1.0.
Desde que apareció en 2010 ha sufrido tres revisiones, por lo que el modelo
actual se suele llamar UNO Rev3 o simplemente UNO R3.
El modelo del microcontrolador UNO
El microcontrolador que lleva la placa Arduino UNO es el modelo
ATmega328P de la marca Atmel. La “P” del final significa que este chip
incorpora la tecnología “Picopower” (propietaria de Atmel), la cual permite
un consumo eléctrico sensiblemente menor comparándolo con el modelo
equivalente sin “Picopower”. De todas formas, aunque el ATmega328P
pueda trabajar a un voltaje menor y consumir menos corriente que el
Atmega328 (especialmente en los modos de hibernación), ambos modelos
son funcionalmente idénticos.
Tiene una arquitectura de tipo AVR, más concretamente, el ATmega328P
pertenece a la subfamilia de microcontroladores “megaAVR”. Si se desea
saber más sobre la arquitectura AVR y los modelos y características consultar
la web de la propia empresa fabricante:
http://www.atmel.com/products/microcontrollers/avr/default.aspx). Y más
en concreto, si se desea consultar la especificación técnica del ATmega328P
ver aquí:
http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf.
Todas las patillas (también llamadas “pines”) de entrada/salida del
microcontrolador sirven para comunicar el microcontrolador con el mundo
exterior, es cierto que cada pin suele tener una determinada función
específica. Como cada modelo de microcontrolador tiene un número y
ubicación de pines diferente, en este caso podemos ver la disposición de pines
del ATmega328P en la figura 9.
46
Fuente: https://aprendiendoarduino.wordpress.com/tag/esquemas-electricos/
Observando la imagen se puede saber qué pin es el que recibe la alimentación
eléctrica (señalado como “VCC”), qué dos pines están conectados a tierra (los
señalados como “GND”), qué pines son los de E/S (señalados como PBx, PCx
o PDx) y la existencia de otros pines más específicos como el AVCC (donde
se recibe la alimentación suplementaria para el convertidor analógico-digital
interno del chip) o el AREF (donde se recibe la referencia analógica para
dicho convertidor –esto lo estudiaremos más adelante–). También se puede
observar que junto el nombre de los pines de E/S se indica entre paréntesis
las funciones especializadas que cada uno de ellos tiene en particular (además
de su función genérica de entrada/salida).
Las memorias del microcontrolador
Figura 9: Orientación de los pines y elementos en el Arduino Uno
47
Memoria Flash: memoria persistente donde se almacena permanentemente
el programa que ejecuta el microcontrolador (hasta una nueva reescritura si
se da el caso). En el caso del ATmega328P tiene una capacidad de 32KB. En
los microcontroladores que vienen incluidos en la placa Arduino no podemos
usar toda la capacidad de la memoria Flash porque existen 512 bytes (el
llamado “bootloader block”) ocupados ya por un código pre programado de
fábrica (el llamado “bootloader” o “gestor de arranque”), el cual nos permite
usar la placa Arduino de una forma sencilla y cómoda sin tener que conocer
las interioridades electrónicas más avanzadas del microcontrolador.
Memoria SRAM: memoria volátil donde se alojan los datos que en ese
instante el programa (grabado separadamente en la memoria Flash,
recordemos) necesita crear o manipular para su correcto funcionamiento.
Estos datos suelen tener un contenido variable a lo largo del tiempo de
ejecución del programa y cada uno es de un tipo concreto (es decir, un dato
puede contener un valor numérico entero, otro un número decimal, otro un
valor de tipo carácter… también pueden ser cadenas de texto fijas u otros
tipos de datos más especiales). Independientemente del tipo de dato, su valor
siempre será eliminado cuando se deje de alimentar eléctricamente al
microcontrolador. En el caso del ATmega328P esta memoria tiene una
capacidad de 2KB.
Si necesitáramos ampliar la cantidad de memoria SRAM disponible, siempre
podríamos adquirir memorias SRAM independientes y conectarlas al
microcontrolador utilizando algún protocolo de comunicación como SPI o
I2C.
Memoria EEPROM: memoria persistente donde se almacenan datos que se
desea que permanezcan grabados una vez apagado el microcontrolador para
poderlos usar posteriormente en siguientes reinicios. En el caso del
ATmega328P esta memoria tiene una capacidad de 1 KB, por lo que se puede
entender como una tabla de 1024 posiciones de un byte cada una.
48
Si necesitáramos ampliar la cantidad de memoria EEPROM disponible,
siempre podemos adquirir memorias EEPROM independientes y conectarlas
al microcontrolador utilizando algún protocolo de comunicación (SPI o I2C).
O bien, alternativamente, adquirir tarjetas de memoria de tipo SD (“Secure
Digital”) y comunicarlas mediante un circuito específico al microcontrolador.
Los registros del microcontrolador
Los registros son espacios de memoria existentes dentro de la propia CPU de
un microcontrolador. Son muy importantes porque tienen varias funciones
imprescindibles: sirven para albergar los datos (cargados previamente desde
la memoria SRAM o EEPROM) necesarios para la ejecución de las
instrucciones previstas próximamente (y así tenerlos perfectamente
disponibles en el momento adecuado); sirven también para almacenar
temporalmente los resultados de las instrucciones recientemente ejecutadas
(por si se necesitan en algún instante posterior) y sirven además para alojar
las propias instrucciones que en ese mismo momento estén ejecutándose.
Los protocolos de comunicación I2C/TWI y SPI
Cuando se desea transmitir un conjunto de datos desde un componente
electrónico a otro, se puede hacer de múltiples formas. Una de ellas es
estableciendo una comunicación “serie”; en este tipo de comunicación la
información es transmitida bit a bit (uno tras otro) por un único canal,
enviando por tanto un solo bit en cada momento. Otra manera de transferir
datos es mediante la llamada comunicación “paralela”, en la cual se envían
varios bits simultáneamente, cada uno por un canal separado y sincronizado
con el resto.
I2C (Inter-Integrated Circuit, también conocido con el nombre de TWI –de
“TWo-wIre”, literalmente “dos cables” en inglés–): es un sistema muy
utilizado para comunicar circuitos integrados entre sí. Su principal
característica es que utiliza dos líneas para transmitir la información: una
(llamada línea “SDA”) sirve para transferir los datos (los 0s y los 1s) y otra
49
(llamada línea “SCL”) sirve para enviar la señal de reloj (Véase figura 10).
En realidad, también se necesitarían dos líneas más: la de alimentación y la
de tierra común, pero estas ya se presuponen existentes en el circuito.
Por “señal de reloj” se entiende una señal binaria de una frecuencia periódica
muy precisa que sirve para coordinar y sincronizar los elementos integrantes
de una comunicación (es decir, los emisores y receptores) de forma que todos
sepan cuándo empieza, cuánto dura y cuándo acaba la transferencia de
información. En hojas técnicas y diagramas a la señal de reloj en general se
le suele describir como CLK (del inglés “clock”).
Cada dispositivo conectado al bus I²C tiene una dirección única que lo
identifica respecto el resto de dispositivos, y puede estar configurado como
“maestro” o como “esclavo”. Un dispositivo maestro es el que inicia la
transmisión de datos y además genera la señal de reloj, pero no es necesario
que el maestro sea siempre el mismo dispositivo: esta característica se la
pueden ir intercambiando ordenadamente los dispositivos que tengan esa
capacidad.
Para funcionar correctamente tanto la línea “SDA” como la “SCL” necesitan
estar conectadas mediante una resistencia “pull-up” a la fuente de
alimentación común, la cual puede proveer un voltaje generalmente de 5 V o
3,3 V. La velocidad de transferencia de datos es de 100 Kbits por segundo en
el modo estándar (aunque también se permiten velocidades de hasta 3,4
Mbit/s). No obstante, al haber una única línea de datos, la transmisión de
información es “half duplex”
SPI (Serial Peripheral Interface): al igual que el sistema I²C, el sistema de
comunicación SPI es un estándar que permite controlar (a cortas distancias)
Figura 10: Modelo de Protocolo I2C
50
casi cualquier dispositivo electrónico digital que acepte un flujo de bits serie
sincronizado (es decir, regulado por un reloj). Igualmente, un dispositivo
conectado al bus SPI puede ser “maestro” o “esclavo”, donde el primero es el
que inicia la transmisión de datos y además genera la señal de reloj (aunque,
como con I²C, con SPI tampoco es necesario que el maestro sea siempre el
mismo dispositivo) y el segundo se limita a responder.
La mayor diferencia entre el protocolo SPI y el I²C es que el primero requiere
de cuatro líneas (“cables”) en vez de dos (figura 11). Una línea (llamada
normalmente “SCK”) envía a todos los dispositivos la señal de reloj generada
por el maestro actual; otra (llamada normalmente “SS”) es la utilizada por ese
maestro para elegir en cada momento con qué dispositivo esclavo se quiere
comunicar de entre los varios que puedan estar conectados (ya que solo puede
transferir datos con un solo esclavo a la vez); otra (llamada normalmente
“MOSI”) es la línea utilizada para enviar los datos –0s y 1s– desde el maestro
hacia el esclavo elegido; y la otra (llamada normalmente “MISO”) es la
utilizada para enviar los datos en sentido contrario: la respuesta de ese esclavo
al maestro. Es fácil ver que, al haber dos líneas para los datos la transmisión
de información es “full duplex”.
RS-232
Figura 11: Modelo de Protocolo SPI
51
Es un protocolo desarrollado para la comunicación serial de dispositivos
sencillos, ampliamente utilizado debido a la facilidad de comunicación y las
ventajas en coste que representa la comunicación serial. Hace uso de
conectores de tipo DB-25, sin embargo, es común observar dispositivos con
conectores de tipo DB9, de 9 pines debido a su menor costo.
(Ramirez Suarez, 2013)
Es muy importante porque muchos dispositivos de comunicación inalámbrica
usan la comunicación serie para hablar con Arduino como los módulos
bluetooth y los módulos Xbee.
Todas las placas Arduino tienen al menos un puerto serie disponible en los
pines digitales 0 (RX) y 1 (TX) compartido con el USB. Por lo tanto no es
posible usar estos pines como entradas/salidas digitales.
Todas las placas Arduino tienen al menos un puerto serie disponible en los
pines digitales 0 (RX) y 1 (TX) compartido con el USB. Por lo tanto no es
posible usar estos pines como entradas/salidas digitales.
(Comunicación Serie Arduino, 2016)
Gestor De Arranque
En las placas Arduino viene pregrabado de fábrica un pequeño programa
llamado “bootloader” o “gestor de arranque”, que resulta imprescindible para
un cómodo y fácil manejo de la placa en cuestión. Este software (también
llamado “firmware”, porque es un tipo de software que raramente se
modifica) ocupa, en la placa Arduino UNO, 512 bytes de espacio en un
apartado especial de la memoria Flash, el llamado “bootloader block”, pero
en otros modelos de placas Arduino puede ocupar más (por ejemplo, en el
modelo Leonardo ocupa 4 Kilobytes).
La función de este firmware es gestionar de forma automática el proceso de
grabación en la memoria Flash del programa que queremos que el
microcontrolador ejecute. Lógicamente, el bootloader realizará esta
grabación más allá del “bootloader block” para no sobrescribirse a sí mismo.
52
En la placa Arduino UNO, el bootloader siempre se ejecuta durante el primer
segundo de cada reinicio. Durante esos instantes, el gestor de arranque se
espera a recibir una serie de instrucciones concretas de parte del entorno de
desarrollo para interpretarlas y realizar la correspondiente carga de un posible
programa. Si esas instrucciones no llegan pasado ese tiempo, el bootloader
termina su ejecución e igualmente se empieza a procesar lo que haya en ese
momento en la memoria Flash.
El bootloader que tiene pregrabado el ATmega328P del Arduino UNO,
basado en un firmware libre llamado Optiboot
(http://code.google.com/p/optiboot), el cual logra una velocidad de grabación
de 115 kilobits de programa a cargar por segundo gracias al uso de
instrucciones propias derivadas del “estándar” STK500.
La alimentación
El voltaje de funcionamiento de la placa Arduino (incluyendo el
microcontrolador y el resto de componentes) es de 5 V. Podemos obtener esta
alimentación eléctrica de varias maneras:
Conectando la placa Arduino a una fuente externa, tal como un adaptador
AC/DC o una pila. Para el primer caso, la placa dispone de un zócalo donde
se puede enchufar una clavija de 2,1 milímetros de tipo “jack”. Para el
segundo, los cables salientes de los bornes de la pila se pueden conectar a los
pines-hembra marcados como “Vin” y “Gnd” (positivo y negativo
respectivamente) en la zona de la placa marcada con la etiqueta “POWER”.
Conectando la placa Arduino a nuestro computador mediante un cable
USB.
Para ello, la placa dispone de un conector USB hembra de tipo B. La
alimentación recibida de esta manera está regulada permanentemente a los 5
V de trabajo y ofrece un máximo de hasta 500 mA de corriente (por lo tanto,
la potencia consumida por la placa es en ese caso de unos 2,5 W). Si en algún
momento por el conector USB pasa más intensidad de la deseable, la placa
Arduino está protegida mediante un poli fusible reseteable que
53
automáticamente rompe la conexión hasta que las condiciones eléctricas
vuelven a la normalidad.
El voltaje de salida ofrecido ha de ser de 9 a 12 V DC. En realidad, el
circuito regulador que lleva incorporado la placa Arduino es capaz de manejar
voltajes de salida (de entrada para la placa) de hasta 20 V, así que en teoría se
podrían utilizar adaptadores AC/DC que generen una salida de 20 V DC.
La intensidad de corriente ofrecida ha de ser de 250 mA (o más). Si
conectamos a nuestra placa Arduino muchos componentes o unos pocos pero
consumidores de mucha energía (como por ejemplo una matriz de LEDs, una
tarjeta SD o un motor) el adaptador debería suministrar al menos 500 mA o
incluso 1 A.
Las entradas y salidas digitales
La placa Arduino dispone de 14 pines-hembra de entradas o salidas (según lo
que convenga) digitales, numeradas desde la 0 hasta la 13. Es aquí donde
conectaremos nuestros sensores para que la placa pueda recibir datos del
entorno, y también donde conectaremos los actuadores para que la placa
pueda enviarles las órdenes pertinentes, además de poder conectar cualquier
otro componente que necesite comunicarse con la placa de alguna manera. A
veces a estos pines-hembra digitales de “propósito general” se les llama pines
GPIO (de “General Purpose Input/Output”).
Todos estos pines-hembra digitales funcionan a 5 V, pueden proveer o recibir
un máximo de 40 mA y disponen de una resistencia “pull-up” interna de entre
20 KΩ y 50 KΩ que inicialmente está desconectada (salvo que nosotros
indiquemos lo contrario mediante programación software).
Hay que tener en cuenta, no obstante, que, aunque cada pin individual pueda
proporcionar hasta 40 mA como máximo, en realidad, internamente la placa
agrupa los pines digitales de tal forma que tan solo pueden aportar 100 mA a
la vez el conjunto de los pines nº 0, 1, 2, 3 y 4, y 100 mA más el resto de pines
54
(del 5 al 13). Esto quiere decir que como mucho podríamos tener 10 pines
ofreciendo 20 mA a la vez.
Las entradas analógicas
La placa Arduino dispone de 6 entradas analógicas (en forma de pines hembra
etiquetados como “A0”, “A1”... hasta “A5”) que pueden recibir voltajes
dentro de un rango de valores continuos de entre 0 y 5 V. No obstante, la
electrónica de la placa tan solo puede trabajar con valores digitales, por lo que
es necesaria una conversión previa del valor analógico recibido a un valor
digital lo más aproximado posible. Esta se realiza mediante un circuito
conversor analógico/digital incorporado en la propia placa.
Arduino LEONARDO
El Arduino Leonardo es una placa electrónica basada en el ATmega32u4
(ficha técnica). Cuenta con 20 pines digitales de entrada / salida (de los cuales
7 se pueden utilizar como salidas PWM y 12 entradas como analógicos), un
oscilador de cristal de 16 MHz, una conexión micro USB, un conector de
alimentación, una cabecera ICSP, y un botón de reinicio. Simplemente debe
conectarlo a un ordenador con un cable USB o la corriente con un adaptador
de CA a CC o una batería para empezar.
El Leonardo difiere de todas las placas anteriores en que el ATmega32u4
tiene la comunicación incorporada del USB, eliminando la necesidad de un
procesador secundario.
Arduino/Genuino 101
Se trata de una placa que se conoce como Arduino 101 en América y Genuino
101 fuera de Estados Unidos. Genuino 101 sigue la misma filosofía de las
placas oficiales de Arduino, pero llama la atención su módulo Intel Curie, El
módulo contiene dos núcleos minúsculos, un núcleo x86 (Quark) y un núcleo
55
de arquitectura ARC de 32 bits, ambos con una frecuencia de 32MHz (una
oportunidad única de programar en una plataforma x86, alejándose de los
ATMega y los ARM), 80KB de SRAM (24KB disponible para sketches), 384
KB de memoria flash, DSP, Bluetooth, sensores acelerómetros y giroscopio,
etc. Por el resto de características, como conexiones y tamaño, es igual a
Arduino UNO y compatibles con sus shields.
Arduino YUN
El Arduino Yun es una placa electrónica basada en el ATmega32u4 y el
Atheros AR9331. El procesador Atheros compatible con una distribución
Linux basada en OpenWrt llamado Linino OS. El tablero incorporada soporte
Ethernet y WiFi, un puerto USB-A, ranura para tarjeta micro-SD, 20 pines de
entrada / salida digital (7 de ellos se puede utilizar como salidas PWM y 12
como entradas analógicas), un cristal de 16 MHz oscilador, una conexión
micro USB, una cabecera ICSP y 3 botones de reinicio.
Arduino ETHERNET
La Arduino Ethernet es una placa electrónica basada en el ATmega328 (ficha
técnica). Cuenta con 14 pines digitales de entrada / salida, 6 entradas
analógicas, un 16 MHz oscilador de cristal, un conector RJ45, un conector de
alimentación, una cabecera ICSP, y un botón de reinicio.
Los pines 10, 11, 12 y 13 están reservados para la interfaz con el módulo
Ethernet y no debe ser utilizado de otra manera. Esto reduce el número de
pines disponibles a 9, con 4 disponibles como salidas PWM.
1.6.8.5 Shields Oficiales Arduino
Las Shields son boards que nos permite extender las capacidades de las placas
Arduino. Algunas de ellas son:
Xbee: El Shield Xbee permite a una placa Arduino comunicarse de forma
inalámbrica mediante Zigbee. Se basa en el módulo Xbee de
56
MaxStream. El módulo se puede comunicar hasta 100 pies en interiores o
al aire libre de 300 pies (con la línea de visión). Actualmente es obsoleto.
Arduino Ethernet Shield: Este shield está pensado para los que le
quieren añadir a la placa Arduino UNO la capacidad de conectarse a una
red cableada TCP/IP. Aporta la misma funcionalidad que la placa Arduino
Ethernet, pero en forma de shield complementario acoplado a la placa
Arduino UNO.
Arduino Wireless SD Shield: Este shield está pensado para permitir a
una placa Arduino UNO poderse comunicar inalámbricamente mediante
el uso de un módulo XBee (adquirido aparte) o similar. Esto permite
establecer un enlace con otro dispositivo XBee a una distancia de hasta
unos 100 metros en interior y de hasta unos 300 metros en exterior con
línea de visión directa.
Arduino WiFi Shield: Pensado para los que le quieren añadir a la placa
Arduino UNO la capacidad de conectarse inalámbricamente a una red
TCP/IP. Incorpora el chip HDG104 del fabricante H&D Wireless, el cual
incluye una antena integrada y permite conectarse a redes Wi-Fi de tipo
802.11b y de tipo 802.11g. También incorpora el chip ATmega 32UC3,
un microcontrolador de 32 bits que en este shield viene pre programado
de fábrica para proporcionar una pila IP completa (TCP y UDP).
Arduino Motor Shield: Incorpora el chip L298P del fabricante
STMicroelectronics; la “P” final simplemente indica el tipo de
encapsulado que tiene, ya que para el mismo chip L298 existen otras
formas y tamaños, identificados con otras letras). Este chip está diseñado
para controlar componentes que contienen inductores –“bobinas”– en su
estructura interna, tales como relés, solenoides, motores de corriente
continua –DC– o motores paso a paso – “steppers” –, entre otros.
(Arduino.cc, Arduino, 2019)
1.6.8.6 Software Arduino
57
El código abierto Arduino Software (IDE) hace que sea fácil de escribir
código y subirlos a su tablero. Se ejecuta en Windows, Mac OS X y Linux. El
entorno está escrito en Java y basado en Processing.
Este software se puede utilizar con cualquier placa Arduino.
En la versión de escritorio el entorno de desarrollo integrado Arduino -
Arduino o software (IDE) - contiene un editor de texto para escribir código,
un área de mensajes, una consola de texto, una barra de herramientas con
botones para las funciones comunes y una serie de menús. Se conecta al
hardware Arduino y Genuino para cargar programas y comunicarse con ellos.
Si tiene una conexión a Internet fiable, puede utilizar el IDE en línea (Arduino
Web Editor). Le permitirá guardar sus bocetos en la nube, tenerlos
disponibles desde cualquier dispositivo y realizar copias de seguridad.
Siempre tendrá la versión más actualizada del IDE sin necesidad de instalar
actualizaciones o bibliotecas generadas por la comunidad.
Librerías
Las librerías proporcionan funcionalidad adicional para su uso en sketch, por
ejemplo, trabajar con el hardware o manipular los datos. Para utilizar una
librería en un sketch, selecciónelo de la pestaña Programación > Incluir
Librería > Gestionar Librería (tal como se muestra figura 12). Esto insertará
una o más “#include” (declaraciones en la parte superior del boceto) y
compile la librería con su proyecto. Debido a que las librerías se cargan en la
placa con su proyecto, se aumentan la cantidad de espacio que ocupa. Si un
sketch ya no necesita una librería, sólo tiene que borrar sus #include de la
parte superior de su código.
58
Fuente:
https://www.arduino.cc/en/Guide/Libraries
Algunas librerías se incluyen con el software de Arduino. Otros pueden ser
descargados desde una variedad de fuentes a través del gestor de
librerías. Desde la versión 1.0.5 del IDE, usted puede importar una librería de
un archivo Zip y utilizarlo en un sketch abierto.
Condiciones de uso
EL software de Arduino se le proporciona "tal cual" y no se ofrece ninguna
edición EXPRESS o implícita en cuanto a su funcionalidad, operabilidad o
uso, sin limitación de comerciabilidad, o para un propósito particular.
Arduino.cc queda exento de cualquier responsabilidad por daños directos,
indirecto, de la pérdida de ingresos, pérdida de ganancias, pérdidas resultantes
de interrupción de negocio o pérdida de datos.
(Arduino.cc, Arduino, 2019)
IDEs Alternativos
CodeBlocks (http://www.codeblocks.org): es un IDE libre y
multiplataforma para el desarrollo de aplicaciones escritas en lenguaje
Figura 12: Lista de Bibliotecas Arduino
59
C y C++. No obstante, se pueden escribir programas directamente en
lenguaje Arduino (y también cargarlos en la placa) mediante una
versión modificada de este software, la llamada “CodeBlocks Arduino
Edition”, descargable desde la dirección
http://www.arduinodev.com/codeblocks.
Gnoduino (http://gnome.eu.org): IDE libre que intenta imitar en
aspecto y funcionalidad al oficial, pero que evita su dependencia de
Java, ya que está escrito en otro lenguaje, Python. Esto hace que sea
especialmente ligero y rápido. No obstante, solo funciona en Linux, y
más específicamente dentro el escritorio GNOME debido a sus
dependencias.
Codebender (http://www.codebender.cc): este IDE en realidad es una
aplicación web, por lo que funciona enteramente de forma “online”
dentro del navegador, sin necesidad de instalar nada. Incluye un
completo editor de textos, un compilador y un cargador de sketches,
todo sin salir del navegador. Además, previo registro gratuito, permite
almacenar “en la nube” el conjunto de códigos realizados. Este
proyecto es libre, por lo que uno puede descargar e instalar el software
necesario para montar una plataforma Codebender propia.
Visualmicro (http://visualmicro.codeplex.com): en realidad se trata
de un complemento (“plug-in”) para usar el lenguaje Arduino dentro
del entorno de programación Visual Studio
(http://www.microsoft.com/visualstudio), de Microsoft.
Desgraciadamente, no funciona en la versión Express de este entorno
(la gratuita), por lo que se ha de comprar alguna edición superior,
como por ejemplo la Professional.
1.6.8.7 Instalación del IDE Arduino
Ubuntu
La manera más fácil de instalar el IDE de Arduino en Ubuntu es mediante
el uso de su “Centro de Software” (o cualquier otro gestor de paquetes
equivalente, tal como Synaptic o apt-get/aptitude). El paquete que
60
necesitamos se llama “Arduino” y estará disponible si tenemos activado
el repositorio “universe”. Si queremos usar el terminal de comandos para
instalar el IDE de Arduino, podríamos escribir: sudo apt-get -y install
Arduino.
Es interesante notar que Ubuntu divide el entorno de programación
Arduino en dos paquetes diferentes: el llamado “arduino”, que incluye los
ficheros que conforman la interfaz gráfica del IDE y el llamado “arduino-
core”, que incluye las herramientas fundamentales de compilación,
programación y grabación de sketches.
Cualquier sistema Linux
Para instalar el IDE de Arduino en una distribución cualquiera de Linux,
debemos ir a http://arduino.cc/en/Main/Software, la página de descargas
oficial de Arduino. Allí, bajo el apartado “Downloads”, aparecen dos
enlaces diferentes para descargar la versión del IDE Arduino para Linux.
Ambos enlaces apuntan a un archivo comprimido en formato “tgz”
alojado en el almacén de software oficial de Arduino ubicado en
http://code.google.com/p/arduino), pero un enlace corresponde a la
versión del IDE de 32 bits y el otro a la de 64 bits; descargarnos entonces
el paquete “tgz” correspondiente.
Cuando entremos dentro de la carpeta descomprimida que obtengamos,
no encontraremos ningún instalador ni nada parecido (solo una estructura
de archivos y subcarpetas que no deberemos modificar para nada) porque
de hecho, nuestro IDE ya está listo para ser usado desde este mismo
momento: tan solo deberemos clicar sobre el archivo ejecutable (en
realidad, un Shell script con permisos de ejecución) llamado “Arduino”
y, después de confirmar la opción “Ejecutar” que aparecerá en el cuadro
emergente, veremos el IDE finalmente ante nosotros.
Las dependencias
Desgraciadamente, es posible que al intentar ejecutar el IDE tal como se
describe en este apartado, obtengamos diferentes errores debidos a no
tener previamente instalados en el sistema los paquetes necesarios para
61
poder ejecutar el script “Arduino” sin problemas (es decir, por no tener
instaladas las “dependencias” del IDE Arduino).
PAQUETE UBUNTU: openjdk-7-jre
PAQUETE FEDORA: java-1.7.0-openjdk
PAQUETE UBUNTU: librxtx-java
PAQUETE FEDORA: rxtx
PAQUETE UBUNTU: gcc-avr
PAQUETE FEDORA: avr-gcc y avr-gcc-c++
PAQUETE UBUNTU: avr-libc
PAQUETE FEDORA: avr-libc
PAQUETE UBUNTU: avrdude
PAQUETE FEDORA: avrdude
Los permisos de usuario
Además de instalar todas esas dependencias, aún debemos asegurarnos de
que nuestro usuario del sistema tenga los permisos necesarios para que, al
utilizar el IDE, este pueda comunicarse a través del cable USB con la
placa. Si no hacemos esto, solamente ejecutando el IDE como usuario
“root” podremos cargar programas en el microcontrolador, lo cual no es
muy recomendable. En Ubuntu simplemente tendremos que tener la
precaución de añadir nuestro usuario al grupo de usuarios predefinido
“dialout”, abriendo un intérprete de comandos y ejecutando: sudo
usermod -a -G dialout nombredelusuario
Windows
Para instalar el IDE de Arduino en Windows 8, deberemos ir a su página
oficial de descargas: http://arduino.cc/en/Main/Software. Allí aparecerá,
bajo el apartado “Downloads”, un enlace para descargar la versión del
IDE para Windows, que no es más que un archivo comprimido en formato
Zip. Descomprimimos la carpeta y deberemos clicar sobre el archivo
ejecutable “arduino.exe” y aparecerá ante nosotros.
Sin embargo, para poder utilizar nuestra placa Arduino en la versión 8 de
Windows se necesita de ciertos drivers para poder establecer la
62
comunicación con la placa; así que debemos suponiendo que nuestra placa
es el modelo Arduino UNO, los pasos a realizar son:
1. Conectar la placa Arduino UNO mediante USB a nuestro computador.
2. Acceder al “Administrador de dispositivos” de nuestro Windows 8.
Para ello, debemos ubicarnos dentro del cuadro "Escritorio", y una vez
allí, situar el cursor del ratón en la esquina superior derecha de la pantalla.
Aparecerá un menú lateral de iconos; allí debemos seleccionar el icono
"Configuración", y seguidamente, en el panel lateral recién surgido,
debemos elegir la opción "Panel de control". Se abrirá una ventana en la
que se muestran diferentes categorías; la que nos interesa es “Sistema y
seguridad”. Clicando sobre ella podemos visualizar finalmente el enlace
que nos lleva al "Administrador de dispositivos".
3. En la lista que nos muestra el "Administrador de dispositivos", debemos
ver un “dispositivo desconocido”. Lo seleccionamos, clicamos con el
botón derecho y elegimos la opción “Actualizar software de controlador”.
4. Elegimos “Buscar software de controlador en el equipo” y navegamos
hasta la carpeta que contiene los ficheros “.inf”, los cuales incluyen la
información necesaria para que Windows pueda finalmente instalar el
driver correcto (hay un fichero “.inf” por cada modelo de placa Arduino).
La carpeta donde están estos ficheros se llama “Drivers” y está situada
dentro de la carpeta descomprimida que contiene los ficheros del IDE.
Ojo, no confundir con la subcarpeta “FTDI USB Drivers”.
5. Hemos de hacer caso omiso de la advertencia por parte de Windows de
la inexistencia de firma digital en los drivers de Arduino. Tras este paso,
el proceso de instalación debería concluir sin mayor problema. Para
comprobar que todo ha salido bien, deberíamos observar en la lista
mostrada por el “Administrador de dispositivos” un nuevo dispositivo
dentro de la categoría “Puertos (COM y LPT)” llamado “Arduino UNO
(COMxx)”, donde “xx” será un número (normalmente será el 3 o el 4,
pero puede ser otro).
Este número será importante recordarlo posteriormente para poder utilizar
nuestra placa correctamente.
63
IDE Arduino
El IDE Arduino facilita escribir código y cargarlo a las placas, la interfaz
de desarrollo contiene una barra de menú, seguido de una barra que
contiene los botones de acceso rápido, los mimos que se indican en la
figura 13, un área de edición y el área de compilación que se encuentra en
la parte inferior, en la cual se muestran los resultados de la verificación
y/o compilación.
Verificar
Cargar
programa
Nuevo
Abrir
archivo
Guardar
archivo
creado
Abrir
Monitor
Serial
Menú
rápido
Figura 13: IDE Arduino
64
Fuente: Elaboración propia
1.6.8.8 Introducción del sketch al Arduino
Los componentes principales de un sketch de Arduino son:
Variables, son un espacio en memoria donde se almacenan datos y
estos datos pueden variar.
Funciones, son un trozo de código que puede ser usado/llamado desde
cualquier parte del sketch. A la función se le puede llamar
directamente o pasarle unos parámetros, en función de cómo esté
definida.
Setup() y loop(), son dos funciones especiales que es obligatorio
declarar en cualquier sketch.
Comentarios, fundamentales para documentar el proyecto
En la figura 14 podemos ver el orden en el que deberían definirse dichos
componentes.
Funcion Loop()
Funcion Setup()
Variable
Librerias
Figura 14: Componentes principales del sketch de Arduino
65
Fuente: Elaboración propia
1.6.8.9 Ventajas de usar la Tecnología Arduino
Asequible - placas Arduino son relativamente baratos en comparación
con otras plataformas de micro controladores. La versión menos cara del
módulo Arduino puede ser ensamblado a mano, e incluso los módulos
premontados Arduino cuestan menos de $ 50
Multiplataforma - El software de Arduino (IDE) se ejecuta en Windows,
Macintosh OS X, y Linux. La mayoría de los sistemas de
microcontrolador se limitan a Windows.
Simple, entorno de programación clara - El software de Arduino (IDE)
es fácil de usar para los principiantes, pero lo suficientemente flexible
para los usuarios avanzados que lo aprovechan también. Para los
profesores, se basa convenientemente en el entorno de programación
Processing, para los estudiantes que aprenden a programar en ese entorno
estarán familiarizados con cómo funciona el IDE de Arduino.
El código abierto y el software extensible - El software de Arduino se
publica como herramientas de código abierto, disponible para la extensión
por los programadores experimentados. El idioma se puede ampliar a
través de bibliotecas de C ++, y la gente que quiere entender los detalles
técnicos pueden dar el salto de Arduino para el lenguaje de programación
C AVR en la que se basa. Del mismo modo, puede agregar código AVR-
C directamente en sus programas de Arduino, si así lo desea.
El código abierto y hardware ampliable - Los planes de las placas
Arduino se publican bajo una licencia de Creative Commons, por lo que
los diseñadores de circuitos experimentados pueden hacer su propia
versión del módulo, ampliándolo y mejorándolo. Incluso los usuarios con
poca experiencia pueden construir la versión de tablero del módulo con el
fin de entender cómo funciona y ahorrar dinero.
Arduino tiene una gran comunidad: muchas personas lo utilizan,
enriquecen la documentación y comparten continuamente sus ideas.
66
Las placas Arduino son reutilizables y versátiles: reutilizables porque
se puede aprovechar la misma placa para varios proyectos (ya que es muy
fácil de desconectarla, reconectarla y reprogramarla), y versátiles porque
las placas Arduino proveen varios tipos diferentes de entradas y salidas
de datos
1.7 Selección de la Metodología para el desarrollo del proyecto
1.7.1 Metodología en Cascada
El modelo de cascada original se desarrolló entre las décadas de los años 60 y 70
y se define como una secuencia de actividades, donde la estrategia principal es
seguir el progreso del desarrollo del proyecto hacia puntos de revisión bien
definidos (en inglés, milestones o checkpoints) mediante entregas programadas
con fechas precisas (en inglés, schedule). No se muestra una etapa explícita de
documentación dado que ésta se lleva a cabo en el transcurso de todo el
desarrollo. El modelo original planteaba que cada actividad debía completarse
antes de poder continuar con la siguiente actividad. Sin embargo, en una revisión
posterior se extendió el modelo, permitiendo regresar a actividades anteriores.
Algunas de las creencias del modelo de cascada son que las metas se logran mejor
cuando se tienen puntos de revisión bien preestablecidos y documentados
(dividiendo el desarrollo del software en actividades secuenciales bien definidas),
los documentos técnicos son comprensibles para usuarios y administradores no
técnicos, cada detalle de los requisitos se conoce de antemano antes de desarrollar
el proyecto (dichos detalles son estables durante el desarrollo) y las pruebas y
evaluaciones se realizan de manera eficiente al final del desarrollo.
El modelo en Cascada cuenta con las siguientes fases (figura 15), las cuales serán
adaptadas de acuerdo a nuestro proyecto.
Ingeniería y análisis del sistema. En esta primera fase se desarrollará
una investigación e identificación sobre las necesidades y problemas
hallados en los ambientes del laboratorio, el tipo de arquitectura; las
placas, sus características, especificaciones de uso y modo de
comunicación que manejan, se investigará sobre las aplicaciones
67
inmóticas, sus características, costos y especificaciones de equipos ya
existentes, además se investigaran los estándares y protocolos que rigen
este tipo de proyectos, y para finalizar se hará un estudio de los
dispositivos a controlar desde la aplicación inmótica como lo son
elementos de iluminación, alarmas, etc.
Análisis de los requisitos. Se analizan los requerimientos de los usuarios
finales para determinar qué objetivos deben cubrirse. De esta fase surge
una memoria llamada SRD (Documento de Especificación de
Requisitos), que contiene las especificaciones funcionales del sistema,
características del edificio, consideraciones sobre los modos de operación
y las interfaces de usuario, aspectos constructivos de la edificación,
implicaciones con el resto de instalaciones, limitaciones económicas, etc.
Diseño. Teniendo ya los requerimientos de funcionamiento de los
posibles elementos, se iniciará el diseño de todas las partes que
conforman el proyecto. Se descompone y organiza el sistema en
elementos que puedan elaborarse por separado. Como resultado surge un
documento en el cual deberán describirse lo siguiente:
Las aplicaciones implementadas en el sistema (por ejemplo,
detección de intrusión, automatización de la iluminación, etc.).
Elementos que intervienen en la instalación inmótica (pasarelas
residenciales, entre otros).
La ubicación de cada uno de los dispositivos inmóticos, así como
las posibles redes de cable.
Diseño de la aplicación web que nos permitirá controlar
remotamente los dispositivos electrónicos.
Identificación de la documentación que se entregara al usuario.
Construcción. Se implementa el diseño del proyecto que se hizo en la
anterior actividad. Esto es, la realización de los circuitos de control,
establecer la comunicación necesaria para el funcionamiento del
proyecto, el desarrollo de los programas haciendo uso de prototipos, así
como pruebas y ensayos para corregir errores, la configuración de las
cámaras IP y la puesta en marcha del web server, entre otros.
68
Pruebas. Cuando se tengan todas las partes que conforman el proyecto
ya hecho se pasa a unir todas estas y se hacen las pruebas pertinentes para
comprobar que se haya cumplido los objetivos propuestos desde un
principio, verificar continuamente la calidad del proyecto, es decir si el
comportamiento de los dispositivos es de acuerdo a lo especificado.
Mantenimiento. Es una de las fases finales del proyecto. En el desarrollo
surgen cambios, para corregir errores o bien para introducir mejoras.
Fuente:http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/handle/132.248.52.10
0/175/A5%20Cap%C3%ADtulo%202.pdf?sequence=5
1.8 Consideraciones del diseño domótico en la vida real
Actualmente la domótica es una de las ramas de la tecnología que más importancia
está tomando en nuestras vidas y que se viene desarrollando a pasos agigantados, es
así que podemos ver que cada vez más está presente en nuestras vidas.
Figura 15: Fases del modelo Cascada
69
A la fecha han podemos observar que se han podido superar una serie de
impedimentos tales como la dependencia de a las conexiones cableadas o la baja
capacidad de procesamiento de los elementos técnicos y ahora podemos instalar
múltiples elementos y controlarlos desde un móvil de manera remota, pudiendo
simular situaciones en un determinado horario entre otras cosas.
En la actualidad las instalaciones en las viviendas y edificios permiten la
conectividad de diferentes dispositivos que nos permitan su control y automatización
y permiten la comodidad.
En el presente proyecto se detallarán los materiales que se utilizarán para poder
implementarlo en la vida real.
Materiales:
Focos
Cámara IP
Aire acondicionado
Canaletas
Cable Ethernet Cat. 5e o 6a
Servidor web
Conexión
Para la implementación de la automatización en los ambientes del laboratorio, se ha
creado un código en Arduino que permita ejecutar múltiples de funciones de control
desde un computador o teléfono móvil tan solo con tener acceso a internet por medio
de la aplicación web, en el cual con solo presionando un botón podemos apagar o
encender un loco o el aire acondicionado o del mismo modo activar o desactivar una
alarma entre otras cosas; así también a través de un panel conectado directamente al
Arduino se puede controlar exclusivamente las alarmas.
En el programa se encuentra definido quienes serán los pines de entrada (que servirán
para los sensores) quienes enviaran la información del medio ambiente para que esta
a su vez sea enviada a la base de datos a través de método GET y posteriormente se
ejecuten las acciones correspondientes definidas por el usuario o ejecutadas por el
70
Arduino mismo a través de los pines de salida enviando pulsos (donde se encuentran
conectados los actuadores)
Los cables estarán adheridos a la pared mediante canaletas para su mejor conexión;
sin embargo, también se podría optar por una conexión WiFi cambiando el módulo
Ethernet Shield por un módulo WiFi.
Para cargar los programas a los Arduinos correspondientes se deberán conectar a
través del puerto USB mediante un cable USB el cual nos dará el acceso total al
Arduino.
En este caso para poder controlar elementos que están conectados a grandes voltajes,
como por ejemplo una bombilla de nuestra casa, se deberá de modificar el código
puesto que necesitamos de un componente que por un lado se conecte a la red
eléctrica y por otro lado se pueda conectar a nuestra placa de Arduino y que esta
controle esa conexión (véase la forma de conexión de la figura 16). Para ello
disponemos de los relés, unos interruptores eléctricos que conmutan una red de alto
voltaje (por ejemplo 220V) a través de un voltaje de control mucho inferior (5V de
la Arduino UNO o 3.3V de la Arduino MKR1000).
Figura 16: Representación de bombilla conectada al Arduino
Fuente: https://programarfacil.com/blog/arduino-blog/rele-y-arduino-mkr1000/
1.8.1 Normas y Certificaciones Técnicas
Hablar de normas de seguridad en nuestro país existe es también hablar de
AENOR
AENOR
71
Ofrece a las organizaciones certificados que les ayuden a responder con éxito a
sus nuevos retos como sostenibilidad, I+D+i, seguridad, tecnologías de la
información etc.
La Norma UNE-ISO/IEC 20000-1 promueve la adopción de un enfoque de
procesos integrados para una provisión eficaz de servicios gestionados de TI, que
satisfaga los requisitos del negocio y de los clientes a través de la mejora continua
mediante el modelo PDCA.
Con la implantación de la Norma UNE-ISO/IEC 20000-1 se logra que los
servicios TI estén orientados al negocio, es decir, el objetivo básico y
fundamental del área de explotación/ producción es dar un servicio con la
máxima calidad bien a la propia organización, o bien a sus clientes externos.
El Código de Buenas Prácticas es la segunda parte de la Norma UNE-ISO/IEC
20000-2 y representa el conjunto de mejores prácticas adoptadas y aceptadas por
la industria en esta materia.
Beneficios para su empresa:
Alinear los servicios de TI a las necesidades de negocio.
Proporcionar una adecuada gestión de la calidad del servicio
de TI ofrecido.
Maximizar la calidad y eficiencia del servicio de TI.
Reducir los riesgos asociados a los servicios de TI.
Reducir costes y generar negocio.
Aumentar la satisfacción del cliente.
Visión clara de la capacidad de los departamentos de TI.
Minimizar el tiempo del ciclo de incidentes y cambios, y mejorar
resultados en base a métricas.
Toma de decisiones en base a indicadores de negocio y TI.
72
Aportar un valor añadido de confianza, mejorando su imagen de cara a
otras empresas convirtiéndose en un factor de distinción frente a la
competencia.
(AENOR Peru, 2019)
NORMA DE GESTION DE ENERGIA
La Certificación de Sistemas de Gestión Energética, según la Norma UNE
216301, se dirige especialmente a aquellas organizaciones,
independientemente de su sector de actividad o su tamaño, que quieren
demostrar que han implantado un sistema de gestión energética, hacen un
mayor uso de energías renovables o excedentes, y/o han sistematizado sus
procesos energéticos, buscando la coherencia de éstos con la política
energética de la organización.
Amparado por la Norma UNE 216301 "Sistemas de gestión energética.
Requisitos" se trata de un sistema paralelo a otros modelos de gestión (ISO
14001, ISO 9001...) para la mejora continua en el empleo de la energía, su
consumo eficiente, la disminución de los consumos de energía y los costes
financieros asociados, la reducción de las emisiones de gases de efecto
invernadero, la adecuada utilización de los recursos naturales, así como el
fomento de las energías alternativas y las renovables.
El SGE se basa en el ciclo de mejora continua PDCA (Plan - Do - Check -
Act), siendo compatible con otras medidas de ahorro y eficiencia energética.
Del mismo modo, esta nueva norma se ha diseñado de manera similar a otras
normas como ISO 14001 o ISO 9001, por lo que resulta una herramienta
complementaria, compatible e integrable con estos otros sistemas de gestión.
(AENOR PERU, s.f.)
Norma Técnica Peruana “NTP-ISO/IEC 12207:2016- Ingeniería de
Software y Sistemas. Procesos del ciclo de vida del software. 3ª Edición”
73
Esta norma establece un marco de trabajo común para los procesos del ciclo
de vida del software, con terminología bien definida, que puede servir de
referencia para la industria del software. Contiene procesos, actividades y
tareas que son aplicables durante la adquisición de un producto o servicio de
software y durante el suministro, desarrollo, operación, mantenimiento y de
los productos software. El software incluye la parte software del “firmware”.
Esta norma se aplica a la adquisición de productos y servicios de sistemas y
software, al suministro, desarrollo, operación, mantenimiento y disposición
de los productos software y de la parte software de un sistema, ya sea que se
ejecute interna o externamente a una organización. Se incluye aquellos
aspectos de la definición del sistema, necesarios para proporcionar el contexto
para los productos y servicios software. Esta norma también proporciona un
proceso que se puede emplear para definir, controlar y mejorar los procesos
del ciclo de vida del software. Los procesos, actividades y tareas de esta
norma - sea solo o en conjunto con la ISO/IEC 15288 2 - también se puede
aplicar durante la adquisición de un sistema que contiene software.
(Insituto Nacional de la Calidad, 2016)
Manejo de los Residuos de Aparatos Eléctricos y Electrónicos en el Perú
– RAEE PERÚ
El Reglamento RAEE establece los derechos y obligaciones para la adecuada
gestión y manejo de los residuos de aparatos eléctricos y electrónicos (RAEE)
a través de las diferentes etapas de manejo, generación, recolección,
transporte, almacenamiento, tratamiento, reaprovechamiento y disposición
final, involucrando a los diferentes actores en el manejo responsable con la
finalidad de mejorar las condiciones de vida, mitigar el impacto en el
ambiente y en la salud de las personas. El Reglamento también señala a las
autoridades conforme a sus competencias. Entró en vigencia a partir del
Decreto Supremo N° 001-2012-MINAM el 28 de junio del año 2012.
(Ministerio del Ambiente, 2014)
74
Organismos Internacionales de Normalización de Telecomunicaciones
TIA (Telecommunications Industry Association), fundada en 1985
después del rompimiento del monopolio de AT&T. Desarrolla normas
de cableado industrial voluntario para muchos productos de las
telecomunicaciones y tiene más de 70 normas preestablecidas.
ANSI (American National Standards Institute), es una
organización sin ánimo de lucro que supervisa el desarrollo de
estándares para productos, servicios, procesos y sistemas en los
Estados Unidos. ANSI es miembro de la Organización Internacional
para la Estandarización (ISO) y de la Comisión Electrotécnica
Internacional (International Electrotechnical Commission, IEC).
EIA (Electronic Industries Alliance), es una organización formada
por la asociación de las compañías electrónicas y de alta tecnología de
los Estados Unidos, cuya misión es promover el desarrollo de mercado
y la competitividad de la industria de alta tecnología de los Estados
Unidos con esfuerzos locales e internacionales de la política.
ISO (International Standards Organization), es una organización
no gubernamental creada en 1947 a nivel mundial, de cuerpos de
normas nacionales, con más de 140 países.
IEEE (Instituto de Ingenieros Eléctricos y de Electrónica),
principalmente responsable por las especificaciones de redes de área
local como 802.3 Ethernet, 802.5 TokenRing, ATM y las normas de
GigabitEthernet.
Normas sobre cableado estructurado
ANSI/TIA/EIA-568-B: Cableado de Telecomunicaciones en
Edificios Comerciales sobre cómo instalar el Cableado: TIA/EIA 568-
B1 Requerimientos generales; TIA/EIA 568-B2: Componentes de
cableado mediante par trenzado balanceado; TIA/EIA 568-B3
Componentes de cableado, Fibra óptica.
75
ANSI/TIA/EIA-569-A: Normas de Recorridos y Espacios de
Telecomunicaciones en Edificios Comerciales sobre cómo enrutar el
cableado.
ANSI/TIA/EIA-570-A: Normas de Infraestructura Residencial de
Telecomunicaciones.
ANSI/TIA/EIA-606-A: Normas de Administración de Infraestructura
de Telecomunicaciones en Edificios Comerciales.
ANSI/TIA/EIA-607: Requerimientos para instalaciones de sistemas
de puesta a tierra de Telecomunicaciones en Edificios Comerciales.
ANSI/TIA/EIA-758: Norma Cliente-Propietario de cableado de
Planta Externa de Telecomunicaciones.
(Unitel – Soluciones e infraestructuras Tecnológicas, 2019)
Normas técnicas sobre instalaciones eléctricas
NTP IEC 60364-1:2011 (revisada el 2016) Instalaciones eléctricas de
baja tensión. Parte 1: Principios fundamentales, determinación de las
características generales, definiciones
NTP 370.303 2003 INSTALACIONES ELECTRICAS EN
EDIFICIOS. Protección para garantizar la seguridad. Protección
contra los choques eléctricos.
NTP 370.306 2003 INSTALACIONES ELECTRICAS EN
EDIFICIOS. Protección para garantizar la seguridad. Protección
contra las sobre intensidades.
NTP 370.302 2001 (revisada el 2016) INSTALACIONES
ELÉCTRICAS EN EDIFICIOS. Selección e instalación de equipos
eléctricos. Canalizaciones
1.9 Conceptos y Definiciones
AC: Corriente Alterna
ARM: ARM es una arquitectura RISC de 32 bits y recientemente con la llegada de
su versión V8-A también de 64 Bits desarrollada por ARM Holdings.
76
ATmega328P: El Atmega328 AVR 8-bit es un Circuito integrado de alto
rendimiento que está basado un microcontrolador RISC.
CC: Corriente Continua
Corporación Echelon Propietaria de la tecnología LonWorks, y por tanto de la
tecnología del Neuron Chip necesario para todo aparato LonWorks.
Intel: Intel Corporation es el mayor fabricante de circuitos integrados del mundo,
según su cifra de negocio anual.
ISP: Programación en el sistema (ISP por las siglas del inglés: In-system
programming), también conocido como Programación serial en circuito (ICSP por
las siglas del inglés: In-Circuit Serial Programming), es la habilidad de
algunos dispositivos lógicos programables, microcontroladores y otros circuitos
electrónicos, de ser programados mientras están instalados en un sistema completo,
en lugar de requerir que el chip sea programado antes de ser instalado dentro del
sistema.
LON (Local Operating Network) Red diseñada para obtener interoperabilidad
mediante un protocolo abierto.
LonMaker Herramienta de instalación y el mantenimiento de la red, donde puede
haber aparatos de distintos fabricantes.
LonTalk El protocolo (lenguaje). Diseñado para la utilización con redes de control.
Un estándar abierto.
LonWorks La tecnología. Una familia de productos hardware y software. Soporta el
desarrollo y utilización de redes de control.
PWM: La modulación por ancho de pulsos (también conocida como PWM, siglas en
inglés de pulse-width modulation) de una señal o fuente de energía es una técnica en
la que se modifica el ciclo de trabajo de una señal periódica.
RISC: en arquitectura computacional RISC (del Inglés Reduced Instruction Set
Computer, en español Computador con Conjunto de Instrucciones Reducidas) es un
tipo de diseño de CPU generalmente utilizado en microprocesadores o
microcontroladores.
SRM: SRAM son las siglas de la voz inglesa Static Random Access Memory, que
significa memoria estática de acceso aleatorio (o RAM estática), para denominar a
77
un tipo de tecnología de memoria RAM basada en semiconductores, capaz de
mantener los datos, mientras siga alimentada
WPAN: Personal Area Network (PAN), Red de Área Personal, es una red de
computadoras para la comunicación entre distintos dispositivos (computadoras,
puntos de acceso a internet, teléfonos celulares, PDA, dispositivos de audio,
impresoras) cercanos al punto de acceso.
Xerox: Xerox Corporation es el proveedor más grande del mundo de fotocopiadoras
de tóner y sus accesorios.
CAPITULO II
MÉTODOS Y MATERIALES
79
2. CAPITULO II: MÉTODOS Y MATERIALES
2.1 Planteamiento del proyecto
2.1.1 Identificación del escenario del proyecto
Este proyecto tiene como finalidad ofrecer una herramienta que mejore la calidad
del servicio brindado por la Facultad de Ciencias Físicas y Matemáticas a los
cientos de estudiantes y docentes que acuden a diario a las instalaciones de los
laboratorios para recibir e impartir conocimientos respectivamente.
Se desarrolla teniendo en cuenta como escenario lo antes ya mencionado y los
requerimientos que la misma presenta, permitiéndoles facilidades en el control
de los diversos ambientes y aparatos con los que cuenta, pudiendo realizar el
encendido y apagado de luces y aires acondicionados que se encuentran en cada
laboratorio a través de una aplicación web que me permitirá además monitorear
los espacios.
Entre las ventajas que presenta este proyecto es que permite que el edificio se
controle desde cualquier lugar donde se encuentren, sólo teniendo acceso al
mismo a través de la aplicación.
Resaltamos que las pruebas funcionales se realizaran en una maqueta, la misma
que es una copia fiel de la ubicación y compartimientos de los laboratorios que
se pueden apreciar en las figuras 17 y 18.
2.2 Identificación de los usuarios y áreas intervinientes
2.2.1 Áreas intervinientes
Laboratorio 1: Largo – 8.63 m / Ancho - 6m
Laboratorio 2: Largo – 8.63 m / Ancho – 7.90 m
Laboratorio 3: Largo – 9.20 m / Ancho – 10.62 m
Laboratorio 4: Largo – 8.50 m / Ancho – 5.86 m
Laboratorio 5: Largo – 4.70 m / Ancho – 5.86 m
Jefatura: Largo – 5.61m / Ancho – 4.70m
80
Pasillos 1: Largo – 10 m / Ancho – 3.85 m
Pasillos 2: Largo – 9.20 m / Ancho – 1.64 m
Fuente: Elaboración Propia
Fuente: Elaboración propia
2.2.2 Usuarios
Las acciones de control de encendido y apagado de luces ventiladores y
sistema de seguridad, así como el apagado de alarmas podrán ser
ejecutadas por los usuarios que estén debidamente registrados en la base
de datos y que cuenten con un usuario y contraseña para que puedan
acceder a la aplicación.
Este sistema de control está pensado para cualquier tipo de usuarios que
no tenga como discapacidad la ausencia de visión. Sin embargo eso no
Figura 17: Laboratorio FACFYM
Figura 18: Laboratorio FACFYM
81
impedirá que los demás usuarios puedan hacer uso de las funcionalidades
habituales del edificio.
2.3 Análisis de factibilidad
2.3.1 Factibilidad operativa
El lugar donde se llevarán a cabo las investigaciones y para cual está
pensado el desarrollo del prototipo, cuenta con la infraestructura
adecuada y el personal que nos ayude a realizar las pruebas. Se dispone
del tiempo adecuado para realizar las investigaciones.
2.3.2 Factibilidad técnica
Técnicamente el desarrollo del proyecto es factible, ya que en la
actualidad las placas Arduino cuentan con el soporte necesario y la
arquitectura para soportar incluso grandes proyecto, así como el respaldo
de una comunidad que día a día implementa nuevas actualizaciones y las
comparte con el mundo entero y el costo de estas no es demasiado
elevado, además el desarrollo de la aplicación se realizara en PHP, el
mismo que permite la comunicación entre el Arduino y la base de datos
cuya implementación se realiza en MYSQL, una herramienta muy
potente.
Existe suficiente información que nos permitan sacar adelante nuestra
investigación, la misma que es obtenida a través de internet o libros, lo
cual nos permitirá desarrollar el proyecto de manera confiable
2.3.3 Factibilidad económica
El desarrollo de la investigación se encuentra dentro de los márgenes de
un proyecto económico; esto debido a que los materiales que se usan para
su elaboración ya se encuentran siendo distribuidos en el mercado
peruano a un costo muy accesible.
82
2.4 Definición de requerimientos de negocio
Análisis de requerimiento
El análisis de requerimientos de la fase uno de la metodología en cascada, es muy
importante para el desarrollo del prototipo del sistema Inmótico; puesto que es en
esta fase es donde se establece la idea, la visión del sistema y los requerimientos.
La idea se basa en desarrollar un prototipo de un sistema Inmótico; controlar las
variables del prototipo "iluminación", “confort” y “seguridad”, mediante órdenes
dadas por la aplicación web para el control remoto de la misma.
Visión: crear un prototipo de bajo costo y flexible, utilizando la tecnología Arduino
y PHP.
2.4.1 Requerimientos funcionales
Proporcionar datos como entrada al Arduino a través de la
aplicación web y este a su vez que se le indique cuál es la salida
(respuesta) esperada.
Permitir al usuario ingresar a la aplicación web y ver lo que está
ocurriendo en tiempo real o guardar archivos .jpg para poder
realizar posteriormente el reconocimiento de algún individuo en
caso de robo.
Permitir al usuario dar órdenes a través de botoneras para control
del encendido de Luces, ser procesadas en la placa Arduino y esta
posteriormente las enviara a la aplicación web para actualizar el
estado de los botones.
Permitir al usuario ingresar a través de la aplicación web y activar
o desactivar las diferentes alarmas de seguridad, así como detener
el sonido producido por una alarma y este se verá reflejado en la
pantalla led que se encuentra instalada en el prototipo. Del mismo
modo a través de un teclado instalado en la maqueta se podrá
ingresar con un usuario y contraseña para activar o desactivar una
alarma y esta se procesara en el Arduino y se enviara a la
aplicación web para la actualización del estado de los botones
correspondientes.
83
Encender luces, aires acondicionados, activar alarmas, registrar
mediciones y acciones.
Cada usuario deberá tener una clave y una contraseña para poder
tener acceso al sistema; es decir, deberá estar registrado
previamente.
Cada usuario deberá tener un nivel de acceso, lo cual le permitirá
tener ciertos privilegios o no.
Mostrar los datos de las alarmas y acciones registradas en base a
los acontecimientos ocurridos en alguno de los ambientes a través
de la aplicación web.
2.4.2 Requerimientos no funcionales
La aplicación debe ser fácil de manipular, para que cualquier
persona que no presente discapacidad visual e incluso para
aquellas que no tengan conocimientos sobre informática, puedan
hacer uso de la misma.
El software debe responder dentro de un lapso de 40 segundos a
las peticiones del usuario.
La aplicación se construirá en PHP la cual se comunicará con las
placas Arduino y a su vez tendrá acceso a una base de datos donde
se registrarán las mediciones y acciones.
La interfaz debe funcionar accediendo a la aplicación web a través
de internet. Mientras que el software Arduino debe de ser instalado
en un equipo de cómputo (ya sea PC o laptop) en caso de que se
quisiera monitorear directamente.
2.5 Diseño de la arquitectura técnica
Esta es una fase donde se planifica las actividades necesarias, especificando las
características y el diseño de la arquitectura del sistema.
Diseño arquitectónico
84
En la figura 19 se puede observar la interacción que hay entre los diferentes
elementos que conforman el sistema de automatización
Fuente: Elaboración propia
En el primer proceso tal como se ve en la figura 20 el usuario interactúa con el
controlador a través de la aplicación web.
Figura 20: Diseño Arquitectónico (1er proceso)
Fuente: Elaboración propia
Figura 19: Diseño Arquitectónico
85
El segundo proceso tal como se ve en la figura 18 el Arduino recoge información de
los sensores para que posteriormente sean registrados.
Fuente: Elaboración propia
2.6 Diseño y desarrollo de prestación de datos
Arduino es donde se desarrollan las funciones del sistema Inmótico y quien tiene
el control de la automatización del edificio.
2.6.1 Materiales utilizados para el circuito
5 Sensores De Humo
1 Shield Geeetech Gsm/Gprs
1 Shield Ethernet
10 Leds
4 Cooler
1 Camara Ip
1 Ldr
5 Dht 22 (Humedad Y Temperatura)
1 Buzzer Modulo
Figura 21: Diseño Arquitectónico (2do proceso)
86
1 Pir
1 Sensor Magnetico De Puerta Mc _38
1 Modulo Laser + 1x Modulo Receptor
4 Sensores De Flama
1 Teclado Matricial 4 X4 Alfanumerico
1 Lcd 16 X 2
1 Pcb
Cables Y Conectores Variados
1 Arduino Nano
2 Arduino Mega
1 Fuente De Pc
1 Cargador 12v 1A
Componentes Pasivos
88
3. CAPITULO III: RESULTADOS Y DISCUSIÓN
3.1 Identificación de situación actual
Para identificar la problemática que presentaba el laboratorio de Ingeniería en
Computación e Informática, se realizó una entrevista con el jefe de laboratorio donde
se identificaron cuáles eran las carencias respecto a la seguridad, monitoreo y control
de los ambientes las mismas que se mencionan en capítulo I, índice 1.2.1.
3.2 Definición de Escenarios
En la tabla 7 se detallan los escenarios de actuación por cada sector
89
TIPO ALARMA ESCENA ACCIÓN
Segu
rid
ad
Alarma de robo
interna
Detección de movimiento o cambia de estado el sensor
magnético mientas la alarma está activada.
Detección de movimiento cuando el nivel de luminosidad es
oscuro se encienden las luces del ambiente.
Registro de alarma, activación
de sonido y envío de mensajes
de texto.
Encendido de luz de
emergencia.
Alarma de robo
externa
Detección de interrupción de señal de sensor láser
Alarma de fuego
Detección de la medición menor al parámetro configurado en la
programación del arduino
Alarma de humo
Detección de la medición mayor al parámetro configurado en la
programación del arduino
90
Video vigilancia
Transmisión de imágenes en tiempo real
Detección de intrusión
Envío de correo electrónico,
sonido de alarma y registro de
capturas de la intrusión.
Iluminación
Encendido y apagado de focos a través de la aplicación Web o
interrupción manual.
Actualización de estados
provenientes de pulsadores y
botones.
Confort
Encendido y apagado de equipos de aire acondicionado vía Web.
Activación automática a través de la aplicación Web según el
nivel establecido en la ventana de configuración.
Encendido de led de advertencia de niveles altos de
temperatura.
Registrar mediciones de los
sensores
Tabla 7: Definición de escenario de actuación
Fuente: Elaboración propia
91
3.3 Creación del Circuito
Para el diseño del esquema de intercambio de información entre los diferentes
dispositivos que compone el sistema inmótico, se eligió la arquitectura centralizada,
para la que además se tuvo que diseñar placas adicionales como las que se muestran
a continuación.
Fuente: Elaboración propia.
En la figura 22 se encuentra el esquemático de las conexiones de los sensores, iluminación
y comunicaciones principales del edificio inmótico.
Figura 22: Esquemático de la placa shield del arduino mega.
92
Fuente: Elaboración propia
En la figura 23 se representa la interconexión de los sensores analógicos de la casa inmótica.
Fuente: Elaboración propia
En la figura 24 se representa la interconexión de los sensores digitales de la casa inmótica
Figura 23: Esquemático de la placa shield del arduino mega.
Figura 24: Entradas digitales del arduino mega
93
Fuente: Elaboración propia
En la figura 25 se representa la etapa de potencia controladoras de los LEDs que conforman el equipo luminario del laboratorio
inmótico.
Fuente: Elaboración propia
En la figura 26 se representa los dos tipos de fuentes de voltaje que alimentan a la maqueta inmótica
Figura 25: Etapa de iluminación
Figura 26: Alimentación de la casa inmotica
94
Fuente: Elaboración propia
En la figura 27 se representa los pines de entradas y salidas generales de un Arduino Mega
Figura 27: Shield Arduino Mega
95
Fuente: Elaboración propia
En la figura 28 se representa los pines de entradas, salidas y comunicaciones del Arduino
nano.
Fuente: Elaboración propia
En la figura 29 representa el display LCD de 16x2 caracteres y se representa su interconexión
con el Arduino Nano.
Figura 28: Arduino nano
Figura 29: LCD 16x2 caracteres
96
Figura 30: Teclado
Fuente: Elaboración propia
En la figura 30 se representa la conexión de un teclado matricial 4x4 con el Arduino nano.
Figura 31: Periferia del Arduino Nano
Fuente: Elaboración propia
En la figura 31 se representa la conexión del Arduino Nano con los siguientes elementos:
Un switch magnético para la seguridad de la puerta, un indicador luminoso led RGB, una
interfaz de comunicación RS 232 y la conexión de la fuente de voltaje.
97
3.4 Programación del Arduino
Para empezar con la programación debemos:
Conectar placa Arduino a través de cable USB al ordenador
Verificación del COM conectado
1. Conectar el Arduino de tipo B macho a la entrada del Arduino
y del otro extremo conectar a un puerto USB de la laptop o
PC.
2. Ingresar al administrador de dispositivos haciendo clic en
Equipo > Administrar y Administrador de dispositivos y
verificar que aparezca conectado el puerto del Arduino tal
como se muestra en la figura 32.
3.4.1 Conexión con el Sketch
a. Introducir sketch a la placa Arduino
b. Introducir sketch a Arduino
3.4.2 Simulación
3.4.3 Interfaces de presentación
6.1.1. Conexión con el sketch
Fuente: Elaboración propia
Con el IDE Arduino para Arduino Hardware, nos va a permitir programar y
grabar la programación en la placa y a la vez permite la comunicación y el
paso de datos a través del monitor serial a través de un cable USB. El paquete
le permite realizar tareas tales como:
Adquirir datos de los sensores analógicos y digitales conectados a
la placa Arduino.
Figura 32: Administrador de dispositivos
98
Controlar otros los actuadores a través de las salidas digitales.
Controlar DC, servo, y motores paso a paso.
Transmisión de datos a través de Ethernet, entre otras.
Para empezar a trabajar con el ID Arduino en primer lugar se debe de conectar
la placa Arduino al computador tal como se observa en la figura 33 y verificar
que se encuentre parpadeando el led de encendido.
Fuente: Elaboración propia
Luego de abrir el IDE se debe de ir a la pestaña Herramientas y en la opción
Placa se debe de elegir el tipo de placa que vayamos a usar del listado que
muestra la figura 34.
Fuente: Elaboración propia
Luego de elegir el tipo de placa se debe seleccionar el número de puerto que
previamente hemos verificado en el Administrador de Dispositivos que esté
conectado. Para ellos se debe de ir al Menú Herramientas > Puerto >
Seleccionar Puerto (ver figura 35).
Lista de Placas
arduino ->
Seleccionar el
Seleccionar el
Figura 33: Conexión de placa arduino con el computador
Figura 34: Selección de placa en IDE Arduino
99
Fuente: Elaboración propia
Una vez realizadas las configuraciones necesarias se procede con la
programación del sketch para los Arduinos empleados, para más detalle vea
el Anexo 3.
3.5 Diseño del Sistema
3.5.1 Diagramas de caso de uso
Sistema Inmótico
Nuestro Sistema Inmótico (figura 36) cuenta con los siguientes casos de uso:
administrar sistema, controlar luces y aires, gestionar alarmas y visualizar
transmisión, los actores del sistema son Usuario y Arduino.
Figura 35: Selección de puerto en IDE Arduino
100
Fuente: Elaboración propia
Administrar Sistema
En este caso de uso (figura 37) se registra, modifica e inhabilita al usuario y
también se generan los reportes para los usuarios como para las alarmas.
Fuente: Elaboración propia
Controlar Luces y Aires
Figura 36: Diagrama de caso de uso Sistema Inmótico
Figura 37: Diagrama de caso de uso Administrar Sistema
101
En este caso de uso (figura 38) se encienden y apagan las luces y aires
acondicionados
Fuente: Elaboración propia
Gestionar Alarmas
En este caso de uso (figura 39) se activan y desactivan alarmas, así como se
generan y apagan alarmas.
Fuente: Elaboración propia
Figura 38: Diagrama de caso de uso Controlar Luces y Aires
Figura 39: Diagrama de caso de uso Gestionar Alarmas
102
3.5.2 Diseño de Base de Datos
3.5.2.1 Diseño lógico
Nuestro diseño lógico cuenta con las siguientes entidades: ambiente, dispositivo, sensor, medición, alarma, acción, usuario, tal como
se muestra en la figura 40.
Figura 40: Diseño lógico de la Base de Datos
Fuente: Elaboración propia
103
3.5.2.2 Diccionario de datos
Descripción de entidades y atributos
A continuación haremos una descripción de las entidades (tabla 8) y de los
atributos para cada entidad: ambiente (tabla 9), dispositivo (tabla 10), sensor
(tabla 11), medición (tabla 12), alarma (tabla 13), acción (tabla 14), usuario
(tabla 15).
Fuente: elaboración propia
Entidad: AMBIENTE
Nombre Dominio Obligatorio Descripción PK
código
ambiente
NUMBER SI Código del ambiente. SI
nombre
ambiente
STRING SI Nombre del ambiente. No
Fuente: elaboración propia
Tabla 8: Descripción de entidades y atributos
Entidades
Nombre Descripción
AMBIENTE Almacena los datos de los ambientes del laboratorio.
DISPOSITIVO Almacena datos de luces y alarmas.
SENSOR Almacena los datos de los sensores.
MEDICIÓN Almacena datos de las mediciones de sensores.
ALARMA Almacena los datos de las alarmas.
ACCIÓN Almacena datos de las acciones respecto a las alarmas
USUARIO Almacena los datos de los usuarios para el inicio de sesión.
Tabla 9: Descripción de entidades y atributos
104
Entidad: DISPOSITIVO
Nombre Dominio Obligatorio Descripción PK
código dispositivo NUMBER Si Código del
dispositivo.
Si
nombre dispositivo STRING Si Nombre del
dispositivo.
No
estado dispositivo
NUMBER Si Estado del
dispositivo
(encendido o
apagado)
No
código ambiente NUMBER Si Código del
ambiente
No
Fuente: elaboración propia
Entidad: SESOR
Nombre Dominio Obligatorio Descripción PK
código sensor NUMBER Si Código del sensor. Si
nombre sensor STRING
Si Nombre del sensor. No
tipo sensor STRING
Si Tipo del sensor:
Iluminación, Seguridad,
Confort.
No
estado sensor STRING
Si Estado del sensor :
Activo, Inactivo
No
Código
ambiente
NUMBER Si Código del ambiente. No
Fuente: elaboración propia
Tabla 10: Descripción de entidades y atributos
Tabla 11: Descripción de entidades y atributos
105
Entidad: MEDICIÓN
Nombre Dominio Obligatorio Descripción PK
código medición NUMBER Si Código secuencial
de medición.
Si
fecha medición DATETIME
Si Fecha de la
medición.
No
hora medición DATETIME
Si Hora de la medición. No
valor medición NUMBER Si Valor de la medición No
código sensor NUMBER Si Código del sensor No
Fuente: elaboración propia
Entidad: ALARMA
Nombre Dominio Obligatorio Descripción PK
código alarma NUMBER Si Código de
alarma.
Si
fecha alarma DATETIME
Si Fecha de la
alarma.
No
hora alarma DATETIME
Si Hora de la
alarma.
No
tipo alarma
STRING Si Tipo de alarma:
Robo Interno,
Robo Externo,
Fuego, Humo
No
código sensor NUMBER Si Código del
sensor
No
Fuente: elaboración propia
Tabla 12: Descripción de entidades y atributos
Tabla 13: Descripción de entidades y atributos
106
Entidad: ACCIÓN
Nombre Dominio Obligatorio Descripción PK
código acción NUMBER Si Código secuencial
de acción.
Si
fecha acción DATETIME
Si Fecha de la acción. No
hora acción DATETIME
Si Hora de la acción.
acción STRING Si Acciones:
Activado,
Desactivado,
Encendido, OFF
No
código usuario NUMBER Si Código de usuario No
código sensor NUMBER Si Código de sensor No
código alarma NUMBER No Código de alarma No
Fuente: elaboración propia
Entidad: USUARIO
Nombre Dominio Obligatorio Descripción PK
código usuario NUMBER Si Código de usuario Si
nombre usuario STRING Si Nombre del usuario. No
apellido paterno STRING Si Apellido paterno del
usuario
No
apellido materno STRING Si Apellido materno del
usuario
No
DNI usuario STRING Si DNI del usuario. No
sexo usuario NUMBER Si Sexo del usuario:
Femenino(0)
Masculino(1)
No
celular STRING Si Celular del usuario. No
Tabla 14: Descripción de entidades y atributos
107
Entidad: USUARIO
Nombre Dominio Obligatorio Descripción PK
correo STRING Si Correo del usuario No
dirección STRING Si Dirección del usuario No
login usuario STRING Si Nombre de usuario para
el inicio de sesión.
No
contraseña
usuario
STRING Si Contraseña de usuario
para el inicio de sesión.
No
estado usuario STRING Si Estado de usuario:
Vigente, No vigente
No
cambio
contraseña
NUMBER Si Indica si su próxima
sesión en el sistema
debe de cambiar
contraseña,
(0) no cambiar
contraseña, (1) cambiar
contraseña.
No
cargo usuario STRING Si Cargo de usuario:
Jefe, Soporte, Docente
No
Fuente: elaboración propia
3.5.3 Diseño Físico
Nuestro diseño físico cuenta con las siguientes entidades: ambiente, dispositivo, sensor,
medición, alarma, acción, usuario, tal como se muestra en la figura 41.
Tabla 15: Descripción de entidades y atributos
109
3.5.3.1 Diccionario de Datos
Descripción de tablas y campos
A continuación, haremos una descripción de las tablas (tabla 16) y de los
campos para cada tabla: ambiente (tabla 17), dispositivo (tabla 18), sensor
(tabla 19), medición (tabla 20), alarma (tabla 21), acción (tabla 22), usuario
(tabla 23).
Fuente: Elaboración propia
Fuente: Elaboración propia
Tabla 16: Descripción de tablas y campos
Tablas
Nombre Descripción
AMBIENTE Almacena los datos de los ambientes del laboratorio.
DISPOSITIVO Almacena datos de luces y alarmas.
SENSOR Almacena los datos de los sensores.
MEDICIÓN Almacena datos de las mediciones de sensores.
ALARMA Almacena los datos de las alarmas.
ACCIÓN Almacena datos de las acciones respecto a las alarmas
USUARIO Almacena los datos de los usuarios para el inicio de sesión.
Tabla 17: Descripción de tablas y campos
Tabla: AMBIENTE
Nombre Tipo de dato Nulo Descripción PK FK Clave
foránea
codigo_amb INT NOT
NULL
Código secuencial del
ambiente.
Si No -
nombre_amb VARCHAR(30) NOT
NULL
Nombre del ambiente. No No -
110
Tabla: DISPOSITIVO
Nombre Tipo de dato Nulo Descripción PK FK Clave foránea
codigo_dis INT NOT
NULL
Código secuencial del
dispositivo.
Si No -
nombre_dis VARCHAR(30) NOT
NULL
Nombre del
dispositivo.
No No -
codigo_amb INT NOT
NULL
Código del ambiente No Si FK_SENSOR
_AMBIENTE
estado_dis BOOLEAN NOT
NULL
Estado del dispositivo:
Apagado 0
Encendido 1
No No -
Fuente: Elaboración propia
Fuente: Elaboración propia
Tabla 18: Descripción de tablas y campos
Tabla: SESOR
Nombre Tipo de dato Nulo Descripción Default PK FK Clave foránea
codigo_sen INT NOT
NULL
Código secuencial
de sensor.
- Si No -
nombre_sen VARCHAR(30)
NOT
NULL
Nombre del sensor. - No No -
tipo_sen ENUM(‘I’,’S’,’C’) NOT
NULL
Tipo del sensor:
Iluminacion ’I’
Seguridad ’S’
Confort ’C’
- No No -
estado_sen ENUM(‘A’,’I’) NOT
NULL
Estado del sensor :
Activo ’A’
Inactivo’I’
‘A’ No No -
código_amb INT NOT Código de - No Si FK_SENSOR_A
Tabla 19: Descripción de tablas y campos
Tabla: MEDICIÓN
Nombre Tipo de dato Nulo Descripción PK FK Clave foránea
codigo_med INT NOT
NULL
Código secuencial
de medición.
Si No -
fechahor_med TIMESTAMP
NOT
NULL
Fecha y hora de la
medición.
No No -
valor_med INT NOT
NULL
Valor de la medición No No -
codigo_sen INT NOT
NULL
Código del sensor No Si FK_MEDICION
_SENSOR
Tabla 20: Descripción de tablas y campos
111
Fuente: Elaboración propia
Tabla:ALARMA
Nombre Tipo de dato Nulo Descripción PK FK Clave foránea
codigo_ala INT NOT
NULL
Código secuencial
de alarma.
Si No -
fechahor_ala TIMESTAMP
NOT
NULL
Fecha y hora de la
alarma.
No No -
codigo_sen INT NOT
NULL
Código del sensor No Si FK_ALARMA_S
ENSOR
tipo_ala ENUM(‘I’,’E’,’F
’,’H’)
NOT
NULL
Tipo de alarma:
Robo Interno ’I’
Robo Extreno’E’
Fuego ’F’
Humo ’H’
No No -
Fuente: Elaboración propia
Tabla:ACCION
Nombre Tipo de dato Nulo Descripción PK FK Clave foránea
codigo_acc INT NOT
NULL
Código secuencial
de acción.
Si No -
fechahor_acc TIMESTAMP
NOT
NULL
Fecha y hora de la
acción.
No No -
accion_acc ENUM(‘A’,’D’,’
E’,’O’)
NOT
NULL
Acciones:
Activado ’A’
Desactivado ’D’
Encendido ’E’
No No -
NULL ambiente. MBIENTE
valormax_sen INT NULL Valor máximo del
sensor.
- No No -
Tabla 21: Descripción de tablas y campos
112
Tabla:ACCION
Nombre Tipo de dato Nulo Descripción PK FK Clave foránea
OFF ’O’
codigo_usu INT NULL Código de usuario No Si FK_ACCION_US
UARIO
codigo_sen INT NOT
NULL
Código de sensor No Si FK_ACCION_SE
NSOR
codigo_ala INT NULL Código de alarma No Si FK_ACCION_AL
ARMA
Fuente: Elaboración propia
Tabla: USUARIO
Nombre Tipo de dato Nulo Descripción Default PK FK Clave
foránea
codigo_usu INT NOT
NULL
Código secuencial de
usuario
- Si No -
nombre_usu VARCHAR(
50)
NOT
NULL
Nombre del usuario. - No No -
apellidopat_usu VARCHAR(
30)
NOT
NULL
Apellido paterno del
usuario
- No No -
apellidomat_usu VARCHAR(
30)
NOT
NULL
Apellido materno del
usuario
- No No -
dni_usu CHAR(8) NOT
NULL
DNI del usuario. - No No -
sexo_usu BOOLEAN NOT
NULL
Sexo del usuario:
Femenino 0
Masculino 1
- No No -
celular_usu CHAR(9) NOT
NULL
Celular del usuario. - No No -
correo_usu VARCHAR( NOT Correo del usuario - No No -
Tabla 22: Descripción de tablas y campos
113
Tabla: USUARIO
Nombre Tipo de dato Nulo Descripción Default PK FK Clave
foránea
45) NULL
direccion_usu VARCHAR(
80)
NOT
NULL
Dirección del usuario - No No -
usuario_usu VARCHAR(
20)
NOT
NULL
Nombre de usuario para
el inicio de sesión.
- No No -
contraseña_usu VARCHAR(
6)
NOT
NULL
Contraseña de usuario
para el inicio de sesión.
- No No -
estado_usu ENUM(‘V’,’
N’
NOT
NULL
Estado de usuario
Vigente ’V’
No vigente’N’
‘V’ No No -
cambiarcon_usu BIT NOT
NULL
Indica si su próxima
sesión en el sistema debe
de cambiar contraseña
0 no cambiar password
1 cambiar password
1 No No -
cargo_usu ENUM(‘J’,’
S’,’D’)
NOT
NULL
Cargo de usuario
Jefe ’J’
Soporte’S’
Docente’D’
- No No -
Fuente: Elaboración propia
3.5.4 Interfaz web
Pantalla de Acceso al sistema
La aplicación muestra una pantalla de inicio donde debe ingresarse un usuario
y su contraseña tal como se muestra en la figura 42.
Tabla 23: Descripción de tablas y campos
114
Fuente: Elaboración propia
Pantalla de inicio para jefe de laboratorio y personal administrativo
Una vez ingresado el usuario y contraseña correctos, la pantalla que se mostrará para
el jefe de laboratorio y el personal administrativo será como se muestra en la figura
43.
Figura 43: Pantalla de inicio al sistema
Fuente: Elaboración propia
Figura 42: Pantalla de acceso al sistema
115
Pantalla de Luces
Una de las opciones que cuenta la aplicación es el encendido y apagado de luces, a
continuación se muestra la pantalla del menú Luces, figura 44.
Figura 44: Pantalla de luces
Fuente: Elaboración propia
Pantalla de Aires Acondicionados
Otra opción con la que cuenta la aplicación es el encendido y apagado de aires
acondicionados, a continuación se muestra la pantalla del menú Aire Acondicionado,
figura 45.
Figura 45: Pantalla de Aires Acondicionados
Fuente: Elaboración propia
116
Pantalla de Alarmas
La opción Alarmas de la aplicación nos permite activar y desactivar las alarmas, a
continuación se muestra la pantalla del menú Alarmas, figura 46.
Figura 46: Pantalla de Alarmas
Fuente: Elaboración propia
Pantalla de Reporte de Alarmas
La opción Reportes de la aplicación contiene los reportes de alarmas y reportes de
acciones por alarmas, a continuación se muestra la pantalla del menú Reporte de
Alarmas, figura 47 y la pantalla de Reporte de Acciones por alarma, figura 48.
Figura 47: Pantalla de Reporte de Alarmas
117
Fuente: Elaboración propia
Pantalla de Reporte de Acciones por Alarma
Figura 48: Pantalla de Reporte Acciones por Alarma
Fuente: Elaboración propia
Pantalla de Configuraciones
La opción Configuraciones de la aplicación nos permite modificar la temperatura
máxima para que los aires acondicionados se enciendan, a continuación se muestra
la pantalla del menú Configuraciones, figura 49.
Figura 49: Pantalla de Configuraciones
118
Fuente: Elaboración propia
Pantalla de Usuarios
La opción Usuarios de la aplicación nos permite buscar, registrar, modificar e
inhabilitar usuarios, la imagen muestra la pantalla del menú Usuarios, figura 50.
Figura 50: Pantalla de Usuarios
Fuente: Elaboración propia
Pantalla de inicio para docentes
Una vez ingresado el usuario y contraseña correctos, la pantalla que se mostrará para
docentes será como se muestra en la figura 51.
Fuente: Elaboración propia Figura 51: Pantalla de Inicio para Docentes
119
Pantalla de restricción a docentes sin acceso a alarmas y reportes
Para los docentes están restringidas las opciones de Alarmas y Reportes, para ello se
le mostrará el siguiente mensaje, figura 52
Figura 52: Pantalla de Restricción para Docentes
Fuente: Elaboración propia
3.6 Construcción de Maqueta
Para la construcción de la maqueta se tomaron medidas de los ambientes que
conforman el laboratorio para posteriormente graficarlas en el programa AutoCAD,
tal como se aprecia en la figura 53.
Fuente: Elaboración Propia Figura 53: Segundo Piso Edificio FACFYM
120
Los materiales principales utilizados para replicar el diseño a pequeña escala son
(figura 54):
MDF
Cartón doble corrugado
Mica gruesa
Palitos de cedro
Figura 54: Maqueta del Segundo Piso Edificio FACFYM
Fuente: Elaboración Propia
3.7 Verificación de Sensores
Para comprobar el adecuado funcionamiento de los sensores de intrusión y de mas,
se utiliza el monitor serial del IDE Arduino, tal como se observa en la figura 55, en
la cual se lista las diferentes mediciones de los sensores y las respuestas a cada acción
ejecutada por el Arduino.
122
3.8 Pruebas mínimas para el proyecto
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 01
2. Nombre de Prueba
Ingreso de usuario y clave
3. Fecha de inicio de la prueba: 08/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
session_start();
require_once '../bd/conexion.php';
require_once '../clases/clsUsuario.php';
$usu = new Usuarios();
$nomusu = $_POST['usuario'];
$pasusu = $_POST['clave'];
if (empty($nomusu))
{ $errors[] = "Ingresar Usuario"; }
else if (empty($pasusu))
{ $errors[] = "Ingresar Password"; }
else if ( !empty($nomusu) && !empty($pasusu) )
{
$usu->setUsuario(addslashes($nomusu));
123
$usu->setContrasenia(addslashes($pasusu));
$lstusu = $usu->Login();
if ($lstusu[0]['tipo'] == 'T')
{
//CREA LA SESSION
$_SESSION['codigo_usu'] = $lstusu[0]['codigo_usu'];
$_SESSION['estado_usu'] = $lstusu[0]['estado_usu'];
$_SESSION['apellidopat_usu'] = $lstusu[0]['apellidopat_usu'];
$_SESSION['apellidomat_usu'] = $lstusu[0]['apellidomat_usu'];
$_SESSION['nombre_usu'] = $lstusu[0]['nombre_usu'];
$_SESSION['cargo_usu'] = $lstusu[0]['cargo_usu'];
$_SESSION['cambiarcon_usu'] = $lstusu[0]['cambiarcon_usu'];
}
if ($lstusu[0]['tipo'] == 'T') {
echo $lstusu[0]['mensaje'].'-'.$lstusu[0]['tipo'].'-
'.$lstusu[0]['cambiarcon_usu'];
} else {
echo $lstusu[0]['mensaje'].'-'.$lstusu[0]['tipo'];
}
124
}
6. Procedimientos realizado en la ejecución de la prueba:
Se le ingresa la clave Vasquez2018
7. Fecha y hora de Terminación:
08/01/2019
8. Resultado Real de la Prueba:
Ingreso correctamente
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
125
10. Comentarios: Para los usuarios jefe de soporte y jefe de laboratorio sus claves deben de contener solo números.
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 08/01/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 02
2. Nombre de Prueba
Registro de un nuevo
Usuario
3. Fecha de inicio de la prueba: 08/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
function registrar(){
var formData = new FormData(document.getElementById("frmDatos"));
$.ajax({
url: "InsertaUsu.php",
type: "POST",
dataType: "HTML",
data: formData,
126
cache: false,
contentType: false,
processData: false
}).done(function(data){
var arrSMS = data.split('/');
if(arrSMS[0]=="T") {
var pregunta = confirm('¿Desea agregar otro usuario?');
if(pregunta)
{ window.location='RegUsuarios.php'; }
else
{ window.location='Usuarios.php'; }
}
else
{
alert(arrSMS[1]);
}
});
}
// InsertaUsu.php
if(isset($_SESSION['codigo_usu']))
{
$dni=$_POST['txtdni'];
$correo=$_POST['txtemail'];
127
$apellidoPat=ltrim(rtrim($_POST['txtapellidoPat']));
$apellidoMat=ltrim(rtrim($_POST['txtapellidoMat']));
$nombre=ltrim(rtrim($_POST['txtnombre']));
$sexo=$_POST['cboSexo'];
$direccion=$_POST['txtdireccion'];
$celular=$_POST['txtcelular'];
$usuario=$_POST['txtusuario'];
$password=$_POST['txtpassword'];
$cargo=$_POST['cboCargo'];
$usu->setDNI($dni);
$usu->setCorreo($correo);
$usu->setApellidoPaterno($apellidoPat);
$usu->setApellidoMaterno($apellidoMat);
$usu->setNombres($nombre);
$usu->setDireccion($direccion);
$usu->setCelular($celular);
$usu->setUsuario($usuario);
$usu->setContrasenia($password);
if ($sexo=="Femenino")
{ $sexo=0; }
else
{ $sexo=1; }
$usu->setSexo($sexo);
if ($cargo=="Jefe de Laboratorio")
{ $cargo='J'; }
128
else
{
if ($cargo=="Soporte")
{ $cargo='S'; }
else
{ $cargo='D'; }
}
$usu->setCargo($cargo);
$lstusu = $usu->RegistrarUsuario();
if(count($lstusu)>0)
{ echo $lstusu[0]['tipo'].'/'.$lstusu[0]['mensaje']; }
else
{ echo "error/error"; }
}else{
header('location:../index.php');
}
129
6. Procedimientos realizado en la ejecución de la prueba:
Se ingresa los datos de un nuevo usuario que no haya sido previamente registrando
7. Fecha de Terminación:
08/01/2019
8. Resultado Real de la Prueba:
Registro exitoso.
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios: Al dar clic en el botón Guardar si los datos son correctos estos se guardarán en la Base de Datos y
automáticamente aparecerá un mensaje por si deseamos seguir registrando otro usuario.
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 08/01/2019
130
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 03
2. Nombre de Prueba
Buscar Usuario
3. Fecha de inicio de la prueba: 09/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
if(isset($_SESSION['codigo_usu']) && isset($_POST['txtApeNombres'])){
require_once '../clases/clsUsuario.php';
require_once '../bd/conexion.php';
$usu = new Usuarios();
$usu->setApellidoPaterno($_POST['txtApeNombres']);
$lstusu = $usu->BuscarUsuario();
echo "<div class='table-responsive'>";
echo "<table class='table my-5 ' id='Tabla' >
<thead>
<tr>
<th>DNI</th>
<th>Apellidos y Nombres</th>
<th></th>
<th></th>
</tr>
131
</thead>";
echo " <tbody>";
if(count($lstusu)>0){
for($i=0; $i<count($lstusu); $i++){
echo "<tr>";
echo " <td scope='row' style='display: none;'> ".$lstusu[$i]['dni_usu']."</td>";
echo " <td scope='row'> ".$lstusu[$i]['dni_usu']."</td>";
echo " <td>".$lstusu[$i]['apellidoPat_usu']." ".$lstusu[$i]['apellidoMat_usu'] ."
".$lstusu[$i]['nombre_usu'] ."</td>";
echo " <td>";
echo " <form action='ModificarUsu.php' method='POST'>";
echo " <input type='text' name='codigo' id='codigo'
value='".$lstusu[$i]['codigo_usu'] ."' style='display: none;'>";
echo " <input type='submit' class='btn btn-primary' style='background-color:
#6ECAAC; border-color: #6ECAAC;' value='Modificar'>";
echo " </form>";
echo " </td>";
echo " <td><input class='btn btn-danger Inhabilitar' type='button' name='btnInhabilitar'
value='Inhabilitar' onclick='Inhabilitar(".$lstusu[$i]['codigo_usu'] .")';></td>";
echo "</tr>";
}
}
else{
echo "<tr>";
132
echo " <td><font color='red'> No existen usuarios con los datos
digitados</font></td>";
echo "</tr>";
}
echo"</tbody>";
echo"</table>";
echo "</div>";
6. Procedimientos realizado en la ejecución de la prueba:
Se le ingresa el apellido VENTURA
7. Fecha y hora de Terminación:
09/01/2019
8. Resultado Real de la Prueba:
133
Búsqueda exitosa.
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios: Si se no se conoce el nombre de la persona que se desea buscar solo se debe de dar clic sobre el botón
BUSCAR y se listará todos los registros.
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 09/01/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 04
2. Nombre de Prueba
Actualización Datos de
Usuario
3. Fecha de inicio de la prueba: 13/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
function modificar(){
134
var formData = new FormData(document.getElementById("frmDatos"));
$.ajax({
url: "ModUsuario.php",
type: "POST",
dataType: "HTML",
data: formData,
cache: false,
contentType: false,
processData: false
}).done(function(data){
if($.trim(data)=="exito")
{ window.location='Usuarios.php'; }
Else { alert(data); }
});
}
//ARCHIVO ModUsuario.php
if(isset($_SESSION['codigo_usu']))
{
$codigo=$_POST['codigo'];
$dni=$_POST['txtdni'];
$correo=$_POST['txtemail'];
$apellidoPat=ltrim(rtrim($_POST['txtapellidoPat'])); //addslashes
$apellidoMat=ltrim(rtrim($_POST['txtapellidoMat']));
$nombre=ltrim(rtrim($_POST['txtnombre']));
135
$sexo=$_POST['cboSexo'];
$direccion=$_POST['txtdireccion'];
$celular=$_POST['txtcelular'];
$cargo=$_POST['cboCargo'];
if ($sexo=="Femenino"){ $sexo=0; }
else{ $sexo=1; }
if ($cargo=="Jefe de Laboratorio") { $cargo='J'; }
else
{
if ($cargo=="Soporte") { $cargo='S';}
Else { $cargo='D'; }
}
$usu->setCodigo($codigo);
$usu->setApellidoPaterno($apellidoPat);
$usu->setApellidoMaterno($apellidoMat);
$usu->setNombres($nombre);
$usu->setDNI($dni);
$usu->setCorreo($correo);
$usu->setSexo($sexo);
$usu->setDireccion($direccion);
$usu->setCelular($celular);
$usu->setCargo($cargo);
$lstuser = $usu->ModificarUsuario();
136
echo "exito";
6. Procedimientos realizado en la ejecución de la prueba:
Se le agrega el segundo nombre (Meilin)
7. Fecha y hora de Terminación:
13/01/2019
8. Resultado Real de la Prueba:
Actualización Correcta
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
137
10. Comentarios: Para actualizar los datos se valida los campos DNI, Teléfono, Correo, Nombres y Apellidos.
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 13/01/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 05
2. Nombre de Prueba
Inhabilitar usuario
3. Fecha de inicio de la prueba: 13/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
function Inhabilitar(codigo)
{ //alert(codigo);
var pregunta = confirm('¿Desea Inhabilitarlo?');
if (pregunta)
{
// si pone aceptar registramos
$.post('Inhabilitar.php',
{ txtcodigo:codigo },function(data){ location.reload(); });
138
}
else // si pone cancelar
return false;
}
if(isset($_SESSION['codigo_usu'])){
$usu = new Usuarios();
$usu->setCodigo($_POST['txtcodigo']);
$lstusu = $usu->InhabilitarUsuario();
}else{
header('../location:index.php');
}
139
6. Procedimientos realizado en la ejecución de la prueba:
Se inhabilita al usuario LEIVA CASTILLO
7. Fecha y hora de Terminación:
13/01/2019
8. Resultado Real de la Prueba:
Inhabilitación Correcta
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios: Una vez inhabilitado el usuario no se mostrará en la lista de usuarios.
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 13/01/2019
140
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 06
2. Nombre de Prueba
Cambiar Contraseña
3. Fecha de inicio de la prueba: 14/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
if(isset($_SESSION['codigo_usu'])){
$Cargo=$_SESSION['cargo_usu'];
if(isset($_SESSION['codigo_usu']) && isset($_POST['claveant']) &&
isset($_POST['clavenw1']) && isset($_POST['clavenw'])){
$clvant = $_POST['claveant'];
$clvnw = $_POST['clavenw'];
$clvnw1 = $_POST['clavenw1'];
$codusu=$_SESSION['codigo_usu'];
if($clvnw1==$clvnw){
if (strlen($clvnw)>5) {
if ($clvant!=$clvnw) {
require_once '../clases/clsUsuario.php';
require_once '../bd/conexion.php';
$usu = new Usuarios();
$usu->setCodigo($codusu);
$usu->setContrasenia($clvant);
$usu->setCambiarContrasenia($clvnw);
141
$lstusu = $usu->CambiarContrasenia();
if($lstusu[0]['tipo'] == 'F'){
$Mensaje= $lstusu[0]['mensaje'];
echo "<br><center><font color='red' focus();>".$Mensaje."</font></center>";
}else{
if($Cargo=='J'){
echo"<script type='text/javascript'>
alert('La contraseña ha sido actualizada');
var signo='$';
window.location='xmlUsuario.php?state=' +signo + $clvnw +signo + '&number=1';
</script>";
}
if($Cargo=='S'){
echo"<script type='text/javascript'>
alert('La contraseña ha sido actualizada');
var signo='$';
window.location='xmlUsuario.php?state=' +signo + $clvnw +signo + '&number=3';
</script>";
}else{
echo "<script type='text/javascript'>
alert('La contraseña ha sido actualizada');
window.location='../principal.php';
</script>";
142
}
}
}else
echo"<br><center><font color='red' focus();>"."La nueva clave debe ser diferente a la
antigua"."</font></center>";
}else{
echo "<br><center><font color='red' focus();>"."La nueva clave debe tener por lo menos seis
caracteres"."</font></center>";
}
}else{
echo "<br><center><font color='red' focus();>"."La nueva clave no
coinicide"."</font></center>";
6. Procedimientos realizado en la ejecución de la prueba:
143
Se cambia la clave anterior 654321 por Leiva1
7. Fecha y hora de Terminación:
14/01/2019
8. Resultado Real de la Prueba:
Inhabilitación Correcta
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios:
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 14/01/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
144
1. Código de
Prueba: 07
2. Nombre de Prueba
Listado de
Alarmas/Acciones
3. Fecha de inicio de la prueba: 22/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
if(mysqli_num_rows($consulta2)>0){
$i=1;
while($fila = mysqli_fetch_array($consulta2))
{
echo "<tr>";
$cont=$i++;
echo "<th scope='row'>".$cont. "</th>";
if($fila[1] == 'E'){
echo "<td>Robo Externo</td>";
}
else{
if($fila[1] == 'I'){
echo "<td>Robo Interno</td>";
}
else{
if($fila[1] == 'F'){
echo "<td>Fuego</td>";
}
145
else{
echo "<td>Humo</td>";
}
}
}
echo "<td>".$fila[2]."</td>";
echo "<td>".$fila[3]."</td>";
echo "<td>".$fila[4]."</td>";
echo "</tr>";
}
}
echo"</tbody>";
echo"</table>
146
6. Procedimientos realizado en la ejecución de la prueba:
En el tipo de alarma se selecciona alarma de robo interno y en fecha inicial 01/03/2019 y fecha final 20/07/2019
7. Fecha y hora de Terminación:
22/01/2019
8. Resultado Real de la Prueba:
Listado correctamente
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios: Para el caso del reporte de acciones se procede de la misma forma y con la misma lógica.
Ejecución del
caso de Prueba
Nombre: Diana Primo
Fecha: 22/01/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
147
1. Código de
Prueba: 08
2. Nombre de Prueba
Encendido y Apagado de
Luces
3. Fecha de inicio de la prueba: 04/02/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
session_start();
require_once '../bd/conexion.php';
require_once '../clases/clsEstado.php';
$est = new Estados();
if (isset($_SESSION['codigo_usu']) )
{
//DATOS DE ILUMINACION
$codigo = $_GET['codigo'];
$valor = $_GET['valor'];
$accion = $_GET['accion'];
//DATOS DE SENSOR
//$numSensor = $_GET[];
$accionSensor = $_GET['acc_Sensor'];
$arr = array();
if($accion == 0) //LEER ESTADOS
148
{
$lstEst = $est->ObtenerValor_Estado();
if(count($lstEst)>0)
{
for($j=0;$j<(count($lstEst));$j++)
{
if($lstEst[$j]['codigo_est']>=1 && $lstEst[$j]['codigo_est']<=9)
{
$cod = $lstEst[$j]['codigo_est'];
$est = $lstEst[$j]['valor_est'];
$txt_est = $lstEst[$j]['estado'];
$color = $lstEst[$j]['color'];
$btnHTML = $lstEst[$j]['boton'];
//VALORES PARA EL XML
if($cod == 1) { $btnXML = 0; }
if($cod == 2) { $btnXML = 1; }
if($cod == 3) { $btnXML = 2; }
if($cod == 4) { $btnXML = 3; }
if($cod == 5) { $btnXML = 4; }
if($cod == 6) { $btnXML = 5; }
if($cod == 7) { $btnXML = 6; }
if($cod == 8) { $btnXML = 7; }
if($cod == 9) { $btnXML = 8; }
149
if($est == 1) { $estXML = 'ON'; } else { $estXML = 'OFF'; }
$arr[] = array('codigo' => $cod,
'botonHTML' => $btnHTML,
'estado' => $est,
'lblestado' => $txt_est,
'color' => $color,
'botonXML' => $btnXML,
'estadoXML' => $estXML);
//CAMBIA VALORES EN XML
$devicenumber = $btnXML; //BOTON 1
$xml = simplexml_load_file("test.xml") or die("Error:Cannot create
object");
if($estXML == "ON")
$xml->device[(int)$devicenumber]->state = "ON";
else
$xml->device[(int)$devicenumber]->state = "OFF";
$xml->asXML("test.xml");
}
}
//$arr[] = array('codigo' => $cod, 'nombre' => 'Maria');
$valLuces = json_encode($arr);
}
150
}
else //ACTUALIZAR ESTADOS
{
$est->setCodigo($codigo);
$est->setValor($valor);
$lstEst = $est->CambiarValor_Estado();
if(count($lstEst)>0)
{
for($j=0;$j<(count($lstEst));$j++)
{
if($lstEst[$j]['codigo_est']>=1 && $lstEst[$j]['codigo_est']<=9)
{
$cod = $lstEst[$j]['codigo_est'];
$est = $lstEst[$j]['valor_est'];
$txt_est = $lstEst[$j]['estado'];
$color = $lstEst[$j]['color'];
$btnHTML = $lstEst[$j]['boton'];
//VALORES PARA EL XML
if($cod == 1) { $btnXML = 0; }
if($cod == 2) { $btnXML = 1; }
if($cod == 3) { $btnXML = 2; }
if($cod == 4) { $btnXML = 3; }
if($cod == 5) { $btnXML = 4; }
if($cod == 6) { $btnXML = 5; }
151
if($cod == 7) { $btnXML = 6; }
if($cod == 8) { $btnXML = 7; }
if($cod == 9) { $btnXML = 8; }
if($est == 1) { $estXML = 'ON'; } else { $estXML = 'OFF'; }
$arr[] = array('codigo' => $cod,
'botonHTML' => $btnHTML,
'estado' => $est,
'lblestado' => $txt_est,
'color' => $color,
'botonXML' => $btnXML,
'estadoXML' => $estXML);
}
}
$valLuces = json_encode($arr);
}
//CAMBIA VALORES EN XML
$updatestate = $_GET["state"];
$devicenumber = $_GET["number"];
$xml = simplexml_load_file("test.xml") or die("Error:Cannot create object");
if($updatestate == "ON")
$xml->device[(int)$devicenumber]->state = "ON";
else
$xml->device[(int)$devicenumber]->state = "OFF";
$xml->asXML("test.xml");
152
}
echo $valLuces;
}
6. Procedimientos realizado en la ejecución de la prueba:
Se encienden los botones las luces de los laboratorios 1 4 y 5
Se apagan los botones de las luces de los laboratorios 1, 4 y 5
7. Fecha y hora de Terminación:
04/02/2019
8. Resultado Real de la Prueba:
Encendido correctamente
153
Apagado Correctamente.
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios: Al hacer clic sobre los botones, se envía el código del botón y el número del botón para que sea
actualizada la tabla estados y el archivo XML respectivamente se actualiza automáticamente, para posteriormente ser
leído por el Arduino. Si se da clic sobre el botón apagar todos se envían todos los códigos para ser actualizados.
Ejecución del
caso de Prueba
Nombre: Yoreli Vasquez
Fecha: 04/02/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 9
2. Nombre de Prueba
Activación de aire
acondicionado en
Automático
3. Fecha de inicio de la prueba: 09/02/2019
154
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
function ActivarDesactivar(){
var c=document.getElementById("b10")
var x=c.textContent;
button7.style.backgroundColor="#616A6B";
if(x=="Desactivar Automaticamente"){
button7.innerText="Activar Automaticamente";
window.location="xmlupdateA.php?state=OFF&number=6";
}
else if(x=="Activar Automaticamente"){
button7.innerText="Desactivar Automaticamente";
window.location="xmlupdateA.php?state=ON&number=6";
}
}
//LECTURA DE LOS VALORES MAX DE ACUERDO AL CODIGO DEL SENSOR
if (isset($_SESSION['codigo_usu']) ) {
$miconexion = new Conexion();
$conexion = $miconexion->conectar();
$query1 = "call pa_leerSensor(1)";
$consulta1= mysqli_query($conexion, $query1);
$fila1 = mysqli_fetch_array($consulta1);
155
mysqli_close($conexion);
}
6. Procedimientos realizado en la ejecución de la prueba:
Se dio Clic sobre el botón Activar Automáticamente.
7. Fecha y hora de Terminación:
04/02/2019
8. Resultado Real de la Prueba:
Encendido correctamente
Apagado Correctamente.
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
156
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios: Cuando se activa la función activar automáticamente se leen los valores máximos guardados en la
tabla sensor para ser comparados con las mediciones que realiza el Arduino y si una de ellas es mayor o igual al valor
máximo registrado este se enciende.
Ejecución del
caso de Prueba
Nombre: Yoreli Vasquez
Fecha: 09/02/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 10
2. Nombre de Prueba
Actualización de valores
máximos
3. Fecha de inicio de la prueba: 09/02/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
// MOSTRAR EL VALOR MAXIMO EN LOS TEXBOX
<?php
157
require_once '../clases/clsSensor.php';
require_once '../bd/conexion.php';
$sen = new Sensores();
$sen->setCodigoSen(1);
$lstsen = $sen->LeerValor();
if(count($lstsen)>0)
{
for($i=0; $i<count($lstsen); $i++)
{
?>
<input type="text" class="form-control txtValor2" id="txtValor2"
name="txtValor[]"
onKeyPress="return SoloNum(this,event);"
value="<?=$lstsen[$i]['valormax_sen']?>">
<?php
}}
//INSERTA EL VALOR MAXIMO
<?php
require("../bd/conexion.php");
session_start();
if(isset($_SESSION['codigo_usu'])){
require_once '../clases/clsSensor.php';
158
require_once '../bd/conexion.php';
$sen = new Sensores();
$valor=$_POST['txtValor'];
$codSensor = '9, 1, 6, 7, 8';
$cadena = explode(',', $codSensor);
for ($x = 0; $x < count($valor); $x++)
{
$sen->setValormaxSen($valor[$x]);
$sen->setCodigoSen($cadena[$x]);
$lst = $sen->InsertaValorMax();
}
echo $lst[0]['tipo'];
}else{
header('location:../index.php');
}
159
6. Procedimientos realizado en la ejecución de la prueba:
Se le ingresa el 24 en temperatura máxima de laboratorio 1
7. Fecha y hora de Terminación:
09/02/2019
8. Resultado Real de la Prueba:
Actualizado correctamente
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
160
10. Comentarios: El Valor máximo ingresado en la ventana de configuración nos permitirá establecer un límite antes
de activarse el/los aires acondicionados.
Ejecución del
caso de Prueba
Nombre: Yoreli Vasquez
Fecha: 09/02/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 11
2. Nombre de Prueba
Activar / Desactivar
Alarmas
3. Fecha de inicio de la prueba: 15/02/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
function ActDes_AlaInt(idBoton)
{
codigoBoton = idBoton;
var estado = document.getElementById("btn_" + idBoton).innerText;
accion = 1;
if(estado =="Desactivar" || estado =="Apagar Buzzer")
161
{
if (estado =="Desactivar")
{ var pregunta = confirm('¿Está seguro de desactivar alarma?'); }
else
{ var pregunta = true; }
if (pregunta)
{
if(estado == "Desactivar" || estado == "Apagar Buzzer")
// { document.getElementById('btn_15').style.display = 'inline';
}
//POR CAMBIAR >> COMO OCULTAR UN BOTON EN JAVASCRIPT
//VALOR QUE SE PASARÁ A LA BD(TABLA ESTADO) - 0.APAGADO 1.ENCENDIDO
valor_est = 0;
//VALOR QUE SE PASARÁ A LA BD(TABLA ACCION) - A.ACTIVO D.DESACTIVADO
accion_acc = 'D'
//VALORES QUE SE PASARÁ AL XML
estadoXML = 'OFF';
numeroXML = 0;
CambiarEstado_AlaInt();
}
else
{
//VALOR QUE SE PASARÁ A LA BD(TABLA ESTADO) - 0.APAGADO 1.ENCENDIDO
valor_est = 1 ;
162
//VALOR QUE SE PASARÁ A LA BD(TABLA ACCION) - A.ACTIVO D.DESACTIVADO
accion_acc = 'A'
//VALORES QUE SE PASARÁ AL XML
estadoXML = 'ON';
numeroXML = 0;
}
}
else if(estado == "Activar")
{
//VALOR QUE SE PASARÁ A LA BD(TABLA ESTADO) - 0.APAGADO 1.ENCENDIDO
valor_est = 1;
//VALOR QUE SE PASARÁ A LA BD(TABLA ACCION) - A.ACTIVO D.DESACTIVADO
accion_acc = 'A'
//VALORES QUE SE PASARÁ AL XML
estadoXML = 'ON';
numeroXML = 0;
CambiarEstado_AlaInt();
}
163
accion = 0;
}
6. Procedimientos realizado en la ejecución de la prueba:
Se activa las alarmas de Robo Interno y la alarma de Humo y posteriormente se desactiva la alarma de Robo Interno.
7. Fecha y hora de Terminación:
15/02/2019
8. Resultado Real de la Prueba:
Activado y Desactivado correctamente
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
164
10. Comentarios:
Ejecución del
caso de Prueba
Nombre: Yoreli Vasquez
Fecha: 15/02/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 12
2. Nombre de Prueba
Registrar Acción
3. Fecha de inicio de la prueba: 15/02/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
function CambiarEstado_AlaInt()
{
var codigo_est = 0;
if (accion == 0) //SI LA PAGINA ESTA LEYENDO
{ codigo_est = ""; }
else // SI SE HIZO CLIC PARA ACTIVAR/DESACTIVAR
{
codigo_est = codigoBoton;
165
//PARA ENVIAR LOS SENSORES A GUARDAR EN LA TABLA ACCION
if(codigo_est == 10)
{ codigo_sen = "3,5"; }
else if(codigo_est == 11)
{ codigo_sen = "14"; }
else if(codigo_est == 12)
{ codigo_sen = "2,10,11,12"; }
else if(codigo_est == 13)
{ codigo_sen = "13"; }
else if(codigo_est == 14)
{ codigo_sen = ""; } //2,3,5,10,11,12,13,14
}
//ARCHIVO ActEstadosPrueba.php REGISTRA ACCION
$arrCodSensor = explode(",", $codigoSensor);
for ($i=0; $i < count($arrCodSensor) ; $i++)
{
$acc->setAccion($accionSensor);
$acc->setCodigoUsuario($_SESSION['codigo_usu']);
$acc->setCodigoSensor( $arrCodSensor[$i]);
$lstAcc = $acc->RegistrarAccion();
166
}
6. Procedimientos realizado en la ejecución de la prueba:
Se activa las alarmas de Robo Interno
7. Fecha y hora de Terminación:
15/02/2019
8. Resultado Real de la Prueba:
Registro correcto
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
167
10. Comentarios: Dependiendo de la alarma que se active o desactive se Registran las acciones para los sensores
correspondientes.
Ejecución del
caso de Prueba
Nombre: Yoreli Vasquez
Fecha: 15/02/2019
FORMATO DE EJECUCIÓN Y RESULTADO DE PRUEBA INTERNA FUNCIONAL
1. Código de
Prueba: 13
2. Nombre de Prueba
Registrar Mediciones
3. Fecha de inicio de la prueba: 30/01/2019
4. Versión de la solución: 01
5. Datos de entrada del caso de prueba:
$med = new Mediciones();
$est = new Estados();
$alar = new Alarmas();
$acc = new Acciones();
$val1 = $_GET['valor1']; // temperatura
$val2 = $_GET['valor2'];// fuego
$val3 = $_GET['valor3'];//movimeinto
168
...
$med->setCodigoSen(1);
$med->setValorMed($val1);
$med->RegistrarMedicion();
$med->setCodigoSen(2);
$med->setValorMed($val2);
$med->RegistrarMedicion();
$med->setCodigoSen(3);
$med->setValorMed($val3);
$med->RegistrarMedicion();
6. Procedimientos realizado en la ejecución de la prueba:
Se envía los datos desde el Arduino hasta el archivo salvardatos.
7. Fecha y hora de Terminación:
30/01/2019
169
8. Resultado Real de la Prueba:
Registro Correcto
9. De acuerdo con los criterios de aceptación del caso de prueba, el resultado fue:
Exitoso: _X__ No Exitoso: _______ No ejecutada: _________
10. Comentarios:
Ejecución del
caso de Prueba
Nombre: Yoreli Vasquez
Fecha: 30/01/2019
170
3.9 Resultado de pruebas de simulación
Tabla 24: Resultado de pruebas de simulación
N° Indicador Descripción Objetivo MEDICION
1
SEGURIDAD
Tiempo promedio de lectura de
números telefónicos para envío
de SMS
Determinar el tiempo en leer
los números telefónicos
Reducir el tiempo de lectura de
números telefónicos 40 segundos
2 Tiempo promedio para activar
una alarma.
Determinar el tiempo en
realizar una acción en el
laboratorio
Reducir el tiempo promedio en
realizar una acción en el
laboratorio
16 segundos
3 ILUMINACION Tiempo promedio para
encender y apagar focos.
Determinar el tiempo en
realizar una acción en el
laboratorio
Reducir el tiempo promedio en
realizar una acción en el
laboratorio
10 segundos
4 CONFORT
Tiempo promedio para
encender y apagar aires
acondicionados
Determinar el tiempo en
realizar una acción en el
laboratorio
Reducir el tiempo promedio en
realizar una acción en el
laboratorio
12 segundos
172
3.10 Análisis de Costos
3.10.1 Costos de implementación
Cantidad Descripción Precio
Unitario (S/.)
Precio
TOTAL
(S/.)
27 Tubo de luz fluorescente S/ 13.00 S/ 351.00
6 Sensor de temperatura S/ 11.00 S/ 66.00
6 Relé Relay Estado Solido 4 Canales Ssr
G3mb-202p Arduino S/ 17.00 S/ 102.00
6 Aire acondicionado S/ 1,500.00 S/ 9,000.00
3 Cable Mellizo 2x12 Marca Ulix, Rollo 100
Metros S/ 35.25 S/ 105.75
7 Mc 38 Sensor Magnético De Puerta S/ 8.00 S/ 56.00
7 Arduino Mega 2560 R3 S/ 50.00 S/ 350.00
1 Shield Ethernet W5100 Arduino Cnc Pic S/ 50.00 S/ 50.00
7 Sensor De Fuego Para Arduino S/ 4.00 S/ 28.00
6 Sensor Pir Detector De Movimiento S/ 3.00 S/ 18.00
1 Diodo Laser Rojo 5mw 650nm S/ 26.13 S/ 26.13
1 Fotodiodo Bpw34 S/ 7.86 S/ 7.86
1 Soporte Ajustable Para Diodo Laser S/ 38.70 S/ 38.70
3 Cinta LED WS2812B: 10 LEDs x 16cm S/ 12.00 S/ 36.00
1 Teclado matricial de botones plásticos S/ 10.00 S/ 10.00
1 Display LCD Gráfico 128x64 S/ 19.00 S/ 19.00
7 Fuente de alimentación DC para Arduino
9VDC/1A S/ 21.00 S/ 147.00
5 Sensor de Gas MQ2 S/ 10.00 S/ 50.00
32 Fuente para proyectos 3W - 5V/0.6A S/ 20.00 S/ 640.00
1 Módulo Wireless Gsm Sim900 Quad Band
Shield Arduino S/ 189.99 S/ 189.99
27 Placa lectora de interruptores de luminaria S/ 10.00 S/ 270.00
1 Kit 8 Cámaras Ip S/ 2,600.00 S/ 2,600.00
1 Mano de obra de instalación S/ 3,000.00 S/ 3,000.00
1 Televisor LG LED 43" FHD Smart TV S/ 1,200.00 S/ 1,200.00
1 Rollo de cable de Red Cat6 S/ 410.00 S/ 410.00
10 Conectores Rj45 Cat6 Marca Amp S/ 0.50 S/ 5.00
173
1 Programa informático S/ 1,000.00 S/ 1,000.00
1 Servicio de Hosting (Mensual) S/ 70.00 S/ 70.00
TOTAL 19,846.43
Tabla 25: Costos de implementación
Fuente: Elaboración propia
PRESUPUESTO GLOBAL DE LA PROPUESTA POR
FUENTES DE FINANCIACION (En miles de S./)
RUBROS TOTAL
Materiales de Equipamiento S/ 15,776.43
Servicios S/ 1,070.00
Mano de Obra S/ 3,000.00
TOTAL S/19,846.43
Tabla 26: Resumen de Costos
Fuente: Elaboración propia
3.11 Análisis de Rentabilidad del Proyecto
Para un proyecto de estas características se debe realizar una inversión media que no
supera los S/19,846.43 soles. El 75% de la inversión está compuesto por
equipamiento electrónico e informático y el 15% por la mano de obra necesaria para
la instalación, tal como se observa en el Tabla 26.
3.11.1 Umbral de Rentabilidad
RENTABILIDAD
Desembolso inicial -S/ 19,846
Flujo de caja 1 S/ 347,930
Flujo de caja 2 S/ 286,592
Flujo de caja 3 S/ 225,254
Flujo de caja 4 S/ 163,915
Flujo de caja 5 S/ 102,577
K 10%
VAN 5 años S/ 742,235.40
TIR 5 años 1735%
Tabla 27: Análisis de Rentabilidad
Fuente: Elaboración propia
174
*Flujo de caja: se entiende por flujo de caja los flujos de entradas y salidas de
caja o efectivo, en un período dado.
La rentabilidad de este proyecto se prevé que será alta, ya que mediante el
cálculo del VAN (Valor Actual Neto) se comprueba que se recupera la
inversión inicial en los tres primeros años y, además, se obtienen unos
beneficios actualizados de S/.742,235.40 SOLES en el quinto año.
Otro requisito que debe de cumplirse para que este proyecto sea factible es
que la TIR (Tasa Interna de Rentabilidad) sea mayor que k (coste de
oportunidad del capital), lo que supondría que dicho proyecto tiene una
rentabilidad mayor a la requerida: El proyecto tiene una rentabilidad del
1735% %. Y 1735% % > 10% (el requisito se cumple)
Según datos del IDEA (Instituto para la Diversificación y Ahorro de la
Energía), con una gestión inteligente de los electrodomésticos se pueden
obtener ahorros de hasta un 30% de consumo de energía. “El consumo de
energía en una casa estándar puede reducirse hasta un 10% de media” si los
equipos que tenemos instalados se usan para lo que realmente se adquirieron,
aseguran desde HogarTec.
3.11.2 Proyección de ahorros
En el supuesto de que sucedieran una serie de eventos infortuitos, la escuela
perdería las siguientes cantidades de dinero en las que se encuentran valorizados
los diferentes equipos con los que cuentan los laboratorios.
EQUIPOS DE COMPUTO DE LABORATORIOS
MARCA CANTIDAD PRECIO INVERSION
TOTAL LABORATORIO
Hp (core I5) 26 S/ 3,500.00 S/
91,000.00 L1
EPSON (Proyector Bright Link 475WIT)
1 S/ 4,000.00 S/
4,000.00
Hp (core I7) 25 S/ 4,000.00 S/
100,000.00 L2
EPSON (Proyector Bright Link 475WIT)
1 S/ 4,000.00 S/
4,000.00
Hp (core I7) 25 S/ 4,000.00 S/
100,000.00 L3
175
EPSON (Proyector Bright Link 475WIT)
1 S/ 4,000.00 S/
4,000.00
Lenovo (core I5) 26 S/ 2,500.00 S/
65,000.00 L4
ESPON (Proyector H434A) 1 S/ 1,500.00 S/
1,500.00
Intel (core 2 Dual) 4 S/ 2,000.00 S/
8,000.00
L5
Hp (core I5) 3 S/ 3,500.00 S/
10,500.00
Lenovo (core I5) 4 S/ 2,500.00 S/
10,000.00
SONY (Proyector VPL – EX276)
1 S/ 1,600.00 S/
1,600.00
Hp (core I5) 2 S/ 3,500.00 S/
7,000.00
jefatura EPSON (Proyector Powerlite X14)
2 S/ 2,500.00 S/
5,000.00
EPSON (Impresora L355) 1 S/ 500.00 S/
500.00
TOTAL S/.
412,100.00
Tabla 28: Análisis de Rentabilidad
Fuente: Elaboración propia
DEPRECIACIÓN LINEA DE EQUIPOS DE
LABORATORIO
COSTO DE EQUIPOS S/. 412,100.00
VALOR RESIDUAL S/. 105,500.00
VIDA UTIL (AÑOS) 5
DEPRESIACION ANUAL S/. 61,320.00 Tabla 29: Depreciación de Equipos de Laboratorio
Fuente: Elaboración propia
176
3.11.3 Periodo de tiempo estimado para la rentabilidad
FLUJO DE CAJA AÑO 0 AÑO 1 AÑO 2 AÑO 3 AÑO 4 AÑO 5
(-) Inversión S/ 19,846 S/ - S/ - S/ - S/ - S/ -
Activos Fijos Laboratorio S/ 350,780 S/ 289,460 S/ 228,140 S/ 166,820 S/ 105,500
(-) Costes Totales S/ 1,570 S/ 1,588 S/ 1,607 S/ 1,625 S/ 1,643
Servicios de hosting S/ 840 S/ 840 S/ 840 S/ 840 S/ 840
Remplazo S/ 350 S/ 359 S/ 368 S/ 376 S/ 385
Costos de mantenimiento S/ 380 S/ 390 S/ 399 S/ 409 S/ 418
(-)Depreciaciones S/ 1,280 S/ 1,280 S/ 1,280 S/ 1,280 S/ 1,280
FLUJO DE CAJA -S/ 19,846 S/ 347,930 S/ 286,592 S/ 225,254 S/ 163,915 S/ 102,577
Tabla 30: Flujo de Caja
Fuente: Elaboración propia
177
Desglose de Costos de Mantenimiento
MANTENIMIENTO
COSTO
MENSUAL
S/.
PREVENTIVO
380.00
Limpieza de ventiladores
10.00
Limpieza de placas
20.00
Limpieza de sensores
20.00
Revisión de conectores
30.00
Remplazo de componentes
50.00
Optimización de código
150.00
CORRECTIVO
100.00
Tabla 31: Costos de Mantenimiento
Fuente: Elaboración propia
3.12 Beneficios
3.12.1 Beneficios Tangibles
Mejorar los servicios brindados dentro de los ambientes de los
laboratorios de la escuela de Ingeniería en Computación e
Informática.
Reducir en cierta medida los gatos por consumo de luz a través
del control de la iluminación y aires acondicionados,
generando un mayor ahorro para la institución.
Controlar desde cualquier lugar en donde se encuentre, las
luces, aires acondicionados y sistemas de seguridad.
Reducir el riesgo de robos, ya que se podrá vigilar los
ambientes a través de cámaras de video.
178
Actuar a tiempo en caso de algún siniestro.
3.12.2 Beneficios intangibles
Proyecto que podría servir de base para el desarrollo otros,
donde se busquen nuevas formas de instalaciones
pertenecientes a la domótica.
Mejorar el confort en personas que hacen uso de estas
instalaciones, tan solo con acceso a internet.
Enfocar más estudios y desarrollo de proyectos con estas
nuevas tecnologías.
180
4. CAPITULO IV: CONCLUSIONES
Se identificaron las deficiencias que presenta el Laboratorio de Computación
e Informática de la Facultad de Ciencias Físicas y Matemáticas a través de
observaciones y conversaciones con alumnos, docentes y personal
administrativo los cuales nos permitieron tener una mayor claridad al
momento de elegir que elementos controlar.
Se identificaron los eventos de actuación para cada tipo de escena, los cuales
nos permitieron tener un mejor control sobre los diferentes elementos
(sensores, actuadores, etc.), así como manejar de manera más eficientes
nuestros recursos.
El diseño del esquema de intercambio de información entre los elementos que
componen el sistema inmótico, nos permite que el usuario sepa en lapso de
segundos de tiempo lo que está ocurriendo en el edificio.
Se configuró la placa Arduino para que establezca comunicación con la shield
GSM y se envíen los mensajes de alerta a los números telefónicos
establecidos indicando dónde y qué ocurrió.
La interfaz gráfica y desarrollada para la aplicación mediante la cual se
controla y monitorea los elementos que se encuentran distribuidos en los
diferentes ambientes, es fácil y sencilla de utilizar, donde cualquier usuario
sin muchos conocimientos informáticos podría hacer uso.
La construcción de la maqueta que representa una copia fiel de la distribución
de los ambientes de los laboratorios nos permitió implementar el prototipo y
desarrollar las pruebas necesarias del mismo.
181
Los sensores que recogen la información que posteriormente activaran
determinadas alarmas funcionaron de manera eficiente permitiendo avisar en
el preciso instante en el que ocurre un evento.
Las pruebas funcionales nos permitieron afinar y mejorar el funcionamiento
del sistema inmótico desarrollado para el laboratorio.
El diseño del prototipo del sistema inmótico, nos permite mejorar la
seguridad, puesto que se detectará a tiempo cualquier siniestro; así como del
mismo modo se tendrá controlada la iluminación y confort (temperatura)
mediante el uso de la aplicación web, el cual nos permitirá vigilar y controlar
los diferentes aparatos conectados a este.
183
5. CAPITULO V: RECOMENDACIONES
Integrar el sistema de seguridad al sistema de alertas de la policía y bomberos.
Alimentar los dispositivos electrónicos a través de paneles solares para reducir el
consumo de energía eléctrica.
Agregar al sistema el control de flujo de agua, a través del sensor de flujo YF
S201, para ayudarnos a tomar decisiones como el cierre de válvulas ante posibles
fugas.
Agregar control de persianas a través de servomotores y relees que nos permitirán
abrirlas y cerrarlas, tanto de manera presencial como remota.
184
6. BIBLIOGRAFIA
AENOR Peru. (2019). AENORPERU. Obtenido de
http://www.aenorperu.com/certificaci%C3%B3n/tecnologia-de-la-informacion/
AENOR PERU. (s.f.). Obtenido de http://www.aenorperu.com/otros-servicios/gestion-
energetica/
Arduino.cc. (2019). Obtenido de https://store.arduino.cc/usa/
Arduino.cc. (2019). Obtenido de https://store.arduino.cc/usa/arduino-nano
Arduino.cc. (2019). Arduino. Obtenido de https://www.arduino.cc/
Asociación Española de Domótica e Inmótica - CEDOM. (s.f.). CEDOM Asociación
Española de Domótca e Inmótica. Obtenido de http://www.cedom.es/es
Baldeón, D., & Congacha, D. (2014). Estudio y diseño de un sistema domótico aplicado en
el edificio de laboratorios para la facultad de mecánica. Riobamba - Ecuador.
Riobanba.
Carrillo , M., & Vite, C. (2015). Aplicacion de una red neuronal para el control domótico
de encendido de luces en una vivienda de la Urbanización Santa Angela. Chiclayo.
CENELEC European Committee for Electrotechnical Standardization . (2017). CENELEC.
Obtenido de https://www.cenelec.eu
Chasquero, M., & Guerrero, L. (2015). Mejoramiento de la eficiencia eléctrica en el Jockey
Club de Chiclayo con aplicación de domótica. Pimentel - Perú”. Pimentel.
Cisco - CCNA. (2012). CISCO. Obtenido de
http://blog.utp.edu.co/ee973/files/2012/04/capitulo09-ethernet.pdf
Committed to connecting the world. (2017). ITU. Obtenido de
https://www.itu.int/es/Pages/default.aspx
Comunicación Serie Arduino. (2 de Julio de 2016). Obtenido de
https://aprendiendoarduino.wordpress.com/tag/rs232/
Cuevas, J., Martínez, J., & Merino, P. (2002). El Protocolo x10: Una solución Antigua.
Malaga-España.
185
Diaz , A. (2010). DISEÑO DE UN SISTEMA AUTOMATIZADO DE SEGURIDAD CONTRA
INTRUSION EN UN EDIFICIO DE DEPARTAMENTOS UTILIZANDO EL
ESTANDAR DE TECNOLOGÍA INALAMBRICA ZIGBEE. Lima.
Diputacion de Badajoz. (s.f.). Las Tecnologías WIFI y WIMAX. Obtenido de http://www.dip-
badajoz.es/agenda/tablon/jornadaWIFI/doc/tecnologias_wifi_wmax.pdf
Domínguez, H. M., & Sáez Vacas, F. (2006). Domotica: Un enfoque Sociotecnico. Madrid:
E.T.S.I. de Telecomunicación.
EPSIG. (s.f.). Uniersidad de Oviedo. Obtenido de
http://isa.uniovi.es/docencia/AutomEdificios/transparencias/Generalidades2.pdf
Escuela politecnica Nacional. (6 de octubre de 2007). Obtenido de
http://clusterfie.epn.edu.ec/ibernal/html/CURSOS/Oct06Marzo07/ComInalam/TRa
bajos/Trabajo2/Proyecto2%20grupo5.pdf
Glen M., M., & Moreno, J. (23 de 5 de 2012). Wiki de Sistemas de Transmisión IUE.
Obtenido de https://sx-de-tx.wikispaces.com/ZIGBEE
HogarTec. (2012). HogarTec Expertos en Sistemas Domoticos. Obtenido de
http://hogartec.es/las-arquitecturas-del-sistema-de-domotica/
Ingeniería de Sistemas y Automática . (s.f.). Automatizacion integral de Edificios. Obtenido
de http://isa.uniovi.es/docencia/AutomEdificios/transparencias/LonWorks.pdf
Insituto Nacional de la Calidad. (2016). INACAL INSTITUTO NAIONAL DE CALIDAD.
Obtenido de
https://tiendavirtual.inacal.gob.pe/0/modulos/TIE/TIE_DetallarProducto.aspx?PRO
=4708
International Electrotechnical Commission. (2017). IEC. Obtenido de http://www.iec.ch/
KNX, A. (20 de 10 de 2014). KNX. Obtenido de https://www.knx.org/knx-en/index.php
Lledó, E. (2012). Diseño de un sistema de control domótico basado en la plataforma
Arduino. Valencia.
Lonworks.es. (s.f.). lonworks.es. Obtenido de www.lonworks.es
186
López Jimeno, C., Hidobro, J. M., Novel, B., & Calafat, C. (2007). La Domótica como
solucion del futuro. Madrid, España.
Martín Moreno, J., & Ruiz-Fernandez, D. (20 de julio de 2007). Respositorio iinstitucional
de la Univercidad de Alicante. Obtenido de
https://rua.ua.es/dspace/bitstream/10045/1109/1/InformeTecZB.pdf
Ministerio del Ambiente. (2014). GESTIÓN Y MANEJO DE LOS RESIDUOS DE
APARATOS ELECTRICOS Y ELECTRONICOS. Obtenido de
http://www.minam.gob.pe/calidadambiental/wp-
content/uploads/sites/22/2014/02/RAEE.pdf
ORDOÑEZ ARIZA, L. J., & VILLAGRAN SOLORZANO, S. (2010). APLICACIÓN
DOMOTICA CONTROLADA REMOTAMENTE DESDE UN WEB SERVER. Bogota
.
Ramirez Suarez, A. (02 de junio de 2013). Comunicacion por Protocolo RS-232. Obtenido
de https://extropynow.weebly.com/uploads/1/6/4/1/16411724/mikroc-u_i-rs232-
protocol.pdf
Rodríguez, W. (2012). Sistema de control domótico utilizando una central IP PBX basado
en software libre. Lima.
the Abdus Salam international Center for Theoretical Physics. (2012). EsLaRed- Fundación
Escuela Latinoamericana de Redes. Obtenido de
http://www.eslared.org.ve/walc2012/material/track1/05-
Introduccion_a_las_redes_WiFi-es-v2.3-notes.pdf
Unitel – Soluciones e infraestructuras Tecnológicas. (2019). Obtenido de https://unitel-
tc.com/normas-sobre-cableado-estructurado/
Vásquez, E., & Ortiz, G. (s.f.). Plan Estratégico de la Facultad de Ciencias Físicas y
Matemáticas. Lambayeque, Lambayeque, Perú.
188
ANEXO N° 1
ATmega2560-Arduino Pin Mapping
Anexo1: Arduino Mega 2560 PIN diagrama
Fuente: https://www.arduino.cc/en/Hacking/PinMapping2560
189
ANEXO N° 2
Arduino Mega 2560 tabla de mapeo de PINES
Pin Number Pin Name Mapped Pin Name
1 PG5 ( OC0B ) Digital pin 4 (PWM)
2 PE0 ( RXD0/PCINT8 ) Digital pin 0 (RX0)
3 PE1 ( TXD0 ) Digital pin 1 (TX0)
4 PE2 ( XCK0/AIN0 )
5 PE3 ( OC3A/AIN1 ) Digital pin 5 (PWM)
6 PE4 ( OC3B/INT4 ) Digital pin 2 (PWM)
7 PE5 ( OC3C/INT5 ) Digital pin 3 (PWM)
8 PE6 ( T3/INT6 )
9 PE7 ( CLKO/ICP3/INT7 )
10 VCC VCC
11 GND GND
12 PH0 ( RXD2 ) Digital pin 17 (RX2)
13 PH1 ( TXD2 ) Digital pin 16 (TX2)
14 PH2 ( XCK2 )
15 PH3 ( OC4A ) Digital pin 6 (PWM)
16 PH4 ( OC4B ) Digital pin 7 (PWM)
17 PH5 ( OC4C ) Digital pin 8 (PWM)
18 PH6 ( OC2B ) Digital pin 9 (PWM)
19 PB0 ( SS/PCINT0 ) Digital pin 53 (SS)
190
20 PB1 ( SCK/PCINT1 ) Digital pin 52 (SCK)
21 PB2 ( MOSI/PCINT2 ) Digital pin 51 (MOSI)
22 PB3 ( MISO/PCINT3 ) Digital pin 50 (MISO)
23 PB4 ( OC2A/PCINT4 ) Digital pin 10 (PWM)
24 PB5 ( OC1A/PCINT5 ) Digital pin 11 (PWM)
25 PB6 ( OC1B/PCINT6 ) Digital pin 12 (PWM)
26 PB7 ( OC0A/OC1C/PCINT7 ) Digital pin 13 (PWM)
27 PH7 ( T4 )
28 PG3 ( TOSC2 )
29 PG4 ( TOSC1 )
30 RESET RESET
31 VCC VCC
32 GND GND
33 XTAL2 XTAL2
34 XTAL1 XTAL1
35 PL0 ( ICP4 ) Digital pin 49
36 PL1 ( ICP5 ) Digital pin 48
37 PL2 ( T5 ) Digital pin 47
38 PL3 ( OC5A ) Digital pin 46 (PWM)
39 PL4 ( OC5B ) Digital pin 45 (PWM)
40 PL5 ( OC5C ) Digital pin 44 (PWM)
41 PL6 Digital pin 43
42 PL7 Digital pin 42
191
43 PD0 ( SCL/INT0 ) Digital pin 21 (SCL)
44 PD1 ( SDA/INT1 ) Digital pin 20 (SDA)
45 PD2 ( RXDI/INT2 ) Digital pin 19 (RX1)
46 PD3 ( TXD1/INT3 ) Digital pin 18 (TX1)
47 PD4 ( ICP1 )
48 PD5 ( XCK1 )
49 PD6 ( T1 )
50 PD7 ( T0 ) Digital pin 38
51 PG0 ( WR ) Digital pin 41
52 PG1 ( RD ) Digital pin 40
53 PC0 ( A8 ) Digital pin 37
54 PC1 ( A9 ) Digital pin 36
55 PC2 ( A10 ) Digital pin 35
56 PC3 ( A11 ) Digital pin 34
57 PC4 ( A12 ) Digital pin 33
58 PC5 ( A13 ) Digital pin 32
59 PC6 ( A14 ) Digital pin 31
60 PC7 ( A15 ) Digital pin 30
61 VCC VCC
62 GND GND
63 PJ0 ( RXD3/PCINT9 ) Digital pin 15 (RX3)
64 PJ1 ( TXD3/PCINT10 ) Digital pin 14 (TX3)
65 PJ2 ( XCK3/PCINT11 )
192
66 PJ3 ( PCINT12 )
67 PJ4 ( PCINT13 )
68 PJ5 ( PCINT14 )
69 PJ6 ( PCINT 15 )
70 PG2 ( ALE ) Digital pin 39
71 PA7 ( AD7 ) Digital pin 29
72 PA6 ( AD6 ) Digital pin 28
73 PA5 ( AD5 ) Digital pin 27
74 PA4 ( AD4 ) Digital pin 26
75 PA3 ( AD3 ) Digital pin 25
76 PA2 ( AD2 ) Digital pin 24
77 PA1 ( AD1 ) Digital pin 23
78 PA0 ( AD0 ) Digital pin 22
79 PJ7
80 VCC VCC
81 GND GND
82 PK7 ( ADC15/PCINT23 ) Analog pin 15
83 PK6 ( ADC14/PCINT22 ) Analog pin 14
84 PK5 ( ADC13/PCINT21 ) Analog pin 13
85 PK4 ( ADC12/PCINT20 ) Analog pin 12
86 PK3 ( ADC11/PCINT19 ) Analog pin 11
87 PK2 ( ADC10/PCINT18 ) Analog pin 10
88 PK1 ( ADC9/PCINT17 ) Analog pin 9
193
89 PK0 ( ADC8/PCINT16 ) Analog pin 8
90 PF7 ( ADC7 ) Analog pin 7
91 PF6 ( ADC6 ) Analog pin 6
92 PF5 ( ADC5/TMS ) Analog pin 5
93 PF4 ( ADC4/TMK ) Analog pin 4
94 PF3 ( ADC3 ) Analog pin 3
95 PF2 ( ADC2 ) Analog pin 2
96 PF1 ( ADC1 ) Analog pin 1
97 PF0 ( ADC0 ) Analog pin 0
98 AREF Analog Reference
99 GND GND
100 AVCC VCC
Anexo 2: Arduino Mega 2560 tabla de mapeo de PINES
Fuente: https://www.arduino.cc/en/Hacking/PinMapping2560
ANEXO N° 3
194
Programación del Arduino
Programación Arduino Nano
#include <Keypad.h>
#include <LiquidCrystal.h>
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'D','C','B','A'},
{'#','9','6','3'},
{'0','8','5','2'},
{'*','7','4','1'}
};
byte rowPins[ROWS] = {13,12, 11, A0};
byte colPins[COLS] = {A1,A2, A3,A4};
char password[16]={" "};
char realpass[16]={"123456 "};// CLAVE DEL USUARIO 1
boolean checkpass=false;
char password2[16]={" "};
char realpass2[16]={"098765 "};// CLAVE DEL USUARIO 2
boolean checkpass2=false;
int aaa=0,bbb=0,ccc=0,ddd=0;
int a4=0,b4=0,c4=0,d4=0;
char tecla;
int usu=0;
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal lcd(2, 4, 7, 8, 9, 10);
/*En esta funcion se deberá registrar todos los parametros de configuración del arduino
para los datos que se mostraran en la pantalla LCD, el cual se ejecutará una sola vez, al
arrancar el arduino */
void setup() {
Serial.begin(9600);
195
pinMode(3,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(" BIENVENIDO ");
lcd.setCursor(0, 1);
lcd.print(" USUARIO ");
digitalWrite(3,0);//r (255 off)
digitalWrite(5,1);//verde (255 off)
digitalWrite(6,1);//r (255 off)
delay(500);
lcd.clear();
}
unsigned long res1;
void loop() {
/*En la primera parte se muestra el mensaje de inicio de la pantalla LCD que espera que
se ingrese una opción (ID del usuario) para poder mostrar el siguiente mensaje*/
part1:
/////////////////////////////////////////////////////////////////////////////////////////////////////////
lcd.setCursor(0, 0);
lcd.print("INGRESE USUARIO");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
res1=millis();
do{
check_serial();
tecla=keypad.getKey();
196
if((millis()-res1)>2000)
{
if(analogRead(A7)>500){Serial.print("W");}
if(analogRead(A7)<=500){Serial.print("X");}
res1=millis();
}
}while(!(tecla=='1' || tecla=='2'));
if (tecla=='1'){usu=1;}
if (tecla=='2'){usu=2;}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
/*En la segunda parte se muestran las diferentes alarmas con sus respectivos estados en
la pantalla lcd en las posiciones antes ya definidas.*/
part2:
lcd.setCursor(0, 0);
lcd.print("SIST. ANTIRROBO");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
delay(2000);
lcd.clear();
///////////////////////////////////////////////////////////////////////////////////////////////////////////
do{check_serial();
lcd.setCursor(0, 0);
if(a4){lcd.print("INT: ON ");}else{lcd.print("INT:OFF");}
if(b4){lcd.setCursor(8, 0);lcd.print("EXT: ON ");}else{lcd.setCursor(8,
0);lcd.print("EXT:OFF");}
lcd.setCursor(0, 1);
if(c4){lcd.print("FUE: ON ");}else{lcd.print("FUE:OFF");}
if(d4){lcd.setCursor(8, 1);lcd.print("HUM: ON ");}else{lcd.setCursor(8,
1);lcd.print("HUM:OFF");}
check_serial();
tecla=keypad.getKey();
197
// if(digitalRead(13)==1){Serial.print("W");}
}while(!(tecla=='A' || tecla=='B' || tecla=='C' || tecla=='D' || tecla=='*'));
/*Dependiendo de la tecla que se presione se cambiara el estado previa confirmación
de la contraseña. Si se presiona a la tecla * regresa a la pantalla de inicio.*/
if(tecla=='*'){goto part1;}
if (tecla=='A'){aaa=1;}else{aaa=0;}
if (tecla=='B'){bbb=1;}else{bbb=0;}
if (tecla=='C'){ccc=1;}else{ccc=0;}
if (tecla=='D'){ddd=1;}else{ddd=0;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*Se deberá ingresar la contraseña de usuario y con la tecla # comfirmar la contraseña
que esta intentando activar o desactivar para poder registrar el cambio o de caso contrario
con la tecla * se podra regresar al menu anterior */
part3:
for(int j=0;j<16;j++){password[j]=' ';}
delay(1000);
lcd.setCursor(0, 0);
lcd.print(" PASSWORD: ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
delay(1000);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Si se presiona la lecla * se regresa a la parte 2
int i=0;
do{check_serial();
tecla=keypad.getKey();
if(tecla && tecla!='#' && tecla!='*'){ password[i]=tecla;lcd.print(password[i]);i++;}
}while(!(tecla=='#' || tecla=='*'));
if(tecla=='*'){goto part2;}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
198
int b=1,bb=1;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*Comprobación de las contraseñas ingresadas con las que se encuentran registradas en
la base de datos*/
if(usu==1){
for(i=0;i<16;i++){if(password[i]==realpass[i]){b*=1;}else{b*=0;}}
if(b==0){goto part3;}
}
if(usu==2){
for(i=0;i<16;i++){if(password[i]==realpass2[i]){bb*=1;}else{bb*=0;}}
if(bb==0){goto part3;}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*Obtención de datos en caso de que algún usario modificara el estado de una alarma a
traves del tablero*/
char cod='z';
int q1,q2,q3,q4;
if(aaa==1){q1=!a4;
if(usu==1){
if(q1){cod='b';}else{cod='a';}
}else{
if(q1){cod='j';}else{cod='i';}
}
}
if(bbb==1){q2=!b4;
if(usu==1){
if(q2){cod='d';}else{cod='c';}
}else{
if(q2){cod='l';}else{cod='k';}
}
}
199
if(ccc==1){q3=!c4;
if(usu==1){
if(q3){cod='f';}else{cod='e';}
}else{
if(q3){cod='n';}else{cod='m';}
}
}
if(ddd==1){q4=!d4;
if(usu==1){
if(q4){cod='h';}else{cod='g';}
}else{
if(q4){cod='p';}else{cod='o';}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Serial.print("$");
Serial.println(cod);
}
/*Funcion que lee el archivo xml, que contiene la contrasela de cada usuario para luego
comprarla con la que se ingresa */
void check_serial()
{
if(Serial.available()>0)
{
char z=Serial.read();
switch(z)
{
case 'P': digitalWrite(3,0);//r (255 off)
digitalWrite(5,1);//verde (255 off)
digitalWrite(6,1);//r (255 off)
break;
200
case 'Q': digitalWrite(3,1);//r (255 off)
digitalWrite(5,0);//verde (255 off)
digitalWrite(6,1);//r (255 off)
break;
case 'R': digitalWrite(3,1);//r (255 off)
digitalWrite(5,1);//verde (255 off)
digitalWrite(6,0);//r (255 off)
break;
case '$': delay(500);
//char tt=' ';//Serial1.print('$');
realpass[0]=Serial.read();
realpass[1]=Serial.read();
realpass[2]=Serial.read();
realpass[3]=Serial.read();
realpass[4]=Serial.read();
realpass[5]=Serial.read();
realpass2[0]=Serial.read();
realpass2[1]=Serial.read();
realpass2[2]=Serial.read();
realpass2[3]=Serial.read();
realpass2[4]=Serial.read();
realpass2[5]=Serial.read();
do{
Serial.read();
}while(!(Serial.available()==0));
break;
/* En caso se presione # se confirma el ingreso de la contraseña para el cambio de estado
de la alarma. */
case '#': delay(5);
char ttt=Serial.read();
switch(ttt)
201
{
case 'a': a4=0;
break;
case 'b': a4=1;
break;
case 'c': b4=0;
break;
case 'd': b4=1;
break;
case 'e': c4=0;
break;
case 'f': c4=1;
break;
case 'g': d4=0;
break;
case 'h': d4=1;
break;
}
break;
}
}
Programación Arduino Mega Hijo
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
//Ultimo codigo arduino 9/10/10
#include <SPI.h>
#include <Ethernet.h>
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
float data[29]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int sms_ok=0;
int sms1,sms2,sms3,sms4,sms5,sms6,sms7,sms8;
// if(data[1]<25){Serial.println("ALARMA DE FUEGO EN EL LABORATORIO 1");}
202
// if(data[9]<25){Serial.println("ALARMA DE FUEGO EN EL
LABORATORIO 2");}
// if(data[10]<25){Serial.println("ALARMA DE FUEGO EN EL
LABORATORIO 3");}
// if(data[11]<25){Serial.println("ALARMA DE FUEGO EN EL
LABORATORIO 4");}
// if(data[2]==1){Serial.println("ALARMA DE ROBO INTERNA POR
DETECCION DE MOVIMIENTO");}
// if(data[4]==1){Serial.println("ALARMA DE ROBO INTERNA EN LA
PUERTA");}
// if(data[22]>0){Serial.println("ALARMA DE ROBOT EXTERNO");}
// if(data[12]>80){Serial.println("ALARMA DE HUMO");}
#define SERIAL_RX_BUFFER_SIZE 128
#define SERIAL_TX_BUFFER_SIZE 128
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
char devices1[]={'e','f','d','c','b','p','q','o','n','@','@'}; //led
int dev_prev_stat1[]={0,0,0,0,0,0,0,0,0,0,0};
char devices2[]={'a','m','i','j','@','u','@','@'}; //ventiladores
int dev_prev_stat2[]={0,0,0,0,0,0,0,0};
char devices3[]={'B','C','D','E','z'}; //Alarmas
int dev_prev_stat3[]={0,0,0,0,0};
char pass1[6]="";
char pass2[6]="";
char cel1[9]="";
char cel2[9]="";
//-------------------------------------------------------------------------------------------------------
-----------*/
#define MAX_STRING_LEN 20
char tagStr[MAX_STRING_LEN] = "";
char dataStr[MAX_STRING_LEN] = "";
char tmpStr[MAX_STRING_LEN] = "";
char endTag[3] = {'<', '/', '\0'};
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
int len; int temp;
int count=0;
boolean tagFlag = false;
boolean dataFlag = false;
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
// Configuracion del Ethernet Shield
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFF, 0xEE}; // Direccion MAC
byte ip[] = { 192,168,0,107}; // Direccion IP del Arduino
byte server[] = { 3,85,14,104 }; // Direccion IP del servidor
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
//String location1 = ;
//String location2 = ;//ventiladores
203
//String location3 = ;// alarmas 5
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
EthernetClient client;
char inString[64]; // string for incoming serial data///64
int stringPos = 0; // string index counter
boolean startRead = false; // is reading?
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
void setup() {
Serial.begin(9600);
Serial2.begin(9600);
Serial1.begin(9600);//gsm
Ethernet.begin(mac, ip); // Inicializamos el Ethernet Shield
delay(500); // Esperamos 1 segundo de cortesia
sms1=sms2=sms3=sms4=sms5=sms6=sms7=sms8=sms_ok=0;
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
void connectAndRead4()
/* Esta función me permite conectarse al archivo xml para poder leer y extraer los
números telefónicos y contraseñas del personal autorizado para apagar el sistema desde
el tablero; dicho archivo es leído a través del método GET */
{
if (client.connect(server, 80)) {
client.print("GET ");
client.println(F("http://3.85.14.104/tesis/Pag/Usu.xml HTTP/1.0"));
client.println();
while(client.connected() && !client.available()) delay(1); //waits for data
////////////////////
char inChar;
do{
inChar=client.read();
//Serial.print(inChar);
}while(!(inChar=='$'));
cel1[0]=client.read();
cel1[1]=client.read();
cel1[2]=client.read();
cel1[3]=client.read();
cel1[4]=client.read();
cel1[5]=client.read();
cel1[6]=client.read();
cel1[7]=client.read();
cel1[8]=client.read();
204
client.read();
do{
inChar=client.read();
//Serial.print(inChar);
}while(!(inChar=='$'));
pass1[0]=client.read();
pass1[1]=client.read();
pass1[2]=client.read();
pass1[3]=client.read();
pass1[4]=client.read();
pass1[5]=client.read();
client.read();
do{
inChar=client.read();
//Serial.print(inChar);
}while(!(inChar=='$'));
cel2[0]=client.read();
cel2[1]=client.read();
cel2[2]=client.read();
cel2[3]=client.read();
cel2[4]=client.read();
cel2[5]=client.read();
cel2[6]=client.read();
cel2[7]=client.read();
cel2[8]=client.read();
client.read();
do{
inChar=client.read();
//Serial.print(inChar);
}while(!(inChar=='$'));
pass2[0]=client.read();
pass2[1]=client.read();
pass2[2]=client.read();
pass2[3]=client.read();
pass2[4]=client.read();
pass2[5]=client.read();
client.read();
do{
client.read();
}while(!(client.available()==0));
for(int i=0;i<9;i++)
{
Serial.print(cel1[i]);
205
}
Serial.println("");
for(int i=0;i<6;i++)
{
Serial.print(pass1[i]);
}
Serial.println("");
for(int i=0;i<9;i++)
{
Serial.print(cel2[i]);
}
Serial.println("");
for(int i=0;i<6;i++)
{
Serial.print(pass2[i]);
}
Serial.println("");
client.stop();
client.flush();
////////////////////////
}else{/*return "connection failed";*/}
}
/* Esta función me permite conectarse al archivo xml para poder leer y extraer los estados
de los archivos test.xml, testA.xml y testAl.xml. */
void connectAndRead(int a){
// Serial.println("connecting...");
if (client.connect(server, 80)) {
//Serial.println("connected");
client.print("GET ");
if(a==1){client.println(F("http://3.85.14.104/tesis/Pag/test.xml HTTP/1.0"));}
if(a==2){client.println(F("http://3.85.14.104/tesis/Pag/testA.xml HTTP/1.0"));}
if(a==3){client.println(F("http://3.85.14.104/tesis/Pag/testAl.xml HTTP/1.0"));}
client.println();
while(client.connected() && !client.available()) delay(1); //waits for data
while (client.connected() || client.available()){xmlread(a);}
}else{/*return "connection failed";*/}
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
void xmlread(int b){
206
//En este método se encarga de separar todo lo que este en”>” o “ <”
if (client.available()) {
char inChar = client.read();
if (inChar == '<') {
addChar(inChar, tmpStr);
tagFlag = true;
dataFlag = false;
}
else if (inChar == '>') {
addChar(inChar, tmpStr);
if (tagFlag) {
strncpy(tagStr, tmpStr, strlen(tmpStr)+1);
}
clearStr(tmpStr);
tagFlag = false;
dataFlag = true;
}
else if (inChar != 10)
{
if (tagFlag)
{
addChar(inChar, tmpStr);
if ( tagFlag && strcmp(tmpStr, endTag) == 0 )
{
clearStr(tmpStr);
tagFlag = false;
dataFlag = false;
}
}
if (dataFlag) {
addChar(inChar, dataStr);
}
}
if (inChar == 10 ) {
if (matchTag("<state>")) {
// Serial.print("state: ");
//Serial.println(dataStr);
// Serial.print("length--");
//Serial.println(strlen(dataStr));
count=count+1;
// Serial.println(count);
devicescontrol(count,dataStr,b);
if(b==1){temp=11;}
if(b==2){temp=8;}
207
if(b==3){temp=5;}
if(count==temp)
{
count=0;
clearStr(tmpStr);
clearStr(tagStr);
clearStr(dataStr);
client.stop();
client.flush();
// Serial.println("disconnecting.");
}
}
clearStr(tmpStr);
clearStr(tagStr);
clearStr(dataStr);
tagFlag = false;
dataFlag = false;
}
}
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
// Se etiene que volver a limpiar la cadena donde almacenan los datos de cada xml.
void clearStr (char* str) {
int len = strlen(str);
for (int c = 0; c < len; c++) {
str[c] = 0;
}
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
void addChar (char ch, char* str) {
char tagMsg = "<ERROR>";//*
char dataMsg = "-ERROR";//*
if (strlen(str) > MAX_STRING_LEN - 2) {
if (tagFlag) {
clearStr(tagStr);
strcpy(tagStr,tagMsg);
}
if (dataFlag) {
clearStr(dataStr);
strcpy(dataStr,dataMsg);
}
208
clearStr(tmpStr);
tagFlag = false;
dataFlag = false;
}
else {
str[strlen(str)] = ch;
}
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
boolean matchTag (char* searchTag) {
if ( strcmp(tagStr, searchTag) == 0 ) {
return true;
} else {
return false;
}
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
/* Compara los estados extraidos del xml (on u off) para luego enviarlo al arduino mega
padre.*/
void devicescontrol(int devicescount, char *devicestate,int c)
{
if(c==1)
{
if(!strncmp("ON",devicestate,2))
{
if(dev_prev_stat1[devicescount-1]==0){/*Serial.println(devices1[devicescount-
1]);*/Serial2.write(devices1[devicescount-1]);dev_prev_stat1[devicescount-
1]=1;}//code_list()== ardu.print();
}
else if(!strncmp("OFF",devicestate,3))
{
if(dev_prev_stat1[devicescount-1]==1){/*Serial.println(devices1[devicescount-
1]);*/Serial2.write(devices1[devicescount-1]);dev_prev_stat1[devicescount-
1]=0;}//code_list()== ardu.print();
}
}
if(c==2)
{
if(!strncmp("ON",devicestate,2))
{
if(dev_prev_stat2[devicescount-1]==0){/*Serial.println(devices2[devicescount-
1]);*/Serial2.write(devices2[devicescount-1]);dev_prev_stat2[devicescount-
1]=1;}//code_list()== ardu.print();
}
else if(!strncmp("OFF",devicestate,3))
{
209
if(dev_prev_stat2[devicescount-1]==1){/*Serial.println(devices2[devicescount-
1]);*/Serial2.write(devices2[devicescount-1]);dev_prev_stat2[devicescount-
1]=0;}//code_list()== ardu.print();
}
}
if(c==3)
{
if(!strncmp("ON",devicestate,2))
{
if(dev_prev_stat3[devicescount-1]==0){/*Serial.println(devices3[devicescount-
1]);*/Serial2.write(devices3[devicescount-1]);dev_prev_stat3[devicescount-
1]=1;}//code_list()== ardu.print();
}
else if(!strncmp("OFF",devicestate,3))
{
if(dev_prev_stat3[devicescount-1]==1){/*Serial.println(devices3[devicescount-
1]);*/Serial2.write(devices3[devicescount-1]);dev_prev_stat3[devicescount-
1]=0;}//code_list()== ardu.print();
}
}
}
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
/*-------------------------------------------------------------------------------------------------------
-------------------------------------------------------*/
unsigned long temppp=millis(),temppp2=millis();
/*Esta función se ejecuta constantemente y contiene la llamada a las demás funciones */
void loop() {
delay(1000);
getdat();
Serial.println("inicio del httpreq");
httpRequest();
delay(300);//Serial.println("3era"); //era 500
delay(1000);// era 1000
connectAndRead(1); Serial.println(1);//connect to the server and read the output
connectAndRead(2); Serial.println(2);//connect to the server and read the output
connectAndRead(3);Serial.println(3); //connect to the server and read the output
connectAndRead4();Serial.println(4);
delay(1000);
210
Serial.println(data[27]);
captura_mensajes();
mostrar_mensajes_a_enviar();
if((millis()-temppp2)>60000)
{
if(sms_ok==1){
mensaje_sms();//mensaje_sms2();
temppp2=millis();
}
}
if((millis()-temppp)>10000)
{
Serial2.print('$');
Serial2.print(pass1[0]);
Serial2.print(pass1[1]);
Serial2.print(pass1[2]);
Serial2.print(pass1[3]);
Serial2.print(pass1[4]);
Serial2.print(pass1[5]);
Serial2.print(pass2[0]);
Serial2.print(pass2[1]);
Serial2.print(pass2[2]);
Serial2.print(pass2[3]);
Serial2.print(pass2[4]);
Serial2.println(pass2[5]);
delay(100);
temppp=millis();
}
}
/* Esta función envía los valores que captura el arduino hacia la aplicación web que serán
recibidos por el archivo salvardatos.php. */
void httpRequest() {
//Serial.println("inicio del httpreq");
if (client.connect(server, 80)) { // Conexion con el servidor
// Serial.println("antes del get");
client.print("GET /tesis/bd/salvardatos.php?valor1="); // Enviamos los datos por GET
client.print(data[0]);
client.print("&valor2="); // Enviamos los datos por GET
client.print(data[1]);
client.print("&valor3="); // Enviamos los datos por GET
client.print(data[2]);
client.print("&valor4="); // Enviamos los datos por GET
211
client.print(data[3]);
client.print("&valor5="); // Enviamos los datos por GET
client.print(data[4]);
client.print("&valor6="); // Enviamos los datos por GET
client.print(data[5]);
client.print("&valor7="); // Enviamos los datos por GET
client.print(data[6]);
client.print("&valor8="); // Enviamos los datos por GET
client.print(data[7]);
client.print("&valor9="); // Enviamos los datos por GET
client.print(data[8]);
client.print("&valor10="); // Enviamos los datos por GET
client.print(data[9]);
client.print("&valor11="); // Enviamos los datos por GET
client.print(data[10]);
client.print("&valor12="); // Enviamos los datos por GET
client.print(data[11]);
client.print("&valor13="); // Enviamos los datos por GET
client.print(data[12]);
client.print("&valor14="); // Enviamos los datos por GET
client.print(data[13]);
client.print("&valor15="); // Enviamos los datos por GET
client.print(data[14]);
client.print("&valor16="); // Enviamos los datos por GET
client.print(data[15]);
client.print("&valor17="); // Enviamos los datos por GET
client.print(data[16]);
client.print("&valor18="); // Enviamos los datos por GET
client.print(data[17]);
client.print("&valor19="); // Enviamos los datos por GET
client.print(data[18]);
client.print("&valor20="); // Enviamos los datos por GET
client.print(data[19]);
client.print("&valor21="); // Enviamos los datos por GET
client.print(data[20]);
client.print("&valor22="); // Enviamos los datos por GET
client.print(data[21]);
client.print("&valor23="); // Enviamos los datos por GET
client.print(data[22]);
client.print("&valor24="); // Enviamos los datos por GET
client.print(data[23]);
client.print("&valor25="); // Enviamos los datos por GET
client.print(data[24]);
client.print("&valor26="); // Enviamos los datos por GET
client.print(data[25]);
client.print("&valor27="); // Enviamos los datos por GET
client.print(data[26]);
client.print("&valor28="); // Enviamos los datos por GET
client.print(data[27]);
212
client.print("&valor29="); // Enviamos los datos por GET
client.print(data[28]);
client.println(" HTTP/1.0");
client.println("User-Agent: Arduino 1.0");
client.println();
// Serial.println("Conectado");
} else {
// Serial.println("Fallo en la conexion");
}
if (!client.connected()) {
// Serial.println("Disconnected!");
}
client.stop();
client.flush();
// delay(3000); // era3000
}
void getdat()
{
char dat[200]="";
char a;
int i=0,j=0,k=0;
//Serial.println("adios");
char st[]=" ";
unsigned long time1=millis();
Serial2.write('A');
do{
if (Serial2.available()>0){
a= Serial2.read();
dat[i++]=a;
//Serial.print(a);
}
}while(!(Serial2.available()==0 && (millis()-time1)>2000));
i=j=k=0;
//ardu.println(dat);
Serial.println("");
for(i=0;i<200;i++)
{
if(dat[i]==',')
{
data[k++]=atof(st);
for(int w=0;w<7;w++)
{st[w]=' ';}
213
j=0;
i++;
}
if(k!=30)
{st[j++]=dat[i];}
}
for(i=0;i<29;i++)
{Serial.print(data[i]);
Serial.print(",");
//data[i]=0;
}
Serial.println();
//data[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
//511.1,113.3,61.98,400.9,36.87,44.55,12.07,73.19,93.46,841.3,36.20,991.4,96.34,11.3
0,98.61,98.93,85.48,435.6,30.40,95.12,865.3,41.15,5.841,
}
/*Funcion utilizada pata realizar pruebas para envio de mensajes*/
void test()
{
int b=1;
Serial.println("Enviando SMS...");
if(data[1]<25){b*=0;}
if(data[9]<25){b*=0;}
if(data[10]<25){b*=0;}
if(data[11]<25){b*=0;}
if(data[2]==1){b*=0;}
if(data[4]==1){b*=0;}
if(data[22]>0){b*=0;}
if(data[12]>150){b*=0;}
if(b==0){
Serial1.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir
mensajes
delay(1000);
Serial1.print("AT+CMGS=\"");
Serial1.print(cel1[0]);
Serial1.print(cel1[1]);
Serial1.print(cel1[2]);
Serial1.print(cel1[3]);
Serial1.print(cel1[4]);
Serial1.print(cel1[5]);
Serial1.print(cel1[6]);
Serial1.print(cel1[7]);
Serial1.print(cel1[8]);
Serial1.println("\""); //Numero al que vamos a enviar el mensaje
214
delay(1000);
Serial1.println("ACTIVACION DE ALARMA EN LABORATORIOS");
Serial.println("ACTIVACION DE ALARMA EN LABORATORIOS");
delay(100);
Serial1.println((char)26); //Comando de finalización ^Z
delay(100);
Serial1.println();
delay(5000); // Esperamos un tiempo para que envíe el SMS
Serial.println("SMS enviado");
}//do{Serial.read();}while((Serial.available()==0));
}
void captura_mensajes()
{
if(sms_ok==0){
sms1=sms2=sms3=sms4=sms5=sms6=sms7=sms8=0;
}
if(data[27]==1 && sms_ok==0){
sms_ok=1;
if(data[1]<80){sms1=1;}
if(data[9]<80){sms2=1;}
if(data[10]<80){sms3=1;}
if(data[11]<80){sms4=1;}
if(data[2]==1){sms5=1;}
if(data[4]==1){sms6=1;}
if(data[22]==0){sms7=1;}
if(data[12]>150){sms8=1;}
}
}
void mostrar_mensajes_a_enviar()
{
Serial.print("sms1=");
Serial.print(sms1);
Serial.print(" ");
Serial.print("sms2=");
Serial.print(sms2);
Serial.print(" ");
Serial.print("sms3=");
Serial.print(sms3);
Serial.print(" ");
Serial.print("sms4=");
Serial.print(sms4);
Serial.print(" ");
Serial.print("sms5=");
Serial.print(sms5);
Serial.print(" ");
Serial.print("sms6=");
215
Serial.print(sms6);
Serial.print(" ");
Serial.print("sms7=");
Serial.print(sms7);
Serial.print(" ");
Serial.print("sms8=");
Serial.println(sms8);
}
void mensaje_sms()
{
int b=1;
Serial.println("Enviando SMS...");
if(sms1==1){b*=0;}
if(sms2==1){b*=0;}
if(sms3==1){b*=0;}
if(sms4==1){b*=0;}
if(sms5==1){b*=0;}
if(sms6==1){b*=0;}
if(sms7==1){b*=0;}
if(sms8==1){b*=0;}
if(b==0){
Serial1.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir
mensajes
delay(1000);
Serial1.print("AT+CMGS=\"");
Serial1.print(cel1[0]);
Serial1.print(cel1[1]);
Serial1.print(cel1[2]);
Serial1.print(cel1[3]);
Serial1.print(cel1[4]);
Serial1.print(cel1[5]);
Serial1.print(cel1[6]);
Serial1.print(cel1[7]);
Serial1.print(cel1[8]);
Serial1.println("\""); //Numero al que vamos a enviar el mensaje
delay(1000);
// Serial1.println("ACTIVACION DE ALARMA EN LABORATORIOS");
/////////////////////////////////////////////
if( sms1==1){Serial1.println("AF LAB 1");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 1");}
if( sms2==1){Serial1.println("AF LAB 2");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 2");}
if( sms3==1){Serial1.println("AF LAB 3");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 3");}
if( sms4==1){Serial1.println("AF LAB 4");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 4");}
216
if( sms5==1){Serial1.println("ARI Mov");Serial.println("ALARMA DE
ROBO INTERNA POR DETECCION DE MOVIMIENTO");}
if( sms6==1){Serial1.println("ARI Puerta");Serial.println("ALARMA DE
ROBO INTERNA EN LA PUERTA");}
if( sms7==1){Serial1.println("ARE");Serial.println("ALARMA DE
ROBOT EXTERNO");}
if( sms8==1){Serial1.println("AH");Serial.println("ALARMA DE
HUMO");}
delay(1000);
Serial1.println((char)26); //Comando de finalización ^Z
delay(1000);
Serial1.println();
delay(5000); // Esperamos un tiempo para que envíe el SMS
Serial.println("SMS enviado1");
Serial1.print("AT+CMGF=1\r"); //Configura el modo texto para enviar o recibir
mensajes
delay(1000);
Serial1.print("AT+CMGS=\"");
Serial1.print(cel2[0]);
Serial1.print(cel2[1]);
Serial1.print(cel2[2]);
Serial1.print(cel2[3]);
Serial1.print(cel2[4]);
Serial1.print(cel2[5]);
Serial1.print(cel2[6]);
Serial1.print(cel2[7]);
Serial1.print(cel2[8]);
Serial1.println("\""); //Numero al que vamos a enviar el mensaje
delay(1000);
// Serial1.println("ACTIVACION DE ALARMA EN LABORATORIOS");
/////////////////////////////////////////////
if( sms1==1){Serial1.println("AF LAB 1");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 1");}
if( sms2==1){Serial1.println("AF LAB 2");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 2");}
if( sms3==1){Serial1.println("AF LAB 3");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 3");}
if( sms4==1){Serial1.println("AF LAB 4");Serial.println("ALARMA DE
FUEGO EN EL LABORATORIO 4");}
if( sms5==1){Serial1.println("ARI Mov");Serial.println("ALARMA DE
ROBO INTERNA POR DETECCION DE MOVIMIENTO");}
if( sms6==1){Serial1.println("ARI Puerta");Serial.println("ALARMA DE
ROBO INTERNA EN LA PUERTA");}
if( sms7==1){Serial1.println("ARE");Serial.println("ALARMA DE
ROBOT EXTERNO");}
217
if( sms8==1){Serial1.println("AH");Serial.println("ALARMA DE
HUMO");}
delay(1000);
Serial1.println((char)26); //Comando de finalización ^Z
delay(1000);
Serial1.println();
delay(5000); // Esperamos un tiempo para que envíe el SMS
Serial.println("SMS enviado 2");
sms_ok=0;
sms1=sms2=sms3=sms4=sms5=sms6=sms7=sms8=0;
}else{Serial.println("SMS falló por no entrar en ninguna de las
condiciones");sms_ok=0;}
//do{Serial.read();}while((Serial.available()==0));
}
Programación Arduino Mega Padre
#include "DHT.h"
#define DHTPIN1 7
#define DHTPIN2 12
#define DHTPIN3 11
#define DHTPIN4 10
#define DHTPIN5 9
#define DHTTYPE DHT22
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
DHT dht3(DHTPIN3, DHTTYPE);
DHT dht4(DHTPIN4, DHTTYPE);
DHT dht5(DHTPIN5, DHTTYPE);
float t1,t2,t3,t4,t5;// temperaturas
float
v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v2
3,v24,v25,v26,v27,v28,v29;
int p=0,q=0,r=0,s=0;
int ex1=0;
int led[24]={ 2 , 28 , 30 , 32 ,
34, 38 , 40 , 42 ,
44, 48 , 50 , 52 ,
3 , 25 , 29 , 31 ,
33, 37 , 39 , 41 ,
45, 47 , 49 , 51 };
int pul[9]={61 , 62 , 63 , 64 ,
65, 66 , 67 , 68 ,
60 };/*{ 8 , 9 , 10 , 11 ,
218
12, 12 , 7 , 6 ,//ojo 12
5 , 6 };*/
int pul_val[9];
int flag1=0, flag2=1;
int band_int=0,band_ext=0,band_fue=0,band_hum=0,band_buzz=0;
int btn_int=0,btn_ext=0,btn_fue=0,btn_hum=0,btn_buzz=0;
int act_id=0;
/*En esta función se inicializan las variales y las velocidades de transmisión entre
arduinos y el monitor serial */
void setup() {
v1=v2=v3=v4=v5=v6=v7=v8=v9=v10=v11=v12=v13=v14=v15=v16=v17=v18=v19=
v20=v21=v22=v23=v24=v25=v26=v27=v28=v29=0;//"I,D,H,F,S,J,K,L,M,C,B,A,G,6,
5,4,1,0,3,7,2,8,T"
t1=t2=t3=t4=t5=0;
Serial2.begin(9600);//uno
Serial1.begin(9600);//nano
Serial.begin(9600);//depurar
ini_leds();
ini_puls();
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
dht5.begin();
}
long tiempoUltimaLectura=0;
//Funcion que se repite indefinidas veces
void loop() {
if(Serial1.available()>0)
{
/* Si el arduino nano esta enviando datos, se lee y guarda en la variable de tipo char.
Las variables ‘w’ ‘y’ ‘x’ son provenientes del arduino nano, para saber si alguien abrió
el sensor magnético */
char y=Serial1.read();
if(y=='W'){v5=1;}
if(y=='X'){v5=0;}
if(y=='$'){ // llega del nano es como enter
delay(10);
/* Dependiendo del valor de ‘y’ se determina si se activó o desactivó una alarma y
quien fue la persona que realizo la acción. */
y=Serial1.read();
Serial.println(y);
switch(y){
case 'a': btn_int=1;
act_id=1;
break;
219
case 'b': btn_int=1;
act_id=2;
break;
case 'c': btn_ext=1;
act_id=3;
break;
case 'd': btn_ext=1;
act_id=4;
break;
case 'e': btn_fue=1;
act_id=5;
break;
case 'f': btn_fue=1;
act_id=6;
break;
case 'g': btn_hum=1;
act_id=7;
break;
case 'h': btn_hum=1;
act_id=8;
break;
case 'i': btn_int=1;
act_id=9;
break;
case 'j': btn_int=1;
act_id=10;
break;
case 'k': btn_ext=1;
act_id=11;
break;
case 'l': btn_ext=1;
act_id=12;
break;
case 'm': btn_fue=1;
act_id=13;
break;
case 'n': btn_fue=1;
act_id=14;
break;
case 'o': btn_hum=1;
act_id=15;
break;
case 'p': btn_hum=1;
act_id=16;
break;
}
}
220
goto here; }
/* Si el arduino mega hijo tiene datos, se llen los datos y se actualizan en la variable X
para activar o desactivar las alarmas desde la aplicación */
if(Serial2.available()>0)
{//Serial.println("holis");
char x=Serial2.read();
if(x=='$'){
//unsigned long time1=millis();
char tt=' ';
delay(100);
Serial1.print('$');
do{
tt=char(Serial2.read());
Serial.print(tt);
Serial1.print(tt);
}while(!(Serial2.available()==0));
Serial2.flush();
goto here;
}
for(int i=0;i<24;i++)
{
// sensors
if(x=='a'+i){digitalWrite(led[i], !digitalRead(led[i]));goto here;}}//a--x
//abc def ghi jkl mno pqr
//18 1-18 0-17
if(x=='A'){txtsend();if(btn_int==1){p++;}
if(btn_ext==1){q++;}
if(btn_fue==1){r++;}
if(btn_hum==1){s++;}
if(p>=4 || q>=4 || r>=4 || s>=4){p=q=r=s=0;}
goto here;}// sensors
if(x=='B'){if(band_int==1){band_int=0;Serial1.print("#a");Serial.print("#a");}else{ban
d_int=1;Serial1.print("#b");Serial.print("#b");}goto here;}// sensors
if(x=='C'){if(band_ext==1){band_ext=0;Serial1.print("#c");Serial.print("#c");}else{ba
nd_ext=1;Serial1.print("#d");Serial.print("#d");}goto here;}// sensors
if(x=='D'){if(band_fue==1){band_fue=0;Serial1.print("#e");Serial.print("#e");}else{ba
nd_fue=1;Serial1.print("#f");Serial.print("#f");}goto here;}// sensors
if(x=='E'){if(band_hum==1){band_hum=0;Serial1.print("#g");Serial.print("#g");}else{
band_hum=1;Serial1.print("#h");Serial.print("#h");}goto here;}// sensors
221
if(x=='y'){/*tone(4, 2000, 500)*/;goto here;}
if(x=='z'){noTone(4);band_buzz=0;goto here;}
}
here:
leer_pul();
drive_led();
if (flag1==1){delay(1000);}
///////////////////////////////////////////////////////////////////
if(band_int){//si esta activa la alarma interna//*arreaglar esta alarma
if(v5){tone(4, 2000);band_buzz=1;}// si alguien abre la puerta se activa el
buzzer
if(digitalRead(8)==1) {//si hay movimiento
tone(4, 2000);band_buzz=1;
}
if(analogRead(A5)<500){//si es de noche LDR
if(digitalRead(8)==1) {//si hay movimiento
tone(4, 2000);//activa el buzzer
band_buzz=1;
v3=1;
// ex=1;//digitalWrite(led[3],1);//prende led
}else{/*digitalWrite(led[3],0);*/}//apaga led
}
}else{v3=0;}
if(band_ext){// si esta activa la alarma externa
if(digitalRead(13)==0){tone(4, 2000);band_buzz=1;}// si detecta el laser activa
el buzzer// 1 para pruebas y 0 para real
}
if(band_fue){// si esta activa la alarma externa
//if(analogRead(A0)<25 ||analogRead(A1)<25 || analogRead(A2)<25 ||
analogRead(A3)<25){tone(4, 2000);band_buzz=1;}// si detecta el fuego activa el buzzer
if(v2<25 ||v10<25 || v11<25 || v12<25){tone(4, 2000);band_buzz=1;}// si detecta
el fuego activa el buzzer
}
if(band_hum){// si esta activa la alarma externa
if(analogRead(A15)>80){tone(4, 2000);band_buzz=1;}// si detecta el laser
activa el buzzer// estaba en 80
222
}
////////////////////////////////////////////////////////////////////////////////////////////////////
if(millis()-tiempoUltimaLectura>5000)
{
t1 = dht1.readTemperature(); //Leemos la temperatura en grados Celsius
t2 = dht2.readTemperature(); //Leemos la temperatura en grados Celsius
t3 = dht3.readTemperature(); //Leemos la temperatura en grados Celsius
t4 = dht4.readTemperature(); //Leemos la temperatura en grados Celsius
t5 = dht5.readTemperature(); //Leemos la temperatura en grados Celsius
if(t1>35){digitalWrite(41,1);}else{digitalWrite(41,0);}
if(t2>35){digitalWrite(39,1);}else{digitalWrite(39,0);}
if(t3>35){digitalWrite(49,1);}else{digitalWrite(49,0);}
if(t4>35){digitalWrite(51,1);}else{digitalWrite(51,0);}
if(t5>35){digitalWrite(47,1);}else{digitalWrite(47,0);}
if(band_int==1 || band_ext==1 || band_fue==1 ||
band_hum==1){Serial.println("verde");Serial.println(band_int);Serial.println(band_ext
);Serial.println(band_fue);Serial.println(band_hum);Serial1.print('Q');}// verde
// if(x=='R'){Serial1.print('R');goto here;}// azul
if(band_int==0 && band_ext==0 && band_fue==0 &&
band_hum==0){Serial.println("Rojo");Serial.println(band_int);Serial.println(band_ext)
;Serial.println(band_fue);Serial.println(band_hum);Serial1.print('P');}// rojo
tiempoUltimaLectura=millis(); //actualizamos el tiempo de la última lectura
}
tasks();
////////////////////////////////////////////////////////////////////////////////////
}
//Inicializa los leds como salidas
void ini_leds()
{
for(int i=0;i<24;i++)
{
pinMode(led[i],OUTPUT);
digitalWrite(led[i],LOW);
}
}
//Inicializa los pulsadores como entradas
void ini_puls()
{
for(int i=0;i<9;i++)
{
pinMode(pul[i],INPUT_PULLUP);
pul_val[i]=0;
223
}
}
//Lee los pulsadores que sirven para prender o apagar los focos leds
void leer_pul()
{
flag1=0;
for(int i=0;i<9;i++)
{
pul_val[i]=digitalRead(pul[i]);
if(pul_val[i]==0){flag1=1;}
}
}
void mos_pul()
{
for(int i=0;i<9;i++)
{
Serial2.print(pul_val[i]);
Serial2.print(" ");
}
Serial2.println("");
}
void drive_led()
{
//if(pul_val[0]==0){digitalWrite(led[1],!digitalRead(led[1]));}
//if(pul_val[1]==0){digitalWrite(led[2],!digitalRead(led[2]));}
//if(pul_val[2]==0){digitalWrite(led[14],!digitalRead(led[14]));}
// if(pul_val[3]==0){digitalWrite(led[15],!digitalRead(led[15]));}
//if(pul_val[4]==0){digitalWrite(led[3],!digitalRead(led[3]));}
//if(pul_val[5]==0){digitalWrite(led[5],!digitalRead(led[5]));}
// if(pul_val[6]==0){digitalWrite(led[4],!digitalRead(led[4]));}
//if(pul_val[7]==0){digitalWrite(led[16],!digitalRead(led[16]));}
// if(pul_val[8]==0){digitalWrite(led[13],!digitalRead(led[13]));}
}
//Se envían las mediciones de los sensores al arduino hijo.
void txtsend()
{
Serial2.print(v1);
Serial2.print(",");
Serial2.print(v2);
Serial2.print(",");
Serial2.print(v3);
Serial2.print(",");
Serial2.print(v4);
224
Serial2.print(",");
Serial2.print(v5);
Serial2.print(",");
Serial2.print(v6);
Serial2.print(",");
Serial2.print(v7);
Serial2.print(",");
Serial2.print(v8);
Serial2.print(",");
Serial2.print(v9);
Serial2.print(",");
Serial2.print(v10);
delay(100);
Serial2.print(",");
Serial2.print(v11);
Serial2.print(",");
Serial2.print(v12);
Serial2.print(",");
Serial2.print(v13);
Serial2.print(",");
Serial2.print(int(v14));
Serial2.print(",");
Serial2.print(int(v15));
Serial2.print(",");
Serial2.print(int(v16));
Serial2.print(",");
Serial2.print(int(v17));
Serial2.print(",");
Serial2.print(int(v18));
Serial2.print(",");
Serial2.print(int(v19));
Serial2.print(",");
Serial2.print(int(v20));
delay(100);
Serial2.print(",");
Serial2.print(int(v21));
Serial2.print(",");
Serial2.print(int(v22));
Serial2.print(",");
Serial2.print(int(v23));
Serial2.print(",");
Serial2.print(int(v24));
Serial2.print(",");
Serial2.print(int(v25));
Serial2.print(",");
Serial2.print(int(v26));
Serial2.print(",");
Serial2.print(int(v27));
Serial2.print(",");
225
Serial2.print(int(v28));
Serial2.print(",");
Serial2.print(int(v29));
Serial2.print(",");
Serial2.flush();
Serial.print(v1);
Serial.print(",");
Serial.print(v2);
Serial.print(",");
Serial.print(v3);
Serial.print(",");
Serial.print(v4);
Serial.print(",");
Serial.print(v5);
Serial.print(",");
Serial.print(v6);
Serial.print(",");
Serial.print(v7);
Serial.print(",");
Serial.print(v8);
Serial.print(",");
Serial.print(v9);
Serial.print(",");
Serial.print(v10);
delay(100);
Serial.print(",");
Serial.print(v11);
Serial.print(",");
Serial.print(v12);
Serial.print(",");
Serial.print(v13);
Serial.print(",");
Serial.print(int(v14));
Serial.print(",");
Serial.print(int(v15));
Serial.print(",");
Serial.print(int(v16));
Serial.print(",");
Serial.print(int(v17));
Serial.print(",");
Serial.print(int(v18));
Serial.print(",");
Serial.print(int(v19));
Serial.print(",");
Serial.print(int(v20));
delay(100);
Serial.print(",");
226
Serial.print(int(v21));
Serial.print(",");
Serial.print(int(v22));
Serial.print(",");
Serial.print(int(v23));
Serial.print(",");
Serial.print(int(v24));
Serial.print(",");
Serial.print(int(v25));
Serial.print(",");
Serial.print(int(v26));
Serial.print(",");
Serial.print(int(v27));
Serial.print(",");
Serial.print(int(v28));
Serial.print(",");
Serial.print(int(v29));
Serial.println(",");
Serial.flush();
act_id=0;
//v5=0;//borrado
delay(1000);
}
//Se asigna los valores de los sensores a las las variables
void tasks()
{
v1=t1; // lab1
v2=analogRead(A3);//fuego cod 2
v3=digitalRead(8); // movimiento cod3
v4=analogRead(A5); //ldr cod4
v5=v5;//luego borrar; //magnetico cod 5
v6=t2; //temp lab 2 cod 6
v7=t3; //temp lab3 cog 7
v8=t4; //temp lab 4 cod8
v9=t5;// tempe jefatura
v10=analogRead(A2); //fuego lab 2
v11=analogRead(A1); //fuego lab 3
v12=analogRead(A0);//fuego lab 4
v13=analogRead(A15); //humo lab3
/////////////////////////////////////////////
v14=2;
if(pul_val[6]==0 && (digitalRead(led[4])==0)){v14=1;}
if(pul_val[6]==0 && (digitalRead(led[4])==1)){v14=0;}
//v14=digitalRead(led[4]); //led lab1
////////////////////////////////////////////////////////////////////////////////////////////
v15=2;
if(pul_val[5]==0 && (digitalRead(led[5])==0)){v15=1;}
if(pul_val[5]==0 && (digitalRead(led[5])==1)){v15=0;}
227
//v15=digitalRead(led[5]); //led lab2
/////////////////////////////////////////////// /////////////////////////////////////////////
v16=2;
if(pul_val[4]==0 && (digitalRead(led[3])==0)){v16=1;}
if(pul_val[4]==0 && (digitalRead(led[3])==1)){v16=0;}
//v16=digitalRead(led[3]); //led lab3
////////////////////////////////////////////////////////////////////////////////////////////
v17=2;
if(pul_val[1]==0 && (digitalRead(led[2])==0)){v17=1;}
if(pul_val[1]==0 && (digitalRead(led[2])==1)){v17=0;}
//v17=digitalRead(led[2]); //led lab4
////////////////////////////////////////////////////////////////////////////////////////////
v18=2;
if(pul_val[0]==0 && (digitalRead(led[1])==0)){v18=1;}
if(pul_val[0]==0 && (digitalRead(led[1])==1)){v18=0;}
//v18=digitalRead(led[1]); //led lab5
////////////////////////////////////////////////////////////////////////////////////////////
v19=2;
if(pul_val[3]==0 && (digitalRead(led[15])==0)){v19=1;}
if(pul_val[3]==0 && (digitalRead(led[15])==1)){v19=0;}
//v19=digitalRead(led[15]); //led jefatura
////////////////////////////////////////////////////////////////////////////////////////////
v20=2;
if(pul_val[7]==0 && (digitalRead(led[16])==0)){v20=1;}
if(pul_val[7]==0 && (digitalRead(led[16])==1)){v20=0;}
//v20=digitalRead(led[16]); //led pasillo 1
////////////////////////////////////////////////////////////////////////////////////////////
v21=2;
if(pul_val[2]==0 && (digitalRead(led[14])==0)){v21=1;}
if(pul_val[2]==0 && (digitalRead(led[14])==1)){v21=0;}
//v21=digitalRead(led[14]); //led pasillo 2
////////////////////////////////////////////////////////////////////////////////////////////
v22=2;
if(pul_val[8]==0 && (digitalRead(led[13])==0)){v22=1;}
if(pul_val[8]==0 && (digitalRead(led[13])==1)){v22=0;}
//v22=digitalRead(led[13]); //led baño
///////////////////////////////////////////////
v23=digitalRead(13);//laser cod 14
v24=2;//band_int;
if(btn_int==1 && (band_int==0)){
v24=1;
if(p>=2){btn_int=0;p=0;}
}
if(btn_int==1 && (band_int==1)){
v24=0;
228
if(p>=2){btn_int=0;p=0;}
}
v25=2;//band_ext;
if(btn_ext==1 && (band_ext==0)){
v25=1;
if(q>=2){btn_ext=0;q=0;}
}
if(btn_ext==1 && (band_ext==1)){
v25=0;
if(q>=2){btn_ext=0;q=0;}
}
v26=2;//band_fue;
if(btn_fue==1 && (band_fue==0)){
v26=1;
if(r>=2){btn_fue=0;r=0;}
}
if(btn_fue==1 && (band_fue==1)){
v26=0;
if(r>=2){btn_fue=0;r=0;}
}
v27=2;//band_hum;
if(btn_hum==1 && (band_hum==0)){
v27=1;
if(s>=2){btn_hum=0;s=0;}
}
if(btn_hum==1 && (band_hum==1)){
v27=0;
if(s>=2){btn_hum=0;s=0;}
}
v28=band_buzz;
if(band_buzz){digitalWrite(led[17],1);}else{digitalWrite(led[17],0);}
v29=act_id;
}