• No se han encontrado resultados

SD seguridad domotica

N/A
N/A
Protected

Academic year: 2020

Share "SD seguridad domotica"

Copied!
136
0
0

Texto completo

(1)

1

SD SEGURIDAD DOMOTICA

DIEGO ALEJANDRO OSORIO CAMPOS

Trabajo de grado presentado como requisito parcial para optar al Título de Ingeniero Electrónico

Dirigido por: Iván A. David Venegas

UNIVERSIDAD DE IBAGUE FACULTAD DE INGENIERIA

PROGRAMA DE INGENIERÍA ELECTRÓNICA IBAGUE

(2)

2

NOTA DE ACEPTACION

_________________________________________

_________________________________________

_________________________________________ Presidente del Jurado

_________________________________________ Nombre del Jurado

_________________________________________ Nombre del Jurado

_________________________________________

(3)

3

DEDICATORIA

Dedico la culminación de este proyecto a todas aquellas personas quienes siempre creyeron en mi capacidad como estudiante y emprendedor, para dar por terminadas mis materias en ingeniería electrónica y lograr alcanzar los objetivos de este trabajo de grado.

Dedico esto a mis padres quienes de forma paciente y creyente, dedicaron el esfuerzo de su trabajo a ayudarme a lograr el cumplimiento de esta meta que empezó en el año 2008 del semestre A y hoy me encuentro culminando todo aquel proceso que inicié.

Una dedicación especial para mis compañeros de estudios universitarios quienes como amigos fueron incondicionales al creer en mí y prestarme su apoyo durante todo el proceso

(4)

4

AGRADECIMIENTOS

El primer agradecimiento que debo dar es a Dios por hacerme quien soy y darme el acompañamiento de todas las personas que me han rodeado y bien o mal han hecho que tome fuerza cada vez que creo caer. Agradecer a mis padres quienes han sido los directos responsables de que hoy pueda agradecerles por lograr terminar mis estudios en Ingeniería Electrónica. Al resto de mi familia que no nombro por que daría pie a escribir otro libro si lo hiciera, les agradezco sus consejos y buenas energías que siempre me brindaron al creer que nunca renunciaría y alcanzaría mi meta.

Al Ingeniero Iván A. David Venegas director de este trabajo de grado agradezco de manera cordial y sincera por su ayuda incondicional para conmigo, ser el mejor guía que pude haber encontrado y por haberse apropiado tanto como yo de esta idea, la que hoy gracias a su ayuda doy por terminada.

Al Ingeniero Gustavo Martínez Villalobos que fue quien me recomendara el director para este trabajo y quien me abrió las puertas a la programación orientada a objetos.

A David Fernando González mi mejor amigo, Juan Camilo Ávila e Ivonne Sánchez por poder contar con ustedes en Ingeniería y Desarrollo Eléctrico IDE, y seguir pendientes de la empresa aun en mi ausencia, por que creyeron que podría salir a delante con este proyecto. Gracias por ser consejeros y puntos de apoyo en los que he podido confiar siempre.

(5)

5

CONTENIDO

INTRODUCCION ... 11

1- FUNDAMENTOS BÁSICOS DEL PLANTEAMIENTO DEL PROBLEMA. ... 12

1.2. Objetivos ... 13

1.2.1. Objetivo General ... 13

1.2.2. Objetivos Específicos ... 13

1.3. Alcance ... 14

1.4 Marco Conceptual ... 15

1.4.1. Java ... 15

1.4.2. Android ... 16

1.4.3. HTML ... 18

1.4.4. PhoneGapp ... 18

1.4.5. JavaScript ... 18

1.4.6. JSON ... 19

1.4.7. JQUERY Mobile ... 19

1.4.8. CSS ... 20

1.4.9. Arduino ... 20

1.4.10. Lenguaje C ... 21

1.4.11. Servidor ... 21

1.4.12. Linux ... 21

1.4.13. Apache HTTP ... 22

1.4.14. PHP ... 23

1.4.15. Cámaras IP ... 23

1.4.16. Lenguaje Unificado de Modelado ... 23

1.5. Estado del Arte ... 26

1.6. Estudio y Propuesta de Solución ... 27

1.6.1. Estudios previos ... 27

1.6.2. Posibles mejoras futuras al sistema ... 28

1.6.3. Solución final ... 28

(6)

6

2- DISEÑO Y DESARROLLO DEL PROTOTIPO ... 33

2.1. Programación del Servidor Administrador de Conexión ... 34

2.2. Control domótico y conexión a la Web con Arduino ... 35

2.2.1. Características de los dispositivos ... 36

2.2.2. Lógica de Arduino ... 39

2.2.3. Activación de los sistemas periféricos ... 43

2.2.4. Diagrama de conexiones ... 46

2.3. Software de Aplicación Android ... 48

2.3.1. Desarrollo en HTML ... 48

2.3.2. Desarrollo en CSS ... 49

2.3.3. Desarrollo de JQuery Mobile y JavaScript ... 50

2.3.4. Desarrollo en Java ... 52

2.3.5. Desarrollo de la aplicación directamente en Android ... 54

2.4. Configuración del router ... 61

2.5. Configuración de la cámara IP ... 64

2.6. Producto Final ... 66

3- PRUEBAS Y ANALISIS DE RESULTADOS ... 68

3.1. Visualización de cambio del valor de variables ... 69

3.2. Análisis de resultados obtenidos... 72

CONCLUSIONES ... 73

GLOSARIO ... 75

REFERENCIAS BIBLIOGRAFICAS ... 77

(7)

7

LISTA DE FIGURAS

Figura 1. Diversas capas que componen el Sistema Operativo Android………….17

Figura 2. Diagrama macro del prototipo implementado de Seguridad Domótica…29 Figura 3. Prototipo implementado sobre la maqueta……….. 32

Figura 4. Arduino Ethernet………...36

Figura 5. Sensor de Ultrasonido HC-SR04………...38

Figura 6. Diagrama de flujo de la lógica interna de arduino……….…..40

Figura 7. Encabezado del archivo PHP programado en el servidor……….42

Figura 8. Driver de potencia para la activación de los relés………...44

Figura 9. Diagrama de conexión AC implementado en la maqueta………..46

Figura 10. Diagrama de conexión de arduino a sus periféricos……….47

Figura 11. Conexión del router a la cámara y arduino (Distribución de Internet)…47 Figura 12. Interfaz gráfica del usuario en PhoneGap………..51

Figura 13. Diagrama de casos de uso………57

Figura 14. Diagrama de clases………58

Figura 15. Diagrama de despliegue...59

Figura 16. Diagrama de despliegue………...59

Figura 17. Interfaz de la aplicación en Android……….60

(8)

8

Figura 19. Configuracion de la red LAN……….62

Figura 20. Redireccionamiento de direccion IP publica a traves de un puerto

especifico………63

Figura 21. Configuración de la cámara IP con su programa de instalación……….64

Figura 22. Configuración de la aplicación encargada de visualizar las imágenes tomadas de la cámara………..…65

Figura 23. Fotografía de la maqueta con todas las conexiones respectivas……...67

Figura 24. Visualización de JSON en el navegador Chrome……….68

Figura 25. Lectura de datos enviados por el servidor………..69

Figura 26. Lectura de JSON y el valor de las variables asignadas en arduino…...69

Figura 27. Lámpara encendida dada la activación del relé encargado………70

Figura 28. Activación de cantonera eléctrica y bombilla……….71

(9)

9

RESUMEN

SD Seguridad Domótica es un prototipo de un sistema de seguridad implementado sobre una maqueta simulando un lugar de vigilancia al cual se va a tener acceso domótico al controlar una cantonera eléctrica y una bombilla de luz, por medio de un dispositivo móvil (Smartphone) en el que se instaló una aplicación desarrollada para este propósito; todo el control se hace a través de la Internet, donde se cuenta con un servidor que comunica a arduino (encargada del control domótico), con la aplicación móvil desarrollada en Android.

Adicional al control domótico, esta implementada una cámara IP, para hacer que el prototipo funcione como un sistema de monitoreo completo. Aunque para esta cámara, se hace necesario contar con una dirección IP fija o un DNS dinámico que resuelva el direccionamiento IP de la misma.

El sistema tiene la integración de una variedad de formas de programación como C, PHP, Java y HTML entre otras, haciendo interesante la forma de solucionar un problema a partir de herramientas ya existentes y sin la necesidad de implementar nuevas soluciones de software o hardware.

ABSTRACT

SD Safety Automation is a prototype for a security system implementing a demo simulating a remote surveillance place which will provide access for home automation, controlling devices such as an electric door lock and a light bulb, using a mobile device (Smartphone) where the developed application for this purpose has been installed; all remote control is performed throughout the Internet; where a server will provide information to arduino (which manages the place automation) and also provides information to the mobile application developed on Android on the user’s side.

Additional automation control is gained by setting up a Web Camera to make the prototype work as a complete monitoring system. Although for this camera, it is necessary to get a fixed IP address or dynamic DNS to resolve its addressing.

(10)

10

(11)

11

INTRODUCCION

En busca de encontrar solución a un problema de monitoreo continuo para garantizar completa seguridad a una zona específica o establecimiento, se encamino este proyecto a suplir dicha necesidad; aprovechando la llegada de dispositivos móviles que permiten el desarrollo de aplicaciones con acceso a la Web.

(12)

12

1- FUNDAMENTOS BÁSICOS DEL PLANTEAMIENTO DEL PROBLEMA.

Debido a la penetración masiva en el mercado de las tecnologías de Smartphones, mercado mundial que crece a un ritmo sostenido de 2.4% anual [1]; abre una gran oportunidad de desarrollo de aplicaciones y comercialización de las mismas. Estos dispositivos ofrecen tantas soluciones a los problemas cotidianos por su flexible nivel de programación. En Colombia aun el desarrollo de las aplicaciones móviles no es tan avanzado como en países con mayor masificación de estos dispositivos; son utilizados principalmente para recibir o hacer llamadas, y en ocasiones obtener imágenes por su cámara o utilizar el reproductor de música. Aunque en Colombia ya existen iniciativas enfocadas a esta área de la ingeniería como lo es la programación de teléfonos inteligentes y generación de modelos de negocios sostenibles como por ejemplo Apps.co la cual es una iniciativa diseñada desde el Ministerio de la Información y las Comunicaciones MinTIC y su plan Vive Digital.

Por otro lado el problema de seguridad en la actualidad, es otro tema delicado al pensar que no se puede estar al tanto de lo que sucede las 24 horas del día en los hogares, trabajos o áreas donde se quiere que nadie más que algunas personas con respectivos permisos ingresen, si no es por un sistema de seguridad costoso y que no presta todos los servicios que queremos de manera integrada.

Para el 2008, según un estudio de la Superintendencia de Vigilancia y Seguridad Privada de Colombia, en la 8ª Feria Internacional de Seguridad: EFFICIENCY AND SECURITY, CONGRESO SEGURIDAD Y AUTOMATIZACION PARA UN MUNDO SOSTENIBLE, muestran los porcentajes de participación por ingresos en el mercado mundial de la seguridad privada, en el cual aparece América Latina con un 7% de los USD 135 Bill que se invierten en seguridad en el mundo, por encima de Europa Oriental, Medio Oriente y África con un 4% del mercado. Esto quiere decir que se presenta un incremento a favor de Latinoamérica lo cual es de conveniencia para el desarrollo de nuevos sistemas de seguridad [12].

(13)

13

1.2. Objetivos

1.2.1. Objetivo General

Crear un sistema de seguridad basado en domótica que permita por medio de acceso a la Internet vigilar y recibir información de lo que sucede en un área determinada, monitoreando los acontecimientos a través de un Smartphone.

1.2.2. Objetivos Específicos

 Analizar el potencial del dispositivo open-source hardware Arduino para control domótico. Diseñar un modelo para la integración de la información que provee arduino con una aplicación para Smartphones Android.

 Desarrollar los componentes de la solución utilizando Arduino SDK y Android SDK.

(14)

14

1.3. Alcance

Se realizó un prototipo de seguridad por medio de un Smartphone con sistema operativo Android, en el cual esté instalado el software que se desarrolló para que esté enlazado por vía Internet al centro de mando (sistema embebido), y que permita una interconexión para poder vigilar desde el dispositivo móvil por medio del software desarrollado lo que suceda en el centro de mando. Para este caso al centro de mando llegan las señales de una cerradura eléctrica, un relé encargado de encender un bobillo de 110 VAC y dos sensores de ultrasonido que van a servir como detectores de movimiento. Este mismo se elaboró por medio de una tarjeta programada en lenguaje C, y que su lógica le permitirá estar pendiente de la señal de activación de alguno de los sensores o recibirá la señal para activar o desactivar la cerradura eléctrica o relé por medio de los datos enviados vía Internet desde el Smartphone.

El sistema cuenta con una cámara de vigilancia que no está directamente relacionada con el sistema de mando, ya que será otra señal que se enviara al celular por medio de la Web sin interactuar con el sistema encargado de enviar las señales de vigilancia, pero al final se unen las dos señales en el dispositivo móvil, ya que en este se visualizan las imágenes de la cámara conectada vía IP por medio del software que provee el fabricante.

El único encargado de abrir o cerrar las cerraduras eléctricas es el dispositivo móvil, el cual cuenta con la seguridad correspondiente para que solo el usuario portador del dispositivo tenga acceso al área vigilada.

La alimentación del sistema de mando y sus periféricos junto con la cámara está dado por la red de energía eléctrica de 110-120 VAC a 60 Hz implementado por una fuente capaz de alimentar todo el sistema DC de seguridad.

Además, debido a que el sistema está diseñado para trabajar conectado las 24 horas a Internet, se da por hecho que para una unidad en producción de este sistema de seguridad se cuenta con el servicio de Internet y por ende con un router que le dará acceso a la nube a todo el sistema.

(15)

15

Ahora, se entiende que la persona también posee un teléfono móvil con tecnología Android compatible con el software desarrollado y que este cuente con el servicio de conexión a Internet.

1.4 Marco Conceptual

El desarrollo del proyecto tuvo como base la programación de sistemas embebidos existentes, la interconexión entre ellos y el diseño del control de los periféricos encargados de la cerradura la puerta y los sensores de proximidad, para los cuales se debe desarrollar el sistema de alimentación e implementación de estos dispositivos.

Para la programación y creación de la aplicación del Smartphone es necesario un conocimiento adecuado del lenguaje de programación Java debido a que las aplicaciones Android están programadas bajo este lenguaje o cualquier otro framework que facilite la programación de la aplicación móvil.

Para la parte de recepción de los sistemas periféricos ya nombrados anteriormente se programó en lenguaje C una tarjeta de desarrollo que está monitoreando constantemente los dispositivos bajo su control.

En el desarrollo del proyecto fue necesaria la incorporación de nuevos sistemas con el fin de cumplir a cabalidad con los objetivos mencionados por lo que es necesario conocer acerca de estos sistemas agregados al proyecto.

A continuación se presentan los diferentes conceptos tenidos en cuenta para el desarrollo del proyecto.

1.4.1. Java

Java es un lenguaje de desarrollo de propósito general, una de las características más importantes es que los programas “ejecutables”, creados por el compilador de Java, son independientes de la arquitectura. Se ejecutan indistintamente en una gran variedad de equipos con diferentes microprocesadores y sistemas operativos. [2]

(16)

16

· Permite escribir Applets (pequeños programas que se insertan en una página HTML) y se ejecutan en el ordenador local.

· Se pueden escribir aplicaciones para intrarredes, aplicaciones cliente/servidor, aplicaciones distribuidas en redes locales y en Internet.

· Es fácil de aprender y está bien estructurado.

· Las aplicaciones son fiables. Puede controlarse su seguridad frente al acceso a recursos del sistema y es capaz de gestionar permisos y criptografía. La seguridad frente a virus a través de redes locales e Internet está garantizada. Aunque al igual que ha ocurrido con otras tecnologías y aplicaciones, se han descubierto, y posteriormente subsanado, “agujeros” en la seguridad de Java.

El surgimiento de Internet y de la Web mundial ha transformado de manera radical la computación. Hace solamente unos años el panorama cibernético estaba dominado por las computadoras personales autónomas, pero en la actualidad casi todas las computadoras están conectadas a Internet; esta a su vez se ha transformado ofreciendo originalmente una forma conveniente de compartir archivos e información, hoy en día un universo de los sistemas distribuidos. Estos cambios han dado paso a diversos sistemas de programación como Java, el cual hoy predomina el Internet pero además revoluciono la programación. [3]

Es por esa dominación en la Internet que ha hecho que Android opte a Java como su lenguaje básico de programación y el que hoy se comiencen proyectos pensados en la interconexión de sistemas sentados en la misma base de programación Java.

1.4.2. Android

(17)

17

del código fuente de Android bajo la licencia de Software Apache, una licencia de software libre y de código abierto a cualquier desarrollador. [4]

Ahora observando las características de lo que es Android junto con las de Java, es fácil detectar uno de los motivos por lo que se decidió a trabajar en unión de estos dos productos de software. Android como sistema operativo libre facilita mucho más las cosas a la hora de agregar aplicaciones y se evitan molestias con papeleos de licencias y demás permisos a los que se debe acceder a cambio de un costo monetario. Además de la versatilidad de Java, que es común en el mundo de las tecnologías iba a facilitar la distribución y compatibilidad con otros equipos para próximas versiones [11].

Características básicas que se destacan en Android son su capacidad de almacenar información, el soporte de conectividad con GSM/EDGE, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, y WiMAX; Navegador Web, soporte multitouch, multitarea y Flash entre otras características que hacen notar su versatilidad a la hora de elaborar aplicaciones móviles [21].

Figura 1 Diversas capas que componen el Sistema Operativo Android.

(18)

18

1.4.3. HTML

El HyperText Markup Language (HTML) es el lenguaje para la WWW (World Wide

Web) publicado como plataforma abierta. Su primera versión fue publicada en 1991 y en 1993 publicaron HTML 4.01 que actualmente aun es la más utilizada pese al lanzamiento de la última versión HTML 5.0 [13].

HTML es una de las tecnologías básicas que permite construir páginas Web proveyendo la estructura básica de estas. Este lenguaje además de permitir publicar documentos con encabezados, textos, tablas, listas y fotos, en línea. También permite recuperar información vía hipertexto y links a través de un clic sobre un botón o enlace implementado en la página Web [14].

1.4.4. PhoneGapp

Es una plataforma de código libre para construir aplicaciones móviles usando HTML5, JavaScript y CSS. PhoneGapp nace por la variedad de diferentes frameworks para cada dispositivo iPhone, Android o Windows a la hora de elaborar una aplicación móvil. La solución propuesta por esta plataforma está orientada a usar tecnologías Web para el desarrollo de las aplicaciones soportada por los dispositivos móviles [17].

Esta plataforma permite tener acceso al acelerómetro, cámara, contactos, almacenamiento, redes, micrófonos y demás servicios que sean utilizados por una aplicación en un dispositivo móvil. Además tiene una buena posibilidad de soportar funciones de frameworks como JQuery Mobile para desarrollar una interfaz gráfica más agradable al usuario [27].

1.4.5. JavaScript

JavaScript es un lenguaje de programación para la Web que no necesita ser compilado antes de empezar a ejecutarse ya que es interpretado por el cliente. Visto desde el contexto de los navegadores Web, JavaScript se refiere a un código que se ejecuta desde el navegador cuando la página es descargada o responde a un evento de un usuario.

(19)

19

en la que se está ejecutando como por ejemplo un servidor; así se puede entender esta interactividad como una aplicación de software tradicional [15].

JavaScript está ligado de manera imprescindible en PhoneGap como mecanismo de programación de aplicación y manejo de los eventos por parte del usuario y del acceso a la Interfaz de Programación de Aplicaciones (API) nativa para cada dispositivo móvil que sea soportado por PhoneGap.

1.4.6. JSON

JSON (JavaScript Object Notation) es un formato adicional que surgió primero para la conexión de datos en Internet y es presentado como un subconjunto de la notación literal para representar cadenas, objetos o arreglos en JavaScript.

JSON nace de la necesidad de comunicar un equipo remoto y tener que seleccionar un formato de datos y protocolos de intercambio que sea compatible no solo con XML si no también con otras plataformas como por ejemplo Ajax, para quien no es muy adecuado utilizar el XML. Lo que la hace tan adecuada a aplicaciones Web Ajax es que cuenta de una amplia disponibilidad de implementaciones, junto con una forma de escritura legible por los humanos independiente de la plataforma.

Adicional a esto, JSON no se limita en cualquier escenario en el que las aplicaciones necesitan intercambiar información estructurada en forma de texto [16].

De manera práctica, JSON se ve como un formato de intercambio de datos en texto ligero, que trabaja como un lenguaje independiente pero utilizando una sintaxis similar a la de JavaScript.

1.4.7. JQUERY Mobile

(20)

20

El marco es compatible con la mayoría de las aplicaciones de escritorio y móviles como iOS, Android, Blackberry, Palm WebOS, Nokia, Opera Móvil y todos los navegadores de escritorio actuales.

Se caracteriza con por su rapidez debido a su poco peso (20Kb comprimido). Pero su mayor ventaja frente a otras herramientas de desarrollo es el poder inicializar automáticamente el uso de atributos HTML5 en el código de HTML para actuar como disparador e iniciar automáticamente todos los widgets JQUERY Mobile que están disponibles la página [18].

1.4.8. CSS

En complemento con HTML, Cascading Style Sheets es un lenguaje para describir el estilo de una página Web, incluyendo colores tamaños de fuente, disposición en pantalla, y entornos gráficos. Además se encarga de adaptar la presentación de la página según el dispositivo desde el cual se acceda como lo es su ancho y largo. Aunque va muy de la mano con HTML, CSS es independiente y puede ser usado en cualquier lenguaje de marcado basado en XML. El hecho de que el funcionamiento de CSS no este directamente relacionado con HTML facilita el mantenimiento de los sitios y el compartir estilos a través de páginas. [14]

1.4.9. Arduino

Arduino es una plataforma de electrónica open hardware para la creación de prototipos basada en software y hardware flexibles para propósito general. Se creó para ser usada por artistas, diseñadores, aficionados y cualquiera persona interesada en crear entornos u objetos interactivos que pudieran controlasen electrónicamente.

Arduino puede tomar información del entorno a través de su interfaz de entrada que permite interconectar toda una gama de sensores y puede interactuar con todo aquello que le rodea controlando luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en C y C++) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos desarrollados con Arduino pueden ejecutarse sin necesidad de conectarse permanentemente a una computadora o también ofrecen la posibilidad de hacerlo y comunicarse con diferentes tipos de software (p.ej. Flash, Processing, MaxMSP).

(21)

21

referencia (CAD) están disponibles bajo una licencia abierta, así pues, se pueden adaptar a las necesidades del usuario. [6]

1.4.10. Lenguaje C

Su creación fue pensada para ser el lenguaje de los sistemas operativos UNIX y hoy día es bien conocido por su características distintivas que lo clasifican en un leguaje de nivel medio que combina elementos de lenguajes de alto nivel como lo son los tipos o bloques entre otros con la funcionalidad de los ensambladores. C es un lenguaje semi-estructurado por que no permite declarar procedimientos o funciones dentro de funciones, aunque cuente con algunas características de lenguajes netamente estructurados como lo es tener dos formas de escritura del código, ya sea con funciones independientes o por medio de bloques. Además de esto, dispone de sentencias para la construcciones de sistemas de control como por el ejemplo while, do-while o for [24].

1.4.11. Servidor

Un servidor es un computador dedicado a proveer datos a otros computadores dentro de un área local (LAN) o en la red de Internet (WAN).

Existen distintos tipos de servidores entre los que se destacan los Servidores Web, los Mails Server y File Server. Cada uno de estos corre software específicos de acuerdo a su propósito. Por ejemplo un servidor Web puede correr software programados sobre HTML.

Mientras en un servidor es de suma importancia el software con que sea programado, el hardware no lo es. De hecho los computadores estacionarios regularmente pueden ser usados como servidores al instalar el software adecuado. El tipo de hardware para implementar un servidor es importante a la hora de determinar el tipo de archivos y datos que se van a compartir en la Web con otros computadores, y las acciones que debe ejecutar dicho servidor para atender las necesidades establecidas en su programación [19].

1.4.12. Linux

(22)

22

importancia que sobresalen: es libre, esto significa que nadie debe pagar ninguna licencia por el uso de éste ni por el de desarrollar aplicaciones bajo este software; la otra es que este sistema operativo ofrece el código fuente.

Linux está conformado básicamente por el kernel (Núcleo del sistema) y un conjunto de programas (Librerías o Bibliotecas) quienes posibilitan el uso del sistema operativo de forma adecuada. Estos programas en su gran parte han sido desarrolladas por el proyecto GNU (General Public License) quienes han hecho la mayor parte de gestión para el desarrollo de Linux siempre dejando accesible el código fuente para modificaciones futuras cumpliendo con sus principios de software libre.

Día a día se desarrollan aplicaciones disponibles para Linux, pero más que estas aplicaciones son muchas las personas alrededor del mundo que contribuyen al desarrollo del Sistema Operativo como tal, ofreciendo a este muchas mejoras a diario.

Dentro de las características más importantes de Linux es que éste es multitarea, lo que permite ejecutar varios programas al mismo tiempo, siendo en Linux el procesador el encargado de ceder el tiempo de microprocesador. Además del multiusuario donde la misma maquina soporta muchos usuarios al mismo tiempo, cuenta con soporte de multiplataforma, multiprocesador, protección de memoria entre procesos, memoria virtual y muchas otras características que compiten directamente con Sistemas Operativos comerciales como Microsoft Windows [20].

1.4.13. Apache HTTP

Como la gran mayoría que se utiliza en el desarrollo del proyecto, Apache también es Open Source. El servidor Apache HTTP trae consigo un archivo instalado configurado para que funciones sin necesidad de ser modificado en la mayor parte de los casos.

(23)

23

En la última versión de este servidor Web, se incluyen grandes mejoras con respecto a su anterior versión que valen la pena ser resaltadas como el soporte IPV6 (Ultimo formato de direcciones IP), sus directrices son más simplificadas y una función de respuesta a errores en diversos idiomas, permitiendo entregar las páginas de error en varios idiomas [28].

1.4.14. PHP

PHP (Hypertext Preprocessor) es un lenguaje de código abierto utilizado para el desarrollo especialmente de páginas Web incrustándose en HTML. La característica principal de PHP es la forma en que envía respuesta a un cliente, e impide que este último pueda determinar que código que producido le resultado recibido.

El servidor Web puede ser configurado para procesar todos los archivos con PHP y así evitar que los usuarios sepan la lógica del servidor.

PHP se incrusta en HTML y permite elaborar una lógica solida sin necesidad de usar una gran cantidad de comandos como en el caso del lenguaje C [29].

1.4.15. Cámaras IP

Una Cámara IP (también conocidas como cámaras Web o de Red) son videocámaras especialmente diseñadas para enviar las señales (video, y en algunos casos audio) a través de Internet desde un explorador (por ejemplo el Internet Explorer o algún otro navegador) a través de un concentrador (un HUB o un SWITCH) en una Red Local (LAN).

En las cámaras IP pueden integrarse aplicaciones como detección de movimiento (incluso el envío de correo electrónico si detectan movimiento), grabación de imágenes o secuencias en equipos informáticos (tanto en una red local o en una red externa (WAN), de manera que se pueda comprobar por qué ha saltado la detección de movimiento y se graben imágenes de lo sucedido. [5]

1.4.16. Lenguaje Unificado de Modelado

(24)

24

se incluyen aspectos conceptuales, funciones y puntos concretos de todo el sistema independiente del lenguaje de programación.

UML no puede ser comparada con una programación estructurada ya que esta no es un tipo de programación, tan solo permite hacer un diagrama esquemático de un requerimiento. Lo que sí se puede dar por sentado es que la programación orientada a objetos, programación utilizada por Java, es un complemento perfecto para UML.

UML cuenta con distintos tipos de diagramas en los que se muestran diferentes aspectos del sistema con el fin de hacer más legible el sistema en su totalidad [22].

1.4.16.1. Requerimientos Funcionales

No son más que declaraciones previas a la elaboración de un diseño de un sistema sobre el comportamiento a entradas particulares o cómo reaccionar a situaciones específicas.

Existen dos tipos de requerimientos, los funcionales y los no funcionales.

Requerimientos Funcionales: Declara que acciones realizara el sistema

específicamente al recibir entradas ya predestinadas. Estas acciones definen el comportamiento del software (cálculos o detalles técnicos).

Estos requerimientos se caracterizan por llevar nombres de Verbos [23].

Requerimientos No Funcionales: Estos requerimientos establecen las limitaciones

del sistema y así mismo limitan la elección de la solución para el diseño del mismo. La mayoría de estos requerimientos van ligados a la calidad del sistema. Desempeño, escalabilidad, facilidad de uso, facilidad de pruebas, seguridad, validación, flexibilidad, instalación y operatividad son unos de los requerimientos no funcionales más comunes en un sistema [23].

1.4.16.2. Diagrama de Clases

(25)

25

relaciona un objeto del otro, la herencia de propiedades y las operaciones que se llevan a cabo en una interfaz gráfica [22].

1.4.16.3. Diagrama de Secuencia

Más específicamente que el diagrama de clases, el diagrama de secuencia se encarga de modelar la interacción entre los objetos de un sistema a través del tiempo. En este diagrama se muestran detalles de implementación del escenario incluyendo los objetos y clases necesarias para ser implementado.

Este diagrama es modelado para cada caso de uso del sistema y con esto determinar que objetos son necesarios en la implementación de un escenario.

La estructura de un diagrama de secuencia se dibuja de forma cronológica desde la parte superior a la parte inferior y la distribución horizontal de los objetos es arbitraria. [22].

1.4.16.4. Diagrama de Despliegue

El diagrama de despliegue tiene como función principal modelar el hardware que utiliza el sistema y mostrar la relación entre cada uno de sus componentes. Ocasionalmente e este tipo de diagramas se especifica la topología del hardware en el que se monta el sistema y aunque UML no tiene dentro de sus funciones características la especificación de hardware, se modelan varios aspectos de este con el fin de que el ingeniero de software pueda tener clara la plataforma sobre la cual trabaja.

(26)

26

1.5. Estado del Arte

La cantidad y diversidad en estilos y precios de los sistemas de seguridad es inmensa y es posible encontrar muchos de estos. Según la Superintendencia de Vigilancia Privada el mayor porcentaje en los sistemas de vigilancia se lo llevan los guardas armados con un 45% a nivel mundial, seguido por los servicios de tecnología con el 30,05% [12], pero aun con el segundo porcentaje más algo de la seguridad, no existen consolidaciones de seguridad para la interacción de dispositivos móviles y acceso domótico desde este, por medio de la Web. Aun se ha dado a la tarea de ofrecer un sistema que pueda estar en un dispositivo móvil sin necesidad de pensar en costos muy elevados sino más bien costos los cuales las personas pueden pensar fácilmente en elegir uno como estos, que a diferencia de los sistemas cotidianos con valores agregados como lo es el acceso a la domótica desde el celular. Para este acceso domótico vía celular, se han presentado proyectos de aficionados en la web, como la “Casa domótica con Arduino y Android” donde muestran de qué manera se puede ejercer el manejo de la electrónica por medio de un Smartphone con un sistema sencillo en arduino. [8]

Algunas alternativas que se encuentran en la Web, son proyectos simples, donde se ve la programación de un Arduino Ethernet con un navegador de Internet, y se encienden algunos leds, por medio de la creación de una página Web muy sencilla y donde se verifica la simplicidad de la programación.[9]

Por otra parte, el otro tipo de soluciones en las que tiene que ver la conexión a la Web, la ofrece Embedded Wireless Labs, un fabricante de una plataforma de monitorización de pacientes a distancia y un nuevo sistema móvil de respuesta a emergencias personales, ha firmado un acuerdo exclusivo con AT&T para añadir conectividad 4G LTE para sus productos. AT&T ofrecerá el servicio móvil de datos ultrarrápida para la monitorización continua de las personas mayores, las personas con enfermedades crónicas y otras recientemente dados de alta de la atención hospitalaria, independientemente de si los pacientes está en casa o fuera de casa. [10]

(27)

27

1.6. Estudio y Propuesta de Solución

1.6.1. Estudios previos

Dado a los diferentes tipos de programación y los varios sistemas embebidos existentes para controlar dispositivos periféricos, se realizó un estudio con respecto a la forma de integrar los sistemas utilizados para desarrollar exitosamente el prototipo objeto de esta propuesta.

Como primera medida, se pensó en utilizar como centro de mando un computador estacionario que estuviera encendido siempre junto al sistema de seguridad y que obtuviera las señales de los periféricos por medio de una tarjeta de adquisición. Para lo cual se debía estudiar qué tipo de tarjeta utilizar, pero para antes de haber entrado en dicho estudio, se evaluó el hecho de tener que utilizar un ordenador de mesa siempre encendido que hiciera las veces de servidor, para que el sistema funcionara, y entonces se buscó otro tipo de forma de monitorear las señales y enviarlas dado a la poca eficiencia de este sistema bajo la utilización no óptima.

Por este aspecto, se planteó la creación de un servidor a partir de tarjetas madres que operen a base de Microcontroladores en el cual se logre establecer conexión constante en la nube (Internet) y el consumo de energía sea mínimo con un tamaño ocupado por la totalidad del sistema reducido al máximo.

La optimización de la parte para adquirir las señales periféricas llegó a partir de la implementación del servidor a partir de las placas arduino que cuentan con entradas y salidas analógicas/digitales que dependiendo de la programación que se le implemente, envíe las señales de atención a la Web y sea atendida por el celular Smartphone vía Web.

El tipo de celular a utilizar debe dar soporte al sistema operativo Android, y la aplicación que se desarrolle depende de la versión del Android instalado. Con respecto a la programación de esta aplicación se utilizara Java debido a las ventajas que se describieron anteriormente en éste documento, aunque pueden existir variaciones por motivos de comunicación entre lenguajes que se utilizan en comunicación por Internet.

(28)

28

Para los sistemas periféricos se utiliza una cantonera eléctrica, dos sensores ultrasónicos que funcionan como sensores de proximidad y un relé para la activación de luces, los cuales son activados por medio de un driver de potencia que recibe las órdenes del arduino.

Por último el tipo de cámara para utilizar, es una cámara IP que facilita la conexión a la Web y solamente se implementa una interconexión del software de la cámara IP proveído por el fabricante con la aplicación desarrollada en Android.

1.6.2. Posibles mejoras futuras al sistema

Una estrategia pensada para una próxima versión de este mismo sistema y que puede ser desarrollada, parte del pensar en un punto donde el sistema eléctrico de la casa o el área urbana encargada de la energía donde está instalado el SD Seguridad Domótica, tenga fallas y toda la seguridad se apague y ya no haya forma de vigilancia. Entonces se puede pensar en energizar solamente el sistema de seguridad de la casa a partir de una batería, que se active por medio de un sistema de control cuando la energía del sitio falle.

1.6.3. Solución final

El diseño básico del sistema SD Seguridad Domótica, fue pensado en una comunicación directa y bidireccional entre Arduino Ethernet, tarjeta ubicada en el lugar de monitoreo, y la aplicación móvil, en la que arduino debe permanecer sondeando el estado de los sensores de movimiento una vez se pone en marcha el sistema y notificar al móvil si alguno se activa. Además recibir señales de mando para los periféricos demóticos a su cargo por parte de la aplicación móvil. De forma homologa la aplicación móvil debe monitorear la señal de activación de alguno de los sensores ubicados en el lugar de vigilancia (Activación de la alarma) y poder enviar señales que arduino interprete de manera correcta.

(29)

29

Viendo este inconveniente que no hace optima la solución planteada al comienzo del trabajo en búsqueda de lograr una conexión bidireccional entre Arduino y la aplicación móvil, se optó por implementar un código de respuesta en un servidor que va a servir como canal de comunicación entre los dos puntos de conexión trabajados. A esta solución se le atribuye un plus del proyecto, y es la posibilidad de en un futuro poder tener varios prototipos funcionando y conectados bajo el mismo servidor, cada uno con una cuenta diferente.

Así, se comienza por elegir la manera más óptima para elaborar la aplicación móvil y la forma de programación de arduino (Cliente Web).

Con la ayuda ofrecida por la implementación del servidor, se parte a busca las funciones específicas que debe cumplir cada uno de los tres sistemas ahora en operación. Siguiendo el orden de la Figura 2 donde se muestra una forma gráfica de todo el entorno del prototipo, se define la funcionalidad de Arduino, Servidor y Aplicación Móvil.

(30)

30

Arduino: Con la implementación de un servidor Web que sirve como puente entre

Android y Arduino, este último se encarga ahora de funcionar como un cliente el cual lee la información del archivo ofrecido por el servidor y toma decisiones a partir de esto, pero también puede escribir como cliente sobre el servidor para reportar un cambio en uno de los estados de los periféricos a su mando y de esta forma cumplir con la tarea correspondiente que debe hacer. Dentro del archivo que recibe del servidor llegan los valores que deben tener los periféricos provenientes de la aplicación móvil.

Servidor: Sobre este, se programa un software que permite escribir el estado de las variables que indican los valores lógicos que controlan los periféricos del sistema en el lugar de vigilancia. Por esto, el servidor debe permitir que Arduino y Android sobrescriban en él cada vez que sea necesario y puedan leer permanentemente el estado de las viables de control.

(31)

31

1.7 Producto a Entregar

Se entrega un software instalado en un celular con sistema operativo Android que cuente con paquete de datos ilimitado (Acceso a Internet) por medio del cual se visualizan las imágenes que la cámara de vigilancia este tomando. Este software es el que envía las señales de mando a arduino por vía Internet. Se entrega una cámara de vigilancia de conexión IP con un software de conexión propio de la cámara, que también se instala en el celular, una tarjeta de desarrollo de mando Arduino, y una cantonera eléctrica instalada en un prototipo de puerta para hacer más real la simulación del sistema. Los sensores de ultrasonido ubicados en el centro de la maqueta en el que van distribuidos todos los componentes anteriormente ya nombrados. En la misma maqueta se instala un sistema de conexión una bombilla, que este activado o desactivado según la orden de la tarjeta madre.

(32)

32

(33)

33

2- DISEÑO Y DESARROLLO DEL PROTOTIPO

Tomando el máximo provecho posible del uso de un servidor como puente de comunicación entre arduino y Android, se destacan dos virtudes primordiales que aventajan el uso de este dentro de todo el sistema.

Debido a que el control del sistema en el lugar de monitoreo depende de variables de solo dos estados activo/inactivo, y la aplicación al iniciarse debe comenzar con mostrar el estado de dichas variables, fue programado en el servidor un archivo donde están declaradas las variables (lamp, door, alarm, report) con un estado inicial declarado al momento de iniciar el servidor, y las cuales cambian sus valores atendiendo a la orden enviada ya sea desde la aplicación de Android o desde la tarjeta arduino por medio del método GET, cuyo uso es explicado en la sección siguiente donde se muestra la programación del servidor.

Esta posibilidad de tener el valor de las variables de monitoreo en el servidor, y que solo sea necesario por parte de arduino o Android leer o reportar, es la primer ventaja de tener el servidor dentro del sistema completo de SD Seguridad Domótica.

(34)

34

2.1. Programación del Servidor Administrador de Conexión

El servidor utilizado cuenta con un sistema operativo Linux, corriendo apache Web Server con PHP, del cual se pueden ver sus características físicas en el Anexo E. En este servidor está cargado el archivo PHP en una cuenta creada específicamente para el proyecto SD Seguridad Domótica.

Como puede atender múltiples configuraciones, en este se pueden crear archivos de configuración a modo de cuentas para diferentes usuarios y así atender varias necesidades de acceso de información a la vez. En este caso se creó una configuración identificada con el número de celular al que se va a prestar el servicio (SD) y siempre será necesario acceder directamente al servidor por la ruta GET identificando esta configuración.

Dentro de la cuenta creada en el servidor está el archivo PHP que contiene la lógica de estados de las variables dentro de un archivo JSON ya que facilita la forma de lectura y reporte de cambios por su versatilidad a la hora de ver diferentes formatos.

El método GET es un método utilizado para el paso de variables de páginas Web a otras por medio de la URL. Este método consta de especificar la ruta exacta donde se encuentra el archivo que contiene la variable, asignando el valor que se desea que tenga, tal cual como se muestra a continuación.

(http://200.21.232.180/sd/process.php?id=3162823684&alarm=1)

protocolo://dirección_ip/cuenta/script.php?id=var_configuración&var_alarma=valor

En la dirección URL anterior, se observa la ruta por la que debe ir arduino o Android para cambiar el estado de la variable alarm en este caso. Yendo primero la dirección IP publica del servidor, luego la cuenta en el servidor a la que se quiere ir, seguida del archivo PHP (process.php) y al finalizar un id para garantizar que sea el archivo correcto con la variable y su valor.

(35)

35

2.2. Control domótico y conexión a la Web con Arduino

En esta parte del sistema está especificado cada uno de los componentes del diseño para el control de los periféricos ya mencionados antes en este libro. A continuación se muestran las características técnicas de cada uno de los sensores y activadores de la lámpara o cantonera, junto con cualquier driver de potencia que se necesite para dicha activación. Además de las especificaciones técnicas de alimentación de arduino y la cámara IP según los fabricantes,

El funcionamiento del sistema, inicia con una lectura de arduino del estado de las variables que hay en el servidor, así con un ‘1’ lógico lo entiende como activación y el ‘0’ lógico como una desactivación.

El diseño de la programación de arduino viene dado a partir de la decisión de establecerlo como un cliente Web, quien va directamente al servidor a través del protocolo HTTP y utilizando el método GET, lee la información que tenga y la trae a su lógica; la información que trae Arduino es un archivo JSON que específica nombres de variables y valores lógicos asociados a cada una de ellas.

Una vez establecida la comunicación de arduino con el servidor, se obtiene un mensaje el cual incluye las características del encabezado del protocolo utilizado, el código de estado de HTTP, información específica de las características del servidor y la información requerida si la conexión fue exitosa. Esta información de protocolo debe ser retirada y dejar solamente lo que necesita arduino para tomar las decisiones respectivas según su lógica.

Luego de conocer el valor de las variables del servidor arduino envía la señal de encendido o apagado a la bombilla, al igual que con la cantonera. Esta labor es realizada dentro de un ciclo infinito mientras este encendido arduino. Adicional a la lectura de estado de las variables de la lámpara y la bombilla, debe sondear dentro del mismo ciclo el valor de proximidad que dan los sensores para dado el caso en que sea menor a la distancia programada, notifique al servidor de este hecho. De esta manera esas son las dos funciones primordiales que debe hacer Arduino Leer/Notificar, la forma en que lleve a cabo estas dos funciones son detalladas cuando se hable acerca de su lógica.

(36)

36

2.2.1. Características de los dispositivos

Arduino: La tarjeta de desarrollo encargada de tomar las decisiones dentro

del sistema según lo que corresponda a su lógica es Arduino Ethernet, la cual viene con un módulo de conexión a Internet, permitiendo lograr uno de los objetivos al poder conectar el sistema de mando domótico a la nube para poder ser vigilado.

Figura 4 Arduino Ethernet.

Tomado de www.arduino.cc/en/Main/ArduinoBoardEthernet

Arduino Ethernet está diseñada bajo un microprocesador ATmega328 y tiene 14 pines que pueden ser configurados como entradas o salidas digitales y 6 entradas analógicas, con un cristal de 16 MHz, una conexión RJ45 un conector de alimentación y un botón de reinicio. Adicionalmente tiene un lector de tarjetas microSD que puede ser utilizada para almacenar información y ser leída en la red.

(37)

37

Tabla 1. Resumen de características físicas Arduino Ethernet.

Microcontroller ATmega328

Operating Voltage 5V

Input Voltage Plug (recommended) 7-12V

Input Voltage Plug (limits) 6-20V

Input Voltage PoE (limits) 36-57V

Digital I/O Pins 14 (of which 4 provide PWM output)

Arduino Pins reserved:

10 to 13 used for SPI

4 used for SD card

2 W5100 interrupt (when bridged)

Analog Input Pins 6

DC Current per I/O Pin 40 mA

DC Current for 3.3V Pin 50 mA

Flash Memory 32 KB (ATmega328) of which 0.5 KB used

by bootloader

SRAM 2 KB (ATmega328)

EEPROM 1 KB (ATmega328)

Clock Speed 16 MHz

W5100 TCP/IP Embedded Ethernet Controller

Power Over Ethernet ready Magnetic Jack

Micro SD card, with active voltage translators

Tomado de http://arduino.cc/en/Main/ArduinoBoardEthernet

En la maqueta se alimentó a arduino con un adaptador de 15 VDC a 1A y que a su vez alimenta el router de la red LAN y el driver de potencia.

Sensor de Ultrasonido: Los sensores ultrasónicos son la solución más

(38)

38

En el mercado existe una gran variedad de sensores de ultrasonido; pero existe una librería desarrollada para Arduino, diseñada para el sensor HC–SR04, el cual es uno de los más utilizados para proyectos de robótica y domótica actualmente por su simplicidad.

Figura 5 Sensor de Ultrasonido HC-SR04.

Tomada de http://www.ezdenki.com/ultrasonic.php

El sensor HC-SR04 sensa la distancia entre él y un objeto, por medio de la diferencia de tiempo entre la transmisión y la recepción de pulsos que envía. Una de las ventajas es que detecta distancias de forma no invasiva o sin ningún tipo de contacto con otro objeto u obstáculo.

El HC-SR004 funciona emitiendo 8 pulsos a una frecuencia de 40 KHz al momento que se le indique por el pin Trig, a la espera de que regresen; a partir de estos pulsos determinar la distancia por medio de la diferencia de tiempo entre la transmisión y la recepción, arrojando a su salida un ancho de pulso dependiendo de dicha diferencia.

La forma de calcular la distancia censada está dada por la formula (1) [26].

( ) ( )

(39)

39

El sensor se cuenta con 4 pines distribuidos en Vcc (Voltaje de alimentación), Trig (Señal de envío para los pulsos), Echo (Se recibe el ancho del pulso de la diferencia de tiempos), GND (Tierra del módulo o sensor).

Las características técnicas de mayor relevancia para tener en cuenta a la hora de la implementación del sensor son:

1. Fuente de alimentación :5V DC

2. Angulo efectivo: <15°

3. Distancia efectiva de medición : 2cm – 500 cm

4. Resolución : 0.3 cm

En el Anexo A, se muestra la hoja de datos del fabricante del HC-SR04.

2.2.2. Lógica de Arduino

(40)

40

Figura 6. Diagrama de flujo de la lógica interna de arduino.

Atendiendo a la explicación de la forma en que fue realizada la lógica programada en arduino, la Figura 6 ofrece una manera generalizada del procedimiento.

Los programas hechos en el compilador de arduino cumplen con una estructura básica de 3 bloques mínimo o 4 si se utilizan funciones para hacerlo más legible.

(41)

41

llamado de 3 librerías, el cual se hace efectivo con la directiva #include< >, allí se llaman las librerías SPI, Ethernet y Ultrasonic. SPI es una librería necesaria para Ethernet, la cual tiene dentro todos los parámetros necesarios para que Arduino pueda ser programado como servidor, cliente o de otra manera que necesite conexión a la Web. Ultrasonic está desarrollada para los sensores HC-SR04, la cual permite configurar la conexión de dicho sensor y poder con una sola línea de código obtener la distancia que está sensando en ese momento.

Luego de esto viene la configuración de variables que van a ser utilizadas de las librerías y las que se van a utilizar dentro de la lógica del programa para atender a las diferentes funciones que se deben cumplir. Es así como dentro de este primer bloque se asignan las direcciones IP del servidor a leer, la IP de arduino dentro de la red a la que pertenece (en este caso a una LAN), el modo en que se va a utilizar Arduino (Cliente), los pines destinados para enviar y recibir los pulsos de los sensores a utilizar y las diferentes variables encargadas de determinar que las decisiones que encendido o apagado de los periféricos. Por simetría con la programación del servidor, en arduino se declararon las variables con el mismo nombre que en este.

El segundo bloque al que corresponde la programación es a la inicialización de los servicios de Arduino como la activación del puerto serial, por medio del que es posible visualizar el valor de variables o las lecturas que esté haciendo arduino en un instante determinado. Así como inicializar la tarjeta arduino con su respectiva dirección IP y MAC. Este bloque está delimitado dentro de la función setup.

(42)

42

Cuando se visualizan todos los caracteres obtenidos como se muestra en la Figura 7. Arduino recibe todo el protocolo que encierra al código PHP programado sobre el servidor junto con el archivo JSON en el. Lo que sigue entonces es eliminar el encabezado dejando solamente el JSON que se muestra a continuación.

{"alarm":"0","report":"0","lamp":"1","door":"0","delay":"0"}

Figura 7. Encabezado del archivo PHP programado en el servidor

Fotografía tomada de la pantalla del monitor serial del compilador de arduino

Para poder eliminar el encabezado se utiliza la función endsWith, la cual va a tomar solamente los caracteres concatenados luego de una encontrar una palabra establecida en sus parámetros. De esta manera, sabiendo que el encabezado siempre va a ser el mismo en el archivo del servidor, es eliminado y se trabaja todo en una variable tipo String, la tendrá la forma del JSON proveído por el servidor.

(43)

43

tomen valores diferentes a los caracteres ‘1’ o ‘0’ que son los que siempre van a ser asignados.

El cuarto bloque que en ocasiones no es utilizado en otros programas, es el bloque donde se declaran funciones completas, que luego serán llamadas dentro del ciclo infinito del loop tantas veces como sean necesarias. En el caso de SD-Seguridad Domótica existen tres funciones que corresponden a las decisiones que se deben tomar luego de haber leído los datos que llegan del servidor o el registro de distancia de los sensores de ultrasonido.

La primer función es la función de alarma (), la cual si la distancia medida es menor a la una establecida en su código (en este caso 10cm), debe conectar el cliente arduino al servidor y por medio del método GET indicar que el valor de variable alarm va a ser igual a 1 (alarm = 1).

Las funciones controlamp() y controldoor() controlan las salidas digitales de arduino según el caracter ‘1’ o ‘0’ que haya sido asignado a las variables alarm o door en el momento de lectura del servidor.

2.2.3. Activación de los sistemas periféricos

Una vez estuvo concluido el software encargado de arduino y se observó que respondía correctamente a los cambios de las variables, se pretendió activar los relés encargados de cambiar el estado de la lámpara o la puerta sin considerar el consumo de corriente de estos.

Lo que sucedió fue que cuando se intentaba activar uno de ellos, el nivel del voltaje se caía hasta llegar a cero independientemente del valor que debiera tener. Las salidas digitales de arduino entienden que cuando deben estar en alto, arrojan 5V y 0V cuando están activas en bajo. Pero dada la baja resistencia de los relés, el consumo de corriente por cada uno de ellos es tan alto que arduino no puede suplirlo, por lo que fue necesario diseñar un driver de potencia que a partir de la señal entregada por arduino pudiera activar o desactivar los relés de conmutación.

(44)

44

Para aprovechar los 15 VDC que entrega el adaptador con que se alimenta arduino, fue diseñado un comparador a base de amplificadores operacionales el cual a partir de un voltaje de referencia entrega o un valor cercano a su voltaje de alimentación o entrega un nivel de tierra (0 voltios). Su alta impedancia a la entrada garantiza un nivel bajo de corriente requerido a su entrada por lo que de esta forma se evita la perdida de la señal de activación. Adicionalmente es necesario implementar un transistor en conmutación que se encargue se activar el relé dado a que el amplificador operacional no entrega la corriente suficiente para hacerlo, así el transistor se convierte en un switchces entre el VCC del adaptador y a tierra de todo el circuito como se muestra en la Figura 8.

Para el correcto funcionamiento del circuito es necesario unir todos niveles de tierra para que este sea el mismo tanto en arduino como en el driver de potencia.

Figura 8. Driver de potencia para la activación de los relés.

Diagrama hecho en Proteus 7.0

Este circuito es implementado dos veces para activar la bombilla y la cantonera eléctrica. El comparador es implementado con un LM339 del cual se puede observar su datasheet en la referencia [30] en la sección de referencias bibliográficas. En este se aprecia una de las recomendaciones del fabricante y es poner una resistencia de 3.3K ohm como resistencia de pull up.

(45)

45

referencia de 2V con el fin de dar un margen de garantía para el voltaje de activación. Dado el caso en que por motivos de corriente no sea cero sino cercano a cero, o no llegue hasta cinco cuando este activada en alto la salida de arduino.

A partir de la ecuación de un divisor de voltaje, es posible calcular el valor que debe tener el resistor R3, asumiendo un voltaje de referencia de 2V y una valor de 1k ohm para el resistor R4

(2)

Buscando el valor comercial más cercano para R3, se elige ponerlo de 6,8K ohm. El montaje de este circuito fue hecho en una baquela universal viendo su sencillez y al no ser necesario el diseño de un impreso propio para el circuito, quedando claro que al momento de producirse el sistema de manera comercial, no sería de mayor dificultad elaborar el diseño del impreso para dicho circuito.

(46)

46

2.2.4. Diagrama de conexiones

A continuación, las siguientes series de figuras muestran las conexiones implementadas tanto en la maqueta del prototipo como en el circuito de mando conformado por arduino y el driver de potencia. Así como la forma de conectar la cámara IP y arduino al router.

(47)

47

Figura 10. Diagrama de conexión de arduino a sus periféricos.

Figura 11. Conexión del router a la cámara y arduino (Distribución de Internet)

(48)

48

2.3. Software de Aplicación Android

Para el desarrollo de la aplicación prototipo en Android para el dispositivo móvil se exploraron dos posibilidades, la primera fue desarrollar la aplicación utilizando un Framework de desarrollo de Adobe denominado PhoneGap el cual permite diseñar la aplicación utilizando tecnologías Web como los son HTML, CSS, JavaScript, jQuery Mobile y Cordova que es el componente basado en Android que ofrece PhoneGap para acceder a los diferentes componentes de software y hardware del teléfono.

2.3.1. Desarrollo en HTML

El código en HTML requerido para el desarrollo de la interfaz gráfica de la aplicación fue estandarizado con HTML versión 5, lo cual permitió organizarlo utilizando composiciones de Jquery Mobile utilizando el atributo data-role para las etiquetas HTML div (division or section) que presentará al usuario ya sea el contenido principal y el listado que enlazará tanto al contenido de las página de configuración como el de los créditos de la aplicación.

A continuación aparece el formato base de la composición del documento, resaltando los componentes más importantes en negrilla, como la referencia de las librerías de Jquery Mobile y sus documentos de estilo asociados; asimismo las tres secciones definidas para la interfaz gráfica.

<!DOCTYPE HTML>

<html>

<head>

<link rel="stylesheet"

href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />

<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> </head>

<body onload="init()" id="stage" class="theme">

(49)

49

<ul data-role="listview">

<lidata-icon="gear"><a href="#config">Configuraci&oacute;n</a></li>

<lidata-icon="info"><a href="#credits">Cr&eacute;ditos</a></li>

</ul>

</div>

</div>

<div data-role="page" id="config"> </div>

<div data-role="page" id="credits"> </div>

</body>

</html>

2.3.2. Desarrollo en CSS

Las necesidades de estilo son provistas por el documento de estilo de Jquery Mobile, solo se hizo necesario agregar la siguiente directiva de CSS para propósito del aspecto estético y que la interfaz gráfica se ajustara a la pantalla del dispositivo móvil.

@CHARSET "UTF-8";

#footer {

position: fixed; bottom: 0; width: 100%; }

(50)

50

2.3.3. Desarrollo de JQuery Mobile y JavaScript

El lenguaje de programación JavaScript provee la mayor funcionalidad en términos de la interacción del usuario y la lógica de la aplicación; en primera instancia PhoneGap provee un mecanismo de verificación del estado del dispositivo para evitar que el usuario interactúe con la interfaz gráfica antes de que el programa esté disponible, esto se debe a que PhoneGap realmente reemplaza la actividad típica de Android por un componente WebView el cual inserta la página HTML antes mencionada.

El código resaltado a continuación y su llamado correspondiente en la etiqueta BODY se encarga de garantizar que el dispositivo esté disponible al momento de hacerla disponible al usuario

<script>

function init() {

document.addEventListener("deviceready", startup, false);

}

function startup() {

console.log("("Seguridad Domotica Up");

}

</script>

</head>

<body onload="init()" id="stage" class="theme">

Adicionalmente las etiquetas de script permiten importar tanto la librería de Cordova proveída por PhoneGap como la librería desarrollada para este prototipo:

<script type="text/javascript" charset="utf-8" src= "js/cordova-2.7.0.js"></script>

<script type="text/javascript" charset="utf-8"

(51)

51

Aquí solo se discute la información relativa a la librería desarrollada para éste prototipo, la documentación sobre la librería de Cordova está disponible en la referencia bibliográfica [17].

Para vincular las interacciones de usuario con la lógica de programa en JavaScript se utilizó la notación de JQuery que permite identificar un elemento HTML a través de su identificador, por ejemplo: los botones principales presentados al usuario están definidos en el bloque de HTML que aparece a continuación con sus id resaltados.

Figura 12. Interfaz gráfica del usuario en PhoneGap.

(52)

52

<div data-role="fieldcontain" class="ui-hide-label">

<input type="button" value="Leer del servidor" id="buttonReadServerId">

<input type="button" value="Puerta" id="doorSwitchId"> <input type="button"value="Lampara" id="lampSwitchId"> <input type="button"value="Detener Alarma" id="alarmId"> </div>

Para la interacción con el programa JQuery permite añadir la lógica del mismo utilizando la siguiente notación

$('#id').eventp(function() {

nombreFuncion('identificador', null);

});

En el caso del control de la bombilla aparece así

$('#lampSwitchId').click(function() {

callNativeDefaultPlugin('lamp', null);

});

El caso es similar a los demás componentes, pero el problema principal que se deseaba atacar de proveer un mecanismo de control para Arduino no es posible con lo que provee PhoneGap por lo que fue necesario desarrollar un Plugin para esto en Java.

2.3.4. Desarrollo en Java

El lenguaje de programación nativo de Android es Java, del mismo modo PhoneGap lo que ofrece al programador es la posibilidad de desarrollar aplicaciones con tecnologías Web ocultando en parte la necesidad de desarrollar en Java pero incluso PhoneGap está desarrollado en Java y con Plugins nativos encapsulados en la librería de Cordova y que se acceden a través de JavaScript.

(53)

53 var ServicePlugin = {

callNativeDefaultFunction : function(success, fail, action, args) {

return cordova.exec(success, fail, "SeguridadDomotica", action, [ args ]);

}

};

function nativePluginErrorHandler(message) {

alert("ERROR: \r\n" + message);

}

function nativePluginSuccessHandler(message) {

alert("OK: \r\n" + message);

}

La primera función permite acceder a un documento de clase definido en Java llamado SeguridadDomotica mientas que las otras dos funciones manejan los mensajes de error o de exito.

La clase de Java llamada SeguridadDomotica hereda de CordovaPlugin lo cual le permite tener acceso a las mismas características de los demás Plugins de Cordova y adicionalmente se encarga de hacer lo siguiente:

A través del método public boolean execute(String action, JSONArray args,

CallbackContext callbackContext)

El cual filtra a través de la variable action, lo que el llamado desde Javascript espera que ejecute; siendo esta acciones:

Iniciar monitoreo (start)

Detener alarma (stop_alarm)

Iniciar app de Camara Web (camera)

Referencias

Documento similar

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

En un congrés, convé disposar d’un pla o full de ruta per tal de garantir la igualtat d’accés de totes les persones, tant ponents com participants.. Comunicació : Tant si el

Cada época, a través de la poesía, avanza sus propias reivindicaciones, y el lector de este libro, ante todo, descubrirá cuán fecunda es hoy en día la lectura de José

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

Es importante mencionar, que en los últimos 5 años, China ha venido mostrando un gran avance en la industria textil y de la confección, ingresando en mercados como Europa,

En conclusión, a partir de este acabado recorrido por las ideas centrales expuestas, el autor busca mostrar cómo para pensar en términos de la descolonialidad del poder es

Desde esa concepción, el Derecho es considerado como algo que puede ser completamente objetivado y observado sin ningún tipo de parti- cipación (puede ser casi «fotografiado»).

Durante toda su disertación, el ponente asigna una gran importan- cia al tema de las relaciones triangulares entre China, Estados Unidos y Latinoamérica, pues es algo, dice, que