Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de...

83

Transcript of Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de...

Page 1: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

  

Page 2: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

2  

  

AGRADECIMIENTOS

A mi familia por el apoyo brindado a largo de mi carrera y a un buen amigo Osvaldo quien me oriento a lo largo de la realización de este proyecto

terminal.

Page 3: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

3  

  

CONTENIDO

Página

Carátula……………………………………………………………………………………………….......1

Agradecimientos…………………………………………………………………………………………..2

Contenido……………………………………………………………………………………………... ….3

Lista de figuras…………………………………………………………………………………………….5

Lista de tablas……………………………………………………………………………………………..6

1 Antecedentes

1.1 Introducción…………………………………………………………………………………..7 1.2 Motivación y objetivos………………………………………………………………………..8 1.3 Estado del Arte………………………………………………………………………………..8

1.3.1 ¿Qué es la domótica?..…………………………………………………………….8 1.3.2 Historia……………...............................................................................................11 1.3.3 Aplicaciones……………………………………………………………………...12

1.4 Planteamiento del proyecto terminal…………………………………………………………14

2 Transmisor

2.1 Funciones…………………………………………………………………………………….17 2.2 Interfaz gráfica……………………………………………………………………………….19

2.2.1 Ventana de identificación………………………………………………………...20 2.2.2 Interfaz de usuario……………………………………………………………......22

2.3 Programación de envío……………………………………………………………………….23 2.3.1 Escribir un documento de texto simple…………………………………………..23 2.3.2 conexión y envío del archivo……………………………………………………..25

3 Receptor

3.1 Funciones a realizar…………………………………………………………………………..27 3.2 Recibir archivo……………………………………………………………………………….29 3.3 Leer texto…………………………………………………………………………………….30 3.4 Convertidor…………………………………………………………………………………..32

Page 4: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

4  

  

Página 4 Microcontrolador

4.1 PIC 16F84A………………………………………………………………………………....34

4.1.1 Programación del PIC4……………………………………………………35 4.1.1.1 Configuración del ensamblador………………………………….35 4.1.1.2 Configuración de entradas y salidas……………………………..36 4.1.1.3 Programa………………………………………………………... 37 4.1.2 Compilación del programa…………………………………………………37 4.1.3 Proceso de grabado………………………………………………………39

4.2 Etapa de acoplamiento……………………………………………………………………….39

4.3 Dispositivos a controlar……………………………………………………………………....40

5 Implementación……………………………………………………………………………………..42 6 Conclusiones………………………………………………………………………………………..48

ANEXOA.Historia del Internet y sus protocolos de comunicación…………………………………….49

ANEXOB.Cronología de actividades…………………………………………………………………..53

ANEXOC.Códigos fuentes de TX y RX.................................................................................................54

ANEXOD.Características del PIC 16F84A…………………………………………………………….71

ANEXO E.Diseño de maqueta…………………………………………………………………………..76

Bibliografía………………………………………………………………………………………………79

Page 5: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

5  

  

LISTA DE FIGURAS Página

Figura 1.1 Diagrama esquemático del proyecto propuesto…………………………………………..7 Figura 1.2 Representación simbólica de los sistemas domóticos……………………………………9 Figura 1.3 Clasificación a partir de la arquitectura domótica…..…...……………………………...10 Figura 1.4 Ejemplo de un sistema de cableado estructurado.………………………………………11 Figura 1.5 Características multiplataforma de un programa en Java…...…………………………..14 Figura 1.6 Diagrama a bloques de las etapas del proyecto…………………………………………15 Figura 2.1 Canal de comunicación………………………………………………………………….17 Figura 2.2 Funciones del transmisor………………………………………………………………..18 Figura 2.3 Lógica de programación………………………………………………………………...18 Figura 2.4 Diagrama de ejecución del programa del transmisor…………………………………....19 Figura 2.5 Ventana de identificación……………………………………………………………….20 Figura 2.6 Ejemplo de ejecución del programa de control por un usuario no identificado………...21 Figura 2.7 Interfaz de usuario……………………………………………………………………….22 Figura 2.8 Mensaje de confirmación………………………………………………………………..22 Figura 2.9 Contenido del archivo prueba1.txt………………………………………………………25 Figura 3.1 Funciones a realizar por el receptor……………………………………………………..27 Figura 3.2 Lógica de programación para el receptor………………………………………………..28 Figura 3.3 Diagrama de procesos del receptor……………………………………………………...28 Figura 3.4 Ejecución de la clase “Recibir Archivo”………………………………………………..30 Figura 4.1 Diagrama a bloques del receptor………………………………………………………...34 Figura 4.2 Ventana de configuración en el entorno MATLAB…………………………………….37 Figura 4.3 Pantalla de una compilación exitosa…………………………………………………….38 Figura 4.4 Simulación del programa porta_a_potb.hex…………………………………………….38 Figura 4.5 Ventana de programación del PIC………………………………………………………39 Figura 4.6 Diagrama de ubicación de los dispositivos a controlar……………………………….....40 Figura 5.1 Ejecución del receptor…………………………………………………………………...42 Figura 5.2 Ejecución del transmisor………………………………………………………………...42 Figura 5.3 Comunicación entre el receptor y el transmisor………………………………………...43 Figura 5.4 Vista lateral donde se muestra la combinación introducida……………………………..43 Figura 5.5 Encendido de estéreo y TV……………………………………………………………...44 Figura 5.6 Ejecución del transmisor y receptor para encender luces interiores…………………….44 Figura 5.7 Encendido de luces interiores, vista superior……………………………………………45 Figura 5.8 Actualización del receptor…………………………………………………..…………..45 Figura 5.9 Activación de estéreo, luces interiores y exteriores……………………………………..46 Figura 5.10 Activación de todos los dispositivos…………………………………………………...46 Figura 5.11 Todos los dispositivos activados……………………………………………………….47

Page 6: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

6  

  

Figura 5.12 Dispositivos desactivados……………………………………………………………...48 Figura A.1 Estructura de ARPANET……………………………………………………………….50

Página Figura A.2 Capas y protocolos OSI y TCP/IP………………………………………………………51 Figura D.1 Arquitectura interna del PIC 16F84A…………………………………………………..72 Figura D.2 Mapa de registros FSR………………………………………………………………….73 Figura E.1 Vistas de la maqueta (inicio)……………………………………………………………76 Figura E.2 Circuito impreso de la etapa del microcontrolador……………………………………..77 Figura E.3 Interior de la maqueta…………………………………………………………………...77 Figura E.4 Exterior de la maqueta…………………………………………………………………..78 Figura E.5 Maqueta terminada……………………………………………………………………...78

LISTA DE TABLAS Tabla 1.1 Proyectos domóticos en etapa de investigación…………………………………………12 Tabla 1.2 Sistemas domóticos del mercado Español……………………………………………….13 Tabla 1.3 Mapa de comunicaciones presentes……………………………………………………...16 Tabla 2.1 Comparación de cadenas codificadas con MD5…………………………………………21 Tabla 2.2 Línea donde se define el arreglo de respuestas…………………………………………..23 Tabla 2.3 Función que llena el arreglo con ceros y unos…………………………………………...24 Tabla 2.4 Asignación de puerto de comunicación y dirección IP del servidor……………………..26 Tabla 3.1 Socket servidor…………………………………………………………………………...29 Tabla 3.2 Ubicación de la carpeta receptora………………………………………………………..30 Tabla 3.3 Declaración de arreglo en el receptor……………………………………………………30 Tabla 3.4 Lectura del archivo recibido……………………………………………………………..31 Tabla 3.5 Interpretación de las opciones seleccionadas…………………………………………….31 Tabla 3.6 Llamado a la clase Convertidor…………………………………………………………..32 Tabla 3.7 Función que ejecuta el programa C en terminal…………………………………………32 Tabla 4.1 Programa en ensamblador………………………………………………………………..35 Tabla B.1 Cronología de actividades proyecto terminal I…………………………………………..53 Tabla B.2 Cronología de actividades proyecto terminal II…………………………………………53 Tabla C.1 Código fuente de la clase Login…………………………………………………………54 Tabla C.2 Código fuente para la codificación MD5………………………………………………..57 Tabla C.3 Código fuente de la clase “Vista Cliente”………………………………………………58 Tabla C.4 Código fuente de la clase “Enviar Archivo”…………………………………………….63 Tabla C.5 Código fuente de la clase “Recibir Archivo”……………………………………………65 Tabla C.6 Código fuente de la clase “Leer Texto”…………………………………………………67 Tabla C.7 Código fuente de la clase “Convertidor”….……………………………………………..68 Tabla C.8 Código fuente en C para conversión de binario a decimal………………………………70 Tabla D.1 Registros de funciones específicas………………………………………………………73 Tabla D.2 Registro STATUS……………………………………………………………………….74

Page 7: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

7  

  

1ANTECEDENTES

1.1 INTRODUCCIÓN Este proyecto terminal está basado en lo que en la actualidad se denomina como proyecto domótico

debido a que integra en una vivienda la informática, telecomunicación y automatización para conseguir la gestión de los dispositivos dentro del hogar. Es decir, que el objetivo de este proyecto terminal, es poder controlar los dispositivos de una casa de forma remota, usando como medio de comunicación el Internet.En la actualidad el Internet es una red mundial a través de la cual se llevan a cabo múltiples aplicaciones desde el envío de información, transferencias bancarias, redes sociales, y foros de información, entre otros. Sin embargo; en este proyecto terminal se plantea el uso del Internet como medio de comunicación entre el usuario y el sistema a controlar.

 Se optó basar la comunicación en el Internet, debido a su flexibilidad y aprovechando su estructura

para el envío de información. El Internet es una red compleja que basa la transferencia de información en protocolos de comunicación(1). En la Figura 1.1 se muestra un diagrama esquemático de lo que se plantea en este proyecto terminal.

 

Figura 1. 1: Diagrama esquemático del proyecto propuesto.

Page 8: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

8  

  

(1) En este trabajo se puede leer de este tema en el Anexo A, en el cual se describe de una forma resumida los protocolos de comunicación de TCP/IP, los cuales requiere cualquier dispositivo que pretenda comunicarse en Internet.

1.2 MOTIVACIÓN Y OBJETIVO

La motivación para hacer este proyecto es poder abordar diversos temas relacionados con las comunicaciones y la domótica.

El objetivo del proyecto es implementar un sistema remoto para el control del sistema eléctrico de una casa. Para lograr dicho objetivo en el proyecto, es necesario plantear los siguientes objetivos específicos:

Lograr la comunicación entre dos computadoras de forma remota, de tal forma que sean capaces de intercambiar dicha información.

Realizar un programa que procese la información recibida y envíe los comandos de control al microcontrolador.

Acoplar la comunicación entre receptor y microcontrolador. Programar el microcontrolador de forma eficiente.

1.3 ESTADO DEL ARTE

En este proyecto terminal se integra la automatización del sistema eléctrico de una vivienda por medio de la informática y de telecomunicaciones para conseguir la gestión de los dispositivos. Por lo cual es considerado un proyecto enfocado a la domótica. Por ello es importante introducir el término domótica, así como la historia de sus inicios y avances tecnológicos que se han hecho dentro de este campo.

1.3.1 ¿Qué es la domótica?

Se entiende por domótica al conjunto de sistemas capaces de automatizar una vivienda. Tradicionalmente se suele llamar domótica a cualquier instalación en la que intervienen dispositivos de automatización de funciones, tales como: encendido y apagado de luces, control de activación, control de la climatización, supervisión de la seguridad, etc. Sin embargo, la palabra domótica se refiere a la automatización del hogar, ya que está formada por la unión del latín “domus” hogar y “robótica”. Por otro lado si nos referimos a la automatización de un edificio se utiliza la palabra inmótica y si se hace referencia a la automatización de entornos urbanos se conoce como urbótica[5].

Page 9: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

9  

  

Los sistemas domóticos proporcionan los siguientes servicios:

Confort: se refiere a proporcionar un ambiente más cómodo y confortable liberando al usuario de tareas que tendría que realizar manualmente.

Seguridad: proporcionando servicios de seguridad tanto de bienes como a la persona. Gestión de energía: mejor aprovechamiento de los recursos energéticos de las

instalaciones. Comunicación: la cual permite acceso al sistema para realizar comprobación de su

funcionamiento, dar órdenes de actualización o para revisar avisos de eventos [1].

La Figura 1.2 es una representación de los sistemas domóticos en la cual es posible apreciar todos los componentes de la casa que se pueden controlar y los dispositivos con los que se hace el control.

 

Figura 1. 2: Representación simbólica de los sistemas domóticos.

Page 10: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

10  

  

Una solución domótica puede variar desde un único dispositivo que realiza una sola acción, hasta varios sistemas que controlan prácticamente todas las instalaciones dentro de la vivienda. Los distintos dispositivos de los sistemas domóticos se pueden clasificar en los siguientes grupos:

Controlador: es el dispositivo que gestiona el sistema primario según la programación y la información que recibe. Puede haber un solo controlador o varios distribuídos por el sistema.

Actuador: es un dispositivo capaz de ejecutar y/o recibir una orden del controlador y realizar una acción sobre un aparato o sistema.

Bus: es el medio de transmisión que transporta la información entre los distintos dispositivos por un cableado propio, por la redes de otros sistemas (red eléctrica, red telefónica, red de datos) o de forma inalámbrica.

Interface: se refiere a los dispositivos (pantallas, móvil, Internet), los formatos en que se muestra la información del sistema para los usuarios y donde los mismos pueden interactuar con el sistema.

Una clasificación de los tipos de domótica se hace a partir del tipo de arquitectura de control de la red, en relación a cómo la instalación se realice y cómo se unen los diferentes puntos dentro de la red; existen tres tipos de arquitecturas: centralizados, descentralizados e híbridos.

Los sistemas centralizados se caracterizan por tener un único nodo recibiendo toda la información de los diferentes dispositivos, procesándola y enviando órdenes a las diferentes conexiones. Este nodo central dispone de las funciones de control y mando de toda la red. Los elementos a controlar se cablean hasta el sistema de control permitiendo el envío y recepción de mensajes en toda la infraestructura. En la Figura 1.3.a se puede visualizar una arquitectura centralizada. Los sistemas centralizados tienen la ventaja de ser de costos moderados, los actuadores y sensores son de tipo universal y de fácil uso; sin embargo, tiene la desventaja de ser un sistema dependiente del controlador y el cableado es significativo.

Por otro lado en un sistema descentralizado los elementos de la red actúan de forma independiente, disponiendo de funciones de autocontrol y mando, sin embargo, comparten la misma línea de comunicación. Para este tipo de sistemas se requieren protocolos de comunicaciones comunes en todos los elementos, esto con el fin de producir acciones coordinadas, esta estructura puede apreciarse en la Figura1.3.b. Las ventajas de esta arquitectura son: que se tiene seguridad en el funcionamiento; el cableado es reducido y es fácil ampliar la red, sin embargo, los elementos utilizados están sujetos a la disponibilidad en el mercado, debido a que no son universales; el costo es elevado y la programación es compleja, por lo que este tipo de sistemas están enfocados a la inmótica [6].

Page 11: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

11  

  

Figura 1. 3: a) Esquema de los sistemas centralizados b) Esquema de los sistemas descentralizados C) Esquema de los sistemas distribuídos.

Por último los sistemas mixtos combinan los sistemas centralizados y descentralizados. Estos disponen de un controlador central o varios controladores descentralizados, los dispositivos de interfaces, sensores y actuadores pueden también ser controladores (como en un sistema distribuido) y procesar la información según el programa, la configuración, la información que capta por sí mismo, y actuar sin que necesariamente pase por otro controlador Figura 1.3.c.

1.3.2 Historia

La historia de la domótica inicia en 1976, con el protocolo de comunicación X10, creado para el telecontrol y basado en corrientes portadoras. Este último término se refiere a quese utiliza la instalación eléctrica como medio de comunicación, que sirve de soporte para todos los receptores a los que suministra energía. Los primeros sistemas domóticos comerciales fueron instalados, sobre todo, en Estados Unidos y se limitaban a la regulación de la temperatura ambiente de las oficinas. Más tarde, con el auge de las computadoras, a finales de la década de los años 80 y principios de los 90, se empezaron a incorporar en estos edificios un sistema de cableado estructurado (SCE) para facilitar la conexión de todo tipo de terminales y periféricos entre sí[10]. En la Figura 1.4 es posible apreciar las tomas repartidas por todo el edificio utilizando un cableado estándar.

Page 12: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

12  

  

Además de los datos, estos sistemas de cableado permitían el transporte de la voz y la conexión de algunos dispositivos de control y de seguridad, por lo que a aquellos edificios, que disponían de un SCE se les empezaron a llamar edificios inteligentes[5].

Figura 1. 4:Ejemplo de un sistema de cableado estructurado.

1.3.3 Aplicaciones

Los avances e implementación de la domótica aumentan paulatinamente año tras año. Sin embargo, genera rechazo por la percepción de complejidad asociada a su uso. Por lo cual en los últimos años ha surgido una nueva área de trabajo interdisciplinaria: llamada “Inteligencia Ambiental”. Esta ciencia se encuentra en desarrollo e investigación, tiene como principio el desarrollo de sistemas con capacidades inherentes de aprendizaje, lo que lo hace predictivo a las necesidades del usuario. Esta visión convierte directamente el problema de las interacciones hombre-máquina en simples procesos de aprendizajes. Para que la inteligencia ambiental pueda aprender de su entorno se encuentra basada en la conocida“Inteligencia Artificial”, la cual es la ciencia que implementa la creaciónde programas informáticos que imiten el comportamiento y la comprensión humana. Es decir sea capaz de la toma de

Page 13: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

13  

  

decisiones sin que el usuario tenga que intervenir. En la actualidad los países con gran auge en la domótica son: España, Argentina, Chile, Estado Unidos y Japón. En dichos países la domótica es una realidad y existen distintos proyectos domóticos propuestos tanto por el sector privado como el educativo. Ejemplo de dichos proyectos se pueden ver en la Tabla 1.1, donde se explica brevemente cuál es su objetivo [3].

Tabla 1. 1: Proyectos domóticos en etapas de investigación [3].

Proyecto Lugar de investigación Objetivo “Oxygen” Instituto de Tecnología

de Massachusetts(MIT) Desarrollo de sistemas inteligentes orientados al ser humano que consisten en proveer al sistema de la capacidad de adaptarse de una forma dinámica y natural a las necesidades del usuario.

Grupo de Inteligencia Ambiental

Instituto de Tecnología de Massachusetts (MIT)

Realiza diseño de interfaces más integradas, inteligentes e interactivas. De forma que el sistema sea más sensible a las necesidades y acciones humanas.

“HomeLab” Philips (Holanda) Desarrolla prototipos de hogares inteligentes.

Creación de un entorno de inteligencia ambiental mediante el uso de agentes empotrados.

Universidad de Essex. Reino Unido

Se enfoca en el desarrollo de técnicas de aprendizaje y adaptación para agentes embebidos con el fin de proporcionar un aprendizaje continuo, personalizado y adaptativo predictivo.

Casa Inteligente “MavHome”

Universidad de Texas Creación de un entorno que actúe como un agente inteligente capaz de percibir el estado de la casa, a través de sensores y controladores. Una aplicación de interés es que estos sistemas proporcionen servicio a ancianos y personas con discapacidad.

En cuanto a los proyectos comerciales y empresas que se dedican a las instalaciones de sistemas domóticos, la mayoría se encuentran basados en el protocolo de comunicación X10 o protocolos personalizados tal como se puede ver en la Tabla 1.2, en la cual se muestran algunos de los principales sistemas domóticos del mercado Español. Es posible apreciar el nombre del fabricante, el tipo de sistema, el protocolo de comunicación y el modo de transmisión. Estos sistemas cumplen con los servicios que brinda la domótica, puesto que están enfocados al ahorro de energía y en algunas ocasiones fomenta el uso de energías renovables tales como la solar y la eólica. Por otro lado brindan confort, seguridad y distintos medios de comunicación con el sistema.

 

Page 14: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

14  

  

Un proyecto innovador y ecológico es el proyecto Eco&UDHouseque es una iniciativa de la industria Panasonic ubicada en Panasonic Center en Tokio desde 2010, pretende dar una perspectiva de la implementación de un hogar domótico sustentable y amable con el medio ambiente. Esta casa eliminar la emisión CO2 a través del uso de electrodomésticos eficientes y la combinación de generación de energía solar y baterías de almacenamiento. Incorpora características de diseño en la distribución de las estancias, de forma que la ubicación de las ventanas y ventilación permitan que la energía generada sea utilizada de la manera más eficiente durante todo el año, reduciendo casi a cero las emisiones de CO2. Cuenta con un sistema de ventilación ecológico, el cual combina la ventilación mecánica con la ambiental, además la ventilación envía una corriente de aire apropiada mediante un sensor que determina la ubicación y el movimiento de una persona en la habitación y se apaga automáticamente cuando la habitación está desocupada.

En cuanto a la iluminación aprovecha la luz solar que entra a través de techos y paredes manteniendo el confort. La iluminación se complementa con el uso de tecnologíaled, la cual consume 85% menos energía que una bombilla y tiene una vida útil hasta 40 veces superior. Es un proyecto con la más alta tecnología, con el objetivo de dar servicios domóticos al ser humano. Cuenta con una estructura centralizada, controlado desde la cocina y con vigilancia vía IP [7].

 

Tabla 1. 2: Sistemas domóticos del mercado Español.

1.4 PLANTEAMIENTO DEL PROYECTO TERMINAL

Este proyecto terminal se encuentra basado en lenguaje Java, debido a que es un lenguaje de programación de propósito general, de alto nivel, orientado a objetos y multiplataforma. Esto significa que el programa desarrollado, puede ser ejecutado sin problemas, en distintos sistemas operativos tales como Windows, Linux, Mac, Solaris,Unix entre otros. Esto se logra gracias aque Java basa su ejecución en la Máquina Virtual Java, (JVM, por sus siglas en inglés).

Nombre Fabricante Sistema Protocolo de comunicaciones

Modo de trasmisión

Topología

Biodom EHS Centralizado EHS Red eléctrica Red eléctricaCardio DomoVaLElectronic

S.L Centralizado X10/ Protocolo

propio Red eléctrica Árbol

Conleac LogicaDesign S.A Centralizado Protocolo propio

Cableado ded.

Estrella

DomoLon ISDE Ing. Descentralizado Lonworks Cableado ded.

Libre

Page 15: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

15  

  

El proceso que se realiza para que Java sea multiplataforma se ve en la Figura 1.5 en la cual se puede observar que el código fuentecuya extensión es .java, genera un conjunto de instrucciones que reciben el nombre de bytecodes que se guardan en un archivo con extensión“.class”. Estas instrucciones son independientes del sistema operativo en el cual se allá creado el programa.

En el momento de la ejecución,las instrucciones del archivo .class son ejecutadas de acuerdo a las especificaciones de cada sistema operativo.Por este proceso Java es compilado e interpretado a la vez. Esta característica del lenguaje Java brinda a este proyecto una ampliaportabilidad, pese a que se plantea para dos computadoras comunicándose, este proyecto terminal podría expandir su aplicación por ejemplo a teléfonos móviles.

 

Figura 1. 5: Características multiplataforma de un programa en Java.

El planteamiento de este Proyecto Terminal es poder enviar una orden de un transmisor, a través de una aplicación en Internet y que ésta sea recibida por un receptor que la interprete y active lo solicitado. En la Figura 1.6 se muestra el diagrama a bloques de cada etapa que setrabajó para lograr este objetivo.

 

Figura 1. 6: Diagrama a bloques de las etapas del Proyecto Terminal.

Page 16: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

16  

  

 

La etapa de transmisor es el primer bloque de trabajo, este bloque cumple con las siguientes características:

Cuenta con una interfaz gráfica, de modo que el uso del sistema sea más cómodo para el usuario

Ventana de identificación Generar un archivo con la petición del usuario Establecer y cerrar la comunicación con el receptor Envío del archivo generado

El siguiente bloque es el receptor y se encarga de las comunicaciones, los objetivos de este bloque son los siguientes:

Permanecer en espera de una conexión Recibir el archivo txt con la petición del usuario Leer el archivo de forma que sea capaz de interpretar la petición Enviar la interpretación al microcontrolador

Es importante resaltar que el receptor estará haciendo dos funciones una, la de recibir los comandos de control e interpretarlos. Y otra para enviándolos hacia el microcontrolador, por lo cual en la Tabla. 1.3 se plantea un mapa de configuración, para comprender las comunicaciones presentes.

Tabla 1. 3:Mapa de comunicaciones presentes.

Transmisor TX Comunicación mediante Sockets

Receptor RX

Comunicación mediante UART

Microcontrolador Aplicación Programa en lenguaje Java

Aplicación Programa en lenguaje Java

Programa en ensamblador

Dispositivo de transmisión esuna computadora remota

Computadora instalada en la casa.

Entradas / salidas

Genera y escribe un archivo .txt

Copia el archivo recibido

Ejecuta las instrucciones enviadas por el RX

Establece y cierra conexión con el RX

Lee el documento.txt e interpreta los comandos de control

Page 17: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

17  

  

El microcontrolador se encarga de recibir por medio de una interfaz de comunicación entre él y el receptor, los comandos de control y ejecutarlos de forma que los dispositivos solicitados sean activados según lo deseado por el usuario. La etapa de potencia se refiere a la forma en que se controlan los sistemas de la casa, ésta requiere de un adaptador (como optoacopladores o relevadores) para poder separar la etapa de control de la de potencia.

Page 18: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

18  

  

2 TRANSMISOR TX

Para que una comunicación se logre son necesarios tres elementos: el transmisor, el receptor y un medio de comunicación. La primera fase de este proyecto terminal es lograr la comunicación entre dos computadoras de forma remota a través de Internet. En la Figura 2.1 se muestra un esquema del canal de comunicación, la computadora remota realiza la función del trasmisor y tiene como objetivo enviar los comandos de control a través del medio de comunicación. El cual es el Internet y el receptor es el encargado de recibir la información enviada.

 

Figura 2. 1: Canal de comunicación.

Este capítulo está dedicado al transmisor, su objetivo y funciones a realizar dentro de este proyecto. Las cuales son: crear un archivo, establecer comunicación con el receptor y la trasferencia del archivo creado.

2.1 FUNCIONES

Para establecer las funciones que desempeña el transmisor, es necesario plantear que es lo que se espera obtener de este bloque. En un principio se sabe que este transmisor, es una computadora remota a través de la cual el usuario accede al sistema, por ello es necesario que cuente con una interfaz gráfica para hacer el uso del sistema más amigable. Por otro lado, será el encargado de preguntar que se desea hacer y generar el archivo con las peticiones hechas por el usuario. Por último establece la comunicación con el receptor y envía el archivo. Cuando el usuario cierra la aplicación, el transmisor concluye la comunicación con el receptor.

En la Figura 2.2 se ilustran los 5 bloques necesarios para que el transmisor funcione de manera óptima. Para que dichas funciones se cumplan, se dividió la programación en dos bloques principales, tal como se muestra en la Figura 2.3. El primer bloque consiste en la programación de envío: este bloque es el encargado de generar el archivo con los comandos, que controlan la casa y del envío de dicho archivo, estableciendo comunicación con el receptor. En la Figura 2.3 es posible apreciar que este bloque se encuentra divido en tres sub-bloques: El primersub-bloque está dedicado a escribir el documento de texto simple donde se guardan las órdenes; el objetivo del segundo sub-bloque es establecer la conexión entre el transmisor y receptor, el tercer y último sub-bloque transfiere el archivo al receptor.

Page 19: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

19  

  

Figura 2. 2: Funciones del transmisor.

El segundo bloque de la Figura 2.3, es el que tiene que ver con la interfaz gráfica, el objetivo de este bloque es presentar una ventana que haga que el uso del sistema sea más amigable. En esta ventana el usuario puede seleccionar que desea hacer. Se agregó un bloque de identificación, con el objetivo de que sebrinde seguridad al sistema, de forma que el uso de dicho bloque este limitado al usuario.

Figura 2. 3: Lógica de programación.

 

 

Page 20: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

20  

  

2.2 INTERFAZ GRÁFICA

El objetivo de este bloque es presentar una interfaz gráfica, para que el uso del sistema sea más simple y de fácil acceso para el usuario. Para ello se realizó una aplicación en Java que presenta una ventana con los distintos elementos dentro de la casa. Sin embargo, se buscó que este sistema no fuera tan vulnerable en el sentido de que para poder seleccionar los dispositivos a controlar, el usuario antes debe identificarse, de esta forma se limita el uso del sistema al usuario y no a posibles intrusos. Una vez identificado se abre otra ventana desde la cual es posible seleccionar las opciones que se desean activar.

En la Figura 2.4 se ilustra la serie de pasos que sigue el programa al momento de ejecutarse. Este diagrama está planteado a partir de la perspectiva del usuario. Cada cuadro vertical simboliza que la acción es atendida por el mismo proceso y la flecha punteada representa el envío del archivo con las opciones seleccionadas, una vez enviado el archivo el trasmisor ya no recibe respuesta del receptor por lo que sólo informa al usuario que el archivo hasido enviado correctamente.

Figura 2. 4: Diagrama de ejecución del programa del transmisor.

 

 

 

Page 21: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

21  

  

2.2.1 VENTANA DE IDENTIFICACIÓN

La ventana de identificación(1) brinda seguridad al sistema debido a que pide ingresar un usuario y una contraseña, si los datos son correctos, permite el acceso de lo contrario muestra en la pantalla un mensaje de error y no lo permite. En la Figura 2.5 se muestra la venta de identificación. En este proyecto se definió un usuario llamado “usuario1” y como contraseña “1234”. Esta contraseña es asignada por el programador y el usuario no puede cambiarla. Esto, debido a que en este proyecto se busca hacer una implementación óptima.

Figura 2. 5: Ventana de identificación.

Este bloque brinda seguridad debido a que toda la aplicación del transmisor se abre a partir de la identificación. La forma en que se hace esto es por medio de la comparación y codificación. En este proyecto se optó por la codificación MD5(2).

En la Tabla 2.1 es posible ver la cadena de dígitos generados por el usuario y contraseña en color verde, de forma que cuando se ingresan los datos, el programa captura los valores introducidos por el usuario y los envía como parámetros a la clase TestEncriptarMD5(3), esta clase convierte lo ingresado por el usuario a 32 dígitos hexadecimales y los regresa para ser comparados. Si las cadenas son iguales se crea el objeto VistaCliente y se manda llamar la función main, lo cual abre la ventana de control. Sin embargo si no son iguales se imprime en la pantalla el mensaje “Error usuario y/o contraseña incorrectos.”, el cual se muestra en la Tabla 2.1 en color azul.

(1) El código fuente de la clase Login.java se puede consultar en la Tabla C.1 del Anexo C. (2) Codificación MD5; es una forma de codificar mensajes y se representa como un número de 32 dígitos hexadecimales. El

algoritmo de codificación es complejo pero en esencia, consiste en que a una cadena de caracteres se le asigna un número de 32 dígitos.

(3) El código fuente de la clase TestEncriptarMD5 se puede consultar en la Tabla C.2 del Anexo C.

Page 22: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

22  

  

 

public void actionPerformed(ActionEvent e){ this.usuario = md5.encriptaEnMD5(txtUsuario.getText()); this.pass = md5.encriptaEnMD5(passwordField.getText()); if(this.usuario.equals("122b738600a0f74f7c331c0ef59bc34c") && this.pass.equals("81dc9bdb52d04dc20036dbd8313ed055") ){ System.out.println("Usuario y contraseña correctos"); VistaCliente vista = new Vista Cliente(1); frame.setVisible(false); vista.main(null); } else{ JOptionPane.showMessageDialog(frame, "Error usuario y/o contraseña incorrectos"); System.out.println("Error usuario y/o contraseña incorrectos");

Una forma de comprobar que este sistema ofrece seguridad,es tratar de acceder de forma que no se tenga que introducir usuario y contraseña. Cuando se intenta hacer esto el sistema inmediatamente sabe que el usuario que quiere acceder es un intruso e imprime que no está logueado(1)y abre la ventana de identificación. En la Figura 2.6 se muestra que a partir de la terminal se quiere acceder al programa de control que se llama VistaCliente, y es posible visualizar que el programa inmediatamente pide que se identifique.

 

Figura 2. 6: Ejemplo de ejecución del programa de control por un usuario no identificado.

 

(1) En el ámbito de seguridad informática, login o logon (en español ingresar o entrar) es el proceso mediante el cual, se controla el acceso individual a un sistema informático mediante la identificación.

Tabla 2. 1: Comparación de cadenas codificadas con MD5.

Page 23: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

23  

  

2.2.2 INTERFAZ DE USUARIO

Como ya se ha mencionado, este bloque es el encargado de la interacción con el usuario. Es muy importante puesto que en éste bloque,es donde el usuario selecciona los dispositivos que quiere controlar a distancia.

Para ello se muestra una ventana como la de la Figura 2.7, donde se pregunta si desea encender cada uno de los dispositivos disponibles. En este proyecto se plantean 5 dispositivos a controlar, sin embargo, es posible modificar el número de acuerdo a las necesidades de cada usuario.

Figura 2. 7: Interfaz de usuario.

Una vez que el usuario selecciona lo que quiere activar y presiona el botón “Enviar respuestas”, se imprime un mensaje en la pantalla que indica que el archivo ha sido enviado, como se muestra en la Figura 2.8. A continuación el usuario debe presionar el botón aceptar y cerrar la aplicación.Una vez cerrada la aplicación si el usuario desea hacer una nueva orden deberá acceder a identificarse y luego seleccionar los dispositivos deseados.

Figura 2. 8: Mensaje de confirmación.

Page 24: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

24  

  

2.3 PPROGRAMACIÓN DE ENVÍO

De acuerdo a la Figura 2.3, este bloque de programación realiza todas las funciones necesarias para que el transmisor funcione. En primer lugar genera un documento de texto simple, con las opciones de mando del usuario. A continuación establece la comunicación con el receptor de forma que esté activo al momento de la recepción y por último envía el archivo.

2.3.1. ESCRIBIR UN DOCUMENTO DE TEXTO SIMPLE

El proceso para generar un archivo dentro de una computadora, a partir de un usuario es sencillo, el usuario abre cualquier programa de editor de texto, escribe su documento y selecciona la opción “guardar”. En seguida se muestra una ventana donde se pregunta en que carpeta se desea guardar el archivo, el usuario selecciona una carpeta o tiene la opción de crear una nueva y dar el nombre a dicha carpeta. Una vez seleccionada, el usuario guarda el documento y se concluye el proceso. Este mismo proceso es el que se seguirá al momento de crear el archivo de texto, con la diferencia de que esté será generado por un programa.

Para saber cuáles fueron las opciones del usuario, es necesario definir un arreglo(1) de tamaño 5, que es el que se irá llenando con “1” ó “0”, de acuerdo a que si el usuario selecciona “si” o “no” respectivamente. En este proyecto se define un arreglo llamado respuestasde tamaño 5, el tamaño del arreglo nos indica el número de dispositivos a controlar. En la Tabla 2.2 se muestra la línea donde se define dicho arreglo.

Tabla 2. 2: Línea donde se define el arreglo de respuestas(2).

Una vez definido el arreglo de respuestas, se comienza a llenar de acuerdo a lo seleccionando por el usuario. Si el usuario enciende el sistema de riego, en la primera posición se guardara un “1” de lo contrario se guardará un “0”. En la Tabla 2.3 se muestra un fragmento del código fuente donde se realiza el llenado del arreglo. Al terminar este proceso se tienen 5 elementos que pueden ser ceros o unos separados por una coma, el carácter “coma”facilita la lectura y escritura. Una vez lleno, se comienza el proceso de escribir el archivo que será enviado al receptor.

(1) En programación, un arreglo es un conjunto de variables del mismo tipo que se almacenan en posiciones consecutivas.

(2) Esta línea fue tomada del código fuente de la clase VistaCliente.java cuyo código fuente completo se puede consultar en el Anexo C Tabla C.3.

public int[] respuestas = new int[5];

Page 25: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

25  

  

Tabla 2. 3: Función que llena el arreglo con ceros y unos.

public void actionPerformed(ActionEvent arg0){ String nombre = "prueba1.txt"; EnviarArchivo enviarArchivo = new EnviarArchivo(nombre); try{ FileWriter fichero=newFileWriter("/home/karla/Escritorio/Program/"+nombre); if(rdbtnSi1.isSelected()){ respuestas[0]=1; } else{ respuestas[0]=0; } fichero.write(respuestas[0] + ", "); if(rdbtnSi2.isSelected()){ respuestas[1]=1; } else{ respuestas[1]=0; } fichero.write(respuestas[1] + ", "); if(rdbtnSi3.isSelected()){ respuestas[2]=1; } else{ respuestas[2]=0; } fichero.write(respuestas[2] + ", "); if(rdbtnSi4.isSelected()){ respuestas[3]=1; } else{ respuestas[3]=0; } fichero.write(respuestas[3] + ", "); if(rdbtnSi5.isSelected()){ respuestas[4]=1; } else{ respuestas[4]=0; } fichero.write(respuestas[4] + ""); fichero.close(); } catch(Exception e){ System.out.println("Error"); }

Page 26: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

26  

  

Recordando el ejemplodel principio, lo primero que se debe hacer es abrir un editor de texto, en este caso se crea una carpeta llamada “Program” que se encuentre en el escritorio, dentro de ella se crea un archivo en blanco llamado “prueba1.txt”. Es muy importante no olvidar activar los permisos de lectura y escritura a la carpeta “Program”, debido a que si no se hace esto, el programa no podrá escribir las respuestas del usuario.

A continuación se escribe el arreglo de respuestas. En esta parte se utiliza la clase FileWriter, incluida en la librería java.io, esta clase crea un objeto Writer que se utiliza para escribir en un archivo. Y se emplea el método FileWriter(rutaArchivo). La ruta del archivo es la ubicación donde se encuentra el documento en blanco llamado prueba1.txt. En la Tabla 2.3 es posible visualizar como se creó el objeto FileWriter con ubicación dentro de la computadora transmisora, en este proyecto dicho equipo se llama Karla y la carpeta donde se va a guardar se encuentra en el escritorio.

El paso anterior es análogo a escribir en un documento y seleccionar en que carpeta se va a guardar. Por último se cierra el fichero donde se está escribiendo con la línea “Fichero.close()”, que es análogo a dar clic en guardar. Con este procedimiento se ha creado el archivo de control que está listo para su envió. Si abrimos el documento en blanco llamado prueba1.txt nos encontramos que tiene 5 elementos separados por comas, que corresponden a los seleccionados por el usuario. Tal como se muestra en la Figura 2.9

Figura 2. 9: Contenido del archivo prueba1.txt.

2.3.2 CONEXIÓN Y ENVÍO DE ARCHIVO

El bloque de conexión es el encargado de establecer la comunicación entre el transmisor y el receptor. Recordando que el medio de comunicación es el Internet, se optó por hacer la comunicación entre dispositivos por medio de los denominados “Sockets(1)”. La clase Socket es utilizada para representar conexiones entre un programa cliente y otro programa servidor. El paquete java.net proporciona dos clases: Socket y ServerSocket. Que implementan los lados del cliente y del servidor de una conexión, respectivamente. Ambos procesos deben crear instancias de socket, otro elemento que caracteriza a un socket es que está asociado a un puerto de red(2), en este proyecto terminal la máquina servidor es el receptor y el transmisor es el cliente. La comunicación entre ambos procesos se lleva a cabo automáticamente y se hace en ambos sentidos (full-duplex, en inglés), es decir, el hecho de conectar dos sockets implica que hay una comunicación abierta.

(1)En programación un socket es una abstracción de las conexiones de red que representan enlaces finales entre procesos. Permite mantener una conexión fiable entre dos procesos remotos establecidos como: Socket y ServerSocket, para intercambiar información [8].

(2) Un puerto de red es una interfaz para la comunicación con un programa a través de la red.

Page 27: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

27  

  

El paquete java.io proporciona soporte para las operaciones de E/S (entrada/salida) y por otro lado el paquete java.net permite realizar conexiones a través de la red [4].

En este proyecto la clase encargada de la conexión se llama EnviarArchivo.java(1), esta clase será la que simule ser un cliente, por lo que es necesario definir la dirección IP del receptor que en este caso será 192.168.1.73.Por otro lado también es necesario definir el número de puerto por el cual se hará la comunicación, en este proyecto se define el puerto 4400(2). Es importante que en el servidor y en el cliente este número sea el mismo, si no lo es no habrá comunicación entre los sockets debido a que el cliente enviaría la información por un puerto y el servidor escucharía o esperaría él envió por otro puerto. En la Tabla 2.4 se muestra un fragmento del código fuente donde se visualiza ladirección IP del receptor, y el número de puerto asignado que se utilizará para el envío.

Cuando se llama la clase EnviarArchivo es importante especificar la ubicación del archivo a transmitir. Recordemos que en este proyecto se define una carpeta llamada “program” dónde se encuentra el archivo generado por el usuario. Una vez establecida la comunicación el archivo se envía al transmisor y se cierra la comunicación mediante socket con la instrucción socket.close.

(1) El código fuente de la clase EnviarArchivo.java se puede consultar en el anexo C Tabla C.4. (2) El puerto 4400 pertenece a los puertos registrados, es decir, que puede ser utilizado por cualquier aplicación,

existen puertos bien conocidos con los cuales no se puede trabajar, debido a que están reservados para aplicaciones conocidas, tales como correo electrónico, página web, etc.

Tabla 2. 4: Asignación de puerto de comunicación y dirección IP del servidor.

publicvoidenviarArchivo( ) { System.out.println("Si entro a enviar archivo " + this.nombreArchivo); try { // Creamos la dirección IP de la máquina que recibirá el archivo InetAddressdireccion = InetAddress.getByName( "192.168.1.73" ); // Creamos el Socket con la dirección y elpuerto de comunicación Socket socket = new Socket( direccion, 4400 ); socket.setSoTimeout( 2000 ); socket.setKeepAlive( true );

Page 28: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

28  

  

3 RECEPTOR RX

El receptor es el segundo bloque de este proyecto, el objetivo del receptor es recibir el archivo enviado por el transmisor, el cual contiene las órdenes del usuario. También es importante recordar que el receptor simula la función de servidor, en la comunicación mediante sockets. En este capítulo se aborda las funciones principales que realiza el receptor, las cuales son: la espera de petición del transmisor, el recibir archivo de control e interpretar la información recibida, para finalmente ser enviada al microcontrolador.

3.1 FUNCIONES A REALIZAR

Para definirlas funciones a realizar por el receptor, es necesario especificar, que recibe el receptor y que se espera obtener de él. En la Figura 3.1 se ilustra un diagrama a bloques de las funciones del receptor. En esta parte del proyecto se aseguran dos cosas, que el usuario no es un intruso y que el archivo de control enviado, solo contiene unos y ceros. Lo que se espera obtener del receptor es un numero decimal que no debe ser mayor de 31. Esto debido a que el archivo solo contiene una combinación binaria de 5 bits(1), la cual debe ser convertida a decimal para ser enviada al microcontrolador.

Figura 3. 1: Funciones a realizar por el receptor.

Page 29: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

29  

  

Para que el trasmisor realice las funciones especificadas en la Figura 3.1 fue necesario dividir la lógica de programación en tres clases principalmente. La clase RecibirArchivo.java es la que ejecuta todas las funciones que se requieren del receptor, en esta clase se crea el objeto LeerTex y se llama.

(1) tener un número mayo a 31 implicaría que hubo un error de recepción.

Una vez que se a leído el archivo se interpreta lo que envió el transmisor, y se imprime en terminal quedispositivos se activan. Por último se convierte esta combinación enviada a un número decimal; con el fin de que este número se envié al microcontrolador. En la Figura 3.2 se muestra la lógica de la programación para el receptor.

Figura 3. 2:Lógica de programación para el receptor.

En la Figura 3.3 se muestra un diagrama para visualizar los procesos que hacen la función del receptor, desde la perspectiva del equipo receptor.

Page 30: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

30  

  

 

Figura 3. 3:Diagrama de procesos del receptor.

 

3.2 RECIBIR ARCHIVO

El objetivo de la claseRecibirArchivo.java(1) es esperar el archivo de control y guardarlo en la computadora receptora. Este objetivo se logra debido a que el receptor es el servidor en la comunicación mediante sockets, por lo que sólo se requiere ejecutar esta clase para activar el receptor. En la Tabla 3.1 se muestra un fragmento del código fuente del receptor, donde se genera el socket servidor; hay que recordar que para que dos sockets se comuniquen es importante que tengan especificado el mismo puerto de comunicación, en este caso es el puerto registrado 4400. En el caso del servidor ya no es necesario poner una dirección IP debido a que la función de un servidor es ofrecer un servicio a cualquier cliente que lo solicite, por ello es necesario restringir el uso de la aplicación del trasmisor, de forma que sólo el usuario sea el que use la aplicación. Una vez que se ejecuta la clase RecibirArchivo se imprime en pantalla “Esperando recepción de archivo”.El receptor permanece en estado de espera hasta que el trasmisor envía el archivo. A partir de que el receptor recibe una petición del transmisor, se crea el flujo de entrada para leer los datos.

Tabla 3. 1: Socket servidor.

publicRecibirArchivo( ) throwsIOException { // Creamos socket servidor escuchando en el mismo puerto donde se comunica el cliente // en este caso el puerto es el 4400

Page 31: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

31  

  

servidor = new ServerSocket( 4400 ); System.out.println( "Esperando recepción de archivos..." ); actualizaMensaje("Esperando recepción de archivos..."); }

En la Figura 3.2 se especifica que además de recibir el archivo, este programa debe guardarlo dentro del equipo receptor, esto se logra especificando la ubicación donde se quiere guardar. En este caso el equipo receptor tiene como nombre “osvaldo172”y la carpeta receptora está en el escritorio de dicho equipo. A diferencia del transmisor, en el receptor no es necesario hacer un documento en blanco, debido a que este documento se crea al momento de la recepción. No hay que olvidar que para que el programa pueda escribir y leer es preciso dar los permisos necesarios a la carpeta receptora, en este proyecto terminal llamada ArchivoRecibido.Una vez especificada la ubicación se comienza la recepción del archivo byte a byte.

(1) Código fuente de la clase RecibirArchivo.java se puede consultar en la Tabla C.5 en el Anexo C.

Tabla 3. 2: Ubicación de la carpeta receptora.

// Creamos flujo de salida, este flujo nos sirve para // indicar donde guardaremos el archivo System.out.println("El nombre del archivo es "+ nombreArchivo); FileOutputStreamfos = new FileOutputStream(("/home/osvaldo172/Escritorio/ArchivoRecibido /"+nombreArchivo );

Cuando el archivo ha sido recibido por el receptor se imprime en terminal un mensaje que indica que se ha recibido un archivo y da el nombre tal como se muestra en la Figura 3.4

 

Figura 3. 4:Ejecución de la clase “RecibirArchivo”.

3.3 LEER TEXTO

El objetivo de la clase LeerTex.java(1)es leer e interpretar las opciones enviadas por el usuario, para ello es necesario leer el archivo recibido. La clase LeerTex es llamada por la clase RecibirArchivo. Lo primeroque se define es un arreglo de caracteres de tamaño 5, que contiene los 5 dispositivos a controlar

Page 32: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

32  

  

en la casa, tal como se muestra en el fragmento de código fuente en la Tabla 3.3. Este arreglo se nombró “llenArreglo” y sirve para interpretar las opciones seleccionadas por el usuario.

Tabla 3. 3:Declaración de arreglo en el receptor.

public static void llenArreglo(){ elementosCasa = new String[5]; elementosCasa[0]=”Sistema de riego”; elementosCasa[1]=”Luces exteriores”; elementosCasa[2]=”Estéreo”; elementosCasa[3]=”TV”; elementosCasa[4]=”Luces interiores”; return; }

(1) El código fuente de la clase LeerTex.java sepuede consultar en la Tabla C.6 del Anexo C.

Para interpretar lo enviado por el transmisor es necesario leer el archivo que se encuentra guardado en el receptor, en la carpeta ArchivoRecibido. En la Tabla 3.4 se muestra un fragmento donde se realiza la lectura del archivo de control. En la primer línea se define el objeto “File” y se pone como argumento la ubicación del archivo a leer, a continuación se inicia la lectura y una vez terminada se cierra el archivo con la instrucción reader.close().

Tabla 3. 4: Lectura del archivo recibido.

File file = new File(“/home/osbaldo172/Escritorio/ArchivoRecibido/prueba.txt”); //ruta donde se encuentra el archivo a leer Try {

//lectura del archivo FileReader reader = new FileReader(file); char[] chars = new char[(int) file.length()]; reader.read(chars); content = new String(chars); //cierre del archive Reader.close();

Una vez terminada la lectura el conteneido del archivo se guarda en la variablellamada “content”, a continuación este contenido se asigna a la variable llamada “vector” y se inicia recorrido del contenido utilizando un ciclo “for”, desde el elemento cero hasta el elemento cuatro, y se imprime que elementos

Page 33: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

33  

  

se prendieron o apagaron de acuerdo al contenido. Si en el arreglo se encuentra un cero se interpreta como no prendido y si se encuentra un uno se interpreta como prendido. En la Tabla 3.5 se muestra el fragmento del programa que realiza esta acción. De esta forma la clase “LeerTex” cumplecon su objetivo de leer e interpretar las opciones seleccionadas.

Tabla 3. 5: Interpretación de las opciones seleccionadas.

//Asignamos cada valor al nuevo vector (usando como separación la coma) String[] vector= content.split(“,”); Int[] números =new int [5]; //mostramos el vector for(intnj=0; nj<vector.length; nj++){

opcion = Integer.parserInt(vector[nj]); if (opción == 1){

System.out.println(elementosCasa[nj] + “ ”+ “ se encendio”); } else{

Sytem.out.println(elementosCasa[nj] + “ ” + “ no se encendio” ); }

3.4 CONVERTIDOR

De acuerdo a la Figura 3.2, el convertidor tiene como objetivo cambiar el contenido del archivo de control en un número decimal. Con este bloque de programa el receptor habrá cumplido con todos sus objetivos, debido a que una vez obtenido el número decimal, solo lo envía al microcontrolador quien se encarga del control de los elementos de la casa.

La clase Convertidor(1) es ejecutada desde LeerTex y se le pasa como parámetro el número binario a convertir. Para hacer la conversión se optó por hacerla con el lenguaje C, debido a que es necesario programar a bajo nivel para lograr la comunicación con el microcontrolador. En la Tabla 3.6 se muestra como se crea el objeto Convertidor y se llama a la función main.

Tabla 3. 6: Llamado a la clase Convertidor.

System.out.println(“Creo convertidor”); System.out.println(“El numero binario es: ” + numBin); System.out.println(“------------------”); Convertidor terminal = new Convertidor(numBin); Convertidor.main(); System.out.println(“------------------”);

Page 34: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

34  

  

Una vez dentro de la clase Convertidor se imprime en pantalla el mensaje “Ejecutando convertidor”, y se comienza la ejecucióndel programa en C. Está no se hace propiamente desde Java; Java solo ejecuta en terminal los comandos guardados en la variable “comand”, en este caso “./biToDec(2) y numBin”·. El primer comando ejecuta el programa en C y el segundo es el parámetro que es el número binario a convertir. En la Figura 3.10 se muestra la función que realiza la ejecución del programa en C.

Tabla 3. 7: Función que ejecuta el programa en C desde terminal.

/* La función se encarga de ejecutar el programa en c, se le pasa como parámetro el número binario que se crea con las respuestas del usuario */ public static void main() { System.out.println("Ejecutandoconvertidor"); try { //System.out.println("El numero a combertir es: " + numBin); String[] command = {"./biToDec", numBin}; //corre el comando que se le manda a la terminal final Process process = Runtime.getRuntime().exec(command);

(1) Código fuente de la clase Convertidor.java se puede consultar en la Tabla C.7 en el Anexo C. (2) Código fuente del programa en C biToDec se puede consultar en la Tabla C.8 en el Anexo C.

Se hace la conversión del número binario a decimal con el programa en C llamado biToDec, lo que se realiza en este programa en C, es multiplicar cada 1 ó 0 por la potencia correspondiente a su posición binaria, y sumando esta multiplicación, de tal forma que cuando se acaba la secuencias de unos y ceros, se tiene el número decimal correspondiente. Por último se imprime en la pantalla el número decimal.

Page 35: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

35  

  

4 MICROCONTROLADOR

La segunda fase de este proyecto terminal es lograr la comunicación entre el receptor y el microcontrolador. El receptor debe enviar el número decimal correspondiente a la combinación de las opciones del usuario, y este número decimal debe ser recibido por el microcontrolador. Una vez admitido por el microcontrolador este debe activar los dispositivos electrónicos dentro de la casa. En este proyecto terminal se plantean cinco elementos a controlar, los cuales son:

• Sistema de riego • Luces exteriores • Sistema de audio • TV • Luces interiores

Page 36: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

36  

  

Para todos estos sistemas se requiere un acoplamiento entre etapas, debido a que el microcontrolador funciona con un voltaje de 5V de corriente directa, y los electrodomésticos a controlar funcionan a 127V de corriente alterna. Si no se hace un adecuado acoplamiento de etapas se corre el riesgo de hacer un corto circuito, y dañar tanto la instalación eléctrica como el microcontrolador. En la Figura 4.1 se muestran los bloques restantes.

 

Figura 4. 1: Diagrama a bloques del receptor. 

4.1 PIC 16F84A

En este proyecto se optó por hacer el control, por medio del PIC16F84A(1), este bloque tiene como objetivo recibir el número decimal y activar los dispositivos correspondientes. Esto se logra gracias a que el PIC, trabaja con números binarios, es decir, cuando se hace la programación en el PIC, este acepta números hexadecimales, decimales, binarios, octales, etc. pero para realizar las operaciones internamente, siempre lo hace en el sistema binario. Por lo que si recibe un número decimal solo hay que mostrar el número binario correspondiente a dicho número decimal, por el puerto B.

(1)En este trabajo es posible leer un poco másacerca de los microcontroladores y de algunas características del PIC 16F84A, en el Anexo D.

4.1.1 PROGRAMACIÓN DEL PIC

El lenguaje de programación que se utilizo fue el ensamblador, el cual es de bajo nivel, lo cual permite trabajar de forma directa con el hardware; para grabar dichoprograma dentro del PIC fue necesario un grabador, en este proyecto se utilizó el programador k150. El programa que se ensambló en el entorno de desarrollo MPLAB IDE v8.86 para generar el código hexadecimal que es el que se carga en el PIC.

En la Tabla 4.1 se muestra el código fuente utilizado en este proyecto, este programa se escribe en un block de notas y se guarda con extensión .asm. La estructura de este programa consta de tres bloques. El primer bloque en azul, es dónde se escriben todas las configuraciones para el ensamblador, el segundo bloque es donde se configuran los puertos como entradas o salidas, de acuerdo a las necesidades del programador, en la Tabla 4.1 se muestra en color verde. Y por último el bloque corresponde al programa que hará la función de mostrar el número decimal a través del puerto B.

Tabla 4. 1:

Page 37: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

37  

  

Programa en Ensamblador

__CONFIG _CP_OFF & _CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON &

_INTOSC_OSC_NOCLKOUT LIST P=16F628A INCLUDE <P16F628A.INC> ORG 0 INICIO movlw 0X07 movwf CMCON bsf STATUS,RP0 bcf PCON,OSCF clrf TRISB movlw 0X1F movwf TRISA bcf STATUS,RP0 Programa movf PORTA,W movwf PORTB goto Programa END

4.1.1.1 Configuración del ensamblador

__CONFIG: Indica la configuración para el proceso de grabación.

_CP_OFF: No hay protección de código es decir que se puede leer el programa en hexadecimal generado después del ensamblado.

_LVP_OFF: Programación a bajo voltaje esta desactivada.

_BOREN_OFF :Bit de reinicio por caídas de voltaje desactivado.

_MCLRE_ON: Estáactivo el reset en el pin 4.

_WDT_OFF: El “perro guardián” esta desactivado, debido a que no se quiere que el PIC haga reset cada cierto tiempo.

_PWRTE_ON: Está activado el reset mediante la alimentación, esto se ve reflejado cuando se conecta por primera vez el PIC a la alimentación, este se resetea. De esta forma obligamos al PIC iniciar en la dirección 0x00.

_INTRC_OSC_NOCLKOUT: Oscilador interno activado y no hay salida de reloj.

LIST: Se pone para decir que µC se utilizará en este caso PIC16F84A.

Page 38: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

38  

  

INCLUDE <P16F84A.INC>: Este es el fichero que se utiliza para el PIC y dentro de él, se encuentran especificados todos los registros, memorias, etc. del PIC.

ORG 0: Es una directiva que indica a partir de que dirección de memoria se inicia el programa, en este programa se inicia en 0x00.

4.1.1.2 Configuración de entradas y salidas

En este bloque se configura el puerto A como entrada y el puerto B como salida, a continuación se describe el funcionamiento de cada línea.

MOVLW 0X07; Se carga el valor 7 en el registro de trabajo W MOVWF CMCON; Se desactivan los comparadores. BSF STATUS, RP0; Se accede al banco 1 MOVLW 0X1F;Se cargan 5, 1´s en el registro de trabajo W MOVWF TRISA; Se configure como entradas el PORTA MOVLW 0X00; Se limpia W MOVWF TRISB;Se configure como salidas POTB BCF STATUS, RP0;Se accede al banco 0

4.1.1.3 Programa

Este es el programa que realiza el control de la casa, a continuación se desglosa cada línea.

Programa; Es una etiqueta

MOVF PORTA,W; Carga el valor que hay en el puerto A al registro de trabajo W.

MOVWF PORTB; Carga el valor que hay en W y se muestra por el puerto B. GOTO Programa; Salta o regresa a la etiqueta Programa, con esto se hace un ciclo infinito. END; Directiva que indica que el programa aterminado.

4.1.2 COMPILACIÓN DEL PROGRAMA

Page 39: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

39  

  

Una vez escrito el programa y guardado con extensión .asm, se abre un proyecto en el entorno de MPLAB(1), y se carga el código fuente llamado porta_a_portb.asm. El entorno MPLAB compila el programa escrito y si no hay errores genera el programa en hexadecimal, que es el que se carga en el PIC. En la Figura 4.2 se muestra la configuración que hay que hacer dentro del entorno de compilación, hay que seleccionar el PIC con el que se va a trabajar, en este caso se seleccionó el 16F84A.

 

Figura 4. 2: Ventana de configuración en el entorno MATLAB.

 

(1) El entorno MPLAB un editor IDE gratuito, destinado a productos de la marca Microchip. Este editor es modular, permite seleccionar los distintos microcontroladores soportados, además de hacer la grabación de estos circuitos integrados directamente del programador.

En la Figura 4.3 se muestra la pantalla que se visualiza si el programa compilado no tiene errores, si se muestra esta pantalla ya se ha compilado el programa y se generó el código hexadecimal.

 

Figura 4. 3: Pantalla de una compilación exitosa.

Page 40: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

40  

  

Una vez compilado el programa de forma exitosa se simuló para ver que el programa trabajara de forma adecuado, esta simulación se hizo en el simulador Proteus 7, el cual permite hacer simulaciones con microprocesadores, ya que se tiene la opción de cargar el programa hexadecimal en el modelo del microcontrolador en este caso en particular el PIC 16F84A.

En la Figura 4.4 se puede ver que el usuario ha seleccionado encender el televisor, cuyo número decimal es 2 lo que hace que se encienda el led de la posición 2.

 

Figura 4. 4: Simulación del programa porta_a_potb.hex.

4.1.3 PROCESO DE GRABADO

El proceso de grabado se realizó con el programador k150 el cual cuenta con un software propio, tal como se muestra en la Figura 4.5 Este software permite grabar, limpiar el programa que se encuentre en el PIC, leer el código si no está protegido entre otras opciones, también cuenta con una amplia variedad de PIC´s y para cada uno de ellos muestra como debe ser colocado en el programador. Es importante mencionar que al abrir esta ventana ya se debe tener el programador conectado y saber en qué puerto se encuentra, ya que si no se hace este paso no es posible grabar el PIC. Lo primero que se realizó fue buscar el PIC 16F84A, una vez seleccionado, se carga el código hexadecimal con la opción “Load”y se da clic en el botón “program”, el cual hace que se cargue el programa en el PIC.

Page 41: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

41  

  

 

Figura 4. 5: Ventana de grabación del PIC.

4.2 ETAPA DE ACOPLAMIENTO

Como ya se mencionó anteriormente esta etapa de acoplamiento es muy importante ya que incluye al sistema eléctrico de la vivienda y el sistema de control. Para hacer acoplamiento entre etapas se debe buscael mejor manejo de potencia, esto implica el tener consideraciones de seguridad del sistema eléctrico y de protección para el sistema digital. Es deseable que la interconexión entre ambas etapas (la de control y la de potencia) se haga por un medio de acoplamiento que permita aislar eléctricamente los dos sistemas. Esto se puede lograr con los dispositivos llamados optoacopladores, mediante los cuales se obtiene un acoplamiento óptico y, al mismo tiempo, un aislamiento eléctrico. Por ello también se les conoce como optoaisladores. El acoplamiento se efectúa en el rango del espectro infra-rojo a partir de dispositivos emisores de luz, usualmente IRED (infra-rojo),leds (diodos emisores de luz), actuando como emisores y utilizando dispositivos detectores de luz (opto detectores), actuando como receptores.

La razón fundamental para llevar a cabo acoplamiento óptico y aislamiento eléctrico es por protección de la etapa de potencia o sistema digital, debido a que si ocurre un corto en la etapa de potencia, o cualquier otro tipo de anomalía eléctrica, el optoacoplador protege toda la circuitería digital de control. Entre los optoacopladores más usuales se encuentra el moc3011 el cual tiene diversas configuraciones a TRIAC. Sin embargo este optoacoplador no sería útil en este proyecto debido a que es de disparo, es decir, espera una señal que lo active, pero si se quiere desactivar o apagar ya no es posible mediante el TRAC.

Por lo que la opción más recomendable para implementar este proyecto es un relevador, el cual actúa de la misma maneara que un optoacoplador, solo que este aísla magnéticamente las dos etapas. Cuando se activa la bobina de la etapa digital crea un campo magnético que sierra el interruptor de la

Page 42: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

42  

  

etapa de potencia, si la bobina se desactiva el interruptor se abre. La etapa de acoplamiento se incluye en este trabajo, debido a que si se planea una implementación dentro de una vivienda es necesario tomar en cuenta esta etapa.

4.3 DISPOSITIVOS A CONTROLAR

En este proyecto terminal se buscó hacer una implementación sencilla de manera que se pudiera mostrar el control por medio de Internet, por lo que, se montó una pequeña maqueta, que tuviera los espacios a controlar. En este trabajo todos los dispositivos se encuentran representados por led´s y un ventilado de 5V para el sistema de riego. En la Figura 4.6 se muestra el esquema y la ubicación de cada uno de los dispositivos a controlar. A continuación se describe cada uno de los dispositivos a controlar.

Figura 4. 6: Diagrama de ubicación de los dispositivos a controlar.

 

1) Sistema de riego:Este dispositivos se encuentran representados por un led y un ventilador de 5V, lo cual representa que el sistema de riego sea activado y el ventilador representa que esta activación realiza otro proceso, por ejemplo activar una bomba de agua, o un sistema de riego eléctrico.

2) Luces exteriores e interiores: Estos elementos se encuentra representado por led´s. El objetivo del control de estos espacios,es simular que hay alguien en el interior de la vivienda.

3) Sistema de audio y TV: Estos simulan electrodomésticos dentro de la casa, que se deseen activar, tales como lavadoras, microondas, ventilador, etc.

Page 43: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

43  

  

Por último la etapa del microcontrolador se sitúa fuera de la casa por cuestiones de espacio, pero en una implementación real de este proyecto, esta etapa se encontraría en el interior de la vivienda conectado a la computadora receptora.

Page 44: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

44  

  

5 IMPLEMENTACIÓN

A lo largo de este trabajo se ha descrito cada uno delos bloques necesarios para realizar el control de dispositivos, mediante Internet. En este capítulo se muestra la ejecución del sistema, usando como prueba una maqueta(1) diseñada para mostrar la activación del sistema.

Lo primero que se hace es ejecutar el programa receptor que es el encargado del control, si no se hace esto el sistema no tendrá comunicación con el usuario. Para ello se abre una terminal y con el comando “cd”, se sitúa en la ubicación donde se encuentre el programa RecibirArchivo.java. En la Figura 5.1 se muestra el receptor activado.

 

Figura 5. 1: Ejecución del Receptor.

Una vez que el receptor espera recibir un archivo, el usuario ya puede acceder al sistema. De la misma forma que en el receptor, se abre una terminal en el equipo trasmisor y se sitúa en la ubicación donde se encuentre el programa Login.En este proyecto se encuentra en la carpeta ProyectoFinal. A continuación se escribe el comando“java Login” y se da clic en “Enter”. En la Figura 5.2 se muestra la ejecución del programa donde aparece la ventana de identificación, y un mensaje de error de contraseña y/o usuario.

 

Figura 5. 2:Ejecución del transmisor.

Page 45: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

45  

  

(1) La maqueta se hizo con el fin de ilustrar el funcionamiento del proyecto y su diseño se encuentra en el Anexo E, de este trabajo.

Page 46: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

46  

  

El cliente tiene que introducir su usuario y contraseña correctos para poder acceder, de lo contrario se le negará el acceso. Una vez ingresados los datos se abre la ventana para controlar los dispositivos, para fines de prueba se realizaron 5 combinaciones distintas que son las siguientes:

a) Se enciende sistema de riego, estéreo y TV. Permanecen apagados luces exteriores e interiores. En la Figura 5.3 se muestra la ejecución del transmisor y el receptor, se puede ver que para esta combinación de opciones se genera el número decimal 22 el cual es recibido por el microcontrolador y este a su vez activa lo solicitado. En las figuras 5.4 y 5.5 se muestra la parte lateral e interior de la maqueta.

 

Figura 5. 3: Comunicación entre receptor y transmisor.

 

Figura 5. 4: Vista lateral donde se muestra la combinación introducida.

Page 47: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

47  

  

Figura 5. 5: Encendido del estero y TV.

b) Se activan luces interiores y lo demás permanece apagado. Esta combinación arroja como numero decimal 1, debido a que el bit más significativo es el de la primera posición que corresponde al sistema de riego, y el bit menos significativo corresponde a las luces interiores. En la Figura 5.6 se muestra la ejecución del transmisor y el receptor, así como el archivo del trasmisor donde se guardan las opciones seleccionadas, en este caso solo tiene un 1 en la última posición y en la Figura 5.7 se muestra la activación de las luces interiores.

 

Figura 5. 6: Ejecución del trasmisor y receptor para encender luces interiores.

Page 48: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

48  

  

 

Figura 5. 7: Encendido de luces interiores, vista superior.

c) Se encienden luces exteriores, estéreo y luces interiores. Y se apagan el sistema de riego y televisión. Esta combinación arroja el número decimal 13, en la Figura 5.8 se muestra la actualización del receptor debida a la nueva orden del usuario.

 

Figura 5. 8: Actualización del receptor. 

Page 49: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

49  

  

Figura 5. 9: Activación de estéreo, luces interiores y exteriores.

d) Todo encendido y todo apagado, la última prueba que se hizo fue activar todos los dispositivos, Figura 5.10 y Figura 5.11, y posteriormente el apagado del sistema tal como se muestra en la Figura 5.12. En el primer caso se obtiene el número decimal 31, el cual corresponde a la combinación máxima y en el segundo se obtiene el0 que es la combinación mínima.

 

Figura 5. 10: Activación de todos los dispositivos.

Page 50: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

50  

  

 

Figura 5. 11:Todos los dispositivos activados.

 

Figura 5. 12: Dispositivos desactivados.

Page 51: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

51  

  

6 CONCLUSION La domótica es una tecnología que se encuentra en etapa de innovación e investigación, abarca una

amplia gama de ingeniería puesto que involucra distintas áreas de estudio, tales como las comunicaciones; diseño de software y algorítmos; inteligencia artificial, automatización y control, entre otras. Y todas estas ramas enfocadas a incorporar la más alta tecnología al hogar con el fin de brindar bienestar y seguridad a los seres humanos, además promueve el uso de fuentes de energía alternativas y una solución para la mejora del medio ambiente. La domótica es una alternativa de vivienda para personas con discapacidad y de edad avanzada debido a los servicios que brinda y la comodidad que ofrece. Este Proyecto Terminal me mostro una amplia perspectiva de las tecnologías actuales con las cuales se lleva a cabo la domótica y posibles innovaciones futuras. Lo cual hace que la domótica seaatractiva puesto que abarca distintas áreas de investigación.

En este Proyecto Terminal se cumplió el objetivo de realizar un control de dispositivos remotos a través de Internet, logrando la comunicación entre dos computadoras. Para su realización fue necesario desglosar cada uno delos bloques involucrados e identificar sus funciones.Se plantea como trabajo futuro la implementación de este proyecto en una vivienda, de forma que lo expuesto en este trabajo se pueda aplicar.

Page 52: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

52  

  

AnexoA

HISTORIA DEL INTERNET Y SUS PROTOCOLOS DE COMUNICACIÓN [2]

En un comienzo el Internet fue diseñado con fines militares a mediados de los años sesenta, las computadoras centrales de las organizaciones de investigación estaban aisladas. Las computadoras de distintos fabricantes eran incapaces de comunicarse entre sí. La “AdvancedResearch Project Agency” (ARPA) del Departamento de Defensa (DoD) de EE.UU. estaba interesadaen buscar una forma de conectar computadoras para que los investigadores pudieran compartir sus hallazgos,reduciendo así los costes y la duplicación de esfuerzos. En 1967, en una reunión de la AssociationforComputerMachinery (ACM), ARPA presentó sus ideas para ARPANET, una red pequeña de computadoras conectadas. La idea era que cada computadora (no necesariamente del mismo fabricante) estuviera conectada a una computadora especializada, llamada InterfaceMessage Protector (IMP). Los IMP, a su vez, estarían conectados entre sí. Cada IMP sería capaz de comunicarse con otros IMP, así como con la computadora conectada al mismo.

En 1969, ARPANET era una realidad. Cuatro nodos de la Universidad de California en Los Angeles (UCLA), la Universidad de California en Santa Barbara (UCSB), el Stanford ResearchInstitute (SR I) y la Universidad de UTA, estaban conectadas a través de IMP para formar una red. Un software denominado Protocolo de Control de Red (NCP, Network Control Protocol) proporcionaba la comunicación entre las computadoras. En 1972, VintCerf y Bob Kahn, ambos miembros del núcleo del grupo de ARPANET, Figura A.1, colaboraron en lo que denominaron un proyecto de interconexión de redes (Internetting Project). Cerf y Kahn escribieron un artículo de referencia en 1973 en el que esbozaban los protocolos para lograr la entrega de paquetes de extremo a extremo de una red. Este artículo sobre un protocolo de control de transmisión (TCP, Transmisión Control Protocol) incluía conceptos como encapsulamiento, el datagrama y las funciones de una pasarela (gateway). Poco después, las autoridades tomaron la decisión de partir el TCP en dos protocolos: Transmisión Control Protocol(TCP) e InternetworkingProtocol(IP). IP sería responsable de manejar el enrutamiento dedatagramas, mientras TCP sería el responsable de funciones de más alto nivel como la segmentación, reagrupamientoy detección de errores. El protocolo de interconexión pasó a conocerse como TCP/IP.

Page 53: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

53  

  

 Figura A. 1: Estructura de ARPANET.

Protocolos de comunicación y modelos

En las redes de computadoras, la comunicación se lleva a cabo entre distintas entidades de diferentes sistemas. Una entidad es cualquier cosa capaz de enviar o recibir información. Pero no basta con que dos entidades se envíen secuencias de bits entre sí para que se entiendan. Para que exista comunicación, las entidades deben estar de acuerdo en un protocolo. Un protocolo es un conjunto de reglas que gobiernan la comunicación de datos. Un protocolo define qué se comunica, cómo se comunica y cuándo se comunica. Los elementos clave de un protocolo son su sintaxis, su semántica y su temporización. Las características principales de un protocolo son:

• Directos e Indirectos: La comunicación entre dos entidades puede ser directa o indirecta • Monolíticos/ estructurados: Monolítico se refiere poder lograr una comunicación con una sola

aplicación, lo cual no es posible. Mientras que al diseño estructurado se le conoce como arquitectura.

• Simétricos / asimétricos: Simétrico que involucra entidades pares. • Estándares / no estándares: No estándar implica una comunicación entre particular.

Un protocolo puede proporcionar prioridad, calidad de servicio y seguridad.

El modelo OSI (Open SystemInterconection) y arquitectura TCP/IP

El modelo OSI fue propuesto con el fin de estandarizar las comunicaciones entre computadoras, sin embargo, la forma en que fue diseñado solo sirvió como marco de referencia para la normalización. El modelo OSI fue propuesto por la organización internacional de estandarización ISO, la cual propone un

Page 54: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

54  

  

modelo de siete capas. Cada una de estas proporciona los servicios y herramientas necesarias para la comunicación. Una de las principales características de este modelo es la jerarquización entre capas, esto se refiere a que cada capa se sustenta en la inmediatamente inferior y a la vez proporciona servicios a la superior.

Por otro lado la familia de protocolos TCP/IP, se desarrolló antes que el modelo OSI, por tanto, los niveles del protocolo TCP/IP no coinciden exactamente con el modelo OSI. Sin embargo si hay una equivalencia en capas tal como se muestra en la Figura A.2.

 

Figura A. 2: Capas y protocolos OSI y TCP/IP.

Como se puede observar en la Figura A.2 en la familia de los protocolos TCP/IP cada nivel utiliza ciertos protocolos para realizar la comunicación, así por ejemplo, en el nivel de red TCP/IP soporta el protocolo de interconexión, mientras que IP, utiliza cuatro protocolos de soporte: El protocolo de resolución de direcciones (ARP) permite asociar el equipo a una dirección física, es decir que busca la dirección física del nodo a partir de su dirección de Internet; el protocolo de resolución de direcciones inverso (RARP) permite a un host descubrir una dirección de Internet cuando solo se conoce su dirección física, se utiliza cuando una computadora se conecta a una red por primera vez o cuando se arranca una computadora sin disco; el protocolo de mensajes de control en Internet (ICMP) es un mecanismo utilizado por los host para enviar notificaciones sobre problemas encontrados en el datagrama de vuelta al emisor, envía mensajes de petición y de informe de errores; el protocolo de mensajes de grupos de Internet (IGNP) se utiliza para facilitar la trasmisión simultánea de un grupo de receptores.

Page 55: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

55  

  

IP el protocolo de interconexión es un protocolo no confiable y no orientado a conexión, por lo que IP no ofrece ninguna comprobación ni seguimiento de errores. IP transporta los datos en paquetes llamados datagramas, cada uno de los cuales se transmiten de forma independiente. Los datagramas pueden viajar por diferentes rutas y pueden llegar fuera de secuencia o duplicados. IP ofrece funciones de transmisión básicas y deja libertad al usuario para añadir aquellas funcionalidades necesarias para una aplicación determinada por lo que ofrece una gran flexibilidad.

En el nivel de transporte también cuenta con dos protocolos que logran la entrega de mensajes desde un proceso a otro. El protocolo de control de transmisión (TCP) ofrece servicios completos del nivel de trasporte a las aplicaciones. Es un protocolo de flujos fiables, se debe establecer una conexión entre los dos extremos de la transmisión antes de que se puedan enviar datos. En el extremo del emisor de cada transmisión, TCP divide un flujo de datos en unidades más pequeñas denominadas segmentos. Cada segmento incluye un número de secuencia para su reordenamiento en el receptor, junto con un número de confirmación para los segmentos recibidos. Los segmentos se trasportan a través de datagramas IP. En el extremo receptor, TCP recibe cada datagrama y reordenar la transmisión de acuerdo a los números de secuencia.

Otro de los protocolos dentro del nivel de trasporte se encuentra el protocolo de datagramas de usuario (UDP) es el más sencillo de los dos protocolos de trasporte, es un protocolo procesos a proceso que añade solo direcciones de puertos, control de errores mediante sumas de comprobación e información sobre la longitud de los datos del nivel superior.

Se ha desarrollado un nuevo protocolo en el nivel de trasporte el cual es el protocolo de trasmisión de control de flujo (SCTP) el cual ofrece soporte para nuevas aplicaciones tales como la voz sobre Internet.

Page 56: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

56  

  

Anexo B

CRONOLOGÍA DE ACTIVIDADES Tabla B. 1: Cronología de actividades proyecto terminal I

Actividad Semanas trimestre 14-I 2° 3 4 5 6 7 8 9 10 11 12 13 Documentación x x x x x x x x x x x x Escritura de Reporte

x x x x x x x x x x x x

Bibliografía x x x x x x x x x x x x Estado del arte x Uso que se le puede dar

x x

Comunicación entre Sockets

x x x

Descargas de software

x x x

Programación Java aplicación

x x x x x x x x x

Ruta crítica 7 7 5 4 4 4 4 4 4 4 4 4

Tabla B. 2:Cronología de actividades proyecto terminal II

Actividad Semanas trimestre 14-P 2° 3 4 5 6 7 8 9 10 11 12 13 Documentación x x x x x x x x x x x x Escritura de Reporte Final

x x x x x x x x x x x x

Bibliografía x x x x x x x x x x x x Presentación x x Login x x Comunicación con el PIC

x x x x x x

Comunicación mediante puerto paralelo

x x

Programación y selección de PIC

x x x x

Implementación x x x x Ruta crítica 5 5 5 5 5 6 5 3 5 5 5 5

Page 57: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

57  

  

Anexo C

CODIGOS FUENTES DE TX Y RX

Tabla C. 1 Código fuente de la clase Login.

import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.JPasswordField; import javax.swing.JLabel; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /* * Esta clase nos permite introducir seguridad al sistema, ya que si un intruso intenta * manipular las funciones que solo del usuario, se le redirigirá al login, * si los datos ingresados son correctos se le permite el acceso, de lo contrario * no se permite dicho acceso. * */ public class Login { private JFrame frame; private JTextFieldtxtUsuario; private JPasswordFieldpasswordField; private TestEncriptarMD5 md5 = new TestEncriptarMD5(); /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Login window = new Login(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); }

Page 58: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

58  

  

/** * Crea la aplicación */ publicLogin() { initialize(); } /** * Inicia el entorno gráfico. */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 450, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); JButtonbtnIngresar = new JButton("Ingresar"); btnIngresar.addActionListener(new ActionListener(){ private String usuario; privateStringpass; /* * Esta función se encarga de validar que los datos ingresados * sean correctos. * Utilizando el método de encriptación md5 * Se valida el usuario y el password, si ambos datos son * correctos se ingresa al sistema, * de lo contrario no se le permite el acceso*/ public void actionPerformed(ActionEvent e){ this.usuario = md5.encriptaEnMD5(txtUsuario.getText()); this.pass = md5.encriptaEnMD5(passwordField.getText()); if(this.usuario.equals("122b738600a0f74f7c331c0ef59bc34c") && this.pass.equals("81dc9bdb52d04dc20036dbd8313ed055") ){ System.out.println("Usuario y contraseña correctos"); VistaCliente vista = new VistaCliente(1); frame.setVisible(false); vista.main(null); } else{ JOptionPane.showMessageDialog(frame, "Error usuario y/o contraseña incorrectos"); System.out.println("Error usuario y/o contraseña incorrectos"); } } });

Tabla C. 1 Código fuente de la clase Login.

Page 59: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

59  

  

btnIngresar.setBounds(145, 223, 117, 25); frame.getContentPane().add(btnIngresar); txtUsuario = new JTextField(); txtUsuario.setBounds(145, 86, 114, 25); frame.getContentPane().add(txtUsuario); txtUsuario.setColumns(10); passwordField = new JPasswordField(); passwordField.setBounds(145, 146, 117, 25); frame.getContentPane().add(passwordField); JLabellblPassword = new JLabel("Password"); lblPassword.setBounds(145, 119, 117, 15); frame.getContentPane().add(lblPassword); JLabellblUsuario = new JLabel("Usuario"); lblUsuario.setBounds(145, 52, 70, 15); frame.getContentPane().add(lblUsuario); } }

Tabla C. 1 Código fuente de la clase Login.

Page 60: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

60  

  

Tabla C. 2 Código fuente para la codificación md5.

import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; //clase que nos ayuda a encriptar la información del usuario. //el md5 es una metodología de encriptación de información. public class TestEncriptarMD5 { private static final char[] CONSTS_HEX = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' }; public static String encriptaEnMD5(String stringAEncriptar) { try { MessageDigestmsgd = MessageDigest.getInstance("MD5"); byte[] bytes = msgd.digest(stringAEncriptar.getBytes()); StringBuilder strbCadenaMD5 = new StringBuilder(2 * bytes.length); for (int i = 0; i <bytes.length; i++) { intbajo = (int)(bytes[i] & 0x0f); int alto = (int)((bytes[i] & 0xf0) >> 4); strbCadenaMD5.append(CONSTS_HEX[alto]); strbCadenaMD5.append(CONSTS_HEX[bajo]); } return strbCadenaMD5.toString(); } catch (NoSuchAlgorithmException e) { return null; } } public static void main(String args[]) { System.out.println("\n\nEncriptacion en MD5 de 123: '"+encriptaEnMD5("usuario1")+"'"); System.out.println("Encriptacion en MD5 de hola: '"+encriptaEnMD5("1234")+"'"); } }

Page 61: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

61  

  

Tabla C. 3 Código fuente de la clase Vista cliente.

import java.awt.EventQueue; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JRadioButton; import javax.swing.JComboBox; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; importjava.io.FileWriter; /*Clase que pinta la vista del cliente * */ public class VistaCliente extends JFrame implements ActionListener{ privateJFrameframe; publicJButtonbtnEnviarRespuestas = new JButton("Enviar respuestas"); private JRadioButton rdbtnSi1 = new JRadioButton("si"); private JRadioButton rdbtnNo1 = new JRadioButton("no"); private JRadioButton rdbtnSi2 = new JRadioButton("si"); private JRadioButton rdbtnNo2 = new JRadioButton("no"); private JRadioButton rdbtnSi3 = new JRadioButton("si"); private JRadioButton rdbtnNo3 = new JRadioButton("no"); private JRadioButton rdbtnSi4 = new JRadioButton("si"); private JRadioButton rdbtnNo4 = new JRadioButton("no"); private JRadioButton rdbtnSi5 = new JRadioButton("si"); private JRadioButton rdbtnNo5 = new JRadioButton("no"); public int[] respuestas = new int[5]; private static intauxLogin = 0; private Login login = new Login(); /** *Inicia la aplicación. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { System.out.println("En main " + auxLogin); VistaCliente window = new VistaCliente(auxLogin); window.frame.setVisible(true); } catch (Exception e) { System.out.println("No esta logueado");

Page 62: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

62  

  

//e.printStackTrace(); } } }); } /** * Esta parte se encarga de validar que el usuario estélogueado, * si no lo está pide su información, de lo contrario pinta la vista del usuario */ public VistaCliente(int a){ if(a==1){ this.auxLogin = a; System.out.println("Esta logueado " + a); initialize(); } else{ login.main(null); } } public void unirSiNo(JRadioButtonrdbtnSi, JRadioButtonrdbtnNo, ButtonGroup group){ group.add(rdbtnSi); group.add(rdbtnNo); } /** * Toda la vista del usuario */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 450, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(null); ButtonGroup group1 = new ButtonGroup(); ButtonGroup group2 = new ButtonGroup(); ButtonGroup group3 = new ButtonGroup(); ButtonGroup group4 = new ButtonGroup(); ButtonGroup group5 = new ButtonGroup(); /* * En esta parte del código se muestra las opciones que el * usuariopuede activar. * */ JLabellblquieresEncenderLampara = new JLabel("¿Quieres encender el sistema de riego?"); lblquieresEncenderLampara.setBounds(12, 23, 293, 23); frame.getContentPane().add(lblquieresEncenderLampara);

Tabla C. 3 Código fuente de la clase Vista cliente.

Tabla C. 3 Código fuente de la clase Vista cliente.

Page 63: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

63  

  

rdbtnSi1.setBounds(22, 39, 72, 23); frame.getContentPane().add(rdbtnSi1); rdbtnNo1.setBounds(99, 39, 149, 23); frame.getContentPane().add(rdbtnNo1); JLabel lblquieresEncenderLampara_1 = new JLabel("¿Quieres encender las luces exteriores?"); lblquieresEncenderLampara_1.setBounds(12, 58, 293, 23); frame.getContentPane().add(lblquieresEncenderLampara_1); rdbtnSi2.setBounds(22, 76, 72, 23); frame.getContentPane().add(rdbtnSi2); rdbtnNo2.setBounds(99, 76, 149, 23); frame.getContentPane().add(rdbtnNo2); JLabel lblquieresEncenderLampara_2 = new JLabel("¿Quieres encender el estereo?"); lblquieresEncenderLampara_2.setBounds(12, 102, 293, 23); frame.getContentPane().add(lblquieresEncenderLampara_2); JLabel lblquieresEncenderLampara_3 = new JLabel("¿Quieres encender TV?"); lblquieresEncenderLampara_3.setBounds(12, 142, 293, 23); frame.getContentPane().add(lblquieresEncenderLampara_3); rdbtnNo3.setBounds(99, 120, 149, 23); frame.getContentPane().add(rdbtnNo3); rdbtnSi3.setBounds(22, 120, 72, 23); frame.getContentPane().add(rdbtnSi3); rdbtnSi4.setBounds(22, 161, 72, 23); frame.getContentPane().add(rdbtnSi4); rdbtnNo4.setBounds(99, 161, 149, 23); frame.getContentPane().add(rdbtnNo4); JLabel lblquieresEncenderLampara_4 = new JLabel("¿Quieres encender las luces interiores?"); lblquieresEncenderLampara_4.setBounds(12, 184, 293, 23); frame.getContentPane().add(lblquieresEncenderLampara_4); JRadioButton radioButton_6 = new JRadioButton("si"); radioButton_6.setBounds(22, 161, 72, 23); frame.getContentPane().add(radioButton_6);

Tabla C. 3 Código fuente de la clase Vista cliente.

Page 64: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

64  

  

rdbtnSi5.setBounds(22, 206, 72, 23); frame.getContentPane().add(rdbtnSi5); rdbtnNo5.setBounds(99, 206, 149, 23); frame.getContentPane().add(rdbtnNo5); unirSiNo(rdbtnSi1, rdbtnNo1, group1); unirSiNo(rdbtnSi2, rdbtnNo2, group2); unirSiNo(rdbtnSi3, rdbtnNo3, group3); unirSiNo(rdbtnSi4, rdbtnNo4, group4); unirSiNo(rdbtnSi5, rdbtnNo5, group5); JLabellblLamparas = new JLabel("Dispositivos"); lblLamparas.setBounds(178, 12, 70, 15); frame.getContentPane().add(lblLamparas); btnEnviarRespuestas.addActionListener(new ActionListener() { /*La función se encarga de crear el archivo * y escribir 0 o 1 dependiendo de las respuestas del usuario * */ public void actionPerformed(ActionEvent arg0){ String nombre = "prueba1.txt"; EnviarArchivoenviarArchivo = new EnviarArchivo(nombre); try{ FileWriterfichero= newFileWriter("/home/karla/Escritorio/Program/"+nombre); if(rdbtnSi1.isSelected()){ respuestas[0]=1; } else{ respuestas[0]=0; } fichero.write(respuestas[0] + ", "); if(rdbtnSi2.isSelected()){ respuestas[1]=1; } else{ respuestas[1]=0; } fichero.write(respuestas[1] + ", "); if(rdbtnSi3.isSelected()){ respuestas[2]=1; } else{

Tabla C. 3 Código fuente de la clase Vista cliente.

Page 65: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

65  

  

respuestas[2]=0; } fichero.write(respuestas[2] + ", "); if(rdbtnSi4.isSelected()){ respuestas[3]=1; } else{ respuestas[3]=0; } fichero.write(respuestas[3] + ", "); if(rdbtnSi5.isSelected()){ respuestas[4]=1; } else{ respuestas[4]=0; } fichero.write(respuestas[4] + ""); fichero.close(); } catch(Exception e){ System.out.println("Error"); } //se envía archivo al servidor enviarArchivo.main(null); JOptionPane.showMessageDialog(null, "Su archivo a sido enviado"); System.out.println("Se envio el archivo"); } }); btnEnviarRespuestas.setBounds(133, 237, 162, 25); frame.getContentPane().add(btnEnviarRespuestas); } @Override public void actionPerformed(ActionEvent e) { } }

Page 66: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

66  

  

import java.net.*; import java.io.*; public class EnviarArchivo { private String nombreArchivo = ""; public EnviarArchivo( String nombreArchivo ) { this.nombreArchivo = nombreArchivo; } public void enviarArchivo( ) { System.out.println("Si entro a enviar archivo " + this.nombreArchivo); try { // Creamos la dirección IP de la máquina que recibirá el archivo InetAddressdireccion = InetAddress.getByName( "192.168.1.73" ); // Creamos el Socket con la dirección y elpuerto de comunicación Socket socket = new Socket( direccion, 4400 ); socket.setSoTimeout( 2000 ); socket.setKeepAlive( true ); // Creamos el archivo que vamos a enviar File archivo = new File( nombreArchivo ); // Obtenemos el tamaño del archivo inttamañoArchivo = ( int )archivo.length(); // Creamos el flujo de salida, este tipo de flujo nos permite // hacer la escritura de diferentes tipos de datos tales como // Strings, boolean, caracteres y la familia de enteros, etc.

Tabla C. 4 Código fuente de la clase Enviar Archivo.

Page 67: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

67  

  

DataOutputStream dos = new DataOutputStream( socket.getOutputStream() ); System.out.println( "Enviando Archivo: "+archivo.getName() ); // Enviamos el nombre del archivo dos.writeUTF( archivo.getName() ); // Enviamos el tamaño del archivo dos.writeInt( tamañoArchivo ); // Creamos flujo de entrada para realizar la lectura del archivo en bytes FileInputStreamfis = new FileInputStream( nombreArchivo ); BufferedInputStreambis = new BufferedInputStream( fis ); // Creamos el flujo de salida para enviar los datos del archivo en bytes BufferedOutputStreambos=newBufferedOutputStream( socket.getOutputStream()); // Creamos un array de tipo byte con el tamaño del archivo byte[] buffer = new byte[ tamañoArchivo ]; // Leemos el archivo y lo introducimos en el array de bytes bis.read( buffer ); // Realizamos el envío de los bytes que conforman el archivo for( int i = 0; i <buffer.length; i++ ) { bos.write( buffer[ i ] ); } System.out.println( "ArchivoEnviado: "+archivo.getName() ); // Cerramos socket y flujos bis.close(); bos.close(); socket.close(); } catch( Exception e ) { System.out.println( e.toString() ); } } // Lanzamos nuestro cliente para realizar el envío del archivo public static void main( String args[] ) { System.out.println("si entro al main"); EnviarArchivoea=new EnviarArchivo( "/home/karla/Escritorio/Program/prueba1.txt" ); ea.enviarArchivo(); } }

Tabla C. 4 Código fuente de la clase Enviar Archivo.

Page 68: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

68  

  

import java.net.*; import java.io.*; importjava.util.*; /*Esta es la clase que simulará el servidor para el proyecto*/ public class RecibirArchivo { private ServerSocketservidor = null; private String mensaje = " "; public RecibirArchivo( ) throws IOException { // Creamos socket servidor escuchando en el mismo puerto donde se comunica el cliente // en este caso el puerto es el 4400 servidor = new ServerSocket( 4400 ); System.out.println( "Esperando recepcion de archivos..." ); actualizaMensaje("Esperando recepcion de archivos..."); } private void actualizaMensaje(String men){ mensaje = men; } public String getMensaje(){ return mensaje; } /*Función que lee el archivo una vez recibido*/ public void iniciarServidor() { LeerTex leer = new LeerTex(); while( true ) { try { // Creamos el socket que atendera el servidor Socket cliente = servidor.accept(); // Creamos flujo de entrada para leer los datos que envía el cliente DataInputStream dis = new DataInputStream( cliente.getInputStream() ); // Obtenemos el nombre del archivo

Tabla C. 5 Código fuente de la clase Recibir Archivo.

Page 69: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

69  

  

StringnombreArchivo = dis.readUTF().toString(); // Obtenemos el tamaño del archivo inttam = dis.readInt(); System.out.println( "Recibiendo archivo "+nombreArchivo ); // Creamos flujo de salida, este flujo nos sirve para // indicar donde guardaremos el archivo System.out.println("El nombre del archivo es "+ nombreArchivo); FileOutputStreamfos = new FileOutputStream(("/home/osvaldo172/Escritorio/ArchivoRecibido/"+nombreArchivo ); BufferedOutputStream out = new BufferedOutputStream( fos ); BufferedInputStream in = new BufferedInputStream( cliente.getInputStream() ); prueba1.txt") // Creamos el array de bytes para leer los datos del archivo byte[] buffer = new byte[ tam ]; // Obtenemos el archivo mediante la lectura de bytes enviados for( int i = 0; i <buffer.length; i++ ) { buffer[ i ] = ( byte )in.read( ); } // Escribimos el archivo out.write( buffer ); // Cerramos flujos out.flush(); in.close(); out.close(); cliente.close(); leer.main(null); } catch( Exception e ) { System.out.println( "Recibir: "+e.toString() ); } } } // Lanzamos el servidor para la recepción de archivos public static void main( String args[] ) throws IOException {

Tabla C. 5 Código fuente de la clase Recibir Archivo.

Page 70: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

70  

  

new RecibirArchivo().iniciarServidor(); } }

import java.io.*; import java.util.Arrays; public class LeerTex { private static String [] elementosCasa; public static void llenArreglo(){ elementosCasa = new String[5]; elementosCasa[0]=”Sistema de riego”; elementosCasa[1]=”Luces exteriores”; elementosCasa[2]=”Estéreo”; elementosCasa[3]=”TV”; elementosCasa[4]=”Luces interiores”; return; } public static void main(String[] args) { llenArreglo();

Stringcontent = null; //Contenido del archivo Integeropcion; StringnumBin =””; File file = new File(“/home/osbaldo172/Escritorio/ArchivoRecibido/prueba.txt”);

//ruta donde se encuentra el archivo a leer Try {

//lectura del archivo FileReader reader = new FileReader(file); char[] chars = new char[(int) file.length()]; reader.read(chars); content = new String(chars); //cierre del archive Reader.close(); //Eliminamos espacios en blanco content = content.replaceAll(“\\s”,””); //Asignamos cada valor al nuevo vector (usando como separación la coma) String[] vector= content.split(“,”); Int[] números =new int [5]; //mostramos el vector for(intnj=0; nj<vector.length; nj++){

opcion = Integer.parserInt(vector[nj]); if (opción == 1){

Tabla C. 5 Código fuente de la clase Recibir Archivo.

Tabla C. 6 Código fuente de la clase Leer Texto.

Page 71: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

71  

  

System.out.println(elementosCasa[nj] + “ ”+ “ se encendio”); } else{

Sytem.out.println(elementosCasa[nj] + “ ” + “ no se encendio” ); } numeros[nj]= opción; numBin = numBin + opción;

} System.out.println(“Creo convertidor”); System.out.println(“El numero binario es: ” + numBin); System.out.println(“------------------”); Convertidor terminal = new Convertidor(numBin); Convertidor.main(); System.out.println(“------------------”);

} catch (IOException e){ e.printStackTrace(); }

} } 

import java.io.*; public class Convertidor { public static String numBin; //Se inicia el numero binario que se le pasara a nuestro convertidor en c public Convertidor(String numBin) { this.numBin = numBin; } /* La función se encarga de ejecutar nuestro programa en c, se le pasa como parámetro el número binario * que se crea con las respuestas del usuario */ public static void main() { System.out.println("Ejecutandoconvertidor"); try { //System.out.println("El numero a combertir es: " + numBin); String[] command = {"./biToDec", numBin}; //corre el comando que se le manda a la terminal final Process process = Runtime.getRuntime().exec(command); new Thread()

Tabla C. 7 Código fuente de la clase Convertidor.

Tabla C. 6 Código fuente de la clase Leer Texto.

Page 72: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

72  

  

{ public void run() { try{ InputStream is = process.getInputStream(); byte[] buffer = new byte[1024]; for(int count = 0; (count = is.read(buffer)) >= 0;) { System.out.write(buffer, 0, count); } } catch(Exception e) { e.printStackTrace(); } } }.start(); new Thread() { public void run() { try{ InputStream is = process.getErrorStream(); byte[] buffer = new byte[1024]; for(int count = 0; (count = is.read(buffer)) >= 0;) { System.err.write(buffer, 0, count); } } catch(Exception e) { e.printStackTrace(); } } }.start(); intreturnCode = process.waitFor(); System.out.println("Return code = " + returnCode); } catch (Exception e) { e.printStackTrace(); } } }

Tabla C. 7 Código fuente de la clase Convertidor.

Page 73: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

73  

  

#include <stdio.h> #include <string.h> #include <math.h> int main(intargc, char *argv[]){ char numero[16]; charnumChar; intaux=0, resp=0, aux2, i, algo1, potencia=1, j, auxPot, prub; float algo2; aux=strlen(argv[1]); for(i=1; i<=aux; i++){ aux2=aux-i; numChar = argv[1][aux2] - '0'; //printf("el numero es: %d", numChar); algo2=1; if(i!=1){ potencia=2*potencia; } auxPot = potencia*numChar; //printf("%d * %d = %d\n", potencia, numChar, potencia*numChar); resp=resp + auxPot; } printf("La secuencia es: %d\n", resp); returnresp; }

Tabla C. 8 Código fuente en C para conversión de binario a decimal.

Page 74: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

74  

  

Anexo D

CARACTERÍSTICAS DEL PIC 16F84A [9]

El microcontrolador es uno de los inventos más notables del siglo XX. Un microcontrolador es

un circuito integrado programable que contiene todos los componentes necesarios para controlar el funcionamiento de una tarea determinada. La utilización de un microcontrolador en un circuito reduce notablemente el tamaño y el número de componentes, en consecuencia disminuye el número de averías, volumen y peso de los equipos.

En los últimos años se ha tenido un gran auge en los microcontroladores PIC (por sus siglas en inglés Peripheral Interface Colntroller) fabricados por Microchip Technology Inc. Los PIC son una familia de microcontroladores que han tenido una gran aceptación y desarrollo en los últimos años debido las siguientes características, bajo precio, reducido consumo de energía, gran calidad, fiabilidad y abundancia de información.Entre los microcontroladores PIC destaca el PIC16F84A cuya simplicidad, prestaciones, facilidad de uso y precio lo han convertido en el más popular de los microcontroladores.El microcontrolador PIC16F84A puede trabajar con una frecuencia máxima de 10 Mhz. Existe una versión avanzada de este microcontrolador, el PIC16F84A-20 que puede trabajar hasta los 20 Mhz. ARQUITECTURA INTERNA DEL MICROCONTROLADOR PIC16F84A El microcontrolador PIC16F84A está integrado por los siguientes componentes internos:

Memória de programa tipo ROM Flash de 1k x 14 bits.

Memoria de datos dividida en 2 áreas: o Área RAM constituida por 22 registros de propósito específico (FSR) y 68 de

propósito general (GPR). o Área EEPROM de datos formada por 64 registros de 8 bits.

ALU de 8 bis y registro de trabajo W.

Dos puertos para la comunicación con el mundo exterior: PORTA de 5 bits <RB4:RA0>

y PORTB de ocho bits <RB7:RB0>.

Contador de programa de 13 bits con los que se pueden direccionar 8k, aunque en el PIC16F84A solo dispone de 1k de memoria implementada que puede ser direccionada.

 

Page 75: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

75  

  

ORGANIZACIÓN DE MEMORIA

En el PIC16F84A se distinguen 3 bloques de memoria: Memoria de programa

En sus 1024 posiciones se almacena el programa de aplicación, es del tipo no volátil. Memoria de datos RAM

Se utiliza para guardar las variables y datos, es del tipo volátil. Memoria EEPROM de datos

Es una pequeña área de memoria de dato de lectura y escritura para variables y datos, es del tipo no volátil.

La arquitectura interna del microcontrolador PIC 16F84A se muestra en la Figura D.1

Figura D. 1:Arquitectura interna del PIC16F84A.

Los registros de funciones especiales (FSR) se encuentran en la memoria RAM entre dos

segmentos de memoria que parten de la dirección 00h a 0Bh y 80h a 8Bh. Estos segmentos se conocen como banco 0 y banco 1 respectivamente, estos registros se pueden apreciar en la Figura D.2.En la memoria RAM también se encuentran los registros de propósito general (GPR) que se encuentran entre las direcciones de memoria que parten de la dirección 0Ch a 4Fh (banco 0) que se encuentran mapeadas en las direcciones 8Ch a CFh (banco 1), teniendo un total de 68 posiciones de 8 bits en donde se pueden guardar datos de manera temporal.

Page 76: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

76  

  

Figura D. 2: Mapa de registro FSR

En cualquier programa de un microcontrolador PIC siempre se realizará la manipulación de los registros de funciones especiales para resolver tareas específicas. Cada registro está compuesto por 8 bits, cada bit sirve para configurar la funcionalidad del registro, de modo que se ha de utilidad para resolver tareas específicas en el programa. En la Tabla D.1 se muestran los registros de funciones específicas (SFR).

Tabla D. 1: Registros de funciones específicas.

Page 77: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

77  

  

DESCRIPCIÓN DE REGISTROS DE FUNCIONES ESPECIALES UTLIZADOS

Es importante saber el valor que se asigna a cada registro para conocer el funcionamiento que desempeñará en el programa del PIC, a continuación se describen los registros más utilizados.

Registro STATUS. El registro de estado o STATUS ocupa la posición 03h del banco 0 o la 83h del banco 1 y es uno de los registros más importantes y utilizados. Su constitución interna se muestra en la Tabla D.2 a continuación se explica el funcionamiento de cada uno de sus bits.

Tabla D. 2: Registro STATUS.

C: Acarreo en el bit de mayor peso. • C=1: Se ha producido un acarreo en el bit de mayor peso. • C=0: No se ha producido acarreo.

DC: Acarreo en el cuarto bit.

• DC=1: Se ha producido un acarreo en el 4 bit. • DC=0: No se ha producido acarreo.

Z: Cero.

• Z=1: El resultado de una instrucción Lógica-aritmética ha sido 0. • Z=0: El resultado de una instrucción Lógica-aritmética no ha sido 0.

PD: Power Down

• PD=1: Se activa después de alimentar el PIC o al ejecutar la instrucción CLRWDT. • PD=0: Se ha ejecutado la instrucción SLEEP.

TO: Time Out

• TO=1: Se ha alimentado el PIC o se han ejecutado las instrucciones CLRWDT o SLEEP. • TO=0: Se ha desbordado el perro guardián (WatchDog).

RP1-RP0: Selección del banco en direccionamiento directo.

• El PIC16F84A solo tiene dos bancos, únicamente se utiliza el bit RP0. • RP0=1: Se accede al banco 1. • RP0=0: Se accede al banco 0.

Page 78: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

78  

  

IRP: Selección de banco en direccionamiento indirecto. • En el PIC no se utiliza porque sólo se cuentan con dos puertos por lo que automáticamente se

toma con un valor de 0.

Registro PORTA. El registro PORTA sirve para enviar o recibir datos según se configure el registro TRISA

Registro PORTB. El registro PORTB sirve para enviar o recibir datos según se configure el registro TRISB

Registro TRISA. El registro TRISA se utiliza para la configuración del registro PORTA si en el registro TRISA se carga el valor de 0x00 PORTA queda configurado como salida, si TRISA se carga el valor de 0xFF el PORTA se configura como entrada.

Registro TRISB. El registro TRISB se utiliza para la configuración del registro PORTB, si en el registro TRISB se carga con el valor de 0x00 PORTB queda configurado como salida, si TRISB se carga con el valor de 0xFF el PORTB se configura como entrada.

Page 79: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

79  

  

ANEXO E

DISEÑO DE MAQUETA

En este proyecto se contempla una etapa de implementación en la cual se pretende mostrar el funcionamiento del proyecto terminal. Por lo que fue necesario realizar una maqueta, para representar cada uno de los dispositivos a controlar.

 

Figura E. 1: a) Vista delantera. b)Vista lateral. c)Vista superior. d) Cableado, vista inferior.

Page 80: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

80  

  

 

Figura E. 2: Circuito impreso de la etapa del microcontrolador.

Page 81: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

81  

  

 

Figura E. 3: Interior de la maqueta a) vista superior b) Sistema de audio y TV c) Vista superior y etapa de control.

 

Figura E. 4: a) Interior iluminado b) sistema de riego y ventilador activados.

Page 82: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

82  

  

 

Figura E. 5: Maqueta terminada.

BIBLIOGRAFÍA

[1] R. Saavedra, Automatización de Viviendas y Edificios, Ediciones Ceac. Barcelona España, 2009.

[2] BehrouzA.Forouzan, Transmisión de datos y redes de comunicaciones, cuarta edición, McGraw-Hill, 2007, pp 23-40

[3] Disponible en: http://www.fenercom.com/pdf/publicaciones/la-domotica-como-solucion-de-futuro-fenercom.pdf

[4] Herbert Schildt, Manual de referencia java, séptima edición, Ed. México, D.F: McGraw-Hill, 2009, pp 602-605

[5]Huidobro José Manuel, Millán Tejedor Ramón Jesús, Manual de Domótica, Creaciones Copyright, S. L, España , 2010, pp3-4

[6]http://www.konradlorenz.edu.co/images/stories/articulos/Domotica_Consumo_Energia.pdf

Page 83: Reporte Control Remoto - 148.206.53.84148.206.53.84/tesiuami/UAMI16777.pdf · automatización de funciones, tales como: encendido y apagado de luces, control de activación, control

83  

  

[7] http://www.construible.es/articulos/ecoud-house-de-panasonic

[8]Caballe Santi, Fatos Xhafa, “Aplicaciones distribuidas en java con tecnología RMI”, Primera edición, Delta publicaciones, p102-103

[9]Enrique Palacios. et al, Microcontrolador PIC16F84A Desarrollo de proyectos , 2 ed., Ed. Alfa Omega, 2006, pp. 1–73.

[10]http://www.solutekcolombia.com/servicios_tecnologicos/cableado_estructurado/servicios/edificios/