Escuela
Superior
de
Ingeniería
Mecánica
y
Eléctrica
Zacatenco
“Sistema de control y monitoreo de
dispositivos a través de Internet con
USB”
T E S I S
Q U E P A R A O B T E N E R E L T Í T U L O D E :
INGENIERO EN COMUNICACIONES Y ELECTRÓNICA
P R E S E N T A N
Agradecimientos
A mis padres Jesús y Cecilia por el gran apoyo que siempre me han proporcionado, en las buenas y en las malas. Gracias, por todos sus esfuerzos y consejos los cuales me han guiado hacia este camino en el que he logrado el primer gran paso de mi vida. Espero que este logro también lo consideren de ustedes. Gracias papás por tener todas esas actitudes que me dan el ánimo de continuar superándome, y resolver cualquier problema que se me presente.
A los profesores el M. en C. Roberto Galicia Galicia y el Ing. Armando Mancilla León, por su constante asesoría y apoyo en la realización de este trabajo.
Jesús
Jovanni
Victoria
Corona
A mis padres, porque gracias a su incondicional apoyo logré realizar uno de mis grandes sueños.
Al profesor M. en C. Roberto Galicia Galicia y el Ing. Armando Mancilla León que no dudaron en ofrecernos todos sus conocimientos a la hora de realizar este trabajo.
Índice
Objetivos ... v
Descripción general. ... vi
Justificación ... vii
Panorama general del trabajo ... viii
Capítulo 1 Control de periféricos ... 1
1.1 Conexión de periféricos ... 1
1.1.1 Interfaz serie ... 2
1.2 Microcontroladores ... 10
Capítulo 2 Envío de datos a través de la red ... 12
2.1 Introducción a Internet ... 12
2.2 Protocolos de comunicación ... 13
2.2.1 Modelo de referencia OSI ... 13
2.2.2 Protocolo TCP/IP ... 15
2.2.3 Protocolo UDP ... 17
2.3 Puertos ... 18
ii
2.5 Dominios y DNS ... 24
2.6 Paradigma Cliente – Servidor ... 25
2.7 Sockets ... 25
2.8 Control Winsock ... 28
2.8.1 Propiedades ... 28
2.8.2 Métodos ... 30
2.8.3 Eventos ... 30
Capítulo 3 Materiales ... 32
3.1 Software de desarrollo ... 32
3.1.1 Visual Studio C# 2008 ... 32
3.1.2 Compilador CCS ... 32
3.1.3 WinPic800 ... 33
3.1.4 LiveWire y PCB Wizard ... 33
3.2 Hardware de desarrollo. ... 33
3.2.1 Programador GTP USB Lite ... 33
3.3 Microcontrolador PIC 18F2550 ... 34
3.4 Cámara IP ... 35
Capítulo 4 Desarrollo de las aplicaciones Cliente y Servidor ... 36
4.1 Instalación del Servidor ... 37
4.3 Descripción de la aplicación Cliente ... 41
4.3.1 Panel de conexión ... 43
4.3.2 Panel de controles ... 44
4.3.3 Panel de ubicación de dispositivos ... 51
4.4 Clase AplicacionCliente, ... 52
4.5 Descripción de la aplicación Servidor ... 54
4.5.1 Panel de datos del Servidor ... 55
4.5.2 Panel de Mensajes ... 56
4.5.3 Estado de la conexión ... 57
4.5.4 Panel de Conexión ... 58
4.6 Comunicación USB ... 59
4.6 Conexión con el Servidor ... 64
4.7 Envío de datos ... 66
4.8 Recepción de datos ... 68
Capítulo 5 ... 70
Sistema electrónico de comunicaciones ... 70
5.1 Introducción ... 70
iv
5.2.3 Módulo de monitoreo ... 131
5.2.4 Diseño de las antenas utilizadas en las comunicaciones inalámbricas ... 153
Estudio económico ... 156
Pruebas y resultados ... 161
Conclusiones ... 163
Apéndice A. Librería para USB: MPUSBAPI.DLL ... 167
Apéndice B. Códigos, aplicaciones Cliente y Servidor ... 172
Apéndice C. Circuitos impresos ... 192
BIBLIOGRAFÍA ... 199
Índice de figuras ... 2000
Desarrollar un sistema que permita a un usuario controlar y monitorear dispositivos a distancia.
Particulares:
•
Enviar
información
de
control
entre
dos
equipos
(Cliente
y
Servidor)
a
través
de
Internet,
que
permita
manipular
dispositivos.
•
Explotar
las
funciones
de
un
microcontrolador
para
lograr
transmitir
y
recibir
datos
a
través
de
la
interfaz
USB.
•
Lograr
la
comunicación
inalámbrica
(RF)
entre
el
Servidor
y
los
dispositivos
controlados
y
monitoreados.
•
Hacer
uso
del
programa
Visual
Studio
2008
para
desarrollar
aplicaciones
capaces
de
comunicarse
a
través
de
una
red.
vi
Descripción general.
El proyecto consiste, en un sistema que permitirá el control y monitoreo de dispositivos, a través de una red, por medio de una aplicación para Windows. Es decir, como se muestra en la figura 1.1, el cliente podrá controlar dispositivos, como demostración, en este proyecto únicamente se utilizaron focos, sin embargo, pueden controlarse diversos dispositivos. También el usuario, a través de una aplicación Windows llamada Cliente, podrá saber cuál es el estado de los dispositivos que está controlando, si éstos se encuentran encendidos o apagados. Por otra parte, también se podrán monitorear ciertos dispositivos, como puede observarse en la figura 1.1, en donde se ilustran algunos tipos de detectores, sin embargo en nuestro proyecto, no se implementaron estos dispositivos, sino que éstos, serán solamente simulados, por medio de interruptores.
Figura 1 Diagrama del general del proyecto
Justificación
Se
decidió
realizar
este
proyecto,
pues
día
con
día,
crece
más
la
necesidad
de
tener
el
control
a
distancia
de
algún
sistema,
por
ejemplo
en
el
área
de
domótica,
en
el
área
industrial,
en
robots,
etcétera.
Así
el
sistema
que
desarrollamos,
puede
ser
implementado
en
varios
sistemas,
particularmente
enfocamos
el
proyecto
al
área
de
domótica,
pues
en
la
actualidad,
debido
a
que
las
personas
están
menos
tiempo
en
el
hogar,
ya
sea
por
que
se
encuentra
de
viaje
o
por
cuestiones
de
trabajo,
surge
la
necesidad
de
tener
un
control
sobre
ciertos
dispositivos,
sin
tener
que
estar
presentes.
Si
tenemos
un
control
a
distancia
de
iluminación
,por
ejemplo,
se
podrá
dar
la
impresión
de
que
en
nuestro
hogar
se
encuentra
alguien,
y
así
nuestro
hogar
no
será
tan
vulnerable
a
un
robo.
Un
ejemplo
que
podemos
dar
aplicado
al
monitoreo
de
dispositivos
es,
que
cuando
se
active
la
de
intrusión,
se
le
indique
al
usuario
inmediatamente
y
se
active
una
alarma,
esto
puede
ayudar,
a
prevenir
robos.
Así
es
posible
dar
varios
ejemplos
,de
las
distintas
aplicaciones
que
se
le
pueden
dar
al
sistema
desarrollado
para
este
proyecto,
lo
que
le
da
gran
versatilidad,
ya
que
puede
ser
ajustado
según
las
necesidades
que
se
tengan.
viii
Panorama general del trabajo
A continuación, se presenta un resumen de cada uno de los capítulos que conforman el presente trabajo, con el fin de tener un panorama general del sistema que se pretende desarrollar.
Capítulo
1
Control
de
periféricos
Este capítulo sirve de introducción teórica a los dispositivos periféricos, se habla sobre la interfaz serial, el modo en que se transmite la información hacia los periféricos, se describen las características del Bus Serie Universal USB y por último son mencionadas las características de los microcontroladores y como éstos sirven para conectar periféricos a la PC.
Capítulo
2
Envío
de
datos
a
través
de
la
red
Las dos aplicaciones Windows (Cliente y Servidor) desarrolladas en este proyecto bajo el paradigma Cliente – Servidor, transmiten datos a través de una red trabajando con el protocolo TCP. Este capítulo tiene la intención de dar las bases teóricas para comprender la forma en cómo la información es transmitida a través de la red y los protocolos que son utilizados según los requerimientos de los sistemas. Además se habla de los sockets y el control Winsock (que es utilizado para el desarrollo del proyecto), dos herramientas que los programadores utilizan para el desarrollo de aplicaciones que intercambien datos en una red.
Capítulo
3
Materiales
Se da una descripción del material tanto de software como de hardware que es utilizado para realizar el proyecto, este capítulo es por lo tanto, dividido en: software de desarrollo, en donde se describen los paquetes software usados para el proyecto, hardware de desarrollo, que habla sobre las herramientas físicas, el microcontrolador PIC 18F2550 junto con sus características y la cámara IP utilizada para el monitoreo de los dispositivos.
Capítulo
4
Desarrollo
de
las
aplicaciones
Cliente
y
Servidor
En este capítulo se describen las dos aplicaciones Windows desarrolladas para transmitir los datos, la programación utilizada para su elaboración, cómo es transmitida la información entre ellas, las interfaces de cada una de ellas y la forma en cómo el usuario podrá interactuar con las aplicaciones.
Capítulo
5
Sistema
electrónico
de
comunicaciones
Aquí se hace una completa descripción del funcionamiento de los circuitos de transmisión y recepción inalámbrica. Los microcontroladores son usados como codificadores y decodificadores de señales y al mismo tiempo para el control y monitoreo de los dispositivos.
1
Capítulo
1
Control
de
periféricos
En este capítulo, se expondrán las bases teóricas relativas a los dispositivos periféricos. Se hablará sobre los estándares más importantes utilizados, para conectar dispositivos periféricos a un equipo, de la importancia que tienen los microcontroladores en el desarrollo de periféricos, y además de la utilización de sensores para la adquisición de datos.
1.1
Conexión
de
periféricos
Un equipo de cómputo, debe tener una comunicación con el mundo exterior, para así poder interpretar y procesar datos que provengan de él. Es por ello, que los equipos cuentan con un sistema formado por varios dispositivos periféricos, conocido como subsistema de Entrada/Salida. Este subsistema, hace posible el intercambio de datos con el exterior, comunicándose con el procesador a través de una serie de módulos, llamados de E/S. Estos módulos cuentan con controladores, que se encargan del funcionamiento de los dispositivos periféricos.
Los módulos de E/S no conectan directamente al periférico con el bus del sistema, sino que lo hacen a través de un conjunto de reglas que se conocen como interfaces, que permiten conectarse con el CPU y la memoria, a través del bus del sistema y a la vez conectarse con los dispositivos periféricos, mediante de enlaces dedicados para datos.
Las razones por las que los módulos E/S no conectan directamente al periférico con el bus, son:
2. En la mayoría de los casos, la velocidad de transferencia que utilizan los dispositivos periféricos, es menor que la que tiene el procesador para comunicarse con la memoria, por esto, no sería conveniente usar el bus del sistema de alta velocidad, para comunicarse directamente con los dispositivos.
3. Los periféricos pueden utilizar formatos y longitudes de palabra de datos, diferentes a los que utiliza el procesador.
Como se mencionó anteriormente, se utilizan interfaces para comunicar al periférico con el procesador, estas interfaces pueden ser de dos tipos, principalmente:
• Interfaz serie: En este tipo de interfaz, sólo se utiliza una sola línea para la transmisión de datos.
• Interfaz paralela: Con esta interfaz se pueden trasmitir múltiples bits de forma simultánea, debido a que se usan varias líneas de datos para la transmisión.
A continuación, se describirá más a fondo a la interfaz serie, ya que es con la que se trabaja en el proyecto y se verán ejemplos de los estándares que hacen uso de ella.
1.1.1 Interfaz serie
Este tipo de interfaz es utilizada en los equipos, para conectar múltiples dispositivos como módems, ratones, impresoras, etc.
La transmisión de los datos se da a través de un solo canal y es bit por bit, esto puede ser de manera síncrona o asíncrona.
3 start), que indica el comienzo de una unidad de datos, un bit de fin (bit de stop), indicando su finalización y, opcionalmente, un bit de paridad para controlar los posibles errores.
1.1.1.1 Interfaz RS232
RS‐232, es el nombre del interfaz de comunicación serie más utilizado del mundo. La norma serie está disponible en prácticamente el 99% de los ordenadores. La norma RS‐232, fue originalmente diseñada para conectar terminales de datos con dispositivos de comunicación, como módems. Desde un principio, fue también utilizada para conectar casi cualquier dispositivo imaginable. Los usos de la RS‐232 en el entorno doméstico son muchos y ampliamente conocidos. Desde la conexión del ratón, el módem/fax, agendas electrónicas de bolsillo, impresoras serie, grabadores de memoria, etc.
El estándar define voltajes que oscilan entre + [3‐15] V para el nivel alto y – [3‐15] V para el nivel bajo. Debido a la gran diferencia de voltaje que existe entre los niveles altos y bajos, se permiten tasas de transferencia de hasta 115.200 baudios si la longitud del cable es de unas pocas decenas de metros.
1.1.1.2 Bus Serie Universal: USB
Para entender el funcionamiento del USB, es necesario estudiar la especificación de este bus. Los fabricantes involucrados en la norma, crearon un documento que constituye la referencia. Aunque en estos momentos se está creando la versión 3.0 del bus, en el presente capítulo se va a tratar la versión 2.0, ya que es la más rápida y es la que posee la familia de PICs 18Fxx5x.
USB 1.0 puede trabajar con dos tasas de transferencia diferentes, una baja de 1.5 Mbps para la conexión de dispositivos lentos (joysticks, ratones), y otra alta de hasta 12 Mbps, para dispositivos que requieren un mayor ancho de banda (Discos Duros o CD‐ROMS).
La especificación de este estándar, ha sido respaldada por las empresas líderes mundiales en el campo de la informática: Intel, IBM, DEC, Microsoft, Compac y NEC, empresas que garantizan su continuidad y utilización.
A mediados del año 2000, aparece la versión 2.0, ésta fue creada por un conjunto de compañías, entre ellas y además de las arriba mencionadas, se encuentran: Hewlett Packard, Lucent y Philips. USB 2.0, multiplica la velocidad del bus por un factor de 30 o 40, esto hace que pueda alcanzar una velocidad de 480 Mbps. Esta versión, es compatible con su antecesora y utiliza el mimo tipo de cable y conectores, únicamente se necesitan nuevos hubs que soporte esta versión. Estos hubs, son más complejos que los anteriores, ya que tienen que manejar el tráfico de datos de tres velocidades diferentes, sin ser excluyentes entre ellas.
Anteriormente los periféricos, se conectaban mapeados directamente en direcciones de E/S, se les asignaba una dirección específica y en algunos casos un canal DMA (Acceso Directo a Memoria). Esta situación causaba conflictos a la hora de la asignación de estos recursos. Además, cada dispositivo podía tener su propio puerto de conexión y usaba cables específicos, esto incrementaba el costo de los mismos. Debido a que a cada dispositivo se le tenían que asignar ciertos recursos, la detección del mismo, debía hacerse a la hora de arrancar el sistema y nunca se podía incorporar un nuevo dispositivo, cuando el sistema ya estaba trabajando.
5 serie esta conexión. Esta topología permite a muchos dispositivos, conectarse a un único bus lógico, sin que los dispositivos que se encuentran más abajo en la pirámide sufran retardo.
Figura 1. 1 Topología de la conexión USB
El sistema USB consta de tres componentes, principalmente:
1. Controlador
El Controlador reside dentro del PC y es responsable de las comunicaciones entre los periféricos USB y la CPU del PC. Es también responsable de la admisión de los periféricos dentro del bus, tanto si se detecta una conexión, como una desconexión. Para cada periférico añadido, el controlador determina su tipo y le asigna una dirección lógica, para utilizarla siempre con el mismo periférico. Si se producen errores durante la conexión, el controlador lo comunica a la CPU, que a su vez, lo transmite al usuario. Una vez que la conexión se ha realizado correctamente, el controlador asigna al periférico, los recursos del sistema que éste precise para su funcionamiento.
El controlador también es responsable, del control de flujo de datos entre el periférico y la CPU.
Cada concentrador se conecta por un lado al equipo y por el otro se conecta a un dispositivo o a un concentrador. Es posible encontrar dispositivos periféricos que vengan con conectores USB incorporados, para así añadir nuevos dispositivos, en total se pueden tener hasta 127 dispositivos conectados y todos pueden funcionar al mismo tiempo. La función principal de los concentradores, es la de permitir ampliar el número de dispositivos conectados a un equipo. El concentrador tiene la capacidad de detectar, cuando un dispositivo es conectado o desconectado de uno de sus puertos, y esto lo notifica al controlador de USB. Igualmente un concentrador, sirve de acoplamiento entre dispositivos que no tengan la misma velocidad.
3. Periféricos
USB soporta periféricos de baja y media velocidad. Empleando dos velocidades para la transmisión de datos, que pueden ser de 1.5 y 12 Mbps. Los periféricos de baja velocidad tales como teclados, ratones, joysticks, y otros periféricos para juegos, no requieren 12 Mbps, empleando para ellos 1.5 Mbps, con esto se pueden dedicar más recursos del sistema a periféricos, tales como monitores, impresoras, módems, scanner, equipos de audio, etc., que precisan de velocidades más altas para transmitir mayor volumen de datos.
A nivel eléctrico, el cable USB transfiere la señal y la alimentación sobre cuatro hilos. Dos líneas para la transmisión de datos y otras dos para transmitir potencia (ver figura 1.2). Los cables de datos (D+ y D‐) son un par trenzado para reducir el ruido y las interferencias.
7 A nivel de alimentación, el cable proporciona la tensión nominal de 5V. Es necesario definir bien el diámetro del hilo, con el fin de que no se produzca una caída de tensión demasiado importante en el cable. Una resistencia de terminación instalada en la línea de datos, permite detectar el puerto y conocer su configuración (1.5Mbps ó 12Mbps), si no lleva resistencia, indica 480Mbps.
Existen dos tipos de conectores (A y B), con el fin de evitar la configuración en bucle. El tipo A es plano y rectangular, mientras que el tipo B es cuadrado. La base para el tipo A se encuentra en el PC o hub y en el periférico, una base de tipo B. Los cables son de tipo A‐B. En la figura 1.3 se muestran estos dos tipos de conectores, junto con su configuración.
Figura 1. 3 Tipos de conector USB
Para comenzar la transferencia, el controlador USB envía un paquete que identifica al dispositivo. El protocolo soporta cuatro tipos de transferencia:
• Tipo Control
Los datos de control, sirven para configurar al periférico en el momento en que éste es conectado al USB. Algunos drivers específicos, pueden utilizar este enlace para transmitir su propia información de control.
• Tipo Bulk
• Tipo Interrupción
Este tipo de transmisión, garantiza la transferencia de pequeñas cantidades de datos. El tiempo de respuesta no puede ser inferior al valor especificado por la interfaz. El ratón o cualquier otro dispositivo apuntador, es una aplicación típica de este modo de transmisión.
• Tipo Isócrona
Utilizado para la transmisión de información con ancho de banda y latencia grantizados, necesario para aplicaciones como audio, telefonía y video. Permite una comunicación periódica y continua entre el sistema y el dispositivo.
1.1.1.3 FireWire, estándar IEEE 1394
Apple y Sony inventaron el FireWire a mediados de los 90, y lo desarrollaron hasta convertirlo en el estándar multiplataforma IEEE 1394. FireWire, es una tecnología para la entrada/salida de datos en serie a alta velocidad, y la conexión de dispositivos digitales como videocámaras o cámaras fotográficas digitales, que ha sido ampliamente adoptado por fabricantes de periféricos digitales como Sony, Canon, JVC y Kodak.
9 Con un ancho de banda 30 veces mayor que el conocido estándar de periféricos USB 1.1, el FireWire 400 se ha convertido en el estándar más respetado para la transferencia de datos a alta velocidad. Apple fue el primer fabricante de ordenadores, que incluyó FireWire en toda su gama de productos. Una vez más, Apple ha vuelto a subir las apuestas, duplicando la velocidad de transferencia con su implementación del estándar IEEE 1394b o FireWire 800.
La velocidad sobresaliente del FireWire 800, frente al USB 2.0, convierte al primero en un medio mucho más adecuado, para aplicaciones que necesitan mucho ancho de banda, como las de gráficos y vídeo, que a menudo consumen cientos o incluso miles de megabytes de datos por archivo.
Algunas de las características más importantes del FireWire, son:
• Flexibles opciones de conexión. Admite un máximo de 63 dispositivos con cables de hasta 4.25 metros.
• Distribución en el momento. Fundamental para aplicaciones de audio y vídeo, donde un fotograma que se retrasa o pierde la sincronización, arruina un trabajo.
• Alimentación por el bus. Mientras el USB 2.0 permite la alimentación de dispositivos sencillos que consumen un máximo de 2.5 W, como un ratón, los dispositivos FireWire pueden proporcionar o consumir hasta 45 W, más que suficiente para discos duros de alto rendimiento y baterías de carga rápida.
• Es conectable/desconectable en uso. Lo que significa que no se necesita desactivar un dispositivo para conectarlo o desconectarlo, y que no es necesario reiniciar el ordenador. • Funciona tanto con Mac como con PC. Lo que garantiza la compatibilidad con una larga lista de
1.2
Microcontroladores
Un microcontrolador, es un circuito integrado programable, que se utiliza para el gobierno de uno o varios procesos. Una vez programado y configurado el microcontrolador, éste solamente sirve para controlar la tarea, para la que fue programado.
Dentro de un microcontrolador, se tienen encapsulados todos los componentes que hay en una computadora: procesador, memoria de datos y memoria de instrucciones, oscilador de reloj interno, módulos de entrada/salida. Las líneas de entrada/salida, soportan la conexión de los sensores y actuadores del dispositivo que se desea controlar.
Además de los elementos que se mencionaron anteriormente, existen una serie de recursos especiales que los fabricantes algunas veces ofrecen, por ejemplo: ampliar las capacidades de las memorias, otros incorporan nuevos recursos y hay quienes reducen las prestaciones al mínimo, para aplicaciones muy simples. Algunos de los principales recursos, que un fabricante puede ofrecer, son:
¾ Conversores AD y DA.
¾ Comparadores analógicos.
¾ Estado de bajo consumo.
¾ Puertos de E/S digital.
¾ Temporizadores (Timers).
¾ Protección frente a fallo de alimentación (Brown‐out).
¾ Perro guardián (Watchdog).
¾ Modulador de anchura de pulsos PWM.
¾ Puertos de comunicación: serie, USB, I2C, UART, etc.
11
Figura 1. 4 Principales usos del microcontrolador
Los principales fabricantes de microcontroladores, son: Microchip, Motorola, Nacional Semiconductor, Atmel, Siemens, Philips, Intel, Hitachi, entre otros. En este proyecto, se utilizarán microcontroladores, de la familia PIC, de Microchip.
Principales usos del microcontrolador
33%
25% 16%
16% 10%
Periféricos
Electrodomésticos
Comunicaciones
Industria
Capítulo
2
Envío
de
datos
a
través
de
la
red
Para nuestro proyecto, pretendemos realizar un software de comunicación que constará de dos aplicaciones Windows, una que actuará como Servidor y la otra que será el Cliente, por lo tanto es importante que se comprendan aspectos teóricos, como los protocolos de comunicación TCP/IP y UDP, lo que son las direcciones IP, el concepto de dominio, el servicio DNS, cómo se da la comunicación a través de Internet y por último los métodos utilizados por los programadores para implementar aplicaciones que se comuniquen a través de una red, como lo son los sockets y el control Winsock.
Entonces, este capítulo nos ayudará a comprender la forma en que los paquetes viajan de un equipo a otro, ya sea a través de una red local o a través de la red de redes, que es Internet.
El conjunto de conceptos que a continuación se explican, es muy importante manejarlos para comprender la comunicación, que pretendemos hacer entre un equipo que esté en nuestro hogar, y otro que se localice en cualquier parte del mundo.
2.1
Introducción
a
Internet
13 1. La conexión física. Nos referimos con esto a la conexión que la PC tiene con la red, mediante un
cable y la tarjeta de red o un módem.
2. La conexión lógica. Aquí entran los protocolos, que son reglas establecidas para la comunicación entre dispositivos dentro de una red. Para Internet, el protocolo usado es TCP/IP, del cual hablaremos más adelante.
3. Aplicaciones. Es a través de las aplicaciones, que el usuario puede visualizar la información que fue procesada, y trabajan junto con los protocolos, para lograr la transmisión y recepción de datos a través de Internet.
2.2
Protocolos
de
comunicación
Hablando específicamente en términos de Tecnologías de la Información (IT), un protocolo1 es un conjunto de reglas que determina los procedimientos que deben seguirse, para transmitir o recibir información. Se puede decir que un protocolo es un lenguaje usado, para lograr que dos computadoras puedan entenderse una con otra. Haciendo una analogía con el mundo real, es como cuando dos personas de diferentes países tratan de comunicarse, si no hablan el mismo idioma, entonces no podrán entenderse y por lo tanto, no habrá intercambio de información.
Para poder entender cómo es que trabajan los protocolos, hay que hablar un poco de lo que es el modelo OSI, esto a su vez nos guiará al conjunto de protocolos TCP/IP, que tienen gran relación con el modelo OSI.
2.2.1 Modelo de referencia OSI
Si queremos saber cómo es que trabajan las comunicaciones en las redes, debemos comenzar por entender este tema. El problema es que muchas personas no saben el por qué de la existencia de este modelo, ni cómo es que trabaja.
1 Del griego
protocollon, que era una hoja de papel que describía el contenido de un manuscrito al cual venía
Cuando las redes de computadoras comenzaban a surgir, sólo una compañía se encargaba de manufacturar toda la tecnología para las redes. Esto impedía que equipos de diferentes marcas pudieran comunicarse entre sí.
Para solucionar este problema la Organización Internacional de Estándares (ISO), desarrolló un modelo de referencia llamado OSI (Open Systems Interconnection), este modelo permitiría a todos los fabricantes tener un conjunto de protocolos a seguir, y contar con un solo “lenguaje” para la comunicación a través de las redes.
Este modelo puede usarse para visualizar, cómo la información, o paquetes de datos, viajan desde las aplicaciones (hojas de cálculo, documentos, etc.), por un medio de red (por ejemplo los cables), hasta otras aplicaciones que estén ubicadas en otra computadora de la red, aunque el emisor y el receptor tengan diferentes tipos de medios de red.
Dos aplicaciones diferentes pueden ser compatibles, siempre y cuando sigan el modelo de referencia OSI, haciendo los procesos correspondientes en el mismo orden. Esto permite a los desarrolladores de software, comprender más fácilmente cómo es que trabajan.
El modelo OSI está formado por siete capas, cada una ilustrando una función de red en particular. La idea básica del modelo de referencia OSI, es ésta: cada capa está encargada de hacer cierto proceso, y sólo puede comunicarse con las capas inmediatamente superior e inferior, por ejemplo, la capa cuatro solo se puede comunicar con las capas cinco y tres.
15 Cuando la computadora recibe datos, ocurre el proceso contrario: la capa recibirá los datos de una capa inferior, procesa lo que está recibiendo, elimina el control de información que le corresponde, y envía el nuevo paquete a la capa superior.
En la figura 2.1, se observa la posición de las capas del modelo de referencia OSI. Los programas sólo se comunican con la séptima capa, la capa de aplicación, es la capa más cercana al usuario. En nuestro proyecto, estos programas serán las aplicaciones cliente y servidor, mediante las cuales el usuario controlará los periféricos.
Figura 2. 1 Capas del modelo OSI
2.2.2 Protocolo TCP/IP
Para la realización de nuestro proyecto, debemos tomar en cuenta un conjunto de reglas para nuestro programa de comunicación, este conjunto de reglas forman a un protocolo. El protocolo que es la base de Internet es TCP/IP (Transmission Control Protocol/Internet Protocol), este protocolo garantiza que una PC que emplea un programa de comunicaciones bajo TCP/IP, se pueda comunicar con otro ordenador de diferente marca que también lo haga.
• TCP (Protocolo de control de Transmisión), es el protocolo de transporte, y su función es mantener la conexión entre los ordenadores, de manera que ésta no se pierda, todo esto a nivel físico.
• IP (Protocolo de Internet), es el protocolo de encaminamiento, encargado de depositar los paquetes de datos en las direcciones correspondientes, de la manera más eficiente posible. También se ocupa de segmentar y reagrupar los datos que componen cada paquete transmitido2.
En la figura 2.2, se comparan las arquitecturas del modelo OSI y la de TCP/IP, como podemos ver, TCP/IP solo cuenta con cuatro capas. En la capa de Aplicación podemos encontrar varios protocolos, como son: SMTP (para e‐mail), FTP (para transferencia de datos) y HTTP (para buscadores web). Cada programa se comunica con un protocolo diferente, ya que no todos realizan la misma función.
Figura 2. 2 Comparación entre modelo OSI y TCP/IP
17 paquetes de información que son enviados a la capa de Internet, o si se está recibiendo, se encarga de ordenar los paquetes y verificar que no tengan errores.
El protocolo de Internet (IP), se encuentra en la capa de Internet, en donde a los paquetes se les agregan las direcciones virtuales de la computadora que envía, y de la que recibirá la información, estas direcciones son conocidas como direcciones IP, de las cuales hablaremos en nuestro siguiente tema. Los paquetes formados son enviados a la siguiente capa, la capa de red, en donde los paquetes ya son llamados datagramas.
La capa de red envía los paquetes a través de la red, o los recibe en el caso de que la computadora sea la receptora. Lo que hay dentro de esta capa, va a depender del tipo de red que se esté usando, el tipo de red que más se utiliza hoy en día, es Ethernet.
Internet cuenta además con una capa en su nivel más alto, que es la capa de Aplicación, en ella están definidos los servicios que le han dado la importancia que tiene la red: HTTP, FTP, WWW, E‐Mail, etc.
Cuando se quiere revisar un e‐mail, se hace una petición al servidor que los almacena, esta tarea es llevada a cabo por la capa de Aplicación, específicamente usando el protocolo SMTP. Cuando en nuestro navegador escribimos “www”, para buscar alguna página, el navegador (Internet Explorer, Fire Fox, Google Chrome, etc.), deja ésta tarea a la capa de aplicación, en donde se hará uso del protocolo HTTP.
Hablemos un poco más de la capa de Aplicación, ya que en ella se llevan a cabo muchas tareas que tienen estrecha relación con nuestro proyecto, y que nos ayudarán a comprender mejor, conceptos que se manejan durante el desarrollo de nuestro software de comunicación.
2.2.3 Protocolo UDP
Al igual que TCP, los puertos en UDP sirven para identificar los puntos terminales de las máquinas origen y destino. Muchas aplicaciones utilizan UD, para evitarse el establecery luego liberar una conexión con esto, la transmisión es más rápida. UDP sólo trabaja con las funciones básicas, debido a que se preocupa más por que los datos se transfieran rápidamente. Tiene la desventaja de que carece de mecanismos de seguridad, como los del protocolo TCP, poniendo en riesgo la transmisión de paquetes entre origen y destino.
2.3
Puertos
La capa de aplicación, se va a comunicar con la capa de transporte a través de un puerto. Ciertas aplicaciones utilizan siempre un mismo puerto para comunicarse, por ejemplo, el protocolo SMTP siempre utiliza el puerto 25, HTTP utiliza siempre el puerto 80 y FTP el 20 para la transmisión de datos y el 21 para control. En el siguiente capítulo, en el que se habla del desarrollo de nuestras aplicaciones cliente y servidor, se volverá a tocar este tema, ya que nuestras aplicaciones también utilizan un puerto para comunicarse.
19
Figura 2. 3 Aplicaciones y sus puertos
Anteriormente se mencionó que el protocolo TCP en la capa de Transporte, cuando se están recibiendo datos, éste ordena los paquetes provenientes de la capa de Internet (ya que pueden venir fuera de orden), y además verifica que el contenido del paquete no tenga errores, una vez hecho esto, envía una señal al transmisor, para que éste sepa que el paquete fue recibido satisfactoriamente, en caso de que esta señal no sea enviada, ya sea porque el paquete no llegó a su destino o porque TCP encontró errores en la información, el transmisor deberá reenviar el paquete.
2.4
Direcciones
IP
En una red TCP/IP, cada computadora debe tener un identificador único, para que pueda comunicarse con el resto de las computadoras de la red. Este identificador es conocido como dirección IP. Una dirección IP es una secuencia de 32 bits, compuesta por unos y ceros, para nosotros los seres humanos sería difícil trabajar de manera directa con este tipo de secuencias, así que para facilitar las cosas, son escritas como cuatro números decimales entre cero y 255, separados por un punto.
Figura 2. 4 Formato de una dirección IP
Una dirección IP está compuesta de dos partes, una parte nos dice la dirección de red y otra la dirección host, en la figura 2.5 se muestra una dirección IP que tendría como dirección de red los dos primeros bytes y los dos bytes restantes para la dirección host.
Figura 2. 5 Estructura de una dirección IP
Las direcciones IP están divididas en cinco clases, la clase a la que pertenece una determinada IP, va a depender del bit o secuencia de bit al principio de cada dirección.
Direcciones
Clase
A
21
Figura 2. 6 Dirección IP de Clase A
Direcciones
Clase
B
Las direcciones Clase B, se utilizan para redes de tamaño moderado a grande. Los dos primeros bits de este tipo de direcciones siempre son 10, por lo tanto, el número más pequeño sería 128 y el más grande 191.Cualquier dirección que comience con un número que esté entre 128 y 191, es de Clase B. En la figura 2.7 se muestra su formato.
Figura 2. 7 Dirección IP Clase B
Direcciones
Clase
C
Son utilizadas para muchas subredes con pocos equipos y son las que más se usan actualmente. Una dirección Clase C tiene como primeros tres bits a 110, esto quiere decir, que si una dirección comienza con un número entre 192, que sería el más pequeño que podría representarse y 223 que sería el más grande, entonces pertenece a esta Clase. En la figura 2.8 se muestra su formato.
Figura 2. 8 Dirección IP Clase D
Direcciones
Clase
D
y
Clase
E
Las direcciones Clase E están reservadas por el Grupo de Ingeniería de Internet (IETF), para investigaciones, por lo que no pueden ser utilizadas para Internet. Los primeros cuatro bits de estas direcciones siempre son unos, por lo que su primer octeto siempre es un número entre 11110000 y 11111111, o entre 240 y 255.
2.4.1 Direcciones IP públicas y privadas
El organismo encargado de asignar las direcciones IP públicas, necesarias para comunicarse en Internet, es la Autoridad de Números Asignados de Internet (IANA, Internet Assigned Numbers Authority). Una empresa puede solicitar una o varias direcciones públicas con un proveedor de servicios Internet (ISP), a quien le fue asignado cierto intervalo de direcciones IP. Las direcciones públicas son únicas, globales y están normalizadas.
El número de direcciones IP públicas no es infinito, y debido a que éste tipo de direcciones son usadas para poder comunicarse a través de Internet, resultaría un problema tener que asignar una dirección por cada equipo conectado. Una de las soluciones a este problema, son las direcciones privadas, las cuales son utilizadas para redes privadas que no están conectadas a Internet (esto no significa que no lo puedan hacer). Las direcciones IP privadas están establecidas en la RFC 1918, en la que se reservan tres bloques de direcciones IP, una dirección Clase A, un intervalo de direcciones Clase B y otro intervalo de direcciones Clase C.
• 10.0.0.0 con la máscara de subred 255.0.0.0 • 172.16.0.0 con la máscara de subred 255.240.0.0 • 192.168.0.0 con la máscara de subred 255.255.0.0
23
2.4.2 Asignación estática y dinámica de una dirección IP
Hay dos método básicos para poder asignar la dirección IP a un equipo: direccionamiento estático y direccionamiento dinámico.
Cuando el administrador de la red asigna a cada dispositivo una dirección única para que sea identificado, se habla de un direccionamiento estático, ya que ésta dirección asignada nunca cambia para ese dispositivo. Un ejemplo sería un servidor web, el cual debe mantener su misma dirección IP, para que las páginas que aloja estén disponibles todo el tiempo, ya que si esta dirección cambiara cada vez que el servidor fuese encendido, los usuarios no podrían acceder a él.
Otros ejemplos de dispositivos que deben mantener una dirección estática, son las impresoras de red, los servidores de aplicaciones y los routers.
Si la dirección de IP de un dispositivo cambia cada determinado tiempo, entonces el tipo de asignación es dinámico. El Protocolo de configuración dinámica del host (DHCP), permite al host obtener una dirección dinámicamente. Para poder usar DHCP se necesita un servidor DHCP, el cual debe contener un cierto rango de direcciones a asignar. Cuando un host desea conectarse, hace una petición al servidor DHCP, para que se le asigne una dirección IP que lo identifique, el servidor selecciona una dirección y la asigna a ese host.
Un ejemplo de DHCP lo podemos encontrar en nuestro hogar, cada vez que encendemos nuestra máquina e intentamos conectarnos a Internet, puede ser que nuestra dirección IP no sea la misma que teníamos un día anterior, esto se debe a que el proveedor de Internet para no utilizar una IP fija por cada cliente, realiza una asignación dinámica, lo que hace que se cuente con una IP durante cierto tiempo y cambie después, sucede lo mismo, si apagamos el router (que es el dispositivo que generalmente tenemos en nuestros hogares) y lo encendemos, la IP cambiará.
2.5
Dominios
y
DNS
Los dispositivos o equipos que se conectan a Internet, deben ser identificados como ya dijimos por una dirección IP, sin embargo, memorizar este tipo de direcciones, resultaría complicado para las personas. Un dominio de Internet es un “representante” de una dirección IP, que facilita al usuario el poder tener acceso a algún recurso dentro de Internet.
Para una persona es mucho más fácil recordar la dirección www.google.com y teclearla en su navegador, que aprenderse la dirección 74.125.45.147. Es posible comprobar lo anterior haciendo un ping a la dirección web, esto nos regresará su equivalente en dirección IP.
En Internet, hay una gran cantidad de dominios (más de 200), como por ejemplo:
• .gt, para servicios de Guatemala • .mx, para servicios de México • .cl, para servicios de Chile • .co, para servicios de Colombia • .cn, para servicios de China • .edu, para servicios de Educación • .eu, la región de Europa
• .gob, para Gobierno y Entidades Públicas • .info, para Información
• .net, para Infraestructura de red • .org, para organizaciones
25
2.6
Paradigma
Cliente
–
Servidor
En una red cliente – servidor, hay un equipo especial en donde se almacenan todos los servicios de la red, este equipo atiende las solicitudes de otros equipos, que pueden ser archivos, impresiones, aplicaciones y otros servicios, los primeros son llamados servidores, y los que hacen las peticiones son los clientes.
Un servidor debe estar continuamente esperando por solicitudes de los clientes, por lo que se debe de tratar con un equipo con características especiales, como más poder de procesamiento, memoria y software especializado, esto también depende de los procesos que realice, pues podemos contar con un servidor con características no tan poderosas, pero que puede servir como un servidor web, por ejemplo.
Para que haya una comunicación, los servidores deben contar con una IP fija y deben estar “escuchando” a través de sus puertos, para que el cliente sabiendo estos parámetros, se pueda conectar a él. Una vez que el cliente hace la petición a través de un puerto del servidor, éste realiza el servicio requerido y devuelve los resultados en forma de una respuesta (Figura 2.9).
Figura 2. 9 Interacción Cliente ‐ Servidor
2.7
Sockets
método de comunicación entre las aplicaciones cliente y un servidor, que intercambian datos en forma fiable y ordenada, son un componente básico de comunicación, ya que proporcionan una comunicación de dos vías, punto a punto entre dos procesos.
Se requieren tres elementos para poder crear un socket:
1. Un protocolo de comunicaciones 2. Una dirección IP
3. Un número de puerto
Funcionamiento
Una aplicación servidor utiliza un socket con un número de puerto específico. La aplicación cliente debe conocer el nombre del equipo servidor (hostname) o dirección IP, y el puerto a través del cual está escuchando la aplicación servidor.
Cuando la aplicación cliente hace una petición al servidor para conectarse y éste acepta, la aplicación servidor debe abrir un nuevo socket con un puerto diferente, para poder atender otras peticiones mientras atiende al cliente actual. Una vez conectados, las dos aplicaciones pueden comunicarse leyendo o escribiendo en sus respectivos sockets.
A continuación se mostrará en forma general cómo serían un programa cliente y uno servidor con TCP y utilizando el lenguaje C# que es el que será usado para diseñar nuestras aplicaciones del proyecto.
27 Como segundo paso hay que hacer que nuestro objeto creado en el paso anterior empiece a escuchar, esto se hace llamando al método Start de TcpListener. Cuando el servidor recibe una petición del cliente, este crea una conexión mediante el método AcceptSocket de la clase TcpListener el cual devuelve un objeto Socket al momento de la conexión.
Socket Conexion = ObjServidor.AcceptSocket();
El tercer paso consiste en establecer el flujo de la información entre el cliente y el servidor utilizando un objeto NetworkStream que a su vez utiliza al objeto Conexion para realizar el envío y la recepción de datos.
Con el objeto NetworkStream podemos crear un BinaryWriter y un BinaryReader, que son usados para enviar y recibir información entre los programas cliente y servidor.
El cuarto paso consiste en la comunicación entre el cliente y el servidor mediante la conexión establecida en el paso anterior.
El quinto paso es la terminación de la conexión mediante la utilización del método Close de BinaryReader, BinaryWriter, NetworkStream y Socket para dar fin a la conexión.
Para la programación del cliente se deben seguir cuatro pasos básicos. El primero de ellos es crear un objeto de la clase TcpClient y con este objeto llamamos al método Connect de TcpClient para establecer la conexión, esto sería como sigue:
TcpClient ObjCliente = new TcpClient();
ObjCliente.Connect( disreccionServidor, puertoServidor );
El tercer paso es el de procesamiento, en donde se utiliza el método Write de BinaryWriter y el método ReadString de BinaryReader para realizar la comunicación. Por último paso tenemos que cerrar la conexión llamando al método Close de BinaryReader, BinaryWriter, NetworkStream y TcpClient.
2.8
Control
Winsock
El control Winsock (su nombre proviene de Windows Sockets), permite conectar dos aplicaciones a través de una red, ya sea en una red LAN o como en nuestro caso, a través de Internet. Este control puede funcionar con el protocolo UDP o con TCP, ambos pueden ser usados para desarrollar aplicaciones cliente‐servidor.
El control Winsock no tiene una interfaz visible en tiempo de ejecución, esto es, cuando nuestras aplicaciones se estén ejecutando, el usuario no verá el ícono del control.
El control Winsock, al igual que cualquier otro control, cuenta con una serie de propiedades, métodos y eventos que hacen mucho más fácil la programación, a diferencia de programar aplicaciones utilizando sólo sockets, ya que no es necesario establecer el tamaño de los paquetes o formar los encabezados. A continuación se describen las propiedades, métodos y eventos más importantes de este control, y con los cuales trabajaremos para programar nuestras aplicaciones cliente y servidor.
2.8.1 Propiedades
LocalIP
Esta propiedad nos devuelve la dirección IP de la máquina, en donde se está ejecutando nuestra aplicación.
29 RemoteHost
Con esta propiedad se establece el equipo remoto con el que se quiere llevar a cabo una conexión.
LocalPort
Establece el puerto a través del cual se estarán escuchando peticiones entrantes, por lo tanto, esta propiedad es utilizada en la aplicación servidor.
RemotePort
Esta propiedad es programada del lado del cliente, ya que mediante ella se establece el puerto por el cual el cliente se conectará el servidor.
LocalPort y RemotePort deben ser exactamente iguales, pues como vimos en el capítulo anterior, es a través del puerto, que el servidor sabe a qué aplicación dirigirse luego de recibir una petición a través de él.
State
Nos informa del estado del control Winsock, si este está siendo utilizado o no.
Para poder hacer uso de las propiedades del control Winsock, debemos crear un objeto del mismo, y a través de éste acceder a la propiedad y por último asignarle un valor. La sintaxis es mostrada a continuación:
Objeto.Propiedad = Valor
Nota: EL objeto puede ser el nombre del control Winsock, que siempre es WinSock1, este nombre es el que utilizamos en nuestras aplicaciones.
Label1.Text = WinSock1.LocalIP
2.8.2 Métodos
Accept
Sólo se utiliza para aplicaciones servidor que se basen en TCP, y es usada para aceptar una conexión entrante en un evento ConnectionRequest.
GetData
Obtiene el dato que fue enviado a la aplicación, ya sea al cliente o al servidor, este método nos es de gran utilidad en nuestras aplicaciones, pues nos permitirá procesar los datos que enviemos.
Listen
Con este método lo que se hace, es crear un socket que esté en modo de escucha, para que el servidor se ponga a escuchar por peticiones de los clientes.
SendData
Gracias a este método podemos enviar nuestros datos al equipo remoto.
2.8.3 Eventos
Ahora pasaremos a describir los eventos más importantes que utilizamos para nuestras aplicaciones.
31 Se produce cuando el equipo local se conecta con el remoto, para establecer una comunicación.
Close
Se produce cuando el equipo remoto cierra la conexión. Es importante que nuestras aplicaciones cierren las conexiones TCP, una vez que dejan de transmitir información, para que posteriormente otras conexiones sean hechas.
DataArrival
Este evento se produce cuando llegan datos nuevos y es importante, ya que aquí es donde vamos a decidir qué hacer con la información que estamos recibiendo. En nuestro caso, esta información es enviada a la interfaz USB del servidor, para que sea procesada por el Microcontrolador.
En la figura 2.10, se muestran las propiedades, métodos y eventos, que de manera general se utilizan para programar aplicaciones cliente y servidor, sin embargo, en el proyecto hay métodos y eventos que se utilizan, tanto del lado del cliente como del servidor.
Capítulo
3
Materiales
En este capítulo, se describirán brevemente los materiales utilizados para el desarrollo del proyecto, esto incluye tanto herramientas de software, como material hardware.
3.1
Software
de
desarrollo
Las herramientas de desarrollo que se utilizan, son: Visual Studio C# 2008, el compilador de C para PICs PCW versión 4.65.4.13 de CCS, WinPic800, LiveWire y PCB Wizard. A continuación, se dará una breve explicación de la utilidad de estas herramientas, y sus principales características.
3.1.1 Visual Studio C# 2008
Microsoft Visual C# 2008, proporciona un editor de código avanzado, permite diseñar interfaces de usuario de forma rápida y sencilla, además cuenta con un depurador integrado y muchas herramientas, que hacen más fácil el desarrollo de aplicaciones basadas en la versión 2.0 del lenguaje C#, y en .NET Framework.
Juntos, Visual Studio y .NET Framework reducen la necesidad de código, los tiempos de desarrollo y permiten al desarrollador, concentrarse en el diseño de la aplicación.
3.1.2 Compilador CCS
33 Incluye también el código fuente de numerosos programas de ejemplo, para módulos LCD, teclados, conversores A/D, etc.
El compilador CCS, soporta una gran cantidad de microcontroladores, uno de ellos y el utilizado en este proyecto, el PIC18F2550 de Microchip. Una característica muy importante, que además incluye, es la función de crear un archivo del programa compilado, en formato HEX. Este archivo HEX, es utilizado para programar el microcontrolador usando WinPic800.
3.1.3 WinPic800
Se trata de un software gratuito de programación de dispositivos. WinPic800 admite multitud de circuitos programadores, e incluso permite fácilmente la configuración de nuevos circuitos programadores, aunque se recomienda su uso combinado con el programador GTP USB, que es el que se utiliza para este proyecto.
3.1.4 LiveWire y PCB Wizard
LiveWire, es una herramienta que permite el diseño de diagramas eléctricos de circuitos, con una función que permite pasar de un diagrama eléctrico de un circuito, al diseño de lo que será su circuito impreso, esto se logra, en conjunto con el programa PCB Wizard.
3.2
Hardware
de
desarrollo.
En cuanto al hardware que se requirió para hacer posible la realización del proyecto, se utilizó, una PC con procesador Intel Pentium IV a 2.2 GHz, con 760 Mb en memoria RAM, y sistema operativo Windows XP Home Edition.
3.2.1 Programador GTP USB Lite
comunica por medio del USB, a la PC, esto evita la necesidad de contar con alimentación externa, y aumenta la velocidad de grabación.
3.3
Microcontrolador
PIC
18F2550
Este microcontrolador, se desprende de la familia de microcontroladores PIC, de Microchip, es un microcontrolador que entra de la clasificación de microcontroladores de 8 bits, pues realiza sus operaciones con registros de 8 bits.
La principal característica por la que elegimos usar este microcontrolador PIC18F2550, es su función de conectividad con la interfaz USB, que puede funcionar a baja velocidad (1.5 Mbps), o a alta velocidad (12 Mbps). Además, este microcontrolador tiene las siguientes características que serán utilizadas en el proyecto:
¾ Tiene 24 terminales que pueden ser configuradas como terminales de Entrada/Salida digital.
¾ Posee 3 temporizadores (temporizador 0,1 y 2).
¾ Es posible configurar hasta de 4 maneras distintas sus fuentes de reloj • XT. Oscilador o cristal de cuarzo (Crystal/Resonator)
• HS. Oscilador o cristal de cuarzo de alta velocidad (High‐Speed Crystal/Resonator), se utiliza cuando el microcontrolador necesita de una alta frecuencia.
• EC. Reloj externo (External Clock).
• INT. Oscilador interno (Internal Oscillator).
Las terminales de Entrada/Salida, serán utilizadas, para encender LEDs, para controlar los circuitos de potencia, y así encender o apagar dispositivos controlados, o también, algunas de las terminales se podrían utilizar para codificar (generar señales banda base), o para decodificar (interpretar señales