User talk:Mtrujillos
Experiencias iniciales en el Control de dispositivos por Internet
Ing. Marco Trujillo Silva Ingeniero Electrónico Docente de Teleinformática marcotrujillo@hotmail.com
Resumen
Una de las ventajas de Internet actual es que posibilita la conexión con todo tipo de computadores, desde los personales, hasta los más grandes que ocupan habitaciones enteras. Incluso podemos ver conectados a la Red cámaras de vídeo, robots, y una serie de dispositivos e instrumentos utilizados en el control de procesos industriales.
La pregunta inmediata es ¿Cómo se hace el control de estos dispositivos a través de Internet, y que nos permita desarrollar aplicaciones adaptables a nuestros requerimientos?
La respuesta es esta pregunta exige un estudio completo de las diversas alternativas existentes. Entre las encontradas podemos mencionar: aplicaciones cliente servidor basadas en el protocolo tcp/ip, otras usando las librerias de sockets, otras más basadas en el protocolo http y la última encontrada que promete mucho es la basada en el servidor web implementado en un chip (Micro servidor web).
En este artículo se muestran trabajos iniciales explorados por los alumnos con orientación del autor y las recientes aplicaciones propuestas para investigación.
1 Introducción
La web ha sido capaz de unificar todo tipo de medios: radio, televisión, texto, audio, imágenes, etc.
Si bien se están haciendo progresos en las tecnologías basadas en internet, cabe resaltar la tendencia de los micro servidores que implementa la pila TCP/IP, que permitiría introducirlo en las facilidades de la web. Los requerimientos en cuanto a coste y consumo son perfectamente asumibles por cualquier dispositivo de hoy en día.
El diseño de hardware es muy simple, aparte del microcontrolador donde se encontrará toda la suite de protocolos, es necesario, y muy recomendable, obtener técnicas de programación desarrollar nuestras aplicaciones y adaptar a nuestras múltiples necesidades
El poner a un microcontrolador a hacer el trabajo de un servidor, requiere que éste tenga implementado en su memoria de programa, todos los protocolos que se va a utilizar y la configuración del servidor principal presente en la red. En lo que respecta al microcontrolador, es necesario recalcar que el programa para la suite de protocolos TCP/IP ya se encuentra implementada por profesionales, en un archivo hex. No es necesario entender a la perfección el programa, ni mucho menos modificarlo, dado que estos protocolos son estándares, y de realizarse cualquier modificación, dejarían de serlo. Existe la necesidad de comprender como se realizan las aplicaciones basadas en la plataforma TCP/IP.
2 Características de TCP/IP Internet usa el protocolo TCP/IP que significa "Transmission Control Protocol / Internet Protocol", es el que se encarga de recibir paquetes de información y redirigirlos al usuario final que los solicitó. TCP/IP es el nombre de dos protocolos núcleos que dan soporte a Internet. Sin embargo frecuentemente es usado para referirse al conjunto de protocolos de conectividad estándar.
2.1 Protocolo IP:
Tiene la función de direccionar y encaminar los paquetes al destino, sin garantizar su entrega (servicio no confiable), sin conexión (cada paquete es tratado de manera independiente) y desarrollando el mejor esfuerzo o “best effort” (todos los paquetes son igualmente tratados). Las direcciones IP ayudan a identificar la ruta del paquete hacia el destino.
2.1 Protocolo TCP:
Es un protocolo de transporte orientado a conexión (SOC, se establece la sesión antes de intercambiar datos), proporcionando un servicio fiable de flujo de datos de extremo a extremo. Estos mecanismos incluyen la suma de comprobación, números de secuencia, sincronización, acuses de recibo, y procedimientos de retransmisión.
Este protocolo bidireccional permite que el programador escriba programas de aplicación cliente/servidor utilizando primitivas estándar que trabajan en una gran variedad de redes sin preocuparse del tipo de subred y de transmisiones no confiables.
2.3 Protocolo UDP:
A diferencia de TCP es un protocolo de transporte no orientado a la conexión, no fiable pero muy rápido, debido a su overhead reducido.
2.4 Sockets:
TCP usan los puertos como enlace entre dos aplicaciones. El número de puerto identifica la aplicación de origen y la de destino, estos números, en conjunto con las direcciones IP de origen y destino en el encabezado del datagrama IP, identifican de forma unívoca la conexión entre las aplicaciones de origen y destino.
La combinación de un puerto y una dirección IP es llamada, a veces, de socket, el número cuádruplo (puerto y dirección IP de cliente y puerto y dirección IP de destino) identifica una conexión en internet y puede ser un número entre 0 - 65535. Existen tres tipos de sockets diseñados para TCP/IP: Stream, Datagram y Raw.
Los Sockets Stream utilizan como protocolo a TCP, mientras que los Sockets Datagram usan a UDP.
3 Aplicaciones basadas en Sockets
Un ejemplo de aplicación Cliente /Servidor simple se muestra en la figura 1. Donde:
Socket: Crea la estructura de datos para comunicaciones, especifica el tipo de servicio y el protocolo. Bind: Asigna una dirección de red y nombre al socket (la estructura de datos). List: Indica que el servidor está listo para recibir conexiones. Asigna espacio para filas de los clientes que se conectan al servidor (no es bloqueante). Acept: Espera a que lleguen conexiones del cliente. Bloquea la espera, hasta que un cliente realiza una conexión. Connect: Bloquea mientras se realiza la conexión con el servidor. Send: Envía datos a la conexión. Receive: Recibe datos de la conexión. Close: Cierra un socket. Libera la conexión.
Fig. 1
4 El Winsock Control de Visual Basic Al igual que un usuario se comunica con el programa por medio del teclado, dos programas se pueden comunicar entre sí por medio de un control especial que se denomina WinSock Control. Este control esta disponible en el lenguaje Visual Basic, y su nombre proviene de Windows Sockets. El Winsock Control de Visual Basic, no es visible en tiempo de ejecución, lo que significa que solo sabemos que el control se encuentra en nuestra aplicación y cuáles son sus propiedades. Propiedades, métodos y eventos de WinSock Una vez que tenemos el WinSock control en nuestra barra de controles en Visual Basic ya podemos comenzar a ver las propiedades, eventos y métodos más importantes del control.
Lista de propiedades más importantes
• LocalIP: Devuelve la dirección IP de la máquina local en el formato de cadena con puntos de dirección IP (xxx.xxx.xxx.xxx). • LocalHostName: Devuelve el nombre de la máquina local. • RemoteHost: Establece el equipo remoto al que se quiere solicitar la conexión. • LocalPort: Establece el puerto que se quiere dejar a la escucha. • RemotePort: Establece el número del puerto remoto al que se quiere conectar. • State: Verifica si el Control WinSock esta siendo utilizado o no. La sintaxis de cada propiedad es: Objeto.Propiedad = Valor Donde Objeto va el nombre del Control WinSock, el nombre predeterminado es "WinSock1". Ejemplo de la propiedad LocalIP Private Sub Form_Load() Label1.caption = WinSock1.LocalIP End Sub Lista de Métodos más importantes del control WinSock • Accept: Sólo para las aplicaciones de servidor TCP. Este método se utiliza para aceptar una conexión entrante cuando se está tratando un evento ConnectionRequest. • GetData: Recupera el bloque actual de datos y lo almacena en una variable de tipo Variant. • Listen: Crea un socket y lo establece a modo de escucha. • SendData: Envía datos a un equipo remoto. Lista de Eventos más importantes • ConnectionRequest: Se produce cuando el equipo remoto solicita una conexión. Sin este evento no se puede llevar a cabo la conexión. • Connect: Se produce cuando el equipo local se conecta al equipo remoto y se establece una conexión. • Close: Se produce cuando el equipo remoto cierra la conexión. Las aplicaciones deben usar el método Close para cerrar correctamente una conexión TCP. • DataArrival: Se produce cuando llegan nuevos datos, y con los que debemos hacer algo. 5 Aplicaciones ejemplo con Winsock Para entender el correcto funcionamiento del protocolo TCP/IP vamos a empezar por programar la aplicación Servidor a la cual luego se conectará el Cliente. Identificación de controles de la aplicación Servidor Control (nombre predeterminado) Propiedad (nuevo valor) WinSock1 LocalPort = 888
Evento click del Command1 Private Sub Command1_Click()
Winsock1.Listen
End Sub Esto hace que el Control WinSock empiece a funcionar, escuchando el puerto que se indicó en las propiedades de dicho control. Este puerto es el 888. Ahora si realizamos todo a la perfección el puerto 888 esta siendo vigilado para aceptar conexiones remotas. Evento DataArrival del WinSock Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String Winsock1.GetData datos Text1.Text = Text1.Text + datos
End Sub Datos queda transformada en una variable de cadena, y WinSock almacena los datos que recibe del Cliente en el buffer y luego ingresan a la variable datos, dicha variable mostrará su contenido en el control TextBox (Text1). Evento ConnectionRequest del Winsock Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close Winsock1.Accept requestID
End Sub Este evento es muy importante, permite aceptar la petición de conexión. Sin este evento el resto del programa no tendría efecto. Evento Click del command2 Private Sub Command2_Click()
Dim enviar As String enviar = Text2.Text Winsock1.SendData enviar
End Sub Esto permite enviar el texto que se introduzca en el TextBox número 2. Identificación de controles de la aplicación Cliente Control (nombre predeterminado) Propiedad (nuevo valor) WinSock1 LocalPort = 888
Evento click del Command1 Private Sub Command1_Click()
Winsock1.RemoteHost = Text3.Text Winsock1.Connect
End Sub El evento connect permite conectar al programa servidor que esta esperando la solicitud, este evento requiere un parámetro fundamental, el IP o nombre de host el cual es introducido previamente a la conexión en el cuadro de texto número 3 (Text3). Evento DataArrival del WinSock Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim datos As String Winsock1.GetData datos Text1.Text = Text1.Text + datos
End Sub
Esto permite a la aplicación (a través de WinSock) recibir información del servidor y mostrarla en pantalla. Evento Click del command2 Private Sub Command2_Click()
Dim enviar As String enviar = Text2.Text Winsock1.SendData enviar
End Sub Estas instrucciones son necesarias para enviar información al servidor. Aplicación ejemplo usando el puerto paralelo:
Private Sub cmdConnect_Click() On Error GoTo ErrHandler With Winsock1
.RemoteHost = Trim(txtRemoteIP) .RemotePort = Trim(txtRemotePort) If .LocalPort = Empty Then .LocalPort = Trim(txtLocalPort) Frame2.Caption = .LocalIP .Bind .LocalPort End If
End With txtLocalPort.Locked = True StatusBar1.Panels(1).Text = " Connected to " & Winsock1.RemoteHost & " " Frame1.Enabled = True Frame2.Enabled = True Label4.Visible = True Text2.SetFocus Exit Sub ErrHandler: MsgBox "Winsock failed to establish connection with remote server", vbCritical End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyF1 Then ChDir App.Path Shell "notepad.exe readme.txt", vbNormalFocus End If End Sub Private Sub Form_Load() Show MsgBox "Winsock UDT Chat" & vbCrLf & "by Theo Kandiliotis (ionikh@hol.gr)" & vbCrLf & vbCrLf & "F1 for help.", vbInformation txtRemoteIP = Winsock1.LocalIP End Sub Private Sub Text1_Change() Dim a, c As String Dim b, d, g As Integer b = Len(Text1) d = Len(Text1) - e g = b - d + 3 If Mid(Text1, g) = "a" Then
Call vbOut(&H378, 32)
Else
If Mid(Text1, g) = "e" Then Call vbOut(&H378, 72) End If
End If e = Len(Text1) End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) Static Last_Line_Feed As Long Dim New_Line As String If Trim(Text2) = vbNullString Then Last_Line_Feed = 0 If KeyAscii = 13 Then
New_Line = Mid(Text2, Last_Line_Feed + 1) Last_Line_Feed = Text2.SelStart Winsock1.SendData New_Line StatusBar1.Panels(2).Text = " Sent " & (LenB(New_Line) / 2) & " bytes "
End If End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim New_Text As String Winsock1.GetData New_Text Text1.SelText = New_Text Frame1.Caption = Winsock1.RemoteHostIP StatusBar1.Panels(2).Text = " Recieved " & bytesTotal & " bytes " End Sub
6 Nuevas tendencias: Servidores Web en un chip.
La capacidad de controlar su horno microondas, la refrigeradora, las alarmas, el despertador de la radio y demás dispositivos desde un navegador de web, se puso mucho más creíble, cuando en la Universidad de Massachussets un graduado, construyó el servidor del web más pequeño del mundo.
Es del tamaño de una cabeza del fósforo y cuesta menos de $1.
Micro servidores Web
La miniaturización tecnológica ha llegado al mundo de los servidores de páginas web que se conectan a Internet.
La drástica reducción del tamaño de los servidores web, actualmente de un tamaño comparable al de una cabeza de cerilla, posibilita la conexión de casi cualquier aparato eléctrico a una red de ordenadores (y por lo tanto su control).
Manifestándose una nueva era en el diseño digital, algunas de las empresas fabricantes anunciaron sus próximos planes agresivos de implementar sistemas que esencialmente colocan un servidor dentro de un chip.
La idea fundamental es tratar de emular en un microcontrolador a un servidor web convencional.
Una sola computadora del circuito integrado ejecuta un web-servidor del iPic y se exige ser la aplicación más diminuta de una pila de TCP/IP y un HTTP 1.0 web-servidor.
Partes del iPic web-server
Stephen Bannasch ha fotografiado este prototipo del servidor diseñado por Shrikumar.
En él, los componentes están suspendidos en el aire a través de los cables amarillos y azules, pero una versión final de este prototipo podría incluir todos los componentes en una tarjeta con un circuito impreso, haciendo posible que el micro servidor ocupase el tamaño de una cabeza de cerilla.
El chip de la izquierda es un microcontrolador basado en un PIC 12C509A de 8 patillas. El chip de la derecha es un 24LC256 EEPROM que contiene todos los ficheros que el iPIC sirve. Es, a groso modo, como el disco duro del servidor, basado en una memoria EEPROM (Electrically Erasable Programable Read Only Memory).
La diminuta pila TCP/IP
El código propiamente dicho que implementa la pila TCP/IP ocupa únicamente 256 bytes (12-bit), el resto, hasta 512 palabras de programa, es código extra para aumentar las prestaciones y posibilidades del iPIC.
Así pues, en un minúsculo chip disponemos de un servidor web acorde a la norma HTTP 1.0, un servidor telnet simple para editar los ficheros en el chip, una memoria 24LC256 i2c EEPROM para alojar los ficheros que queramos servir.
Esta implementación de la pila TCP/IP está de acuerdo con todo lo especificado en el RFC-1122, Host Requirements Document, que es actual estándar empleado en todas las implementaciones de TCP/IP en todos los hosts de Internet.
Además incluye un sistema de ficheros para manejar múltiples ficheros dentro de la memoria EEPROM y alguna aplicación de propósito general. Esto incrementa en 256 instrucciones el código, quedando todavía la mitad de la capacidad del procesador para la que se desee, por ejemplo, código de usuario.
Ventajas Los procesadores diseñados para el uso en los sistemas basados en servidor proporcionarán 15 veces el desempeño de los procesadores actuales, a mucho más bajo costo y consumo de potencia.
Desventaja: Poca Capacidad. Su capacidad de almacenamiento de las páginas web. Su poca versatilidad impide brindar servicios extra como servidor, a menos que se modifique el diseño. Generalmente cuando se implementa un servidor convencional de páginas web, se instalan también otros servicios, esto en el microcontrolador no se aplica directamente.
7 Conclusiones
Son múltiples las aplicaciones que podría proporcionarnos las diversas implementaciones el stack TCP/IP.
Además de la inherente a su condición que sería servir páginas web, indirectamente podría multiplicar la funcionalidad de los dispositivos a los que estuviese asociado. Veamos una serie de posibles aplicaciones: En el hogar En la actualidad son numerosos los electrodomésticos que utilizamos a diario en nuestro hogar. Hornos microondas, tostadoras, cafeteras, televisiones, videos, alarmas, despertadores, etc.
Si cada uno de los dispositivos mencionados incorporara un servidor web como el que hemos detallado, podría ser controlado remotamente. Más aún, podrían controlarse entre ellos y estar unos en función de otros. En la oficina Podría servirnos para potenciar la comunicación humano-máquina: en la oficina es bastante habitual encontrarnos con recursos electrónicos compartidos. Podríamos obtener las incidencias de manera remota sin necesidad de desplazarse.
Los micro servidores web podrían, además, abaratar costes en instalaciones de cableado de equipamiento que necesite ser controlado remotamente, permitiendo tener un "edificio inteligente" reduciendo la complejidad de su programación y manejo. Servicios añadidos en Telefonía Si bien se están haciendo progresos en la tecnología WAP y el uso del WML, un micro servidor en cada teléfono móvil permitiría una implementación barata de la pila TCP/IP que permitiría introducirlo en las facilidades de la web. Los requerimientos en cuanto a coste y consumo son perfectamente asumibles por cualquier teléfono de hoy en día.
Se espera en un futuro cercano la aparición de los micro servidores web en cada dispositivo del hogar, de la oficina y dispositivo móvil celular.
Bibliografía
Libros: (1) Mánuel Lázaro, Antonio, “Labview6i. Programación Gráfica para el Control de Instrumentación”,1ª ed. Paraninfo S.A, España, 2001, 355 pág. (2) Bentham Jeremy, “TCP/IP LEAN, Web Servers for Embebed Systems”, 2a ed. CMPBooks, USA, 2003, 559 pág. (3) Andrew S. Tanenbaum, 1997, “Redes de Computadoras”, 3ª Ed, Prentice Hall, México, 1997, 813 pág. (4) William Stallings, 2000, “Comunicaciones y Redes de Computadores”, 6a Ed, Prentice Hall, España, 2000, 747 pág.
URLs:
http://pablin.com.ar/computer/cursos/vb.cs/ http://ww.dontronisc.com http://www.arrakis.es/~patxy/ro.htm#slip http://www.embeddedethernet.com http://www.projecsystems.com/webserver/main1.html
El Autor:
Marco Trujillo Silva. Realizó estudios en la Universidad Privada Antenor Orrego, obteniendo el Título de Ingeniero Electrónico. Ha participado en diferentes ponencias nacionales. Es docente investigador en las áreas de redes de computadoras. Esta certificado en D-Link con especialización en Conectividad e Internetworking. Ha participado en concursos obteniendo premios como asesor en concursos locales y nacionales. Actualmente se encuentra desarrollando la Tesis para obtener el grado de Maestría en Sistemas de Información en el convenio con el ITESM de México.
Obtenido de "http://commons.wikimedia.org/wiki/User:Mtrujillos"
Start a discussion with Mtrujillos
Talk pages are where people discuss how to make content on Wikimedia Commons the best that it can be. Start a new discussion to connect and collaborate with Mtrujillos. What you say here will be public for others to see.