84 | P á g i n a
- Al iniciar el Módulo de Monitoreo se inicia un Temporizador configurable que cada 2 segundos (Valor predeterminado), solicita una actualización de los estados de los puertos,
ha ie do u a lla ada a la fu ió ‘e i i Estado ; esos datos son aprovechados por la aplicación para realizar las siguientes acciones:
o Dibujar sobre un conjunto de medidores animados el estado de la temperatura, o
una gráfica poligonal mostrando el cambio del valor respecto al tiempo.
o Mostrar el estado de puertas y sensor de presencia.
o Verificar el estado de las alarmas (Éstas son activadas en situaciones críticas
detectadas por los sensores) para que en caso de generarse alguna de estas situaciones, mostrarla como un punto de atención rojo sobre el diagrama virtual del Sitio de Cómputo, específicamente colocado en el lugar donde dicha alarma se ha generado.
- El Módulo de Control se activa cuando el usuario ejecuta alguna acción de control desde la interfaz; dichas acciones pueden ser: abrir/cerrar puertas, encender/apagar luces o activar/desactivar la ventilación manualmente; para lo anterior se utiliza la función E ia , escribiendo los estados de los puertos del módulo salida, y así llevar a cabo la acción determinada.
- El Módulo de Vigilancia al igual que el anterior, se habilita a petición del usuario, y su función es la de mostrar la imagen que está siendo visualizada por la Cámara IP, en ese preciso momento.
- El módulo de seguridad es también muy importante, y está orientado a limitar el acceso a la aplicación, solamente a los usuarios que el administrador permita; como se podrá imaginar este módulo es más bien un complemento a la aplicación, ya que en ningún proyecto de este tipo se debe dejar de lado la seguridad.
85 | P á g i n a
5.3 Desarrollo de aplicación Web ASP.NET
Es importante recordar, que dentro de nuestros objetivos incluimos la capacidad de poder acceder a la aplicación, desde distintos tipos de dispositivos fijos y móviles (Smartphone, Palm, Pocket PC, entre otros), para lo cual es necesario desarrollar una interfaz amigable, extensible y con soporte para éstos; se propone entonces lo siguiente:
Diseñar e implementar una aplicación Web en ASP.NET con complementos en Silverlight; dicha aplicación será accesible a todo usuario desde Internet e Intranet (Red Local), con el único requerimiento de contar con el .NET Framework más reciente, y un explorador de Internet compatible con la tecnología Silverlight.
La aplicación estará alojada en un Servidor Web ubicado en la red local del dispositivo a controlar. Al hacer uso de la tecnología ASP.NET, el control se ejecuta de El lado del se ido ; e o da do u
poco la arquitectura del sistema el Servidor Web, está ubicando en la red local del Sistema de Monitoreo y Control, de manera que las consultas y acciones son llevadas al sistema de control únicamente a través de la red local, protegiendo así el acceso directo al dispositivo (IP Power), por parte de cualquier usuario desde Internet.
Dividiremos el desarrollo de la aplicación Web en varias etapas:
Comunicación con el(los) dispositivos a controlar
Como se indicó anteriormente, la base de la comunicación entre el Sistema de Monitoreo y Control y la aplicación, es a partir de la implementación de la Biblioteca de Clases desarrollada, dentro de la aplicación el usuario indicará el momento en que la aplicación se conectará al dispositivo, y es a partir de ahí cuando comenzará la interacción entre el Sistema de Control, la Aplicación Web y el Usuario.
InteracciónAplicación-Usuario
Una vez que la comunicación se ha establecido, toca el turno de los Controles Gráficos de la aplicación presentar de manera eficiente la información; para ello haremos uso de la tecnología Silverlight, creando un conjunto de objetos animados que permitan brindar al usuario final, una experiencia interactiva y agradable con nuestro sistema de monitoreo y control.
Configuración de la aplicación
Antes de realizar cualquier tipo de acción sobre la aplicación, debemos configurar ciertos parámetros; primero que nada debemos agregar una nueva interfaz de control, dicha interfaz quedará permanentemente almacenada en una pequeña base de datos, y será visible para todos los usuarios que accedan al sitio; en cuanto al código, se creará una nueva instancia de la clase por cada interfaz agregada, cada una de ellas con su respectiva IP.
86 | P á g i n a Seguridad
No podemos dejar de lado el aspecto de la seguridad en una aplicación de monitoreo/control; la forma de implementarla se refiere a limitar el acceso a dicha aplicación, sólo a las personas previamente autorizadas.
87 | P á g i n a
5.3.1 Desarrollo de los objetos Silverlight
Estos objetos son los que proporcionarán la interactividad entre la aplicación y el usuario; serán un conjunto de indicadores de las condiciones ambientales del centro de cómputo a monitorear, así como una abstracción virtual del mismo; la forma de operar de los mismos se indica a continuación:
Indicadores de Sensores
Estos indicadores se actualizarán de acuerdo a un temporizador configurable; en cada actualización el servidor solicitará la información al dispositivo (IP Power), que dirigirá la solicitud al microcontrolador y éste responderá con la magnitud respectiva al sensor indicado.
El hacer uso de Silverlight para éste y los demás objetos, hará parecer que la información se actualiza de manera casi inmediata, ya que la transición de un estado a otro se realiza de forma animada, y las formas ya están cargadas previamente en la caché del explorador.
Plataforma virtual del centro de cómputo
La forma de indicar el estado de puertas, luces, ventilación y alarmas dentro de la aplicación, será por medio de una abstracción virtual del centro de cómputo real; en ella podremos observar los componentes de dicho centro, así como indicadores de los estados críticos mostrados por los sensores, por lo que será muy fácil detectar, el lugar exacto donde se producen los desencadenadores de las alarmas.
Procedimiento de diseño
Recordando un poco el marco teórico, en Silverlight tenemos una clara separación entre código y presentación (C# y XAML en este caso); por un lado definimos la interfaz y asignamos eventos a ciertas figuras o controles, y por el otro editamos el código referente a cada uno de dichos eventos. La forma en que se crean estos objetos, lleva el siguiente procedimiento:
Creación de formas y colores.
Asignación de identificadores (ID) a dichas formas.
Establecer parámetros predeterminados (longitud, coordenadas, tipo de transición). Definición del tipo de Animación.
Definición del Storyboard (Línea del tiempo) para la transición de la animación. Definir el código que por detrás manipulará la animación.
88 | P á g i n a
5.3.2 Ejemplo: Indicador de Barras de Temperatura
Definiendo formas
La forma básica de dibujar una gráfica de comportamiento de temperatura, es a partir de un gráfico de barras, cuyo tamaño cambiará de acuerdo al valor identificado; procedemos entonces a definirlas por medio de rectángulos, asignando además los parámetros de color, tamaño inicial, etc.
<Rectangle x:Name="Temperatura" Visibility="Collapsed" Width="100"> <Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/> </LinearGradientBrush>
</Rectangle.Fill> </Rectangle>
Animando el control
Para animar el control creado, debemos asignar al is o u “to oa d , al cual que le colocaremos los parámetro referentes a la manera en que dicho control será modificado; posteriormente a partir del nombre del mismo, es posible referenciarlo dentro del código.
<Rectangle x:Name="Temperatura" Visibility="Collapsed" Width="100"> <Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/> </LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.Resources>
<Storyboard x:Name="AnimTemp">
<DoubleAnimation Storyboard.TargetName="GTemp" Storyboard.TargetProperty="Height" From="10" To="300" Duration="0:0:5">
89 | P á g i n a
</DoubleAnimation>
</Storyboard> </Rectangle.Resources>
</Rectangle>
Finalmente dentro de la programación, podemos iniciar dicha animación simplemente haciendo referencia al nombre de la misma y al evento; además de poder modificar sus parámetros desde el mismo código:
AnimTemp.Begin ();
Y esa es la forma básica de animar los controles, debido a la complejidad de algunos de los controles no se describirán a detalle en este momento.
90 | P á g i n a
5.4 Programación del microcontrolador MSP430 F2012
Como se menciona en un capítulo anterior, en el caso de la temperatura, tenemos valores analógicos los cuales no podemos captar directamente en nuestro módulo, ya que sus entradas son únicamente digitales, por esta razón es que utilizaremos este microcontrolador, ya que cuenta con un convertidor analógico-digital, este microcontrolador está programado de tal forma que cuando se rebasa el nivel permitido, éste enviará una señal digital a nuestro módulo y este a su vez nos informará del suceso.
Para lograr este objetivo fue necesario la elaboración del siguiente programa:
5.4.1 Programa sensor de temperatura
#include "msp430x20x2.h" void Ini_LCD(); void Enable_LCD(); void Envio_4bits(char); void Comando_LCD(char); void Datos_LCD(char); void vfDelay(unsigned int);
const unsigned char Letrero1[17] = {"MSP430F2012 "}; const unsigned char Letrero2[17] = {" Termometro "}; const unsigned char Letrero3[17] = {" Temperatura. "}; const unsigned char Letrero4[17] = {" +123.4ßC "}; long temp;
long IntDegC; long error; int k = 1;
char UnidadMillar, Centena, Decena, Unidad; void vfBCD(long);
int main( void ) {
// Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;
//DCO Trabajando a 1MHz aprox. BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
//Configuración del ADC10
ADC10CTL0 = SREF_1 + ADC10SHT_1 + MSC + REFON + ADC10ON; ADC10CTL1 = INCH_1 + ADC10SSEL_0 + CONSEQ_2;
ADC10AE0 |= BIT1;
91 | P á g i n a
//Configuración de las líneas de salida P2SEL &= ~0xC0;
P2DIR |= BIT7+BIT6; //P2.6, P2.7 configuradas como salidas
//P1OUT &= ~0xF9; //Borrado de las líneas que ocupa el LCD int i;
int s; s = 5;
while(--s) vfDelay(0xFFFF);
ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start Ini_LCD();
Comando_LCD(0x0C); P2OUT = 0x00;
for(i = 0; i <= 15; i++) Datos_LCD(Letrero1[i]); //Impresión del Letrero1 Comando_LCD(0xC0);
for(i = 0; i <= 15; i++) Datos_LCD(Letrero2[i]); //Impresión del Letrero2 s = 20;
while(--s) vfDelay(0xFFFF); //Pausa para poder visualizar los caracteres
Comando_LCD(0x01); //Comando para limpiar la pantalla del LC for(;;) { temp = ADC10MEM; IntDegC = ((temp * 1500)/1023); vfBCD(IntDegC);
error = k*(250 - IntDegC); // cálculo del error
if(error <= -10) // rango de error P2OUT = 0x40; if(error >= 10) P2OUT = 0x80; Comando_LCD(0xC5); Datos_LCD(UnidadMillar); Datos_LCD(Centena); Datos_LCD(Decena); Datos_LCD(0x2E); Unidad = Unidad + 0x30; Datos_LCD(Unidad); s = 10;
while(--s) vfDelay(0xFFFF); //Pausa para poder visualizar los caracteres }
}
92 | P á g i n a
void Ini_LCD() {
P1SEL &= ~0xF9;
P1DIR |= BIT7+BIT6+BIT5+BIT4+BIT3+BIT0; //P1.0, P1.3 a P1.7 configuradas como salidas
P1OUT &= ~0xF9; //Borrado de las líneas que ocupa el LCD
P1OUT |= 0x20; //Funtion SET Enable_LCD();
vfDelay(19); //Pausa de 120us Enable_LCD();
P1OUT &= 0x0F; P1OUT |= 0xC0; Enable_LCD();
vfDelay(19); //Pausa de 120us
Comando_LCD(0x0F); //Set ON/OFF of entire display (D),dresser ON/OFF(C), //and blinking of cursor position B
Comando_LCD(0x01); //Clear display and return cursor to home position (Address 0). }
//Rutina de Envio de Comandos al LCD void Comando_LCD(char CMD)
{
P1OUT &= ~BIT0; //RS = 0 Envio_4bits(CMD);
if (CMD <= 0x02) vfDelay(815); //Pausa de 4.9ms else vfDelay(19); //Pausa de 120us }
//Rutina de Envio de Datos al LCD void Datos_LCD(char DAT) {
P1OUT |= BIT0; //RS = 1 Envio_4bits(DAT);
vfDelay(19); //Pausa de 120us }
//Rutina de Envio de 4-bits al LCD void Envio_4bits(char BIT) { int Q; Q = BIT & 0xF0; P1OUT &= 0x0F; P1OUT |= Q; Enable_LCD(); Q = BIT << 4; P1OUT &= 0x0F;
93 | P á g i n a
P1OUT |= Q; Enable_LCD();
}
//Envio del un pulso para la terminal E del LCD void Enable_LCD()
{
P1OUT |= BIT3; // E = 1 vfDelay(1);
P1OUT &= ~BIT3; // E = 0 }
//Rutina de Tiempo
void vfDelay(unsigned int T) {while(--T);}
//--- //Rutina de conversión de Binario a BCD
void vfBCD(long D) { UnidadMillar = 0x30; Centena = 0x30; Decena = 0x30; if ( D >= 1000 ) { do { D-=1000; UnidadMillar++; } while ( D >= 1000 ); } if ( D >= 100 ) { do { D-=100; Centena++; } while ( D >= 100 ); } if ( D >= 10 ) { do { D-=10; Decena++;
94 | P á g i n a } while ( D >= 10 ); } Unidad = D; }
95 | P á g i n a
Capítulo 6
96 | P á g i n a
Para la realización de este proyecto se requiere del material y equipo que a continuación se presenta, en este apartado presentamos las características y costos de cada uno de los elementos a utilizar, sin embargo, existe la posibilidad de buscar algunas otras alternativas, si la persona interesada en el proyecto así lo solicitara.
-Equipo de cómputo
Es necesario un equipo de cómputo para realizar toda la programación, pero al final éste también será requerido, ya que será el encargado de procesar la información que se obtiene de los distintos eventos, que sucedan dentro del Cuarto de Cómputo.
Componentes
Procesador I tel® Co e™ Duo E7400 (3MB L2 Cache,2.80GHz,1066 FSB)
Memoria 2GB Dual Channel DDR2 SDRAM at 800MHz- 2DIMMs
Disco Duro GB “e ial ATA Ha d D i e ‘PM /DataBu st Ca he™
Monitor 20 inch S2009WFP Widescreen Digital Flat Panel Monitor
Dispositivo Óptico 16X DVD+/-RW Drive
Teclado Tarjeta de Video Tarjeta de Sonido Mouse Costo : $6,000-$7,000 -Software
Visual Studio 2008 ofrece avances clave para desarrolladores en función de los siguientes tres pilares:
Desarrollo rápido de aplicaciones Colaboración eficiente entre equipos Innovación en experiencias de usuario Costo : $2500.00
97 | P á g i n a
-Cámara Web
Esta cámara presenta las siguientes características:
• Diseño de cuello flexible
• K pí eles
• pí eles fo ato VGA • I te faz U“B .
• Co st uido e 3 LEDs infrarrojos de alta potencia para la luz baja
• Co st uido e LEDs de alto brillo para el cuarto oscuro
• Le te de fo o ajusta le
• Cá a a de se so : / de pulgada color CMOS sensor
• Pí el: VGA Fo ato X
• ‘esolu ió : , , , , , , • fotog a as po segu do: FPS @ 352 x 288, 15 FPS @ 640 x 480
• Má i o de Captu a ‘esolu ió : Hasta po soft a e • Dista ia de Fo o: ~ i fi ito
• Le te de á gulo a ho: g ados Diago al
• Colo : hasta . illo es de olo e dade o -bit)
• Du a ió : Ap o i ada e te -pulgadas
COSTO $500.00
-Actuador universal para seguros
El actuador universal deberá ser instalado en la puerta del centro de cómputo para ser conectada al IP Power, y así poder controlar el acceso al lugar.
Caracteristicas
- Alimentación: 12 Vcc
- Fuerza de desplazamiento: hasta 2,5 Kg. - Distancia de desplazamiento: 1,9 cm. - Tiempo de vida: hasta 100,000 operaciones - Dimensiones: 16 x 6 x 3 cm.
98 | P á g i n a Costo: $100.00
-Sensores de temperatura
Se requiere de estos sensores para saber si el cuarto de cómputo está a la temperatura adecuada, y de no ser así, accionar el aire acondicionado, los sensores a utilizar serán los LM35, ya que nos ofrece una precisión de 1°C que va desde -55° a 150° , se presenta en diferentes encapsulados, tiene una salida lineal y equivale a 10mV/°C.
Se podría colocar un sólo sensor, pero para tener una mayor eficiencia se planea poner uno en cada esquina del cuarto de cómputo, y realizar un promedio de las temperaturas de cada uno de éstos, para así obtener un valor más real.
COSTO: $30.00
-Cables para conexiones
Se requerirá de diversos tipos de cables para realizar conexiones entre los diferentes dispositivos, como lo pueden ser cables seriales, UTP, USB, etc.
COSTO: $100.00
99 | P á g i n a -Instalación y mantenimiento
Esto consiste en realizar la instalación del todo el sistema y proporcionar mantenimiento durante un periodo de tiempo aún por definir.
Costo: $3000.00
-IP Power Aviosys 9212
Es la parte central del proyecto, debido a que es el encargado de realizar la conexión por medio de la red entre los dispositivos y la interfaz de control, a través de sus entradas y salidas digitales, serán conectados los sensores y actuadores que ya se mencionaron anteriormente.
Costo: $1500.00
-Microcontrolador F2012 de Texas Instruments
Este microcontrolador será utilizado para realizar los sensores de temperatura y presencia, con la finalidad de que a la salida únicamente tengamos estados altos o bajos, dependiendo de las condiciones en las que se encuentre el centro de cómputo.
100 | P á g i n a
-Otros componentes electrónicos
Para la realización de los sensores de temperatura y presencia, son necesarios algunos componentes electrónicos, como reguladores de voltaje , capacitores , resistores, transistores, etc. De los cuales se describirá su función en el capítulo dedicado a hardware.
Costo: $100.00
-Ventilador
Este tipo de ventiladores tienen las siguientes características: Alimentación de 12 VCD 60 mA. 700 mW de potencia 7000 a 10000 RPM. 25 dBA de ruido Dimensiones de 40 x 40 x 10 mm (2 pulgadas). Costo: $40
101 | P á g i n a -Foco miniatura de bayoneta
Alimentación: 12 VDC -Ruteador Inalámbrico D-Link
Principales Características y Facilidades:
· Rendimiento 5 x veces superior que el de un producto Wi eless15 11b · Ancho de Banda de 54Mbps, en 2.4GHz
· Compatible con productos que operen bajo el estándar 802.11b y 802.11g, y todos los productos Wi eless de D-Link
· Seguridad Avanzada, WPA
· Funcionalidades de Firewall, DMZ hots y Soporte VPN Pass-through · Control de acceso hacia Interne
· Antena desmontable con conector RSMA · Servidor DHCP
· Fácil Instalación gracias al Soporte de UPnP · Alto Rendimiento
· Fácil integración en red Costo: $1800
102 | P á g i n a
Conclusiones
Después de realizar un extenso trabajo de desarrollo de software y de hardware,
nuestro prototipo finalmente está terminado y listo para utilizarse.
Luego de las pruebas realizadas, tanto en la parte de hardware, como de software,
pudimos corroborar y demostrar que nuestro prototipo es un sistema confiable, eficiente
y fácil de utilizar para cualquier persona.
Entre estas pruebas destacan las realizadas a los sensores, ya que es de vital importancia
que éstos, funcionen en tiempo real para que nuestro monitoreo sea lo más eficiente
posible, este objetivo se cumplió y se puede apreciar fácilmente, cuando rebasamos el
nivel de temperatura recomendado, cuando hay humo o cuando hay movimiento, ya que
inmediatamente que es detectado algún cambio, éste es registrado por nuestra
Aplicación Web, visible desde cualquier parte del mundo.
De igual forma, las pruebas realizadas con los actuadores resultaron satisfactorias.
Podemos observar que desde diferentes equipos de cómputo de diferentes áreas,
nuestro equipo se puede controlar sin ningún problema, esto se comprobó al activar los
diferentes actuadores que tenemos conectados en nuestra maqueta, como lo son: el
ventilador, el actuador eléctrico para puertas y el encendido de focos.
La parte más destacable de este sistema, es el software, el cual cuenta con un ambiente
virtual muy amigable para el usuario, lo cual le permite a cualquier persona (aunque
tenga conocimientos limitados en computación), la operación de éste de manera sencilla
y eficiente. Como se ejecuta por medio de una página de Internet, no necesitamos de
instaladores ni bibliotecas, ya que todo se encuentra almacenado en nuestro servidor
Web.
Uno de los problemas a los que nos enfrentamos ocurrió al leer las señales de nuestros
sensores, ya que aunque se contaba con el voltaje necesario, pero la corriente era
insuficiente, por esta razón se utilizó un arreglo de transistor-relevador-resistor
polarizado por base.
Este dispositivo se recomienda para la industria, para oficinas y para el hogar, para la
industria como se requiere de procesos monitoreo y control más precisos, se requiere
afinar aún más este prototipo, en cambio para el uso en oficinas y el hogar este producto
resulta recomendable ampliamente.
103 | P á g i n a
Bibliografía
1. Redes de Datos y Convergencia IP;
José Manuel Huidobro Moya, Ramón Jesús Millán Tejedor; Editorial Alfaomega;
Primera Edición; México, Julio 2007.
2. Comunicaciones y Redes de Computadoras; William Stallings;
Editorial Prentice Hall; Sexta Edición;
España.
3. Ingeniería del Software; Ian Sommerville;
Editorial Pearson Addison Wesley; Séptima Edición.
4. Redes de computadoras; Andrew S. Tanenbaum; Editorial Pearson; Cuarta edición.
5. Internet, Redes de Computadoras y Sistemas de Información; Sergio Talens Oliag, José Hernández Orallo;
Editorial Paraninfo. 6. Domine TCP/IP;
José Luis Raya, Víctor Rodrígo; Editorial Alfaomega,
México D.F., 1998. .
7. Redes Globales de Información con Internet y TCP/IP, Principios básicos, Protocolos y Arquitectura;
Douglas E. Comer;
Editorial Prentice Hall Hispanoamericana, S.A.; Tercera Edición;
104 | P á g i n a 8. Programación Segura con .NET Framework
Marino Posadas Netalia Ediciones S.L. Segunda Edición
9. Aplicaciones .NET Multiplataforma Francisco Javier Ceballos Sierra Editorial Ra-Ma
Primera Edición; México.
10. Silverlight 2.0 Laurence Moroney
Editorial Anaya Multimedia Segunda Edición
México.
11.http://es.wikipedia.org/wiki/Control_remoto
105 | P á g i n a
Anexo 1 – Conexiones del Prototipo
106 | P á g i n a
Anexo 2 – Conexión de la Red
107 | P á g i n a
Anexo 3 – Biblioteca de clases para comunicarse con el IP Power
Public Class ConexionIP
'Funciones de Comunicación'
Declare Function Inicializar Lib "socket.dll" Alias "receivep6" () As Integer Declare Function RecepcionDatos Lib "socket.dll" Alias "receive" () As Integer
Declare Function Transferir Lib "socket.dll" Alias "transfer" (ByVal variable As Integer) As Integer