Вы находитесь на странице: 1из 261

UNIVERSIDAD AUTÓNOMA DEL

ESTADO DE HIDALGO

INSTITUTO DE CIENCIAS BÁSICAS E


INGENIERÍA

ING. EN ELECTRÓNICA Y TELECOMUNICACIONES

“DISEÑO Y APLICACIÓN DE UN SISTEMA DE


ADQUISICIÓN Y TRANSMISIÓN DE DATOS VÍA
ETHERNET”

TESIS

QUE PARA OBTENER EL TITULO DE INGENIERO EN ELECTRÓNICA Y


TELECOMUNICACIONES

PRESENTAN:

CLAUDIO IVÁN DURÁN MARROQUÍN


EMMANUEL GUTIÉRREZ ROJAS

ASESOR:

ING. FRANCISCO JAVIER CUELLAR ORTEGA

MINERAL DE LA REFORMA, HGO. AGOSTO DEL 2009


Agradecimientos i
____________________________________________________________________________

AGRADECIMIENTOS

Gracias a Dios por permitirme llegar hasta este momento tan importante de mi vida y
lograr otra meta más en mi carrera.

Gracias a mi familia por todo el apoyo, atenciones, consejos, paciencia, herramientas y


entre muchas cosas más que han hecho por mí en todos estos años que no podría
terminar de escribir, pero sobre todo por su gran contribución para la realización de mi
carrera profesional. Gracias a mi mamá Delia por su cariño, comprensión y apoyo sin
condiciones ni medida. Gracias a mi hermano Pedro por tus comentarios, sugerencias,
opiniones y regaños. Gracias a ellos que han hecho de mi lo que soy ahora.

Gracias a mi novia Jazmín por su apoyo, porras y amor que me brinda a pesar de
muchas cosas.

Gracias a mis amigos Benigno, Emmanuel y Mauricio por convivir conmigo y hacer más
ameno el tiempo de mi estancia en la universidad, todas las cosas que sucedieron en
ese transcurso siempre serán algo muy importante para mí.

Gracias al Ing. Francisco Javier Cuellar Ortega por las enseñanzas y amistad que me
han sido de utilidad para la realización de la tesis y para mí desarrollo profesional.

Gracias al coordinador de mi carrera el Ing. Miguel Rosas Yacotu por su amistad y


enseñanzas que han sido de gran ayuda en el transcurso de carrera.

Gracias a todos y cada uno de los maestros que participaron en mi desarrollo


profesional durante mi carrera, sin su ayuda y conocimientos no estaría en donde me
encuentro ahora.

CLAUDIO IVÁN DURÁN MARROQUÍN

i
Agradecimientos ii
____________________________________________________________________________

A quienes sin escatimar esfuerzo alguno, han sacrificado gran parte de su vida para
formarme y educarme. A quienes la ilusión de su vida ha sido convertirme en una
persona de provecho. A quienes nunca podré pagar todos sus desvelos ni aún con las
riquezas más grandes del mundo, por eso y más, quiero que sientan que el objetivo
logrado también es de ustedes y que la fuerza que me ayudo a conseguirlo fué su
apoyo… Gracias mami y papi por dejarme el legado más grande que pudiera recibir.

A mi hermano, por su compañía, su amistad y apoyo en todo momento se ha llegado al


logro de esta meta.

A mi tía y primo consentidos, que me han brindado su apoyo incondicional, cariño,


afecto y sus sabios consejos; a mis tíos Luci y Cris y a mi prima Grey por su apoyo y
afecto; a mis padrinos, Elvira y sus hijas, por darme todo su apoyo y ser parte de mi
formación.

Al Ing. Francisco Javier Cuellar Ortega por su conocimiento, invaluable apoyo en la


dirección de esta tesis y su amistad que me ha brindado durante estos últimos años.

Al Ing. Miguel Rosas Yacotu y a la Dr. Eva Jeanine Lezama Estrada por su amistad,
consejos y apoyo que me brindaron durante toda la carrera.

A mis amigos Benigno e Iván que estuvieron, están y seguirán estando a mi lado a
pesar de la distancia o los diferentes caminos que tomen nuestras vidas. A la “niña
latosa” que me molestaba y no me dejaba terminar este trabajo, pero que me enseño
grandes cosas de la vida, por su amistad, cariño, apoyo y comprensión.

A todos los catedráticos de los cuales aprendí muchas cosas y me formaron como
profesionista.

EMMANUEL GUTIÉRREZ ROJAS

ii
Resumen iii
____________________________________________________________________________

RESUMEN

Con la expansión y uso de las redes de internet y además del creciente mercado de
sistemas, productos y servicios a través de internet, se puede sacar el mejor provecho
de estos avances tecnológicos desarrollando diversos sistemas para aplicaciones
embebidas que satisfagan las distintas necesidades que se presenten.

El trabajo de esta tesis consiste en el diseño y desarrollo de un sistema modular,


flexible e intuitivo, el cual consta de una tarjeta de Internet/Ethernet capaz de soportar
el controlador de Ethernet ENC28J60 y el microcontrolador PIC18F97J60, el Stack
TCP/IP libre de Microchip, un servidor Web embebido con la capacidad de monitoreo
remoto y control de aplicaciones integradas a través de Internet.

De igual manera abarca una aplicación demostrativa de las características y


capacidades de dicho sistema. Esto como parte de un servidor HTTP, en el que se
incluye un sitio Web propio el cual integra las herramientas y tecnologías de mayor uso
hoy en día, como lo es Java, Flash, HTML dinámico, straming de video,
almacenamiento en línea, entre otros.

El rango de posibilidades de aplicación del sistema va desde el control industrial o


casero, hasta para fines comerciales. En cada una de estas áreas de aplicación se
puede tomar ventaja del control remoto y monitoreo, las cuales complementadas con la
interacción y el uso de distintas tecnologías y herramientas existentes pueden
solucionar distintas necesidades.

iii
Índice iv
____________________________________________________________________________

ÍNDICE

AGRADECIMIENTOS i
RESUMEN iii
ÍNDICE iv
ÍNDICE DE FIGURAS ix
ÍNDICE DE TABLAS xiv

CAPITULO 1. INTRODUCCIÓN 1
1.1 Introducción 1
1.2 Objetivos 2
1.2.1 Objetivo general 2
1.2.2 Objetivos específicos 2
1.3 Justificación 2
1.4 Planteamiento del problema 2
1.5 Solución 3

CAPITULO 2. ESTADO DEL ARTE 4


2.1 Introducción a las redes 4
2.1.1 Historia de las redes informáticas 5
2.1.2 ¿Qué es una red? 9
2..1.3 Objetivos de una red 10
2.1.4 Dispositivos de red 11
2.1.5 Clasificaciones de redes 13
2.1.6 Modelo OSI 18
2.2 Ethernet 22
2.2.1 Historia de las redes Ethernet 22
2.2.2 Redes de Área Local 24
2.2.3 Características de Ethernet 26
2.2.4 Formato de la trama 26

iv
Índice v
____________________________________________________________________________

2.2.5 Denominación de Ethernet 28


2.2.6 Reglas para la denominación de Ethernet 29
2.2.6.1 Direccionamiento 29
2.3 Protocolos TCP/IP 31
2.3.1 Introducción 31
2.3.2 Historia de TCP/IP 32
2.3.3 Capad del modelo TCP/IP 33
2.3.3.1 Capa de aplicación 33
2.3.3.2 Capa de Transporte 34
2.3.3.3 Capa de Internet 37
2.3.3.4 Capa de Acceso de Red 38
2.4 Comparación del modelo OSI y el modelo TCP/IP 40
2.5 Protocolo HTTP 42
2.5.1 HTTP en la historia de las redes informáticas 43
2.5.2 Seguridad de HTTP 45
2.6 Introducción al Microcontrolador 47
2.6.1 ¿Qué es un microcontrolador? 47
2.6.2 Historia de los microcontroladores 49
2.6.3 ¿Para qué se usan los microcontroladores? 50
2.6.4 Diferencias entre microprocesador y microcontrolador 51
2.6.5 Ventajas de un microcontrolador frente a un microprocesador 52
2.6.6 Los microcontroladores hoy en día 54
2.6.7 Arquitectura interna de un microcontrolador 54
2.6.8 Estructura y elementos de los microcontroladores 56
2.6.9 ¿Qué microcontrolador emplear? 64
2.7 Microcontroladores PIC 68
2.7.1 Características relevantes 68
2.7.2 Tipos de microcontroladores PIC 70
2.7.3 Herramientas para desarrollar sistemas con PIC 72
2.8 Servidor Web 75
2.8.1 Servidores en computadoras 76

v
Índice vi
____________________________________________________________________________

2.8.2 Servidores embebidos 76


2.9 Herramientas de Microchip 78
2.9.1 MPFS 78
2.9.2 Servidor FTP 80
2.9.3 Servidor HTTP interno 80
2.10 Tecnologías Web 82
2.10.1 HTTP CGI 82
2.10.2 Generación de páginas dinámicas HTTP (HTML dinámico) 83
2.10.3 Javascript 83
2.10.4 Tecnología AJAX 84
2.10.5 CCS (Cascading Style Sheets) 88
2.11 Herramientas y servicios de red 90
2.11.1 DNS (Domain Name System) 90
2.11.1.1 DDNS (Dynamic DNS) 90
2.11.2 Apertura de puertos 91
2.11.2.1 El router 91
2.11.2.2 Network Address Tanslation (NAT) 91
2.11.2.3 Direccionamiento de puertos 93

CAPITULO 3. DISEÑO 94
3.1 Introducción 94
3.2 Modem 2Wire 95
3.2.1 Características 95
3.2.2 Instalación y Configuración 97
3.3 Tarjeta de desarrollo PICDEM.NET.2 103
3.3.1 Características 103
3.3.2 Instalación y configuración 110
3.4 Interfaz de potencia 114
3.4.1 Construcción, funcionamiento e implementación 114
3.5 Sistema de Adquisición y Transmisión de Datos vía Ethernet 118
3.5.1 Prueba de funcionamiento del sistema 118

vi
Índice vii
____________________________________________________________________________

CAPITULO 4. APLICACIÓN 119


4.1 Introducción 119
4.2 Uso y programación del servidor HTTP interno del Sistema de
Adquisición y Transmisión de Datos por PIC Vía Ethernet 120
4.2.1 Diseño del sitio Web interno 120
4.2.2 Creación de las páginas Web 121
4.2.2.1 Páginas CGI 121
4.2.2.2 Páginas HTM 124
4.2.2.3 Carga del sitio Web a la EEPROM 127
4.3 Servidor HTTP externo 129
4.3.1 AppServ 129
4.3.1.1 Instalación de AppServ 130
4.3.1.2 Uso de AppServ y su estructura de directorios 134
4.3.1.3 Afinación del servidor APACHE de AppServ 136
4.4 Sistema de emisión de video Active WebCam 137
4.4.1 Instalación del programa 138
4.4.2 Estructura de directorios del programa 138
4.4.3 Conectando dispositivos 139
4.4.4 Pantalla principal de Active WebCam 141
4.4.5 Configuración de las cámaras 142
4.4.6 Configuración de la emisión del servidor HTTP 146
4.4.7 Configurar y guardar la sesión 150
4.5 Presencia en Internet 152
4.5.1 Configuración de DynDNS 152
4.5.2 Configuración del router para el direccionamiento de puertos 157
4.6 Sitio Web externo 164
4.6.1 Diseño de las páginas Web 164
4.6.2 Creación de las páginas Web 165
4.6.3 Prueba del sitio Web externo 169
4.7 Aplicaciones futuras 173

vii
Índice viii
____________________________________________________________________________

CONCLUSIONES 174
GLOSARIO 175
APENDICE A. CÓDIGO FUENTE .C 188
A.1 Main .C 188

APENDICE B. CÓDIGO FUENTE HTML 215


B.1 Index.htm 215
B.2 Features.htm 221
B.3 Arch.htm 224
B.4 Footprnt.htm 225
B.5 Index.html 228
B.6 Encabezado.html 228
B.7 Pie.html 231
B.8 Portada.html 232
B.9 Tesis.html 233
B.10 Aplicación.html 234
B.11 Nada.html 236
B.12 Vigilancia.html 236
B.13 Documentos.html 237

REFERENCIAS 240

viii
Índice de figuras ix
____________________________________________________________________________

ÍNDICE DE FIGURAS

Figura 2.1 Distribución de las redes en el mundo 5


Figura 2.2 Repetidor 11
Figura 2.3 Hubs 12
Figura 2.4 Puente 12
Figura 2.5 Switch 12
Figura 2.6 Router 13
Figura 2.7 Topología en Bus 15
Figura 2.8 Topología de Anillo 16
Figura 2.9 Topología en Estrella 16
Figura 2.10 Topología en Árbol 17
Figura 2.11 Topología en Malla 17
Figura 2.12 Topología Jerárquica 18
Figura 2.13 Capas del Modelo OSI 19
Figura 2.14 Diagrama de Red LAN 25
Figura 2.15 Comparación de Formatos de Trama 27
Figura 2.16 Topología de red Física 30
Figura 2.17 Modelo TCP/IP 32
Figura 2.18 Protocolos usados en la capa de aplicación 33
Figura 2.19 Protocolos usados en la capa de aplicación 35
Figura 2.20 Conexión de redes 36
Figura 2.21 Determinación de una mejor ruta 36
Figura 2.22 Protocolos usados en la capa de Internet 37
Figura 2.23 Operaciones realizadas por IP 38
Figura 2.24 Capa de Acceso de Red 39
Figura 2.25 Modelo OSI Vs. ModeloTCP/IP 41
Figura 2.26 Estructura de un Microcontrolador 48
Figura 2.27 Microcontroladores 49
Figura 2.28 Estructura de un sistema abierto basado en un microprocesador 53

ix
Índice de figuras x
____________________________________________________________________________

Figura 2.29 El microcontrolador como un sistema cerrado 53


Figura 2.30 Arquitectura Von Neumann 55
Figura 2.31 Arquitectura Harvard 56
Figura 2.32 Programa MPFS.exe 79
Figura 2.33 Diagrama de funcionamiento del objeto JavaScript
“XMLHttpRequest” 85
Figura 2.34 División de la IP externa en varias IP internas 92
Figura 2.35 Visión de los dispositivos internos y externos de la LAN 92

Figura 3.1 Modem 2Wire modelo 2701HG-T 95


Figura 3.2 Puertos del Modem 2Wire 96
Figura 3.3 Accesorios Modem 2Wire 97
Figura 3.4 Conexión del modem 2Wire mediante Ethernet 100
Figura 3.5 Barra de direcciones del explorador de internet 100
Figura 3.6 Página de configuración del modem 101
Figura 3.7 Vínculos seleccionados con un círculo para ingresar a la
configuración avanzada de bloqueo de intrusos 101
Figura 3.8 Ventana de configuración avanzada de bloque de intrusos 102
Figura 3.9 Tarjeta de desarrollo PICDEM.NET.2 103
Figura 3.10 Diseño de la tarjeta de desarrollo PICDEM.NET.2 104
Figura 3.11 Capas TCP/IP Stack 109
Figura 3.12 Conexión de la tarjeta de desarrollo PICDEM.net.2 a una red 111
Figura 3.13 LCD de la tarjeta de desarrollo mostrando la versión TCPStack y
dirección IP 112
Figura 3.14 Página Web de la tarjeta de desarrollo PICDEM.net.2 113
Figura 3.15 Diagrama eléctrico de la Interfaz de Potencia 114
Figura 3.16 Interfaz de Potencia 116
Figura 3.17 Acoplamiento de la Interfaz de Potencia y la Tarjeta de desarrollo
PICDEM.net.2 117
Figura 3.18 Acoplamiento de la interfaz de potencia con el actuador 117
Figura 3.19 SISTEMA DE ADQUISICIÓN Y TRANSMISIÓN DE DATOS VÍA 118

x
Índice de figuras xi
____________________________________________________________________________

ETHERNET (Modem + PICDEM.net.2 + Interfaz de Potencia)

Figura 4.1 Página Index.htm 125


Figura 4.2 Página Features.htm 126
Figura 4.3 Página Arch.htm 126
Figura 4.4 Página Footprnt.htm 127
Figura 4.5 Creación del archivo MPFSImg.bin 127
Figura 4.6 Uso del servidor FTP para carga del sitio Web a la EEPROM 128
Figura 4.7 Pantalla de bienvenida de AppServ 130
Figura 4.8 Pantalla de selección de componentes 131
Figura 4.9 Pantalla de configuración del Servidor Web Apache 132
Figura 4.10 Pantalla de configuración de la base de datos MySQL 133
Figura 4.11 Pantalla final de configuración de AppServ 133
Figura 4.12 Pantalla inicial de AppServ 134
Figura 4.13 Estructura de los directorios de AppServ 135
Figura 4.14 Pantalla de instalación y selección directorio destino del programa
Active WebCam 138
Figura 4.15 Pantalla de bienvenida del programa con la opción de buscar
cámaras seleccionada 140
Figura 4.16 Pantalla Principal mostrando las cámaras conectadas a la
computadora 140
Figura 4.17 Pantalla del área principal de trabajo de Active WebCam 141
Figura 4.18 Forma de acceder a la configuración de las cámaras 142
Figura 4.19 Pestañas de la ventana de configuración de las cámaras 143
Figura 4.20 Ventana de configuración de la cámara #1 144
Figura 4.21 Ventana de configuración de la cámara #2 144
Figura 4.22 Valores de configuración de compresión para las cámaras 145
Figura 4.23 Configuración de emisión de la cámara #1 145
Figura 4.24 Configuración de emisión de la cámara #2 146
Figura 4.25 Habilitación del servidor HTTP de Active WebCam 146
Figura 4.26 Pantalla de bienvenida del asistente de creación de la Web 147

xi
Índice de figuras xii
____________________________________________________________________________

Figura 4.27 Pantalla de selección de Método de Emisión 147


Figura 4.28 Pantalla de selección de Método de Muestra 148
Figura 4.29 Pantalla de localización de la página Web 148
Figura 4.30 Selección de la ruta de la carpeta “www” del servidor instalado 149
Figura 4.31 Pantalla Propiedades de Página 149
Figura 4.32 Informe del asistente de creación web 150
Figura 4.33 Opciones de programa a seleccionar 151
Figura 4.34 Salvar sesión 151
Figura 4.35 Apartado My Services de DynDNS 153
Figura 4.36 Pantalla de selección de adición de servicio de host 153
Figura 4.37 Pantalla de ingreso de datos del nombre de dominio 154
Figura 4.38 Consideraciones de instalación y acuerdo de licencia de DynDNS
Updater 155
Figura 4.39 Pantalla de selección de componentes y de instalación como
servicio 155
Figura 4.40 Pantalla de selección de ruta de instalación y de conclusión del
instalador 156
Figura 4.41 Pantalla principal del programa DynDNS Updater 157
Figura 4.42 Ingreso de la dirección para la configuración del router 157
Figura 4.43 Pantalla principal de configuración del router 158
Figura 4.44 Pantalla principal del Bloqueo de intrusos 158
Figura 4.45 Pantalla de configuración del sistema de bloqueo de intrusos 159
Figura 4.46 Pantalla de configuración de aplicación 160
Figura 4.47 Alojamiento de una aplicación a un dispositivo 162
Figura 4.48 Resultado del alojamiento de la aplicación 162
Figura 4.49 Alojamiento de las aplicaciones server8088, cámara 1 y cámara 2 163
Figura 4.50 Detalles del bloqueo de intrusos 163
Figura 4.51 Página encabezado.html 165
Figura 4.52 Página pie.html 166
Figura 4.53 Página portada.html 166
Figura 4.54 Página tesis.html 167

xii
Índice de figuras xiii
____________________________________________________________________________

Figura 4.55 Página aplicacion.html 167


Figura 4.56 Página vigilancia.html 168
Figura 4.57 Página documentos.html 169
Figura 4.58 Prueba de la página http://tesis-pic.dyndns.org e hipervínculo
Portada 170
Figura 4.59 Prueba del hipervínculo Tesis 170
Figura 4.60 Prueba del hipervínculo Aplicación 171
Figura 4.61 Prueba del hipervínculo Vigilancia 171
Figura 4.62 Prueba del hipervínculo Documentos 172
Figura 4.63 Relación con otras tecnologías y herramientas y posibles
aplicaciones futuras 174

xiii
Índice de tablas xiv
____________________________________________________________________________

ÍNDICE DE TABLAS

Tabla 2.1 Cronograma histórico de internet 7

Tabla 4.1 Códigos de las variables CGI 121


Tabla 4.2 Códigos de los comandos CGI 122
Tabla 4.3 Páginas CGI y su código fuente 122
Tabla 4.4 Valores para Módulos Multiproceso de Apache 136

xiv
Capitulo 1. Introducción 1
____________________________________________________________________________

CAPÍTULO 1. INTRODUCCIÓN

1.1 INTRODUCCIÓN

En los últimos años se ha producido una gran expansión y uso de las redes de Internet,
este crecimiento da paso a nuevas tecnologías y posibilidades en distintas áreas, tal
como lo son las aplicaciones Ethernet.

Ethernet es un protocolo/interfaz asíncrono CSMA/CD (Asynchronous Carrier Sense


Multiple Access with Collision Detect), con una carga útil de tamaño de 46 a 1500
octetos. Además tiene una tasa de transferencia de datos de decenas a centenas de
Megabits/segundo que no es muy propia para aplicaciones de baja potencia. Sin
embargo con el despliegue adecuado, conectividad a internet, alta velocidad de
transmisión de datos e ilimitada gama de expansión Ethernet puede contener casi todos
los tipos de comunicaciones inalámbricas. Con aplicaciones potenciales como sensado
y vigilancia remota, mando, control y actualización de firmware a distancia, transferencia
de datos en masa, emisión en vivo de audio, video y multimedia, adquisición publica de
datos, etc.

En las aplicaciones Ethernet si se incluye la capacidad de ser embebido en distintos


sistemas, junto el uso e interacción con otras herramientas y tecnologías que
complementen sus carencias, se abre una infinidad de recursos y aplicaciones para el
hogar y la industria moderna.

1
Capitulo 1. Introducción 2
____________________________________________________________________________

1.2 OBJETIVOS

1.2.1 OBJETIVO GENERAL

• Diseñar un sistema capaz de transmitir y adquirir datos a través de Ethernet de


forma remota y realizar una aplicación que muestre las capacidades del sistema.

1.2.3 OBJETIVOS ESPECÍFICOS

• Implementar software para la transmisión y adquisición de datos, así como para


la interfaz con el usuario.
• Diseñar el sistema con la capacidad de interactuar con otras tecnologías.
• Desarrollar una interfaz sencilla y de fácil uso para el usuario.
• Utilizar el sistema como parte de un servidor HTTP y de aplicaciones TCP/IP.

1.3 JUSTIFICACIÓN

Las tendencias actuales llevan al desarrollo y uso de sistemas que integran distintas
tecnologías para crear aplicaciones que faciliten la automatización, control, vigilancia y
manipulación de dispositivos desde cualquier lugar utilizando Internet. Sin embargo es
necesaria la actualización e innovación de tales sistemas para asegurar su
implementación en distintos sectores como lo es el hogar, negocios, empresas e
industrias que permita una interacción sencilla e intuitiva de los usuarios.

1.4 PLANTEAMIENTO DEL PROBLEMA

La utilización e implementación de herramientas y tecnologías que permitan hacer uso


de un sistema conectado a red a través de Ethernet para adquirir y transmitir datos. Al
igual de una aplicación que integre todas las cualidades y beneficios del sistema para el
hogar o la industria.

2
Capitulo 1. Introducción 3
____________________________________________________________________________

1.5 SOLUCIÓN

La adquisición y transmisión de datos es posible mediante la implementación de un


sistema modular que integre eficazmente todos los bloques necesarios para una
interfaz Ethernet completa con conectividad a internet. Los módulos que componen el
sistemas son: un microcontrolador, un controlador Ethernet, memoria EEPROM, un
conector RJ-45, dispositivos de entrada análogos y digitales, dispositivos de salida, una
interfaz de potencia y un stack TCP/IP que usen un método cooperativo multitarea.

Los recursos anteriores son unidos mediante la creación de un sitio Web propio, que
une distintas tecnologías como lo es el uso de HTML dinámico, FTP, HTTP CGI,
aplicaciones TCP/IP usando AJAX, DDNS, etc. El sitio Web muestra una interfaz
sencilla e intuitiva para el control de un servidor HTTP interno del sistema, así como la
función de monitoreo y vigilancia y también información extra para la comprensión del
sistema de parte de los usuarios o clientes.

3
Capitulo 2. Estado del Arte. 4
____________________________________________________________________________

CAPITULO 2. ESTADO DEL ARTE

2.1 INTRODUCCIÓN A LAS REDES

A lo largo de la historia las computadoras han ayudado a realizar muchas aplicaciones


y trabajos, el hombre no satisfecho con esto, buscó mas progreso, logrando implantar
comunicaciones entre varias computadoras, o mejor dicho, implantar Redes en las
computadoras; hoy en día la llamada Internet es dueña de las redes, en cualquier parte
del mundo una computadora se comunica, comparte datos, realiza transacciones en
segundos, gracias a las redes.

Las redes de datos se desarrollaron como consecuencia de aplicaciones comerciales


diseñadas para microcomputadoras. Por aquel entonces, los microcomputadoras no
estaban conectados entre sí como lo estaban las terminales de computadoras
mainframe, por lo cual no había una manera eficaz de compartir datos entre varios
computadoras. Se tornó evidente que el uso de disquetes para compartir datos no era
un método eficaz ni económico para desarrollar la actividad empresarial. La red a pie
creaba copias múltiples de los datos. Cada vez que se modificaba un archivo, había
que volver a compartirlo con el resto de sus usuarios. Si dos usuarios modificaban el
archivo, y luego intentaban compartirlo, se perdía alguno de los dos conjuntos de
modificaciones. Las empresas necesitaban una solución que resolviera con éxito los
tres problemas siguientes:

• Cómo evitar la duplicación de equipos informáticos y de otros recursos


• Cómo comunicarse con eficiencia
• Cómo configurar y administrar una red

Las empresas se dieron cuenta de que la tecnología de redes podía aumentar la


productividad y ahorrar gastos. Las redes se agrandaron y extendieron casi con la
misma rapidez con la que se lanzaban nuevas tecnologías y productos de red. Gracias

4
Capitulo 2. Estado del Arte. 5
____________________________________________________________________________

a esto las redes se expandieron en todo el mundo, como se puede ver en la figura 2.1
(UTEZ, 2003).

Figura 2.1 Distribución de las redes en el mundo

2.1.1 HISTORIA DE LAS REDES INFORMÁTICAS

La historia de la red informática es compleja. Participaron en ella muchas personas de


todo el mundo a lo largo de los últimos 35 años. Presentamos aquí una versión
simplificada de la evolución de la Internet. En la década de 1940, las computadoras
eran enormes dispositivos electromecánicos que eran propensos a sufrir fallas. En
1947, la invención del transistor semiconductor permitió la creación de computadoras
más pequeñas y confiables. En la década de 1950 las computadoras mainframe, que
funcionaban con programas en tarjetas perforadas, comenzaron a ser utilizados
habitualmente por las grandes instituciones. A fines de esta década, se creó el circuito
integrado, que combinaba muchos y, en la actualidad, millones de transistores en un
pequeño semiconductor. En la década de 1960, los mainframes con terminales eran
comunes, y los circuitos integrados comenzaron a ser utilizados de forma generalizada
(Tanenbaum, 2002).

Hacia fines de la década de 1960 y durante la década de 1970, se inventaron


computadoras más pequeños, denominados minicomputadoras. Sin embargo, estas

5
Capitulo 2. Estado del Arte. 6
____________________________________________________________________________

minicomputadoras seguían siendo muy voluminosas en comparación con los


estándares modernos. En 1977, la Apple Computer Company presentó el
microcomputador, conocido también como computador personal. En 1981 IBM presentó
su primer computador personal. El equipo Mac, de uso sencillo, el PC IBM de
arquitectura abierta y la posterior microminiaturización de los circuitos integrados dio
como resultado el uso difundido de las computadoras personales en hogares y
empresas (ibídem)

A mediados de la década de 1980 los usuarios con computadoras autónomos


comenzaron a usar módems para conectarse con otros computadoras y compartir
archivos. Estas comunicaciones se denominaban comunicaciones punto-a-punto o de
acceso telefónico. El concepto se expandió a través del uso de computadoras que
funcionaban como punto central de comunicación en una conexión de acceso
telefónico. Estas computadoras se denominaron tableros de boletín. Los usuarios se
conectaban a los tableros de boletín, donde depositaban y levantaban mensajes,
además de cargar y descargar archivos. La desventaja de este tipo de sistema era que
había poca comunicación directa, y únicamente con quienes conocían el tablero de
boletín. Otra limitación era la necesidad de un módem por cada conexión al computador
del tablero de boletín. Si cinco personas se conectaban simultáneamente, hacían falta
cinco módems conectados a cinco líneas telefónicas diferentes. A medida que crecía el
número de usuarios interesados, el sistema no pudo soportar la demanda. A partir de la
década de 1960 y durante las décadas de 1970, 1980 y 1990, el Departamento de
Defensa de Estados Unidos (DoD) desarrolló redes de área amplia (WAN) de gran
extensión y alta confiabilidad, para uso militar y científico. Esta tecnología era diferente
de la comunicación punto-a-punto usada por los tableros de boletín. Permitía la
interconexión de varias computadoras mediante diferentes rutas. La red en sí
determinaba la forma de transferir datos de un computador a otro. En lugar de poder
comunicarse con un solo computador a la vez, se podía acceder a varias computadoras
mediante la misma conexión. La WAN del DoD finalmente se convirtió en la Internet
(Caballero, 2000)

6
Capitulo 2. Estado del Arte. 7
____________________________________________________________________________

En la tabla 2.1, puede observarse la evolución del internet a través del tiempo de una
forma más sencilla para identificar fácilmente cada una de las etapas (UTEZ, 2003).

Tabla 2.1 Cronograma histórico de internet

Antes de 1900 Comunicaciones de larga distancia a través de mensajeros,


jinetes, señales de humo, palomas mensajeras, telégrafo óptico y
telégrafo eléctrico.
Década de 1890 Bell inventa el teléfono, el servicio Telefónico se expande
rápidamente.
Década de 1920 Radio AM.
1939 Radio FM.
Década de 1940 La Segunda Guerra Mundial provoca el auge de la radio y el
desarrollo de las microondas.
1947 Shockley, Barden y Brittain inventan el transistor de estado sólido
(semiconductor).
1948 Claude Shannon publica “Teoría Matemática de la
Comunicación”.
1950 Invención de los Circuitos Integrados.
1957 El Departamento de Defensa de Estados Unidos crea ARPA.
Década de 1960 Computadoras Mainframe.
Década de 1962 Paul Baran de RAND trabaja en redes de conmutación de
paquetes.
Década de 1967 Larry Roberts Publica el primer informe sobre ARPANET.
1969 ARPANET se establece en UCLA, UCSB, U-Utah y Stanford.
Década de 1970 La Universidad de Hawái desarrolla ALOHANET.
Década de 1972 Ray Tomnilson crea un programa de correo electrónico para
enviar mensajes.
1973 Bob Kahn y Vint Cerf empiezan a trabajar en lo que
posteriormente se transformaría en TCP/IP. La red ARPANET
pasa a ser internacional con conexiones a la University College

7
Capitulo 2. Estado del Arte. 8
____________________________________________________________________________

en Londres, Inglaterra, y el establecimiento Real de Radar en


Noruega.
1974 BBN abre Telnet, la primer Red comercial de la red ARPANET.
Década de 1980 Uso generalizado de las computadoras personales y de las
minicomputadoras basadas en UNIX.
1981 Se asigna el termino Internet a un conjunto de redes
interconectadas.
1982 ISO lanza el modelo y los protocolos OSI; los protocolos
desaparecen pero el modelo tiene gran influencia.
1983 El Protocolo de Control de Transmisión/Protocolo de Internet
(TCP/IP). Se transforma en el Lenguaje Universal de la Internet.
ARPANET se divide en ARPANET y MILNET.
1984 Se funda CISCO SYSTEMS; comienza el desarrollo de
GATEWAY y ROUTERS. Se introduce el servicio de
Denominación de Dominio. La cantidad de Host de Internet
supera los 1000.
1986 Se crea NSFNET (Con una velocidad de Backbone 56KBps).
1987 La cantidad de Hosts de Internet supera los 10,000.
1988 DARPA forma el Equipo de Respuesta de Emergencia
Informática (CERT).
1989 La cantidad de Hosts supera los 100,000.
1990 ARPANET se convierte en la Internet.
1991 Se crea la World Wide Web (WWW). Tim Berners-Lee desarrolla
el código para la WWW.
1992 Se organiza la Internet Society (ISOC). La cantidad de Hosts de
Internet supera el millón.
1993 Aparece Mosaic, el primer navegador de base grafica.
1994 Se presenta el primer navegador de Web NETSCAPE
NAVIGATOR.
1996 La cantidad de Hosts de Internet supera los 10 millones. La

8
Capitulo 2. Estado del Arte. 9
____________________________________________________________________________

internet abarca todo el planeta


1997 Se crea el Registro Americano de Números de Internet (ARIN).
Internet 2 se pone en línea.
Fines de la La cantidad de usuarios de internet se duplica cada 6 meses
década de 1990 (crecimiento exponencial).
hasta la
actualidad
1998 Cisco alcanza el 70% de las ventas a través de internet. Se
lanzan las Academias de NetWorking.
1999 La red Backbone internet 2, implanta IPv6. Las empresas mas
importantes se lanzan a la convergencia de video, voz y datos.
2001 La cantidad de host de internet supera los 110 millones,
creciendo exponencialmente.

2.1.2 ¿QUÉ ES UNA RED?

Una red es un conjunto de equipos (computadoras y/o dispositivos) conectados por


medio de cables, señales, ondas o cualquier otro método de transporte de datos, que
comparten información (archivos), recursos (CD-ROM, impresoras, etc.) y servicios
(acceso a internet, e-mail, chat, juegos), etcétera (Groth, 2005).

Una red, más que varias computadoras y/o dispositivos conectadas, la constituyen
varias personas que solicitan, proporcionan e intercambian experiencias e
informaciones a través de sistemas de comunicación. En los Bancos, las agencias de
alquiler de vehículos, las líneas aéreas, y casi todas las empresas tienen como núcleo
principal de la comunicación a una RED. Las redes agilizaron en un paso gigante al
mundo, porque grandes cantidades de información se trasladan de un sitio a otro sin
peligro de extraviarse en el camino (Black, 2003).

9
Capitulo 2. Estado del Arte. 10
____________________________________________________________________________

2.1.3 OBJETIVOS DE UNA RED

A continuación se mencionan los objetivos primordiales que debe cubrir una red (Groth,
2005):

• Las redes en general, consisten en "compartir recursos", y uno de sus objetivos


es hacer que todos los programas, datos, equipos y dispositivos estén
disponibles para cualquiera de la red que así lo solicite, sin importar la
localización física del recurso y del usuario.

• Proporcionar una alta fiabilidad, al contar con fuentes alternativas de suministro.


Por ejemplo todos los archivos podrían duplicarse en dos o tres máquinas, de tal
manera que si una de ellas no se encuentra disponible, podría utilizarse una de
las otras copias. Además, la presencia de múltiples CPU significa que si una de
ellas deja de funcionar, las otras pueden ser capaces de encargarse de su
trabajo, aunque se tenga un rendimiento global menor.

• El ahorro económico. Los ordenadores pequeños tienen una mejor relación costo
/ rendimiento, comparada con la ofrecida por las máquinas grandes. Estas son, a
grandes rasgos, diez veces más rápidas que el más rápido de los
microprocesadores, pero su costo es miles de veces mayor. Este desequilibrio ha
ocasionado que muchos diseñadores de sistemas, construyan sistemas
constituidos por poderosos ordenadores personales, uno por usuario, con los
datos guardados en una o más máquinas, que funcionan como servidor de
archivo compartido.

• Proporcionar un poderoso medio de comunicación entre personas que se


encuentran muy alejadas entre si, a demás una excelente fuente de información
y entretenimiento. Con el ejemplo de una red es relativamente fácil para dos o
más personas que viven en lugares separados, escribir informes juntos. Cuando
un autor hace un cambio inmediato, en lugar de esperar varios días para

10
Capitulo 2. Estado del Arte. 11
____________________________________________________________________________

recibirlos por carta. Esta rapidez hace que la cooperación entre grupos de
individuos que se encuentran alejados, y que anteriormente había sido imposible
de establecer, pueda realizarse ahora (Tanenbaum, 2002).

2.1.4 DISPOSITIVOS DE RED

Los dispositivos de red proporcionan el tendido de las conexiones de cable, la


concentración de conexiones, la conversión de los formatos de datos y la
administración de transferencia de datos. Algunos ejemplos de dispositivos que
ejecutan estas funciones son los repetidores, hubs, puentes, switches y routers (UTEZ,
2003).

Un repetidor es un dispositivo de red que se utiliza para regenerar una señal. Los
repetidores regeneran señales analógicas o digitales que se distorsionan a causa de
pérdidas en la transmisión producidas por la atenuación. Un repetidor no toma
decisiones inteligentes acerca del envío de paquetes como lo hace un router o puente,
el símbolo utilizado para representar este dispositivo se puede apreciar en la figura 2.2
(Ibidem).

Figura 2.2 Repetidor

Los hubs concentran las conexiones. En otras palabras, permiten que la red trate un
grupo de hosts como si fuera una sola unidad. Esto sucede de manera pasiva, sin
interferir en la transmisión de datos. Los hubs activos no sólo concentran hosts, sino
que además regeneran señales. En la figura 2.3 se pueden observar los símbolos
utilizados para los diversos tipos de hubs (Ibídem).

11
Capitulo 2. Estado del Arte. 12
____________________________________________________________________________

Figura 2.3 Hubs

Los puentes convierten los formatos de transmisión de datos de la red además de


realizar la administración básica de la transmisión de datos. Los puentes, tal como su
nombre lo indica, proporcionan las conexiones entre LAN. Los puentes no sólo
conectan las LAN, sino que además verifican los datos para determinar si les
corresponde o no cruzar el puente. Esto aumenta la eficiencia de cada parte de la red,
el símbolo usado para su representación se muestra en la figura 2.4 (Ibídem).

Figura 2.4 Puente

Los switches de grupos de trabajo agregan inteligencia a la administración de


transferencia de datos. No sólo son capaces de determinar si los datos deben
permanecer o no en una LAN, sino que pueden transferir los datos únicamente a la
conexión que necesita esos datos. Otra diferencia entre un puente y un switch es que
un switch no convierte formatos de transmisión de datos (Ibídem).

Figura 2.5 Switch

12
Capitulo 2. Estado del Arte. 13
____________________________________________________________________________

Los routers poseen todas las capacidades indicadas arriba. Los routers pueden
regenerar señales, concentrar múltiples conexiones, convertir formatos de transmisión
de datos, y manejar transferencias de datos. También pueden conectarse a una WAN,
lo que les permite conectar LAN que se encuentran separadas por grandes distancias.
Ninguno de los demás dispositivos puede proporcionar este tipo de conexión, el
símbolo usadao para este dispositivo se ilustra en la figura 2.6 (Ibídem).

Figura 2.6 Router

2.1.5 CLASIFICACIÓN DE REDES

Se puede clasificar las redes en las dimensiones de la tecnología de transmisión y de


su tamaño (Tanenbaum, 2002).

• Tecnología de transmisión
o Broadcast. Un solo canal de comunicación compartido por todas las
máquinas. Un paquete mandado por alguna máquina es recibido por
todas las otras. Todos los nodos pueden acceder a la información en
cualquier momento.
o Point-to-point. Muchas conexiones entre pares individuales de máquinas.
Los paquetes de A a B pueden atravesar máquinas intermedias, entonces
se necesita el ruteo (routing) para dirigirlos.
o Difusión. Se utiliza siempre el mismo medio de transmisión para todos los
nodos.
o Conmutada. Es una técnica de enrutamiento que nos permite hacer uso
eficiente de los enlaces.
• Arquitectura

13
Capitulo 2. Estado del Arte. 14
____________________________________________________________________________

o Ethernet. Es un estándar que permite establecer las jerarquías de una red,


fue creada en los años 70’s y tiene 4 categorías.
o Token-Ring. Es conocida asi por usar topología tipo anillo, es un testigo
que es un nodo el cual verifica el trafico de la información, el sentido es
igual a la topología ring, es decir, en sentido contrario a las manecillas del
reloj.
• Propiedad
o Publica. Se habla de una red WAN, no existe restricción de usuarios y se
tiene acceso en cualquier momento un número ilimitado de usuarios, por
ejemplo, el internet.
o Privada (VPN). Es una red en la que no todos los usuarios pueden
acceder ya que tiene restricciones y solo puede ser usada por ciertas
compañías o empresas, por ejemplo, Intranet o una red interna.
• Medio de transmisión
o Alambricos. Son aquellos en los que usan un medio tangible, por ejemplo,
cable, par trenzado, coaxial, guía de onda, fibra óptica, etc.
o Inalámbricos. Constituida por medios de transmisión que no son tangibles,
es decir, todo lo que se transmite por aire, como lo son infrarrojos, satélite,
microondas, espectro disperso, etc.
• Extensión o cobertura
o LAN (local area network). Red de Área local, cubre una extensión de 10 m
a 1 km. Normalmente usan la tecnología de broadcast: un solo cable con
todas las máquinas conectadas. El tamaño es restringido, así el tiempo de
transmisión del peor caso es conocido. Velocidades típicas son de 10 a
100 Mbps.
o MAN (metropolitan area network). Red de Área Metropolitana, cubre una
extensión de 1 km a 10 km. Consisten en una colección de hosts
(máquinas) o LANs de hosts conectados por una subred. La subred
consiste en las líneas de transmisión y los ruteadores, que son
computadoras dedicados a cambiar de ruta. Se mandan los paquetes de

14
Capitulo 2. Estado del Arte. 15
____________________________________________________________________________

un ruteador a otro. Se dice que la red es packet-switched (paquetes


ruteados) o store-and-forward (guardar y reenviar).
o WAN (wide area network). Red de Área Amplia, cubre una extensión de
100 km a 1.000 km. Consisten en una colección de hosts (máquinas) o
LANs de hosts conectados por una subred. La subred consiste en las
líneas de transmisión y los ruteadores, que son computadoras dedicados
a cambiar de ruta. Se mandan los paquetes de un ruteador a otro.
• Topología
o Bus. los elementos que constituyen la red se disponen linealmente, es
decir, en serie y conectados por medio de un cable; el bus. Las tramas de
información emitidas por un nodo (terminal o servidor) se propagan por
todo el bus (en ambas direcciones), alcanzado a todos los demás nodos.
Cada nodo de la red se debe encargar de reconocer la información que
recorre el bus, para así determinar cual es la que le corresponde, la
destinada a él como se muestra en la figura 2.7. Si un nodo falla toda la
red falla.

Figura 2.7 Topología en Bus

o Anillo. Los nodos de la red se disponen en un anillo cerrado conectados a


él mediante enlaces punto a punto. La información describe una
trayectoria circular en una única dirección y el nodo principal es quien
gestiona conflictos entre nodos al evitar la colisión de tramas de
información como se puede observar en la figura 2.8. En este tipo de
topología, un fallo en un nodo afecta a toda la red.

15
Capitulo 2. Estado del Arte. 16
____________________________________________________________________________

Figura 2.8 Topología de Anillo

o Estrella. Todos los elementos de la red se encuentran conectados


directamente mediante un enlace punto a punto al nodo central de la red,
quien se encarga de gestionar las transmisiones de información por toda
la estrella. Evidentemente, todas las tramas de información que circulen
por la red deben pasar por el nodo principal, como se ilustra en la figura
2.9, con lo cual un fallo en él provoca la caída de todo el sistema. Por otra
parte, un fallo en un determinado cable sólo afecta al nodo asociado a él;
si bien esta topología obliga a disponer de un cable propio para cada
terminal adicional de la red.

Figura 2.9 Topología en Estrella

o Árbol. La topología en árbol es una variante de la de estrella. Como en la


estrella, los nodos del árbol están conectados a un concentrador central
que controla el tráfico de la red. Sin embargo, no todos los dispositivos se
conectan directamente al concentrador central, como se puede apreciar
en la figura 2.10. La mayoría de los dispositivos se conectan a un

16
Capitulo 2. Estado del Arte. 17
____________________________________________________________________________

concentrador secundario que, a su vez, se conecta al concentrador central


(Caballero, 2000).

Figura 2.10 Topología en Árbol

o Malla. En una topología en malla, cada dispositivo tiene un enlace punto a


punto y dedicado con cualquier otro dispositivo, esto lo observamos en la
figura 2.11. El término dedicado significa que el enlace conduce el tráfico
únicamente entre los dos dispositivos que conecta (Ibídem).

Figura 2.11 Topología en Malla

o Topología Jerárquica. Es similar a una estrella extendida. Pero en lugar de


conectar los hubs o switches entre sí, el sistema se conecta con un
computador que controla el tráfico de la topología, ilustrado en la figura
2.12 (UTEZ, 2003).

17
Capitulo 2. Estado del Arte. 18
____________________________________________________________________________

Figura 2.12 Topología Jerárquica

2.1.6 MODELO OSI

En sus inicios, el desarrollo de redes sucedió con desorden en muchos sentidos. A


principios de la década de 1980 se produjo un enorme crecimiento en la cantidad y el
tamaño de las redes. A medida que las empresas tomaron conciencia de las ventajas
de usar esta tecnología, las redes se agregaban o expandían a casi la misma velocidad
a la que se introducían las nuevas tecnologías de red (Pérez, 2006). Para mediados de
la década de 1980, estas empresas comenzaron a sufrir las consecuencias de la rápida
expansión. De la misma forma en que las personas que no hablan un mismo idioma
tienen dificultades para comunicarse, las redes que utilizaban diferentes
especificaciones e implementaciones tenían dificultades para intercambiar información.
El mismo problema surgía con las empresas que desarrollaban tecnologías de redes
privadas o propias, es decir, que una sola empresa o un pequeño grupo de empresas
controlan todo uso de la tecnología. Las tecnologías de redes que respetaban reglas
propietarias en forma estricta no podían comunicarse con tecnologías que usaban
reglas propietarias diferentes (Ibídem).

Para enfrentar el problema de incompatibilidad de redes, la Organización Internacional


de Normalización (ISO) investigó modelos de redes, como la red de Digital Equipment
Corporation (DECnet), la Arquitectura de Sistemas de Red (SNA) y TCP/IP a fin de
encontrar un conjunto de reglas aplicables de forma general a todas las redes. En base
a esta investigación, la ISO desarrolló un modelo de red que ayuda a los fabricantes a
crear redes que sean compatibles con otras redes (Herrera, 2003).

18
Capitulo 2. Estado del Arte. 19
____________________________________________________________________________

El modelo de referencia de Interconexión de Sistemas Abiertos (OSI) lanzado en 1984


fue el modelo de red descriptivo creado por ISO. Proporcionó a los fabricantes un
conjunto de estándares que aseguraron una mayor compatibilidad e interoperabilidad
entre los distintos tipos de tecnología de red producidos por las empresas a nivel
mundial (Ibídem).

El modelo de referencia OSI se ha convertido en el modelo principal para las


comunicaciones por red. Aunque existen otros modelos, la mayoría de los fabricantes
de redes relacionan sus productos con el modelo de referencia de OSI. Esto es en
particular así cuando lo que buscan es enseñar a los usuarios a utilizar sus productos.
Se considera la mejor herramienta disponible para enseñar cómo enviar y recibir datos
a través de una red. El modelo OSI se basa principalmente en 7 capas, las cuales se
muestran en la figura 2.13 (Mc Querry, 2008).

Figura 2.13 Capas del Modelo OSI

Las principales ventajas de usar el modelo OSI son las siguientes (ITLP, 2006):

• Reduce la complejidad
• Estandariza las interfaces
• Facilita el diseño modular
• Asegura la interoperabilidad de la tecnología
• Acelera la Evolución
• Simplifica la enseñanza y el aprendizaje

19
Capitulo 2. Estado del Arte. 20
____________________________________________________________________________

El modelo de referencia OSI es un marco que se puede utilizar para comprender cómo
viaja la información a través de una red. El modelo de referencia OSI explica de qué
manera los paquetes de datos viajan a través de varias capas a otro dispositivo de una
red, aun cuando el remitente y el destinatario poseen diferentes tipos de medios de red
(Black, 2003).

En el modelo de referencia OSI, hay siete capas numeradas, cada una de las cuales
ilustra una función de red específica. La división de la red en siete capas permite
obtener las siguientes ventajas (Groth, 2005):

o Divide la comunicación de red en partes más pequeñas y fáciles de


manejar.
o Normaliza los componentes de red para permitir el desarrollo y el soporte
de los productos por diferentes fabricantes.
o Permite a los distintos tipos de hardware y software de red comunicarse
entre sí.
o Evita que los cambios en una capa afecten las otras capas.
o Divide la comunicación de red en partes más pequeñas para simplificar el
aprendizaje.

Las capas del modelo OSI, se mencionaran en orden ascendente, así como una breve
descripción de sus características principales (Márquez, 2007).

1. Capa Física. Se lleva a cabo una transmisión binaria, en la que intervienen


cables, conectores, voltajes y velocidades de transmisión de datos.

2. Capa de Enlace de Datos. Su función es el control directo de los enlaces y el


acceso a los medios, provee transferencia confiable de datos a través de los
medios. Conectividad y selección de ruta entre sistemas. Direccionamiento lógico
y entrega de mejor esfuerzo.

20
Capitulo 2. Estado del Arte. 21
____________________________________________________________________________

3. Red. Dirección de red y determinación de una mejor ruta. Provee transferencia


confiable a través de los medios. Conectividad y selección de ruta entre
sistemas.

4. Transporte. Conexiones de Extremo a Extremo, se ocupa de aspectos de


transporte entre hosts; confiabilidad del transporte de datos; establecer,
mantener y terminar circuitos virtuales; detección de fallas y control de flujo de
información de recuperación.

5. Sesión. Comunicación entre hosts; establece, administra y termina sesiones


entre aplicaciones.

6. Presentación. Representación de datos, garantizar que los datos sean legibles


para el sistema receptor, formato de los datos, estructura de datos, negocia la
sintaxis de transferencia de datos para la capa de aplicación.

7. Aplicación. Procesos de red a aplicaciones, suministra servicios de red a


aplicaciones (como, por ejemplo, correo electrónico, transferencia de archivos y
emulación de terminales).

21
Capitulo 2. Estado del Arte. 22
____________________________________________________________________________

2.2 ETHERNET

2.2.1 HISTORIA DE LAS REDES ETHERNET

La mayor parte del tráfico en Internet se origina y termina en conexiones de Ethernet.


Desde su comienzo en la década de 1970, Ethernet ha evolucionado para satisfacer la
creciente demanda de LAN de alta velocidad. En el momento en que aparece un nuevo
medio, como la fibra óptica, Ethernet se adapta para sacar ventaja de un ancho de
banda superior y de un menor índice de errores que la fibra ofrece. Ahora, el mismo
protocolo que transportaba datos a 3 Mbps en 1973 transporta datos a 10 Gbps. El
éxito de Ethernet se debe a los siguientes factores (Sanguanpong, 2000):

• Sencillez y facilidad de mantenimiento.


• Capacidad para incorporar nuevas tecnologías.
• Confiabilidad
• Bajo costo de instalación y de actualización.

Con la llegada de Gigabit Ethernet, lo que comenzó como una tecnología LAN ahora se
extiende a distancias que hacen de Ethernet un estándar de red de área metropolitana
(MAN) y red de área amplia (WAN). La idea original de Ethernet nació del problema de
permitir que dos o más host utilizaran el mismo medio y evitar que las señales
interfirieran entre sí. El problema de acceso por varios usuarios a un medio compartido
se estudió a principios de los 70 en la Universidad de Hawái. Se desarrolló un sistema
llamado Alohanet para permitir que varias estaciones de las Islas de Hawái tuvieran
acceso estructurado a la banda de radiofrecuencia compartida en la atmósfera. Más
tarde, este trabajo sentó las bases para el método de acceso a Ethernet conocido como
CSMA/CD (Pérez, 2006).

La primera LAN del mundo fue la versión original de Ethernet. Robert Metcalfe y sus
compañeros de Xerox la diseñaron hace más de treinta años. El primer estándar de
Ethernet fue publicado por un consorcio formado por Digital Equipment Company, Intel

22
Capitulo 2. Estado del Arte. 23
____________________________________________________________________________

y Xerox (DIX). Metcalfe quería que Ethernet fuera un estándar compartido a partir del
cual todos se podían beneficiar, de modo que se lanzó como estándar abierto. Los
primeros productos que se desarrollaron utilizando el estándar de Ethernet se vendieron
a principios de la década de 1980. Ethernet transmitía a una velocidad de hasta 10
Mbps en cable coaxial grueso a una distancia de hasta 2 kilómetros (Km). Este tipo de
cable coaxial se conocía como thicknet (red con cable grueso) y tenía el ancho
aproximado de un dedo pequeño. En 1985, el comité de estándares para Redes
Metropolitanas y Locales del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE)
publicó los estándares para las LAN. Estos estándares comienzan con el número 802.
El estándar para Ethernet es el 802.3. El IEEE quería asegurar que sus estándares
fueran compatibles con el modelo OSI de la Organización Internacional de Estándares
(ISO). Por eso, el estándar IEEE 802.3 debía cubrir las necesidades de la Capa 1 y de
las porciones inferiores de la Capa 2 del modelo OSI. Como resultado, ciertas
pequeñas modificaciones al estándar original de Ethernet se efectuaron en el 802.3.
Las diferencias entre los dos estándares fueron tan insignificantes que cualquier tarjeta
de interfaz de la red de Ethernet (NIC) puede transmitir y recibir tanto tramas de
Ethernet como de 802.3. Básicamente, Ethernet y IEEE 802.3 son un mismo estándar
(Ibídem).

El ancho de banda de 10 Mbps de Ethernet era más que suficiente para los lentos
computadores personales (PC) de los años 80. A principios de los 90, los PC se
volvieron mucho más rápidos, los tamaños de los archivos aumentaron y se producían
cuellos de botella en el flujo de los datos. La mayoría a causa de una baja disponibilidad
del ancho de banda. En 1995, el IEEE anunció un estándar para la Ethernet de 100
Mbps. Más tarde siguieron los estándares para Ethernet de un gigabit por segundo en
1998 y 1999 (Herrera, 2003).

Todos los estándares son básicamente compatibles con el estándar original de


Ethernet. Una trama de Ethernet puede partir desde una antigua NIC de 10 Mbps de
cable coaxial de un PC, subir a un enlace de fibra de Ethernet de 10 Gbps y terminar en
una NIC de 100 Mbps. Siempre que permanezca en redes de Ethernet, el paquete no

23
Capitulo 2. Estado del Arte. 24
____________________________________________________________________________

cambia. Por este motivo, se considera que Ethernet es muy escalable. El ancho de
banda de la red podría aumentarse muchas veces sin cambiar la tecnología base de
Ethernet. El estándar original de Ethernet ha sufrido una cantidad de enmiendas con el
fin de administrar nuevos medios y mayores velocidades de transmisión. Estas
enmiendas sirven de estándar para las tecnologías emergentes y para mantener la
compatibilidad entre las variaciones de Ethernet (Black, 2003).

2.2.2 REDES DE ÁREA LOCAL

Una red de aérea local (Local Área Network: LAN) es la interconexión de varios
ordenadores y periféricos. Su extensión esta limitada físicamente a un edificio o aun
entorno de hasta 200 metros. Su aplicación más extendida es la interconexión de
ordenadores personales y estaciones de trabajo en oficinas, fábricas, etc., para
compartir recursos e intercambiar datos y aplicaciones. En definitiva, permite que dos o
más maquinas se comuniquen (ITLP, 2006).

Características importantes (Black, 2003):

• Tecnología Broadcast (difusión) con el medio de transmisión compartido.


• Cableado especifico instalado normalmente a propósito.
• Capacidad de transmisión comprendida entre 1Mbps y 1Gbps.
• Extensión máxima no superior a 3 km.
• La simplicidad del medio de transmisión que se utiliza (cable coaxial, cables
telefónicos y fibra óptica).
• La facilidad con la que se puede efectuar cambios en el hardware y el software.
• Gran variedad y número de dispositivos conectados.
• Posibilidad de conexión con otras redes. (para crear redes más extensas).
• Limitante de 100 m entre cada Host.

El termino LAN refiere un grupo de estándares de capa 1 y 2 del modelo OSI (capa
física y capa de enlace de datos respectivamente) diseñados para trabajar en conjunto

24
Capitulo 2. Estado del Arte. 25
____________________________________________________________________________

con el propósito de implementar redes geográficamente pequeñas. Para crear una LAN
básica se necesitan tres componentes principales (Pérez, 2006):

• Computadoras que tengan tarjeta de interfaz de red (NIC).


• Switch Ethernet.
• Cableado UTP para conectar cada PC con el switch.

La figura 2.14 muestra una LAN con cada uno de los elementos antes mostrados y
otros que son típicos de la red.

Figura 2.14 Diagrama de Red LAN

Las computadoras marcadas como A, B, C y D se conocen como Host. Como se puede


observar la computadora C es un servidor File Transfer Protocol, es la que controla la
transferencia de archivos y la computadora D es el servidor de impresión a donde
acceden los usurarios cuando quieren imprimir algún archivo. El dispositivo al que están
conectados todos los Hosts es un Switch que concentra las conexiones y permite la
comunicación entre los distintos aparatos conectados a este por medio de las tarjetas
de interfaz de red que no se muestran en la figura por estar integradas dentro de cada
computador.

Para elegir el tipo de red hay que tener en cuenta distintos factores, como son el
número de estaciones, distancia máxima entre ellas, dificultad del cableado,
necesidades de velocidad de respuesta o de enviar otras informaciones aparte de los
datos de la red (Ibídem).

25
Capitulo 2. Estado del Arte. 26
____________________________________________________________________________

2.2.3 CARACTERÍSTICAS DE ETHERNET

Las características primordiales que ayudaron al desarrollo de la tecnología Ethernet se


han convertido ahora en los requerimientos básicos para el desarrollo y uso de redes
LAN. Las características de Ethernet son (Márquez, 2007):

• Bajo Costo. El soporte a múltiples medios de transmisión en la capa física hace


que se pueda escoger de acuerdo a los presupuestos financieros el más
conveniente.
• Compatibilidad. Todas las implementaciones de Ethernet son capaces de
intercambiar datos a nivel de capa de enlace de datos.
• Direccionamiento Flexible. El mecanismo de direccionamiento provee la
capacidad de dirigir datos a un único dispositivo, a un grupo de dispositivos, o
alternativamente, difundir el mensaje a todos los dispositivos conectados a la red.
• Equidad. Todos los dispositivos conectados tienen acceso a la red, si el
administrador de esta así lo permite.
• Estabilidad. La red es estable bajo casi todas las condiciones de carga. Los
mensajes entregados independientemente de la carga en la red, mantienen un
porcentaje constante de la totalidad del tráfico de la red.
• Mantenimiento. El diseño de Ethernet simplifica el mantenimiento de la red,
operaciones y planeamiento.
• Arquitectura de capas. El diseño Ethernet esta especificado en término de
capas para separar las operaciones lógicas de los protocolos de capa de enlace
de las especificaciones de comunicaciones físicas del canal de comunicación.

2.2.4. FORMATO DE LA TRAMA

El formato de la trama del estándar IEEE 802.3 tiene diferencias con el formato original
diseñado para Ethernet producto de las constantes mejoras a la tecnología (ver figura
15), lo que muchas veces es un problema para la compatibilidad entre equipos nuevos
y viejos (Sanguanpong, 2000).

26
Capitulo 2. Estado del Arte. 27
____________________________________________________________________________

Figura 2.15 Comparación de Formatos de Trama

Una de las diferencias entre las dos tramas esta en el preámbulo. El propósito del
preámbulo es anunciar la trama y permitir a todos los receptores en la red sincronizarse
a sí mismos a la trama entrante. El preámbulo en Ethernet tiene una longitud de 8 bytes
pero en IEEE 802.3 la longitud del mismo es de 7 bytes, en este último el octavo byte
se convierte en el comienzo del delimitador de trama. La segunda diferencia entre el
formato de las tramas es en el campo tipo de trama que se encuentra en la trama
Ethernet. Un campo tipo es usado para especificar al protocolo que es transportado en
la trama. Esto posibilita que muchos protocolos puedan ser transportados en la trama.
El campo tipo fue reemplazado en el estándar IEEE 802.3 por un campo longitud de
trama, el cual es utilizado para indicar el numero de bytes que se encuentran en el
campo de datos. La tercera diferencia entre los formatos de ambas tramas se
encuentra en los campos de dirección tanto de destino como de origen. Mientras que el
formato de IEEE 802.3 permite el uso tanto de direcciones de 2 como de 6 bytes, el
estándar Ethernet permite solo direcciones de 6 bytes (Ibídem).
El formato de trama que predomina actualmente en los ambientes Ethernet es el de
IEEE 802.3, pero la tecnología de red continua siendo referenciada como Ethernet.

27
Capitulo 2. Estado del Arte. 28
____________________________________________________________________________

2.2.5 DENOMINACIÓN DE ETHERNET

Ethernet no es una tecnología para redes, sino una familia de tecnologías para redes
que incluye Legacy, Fast Ethernet y Gigabit Ethernet. Las velocidades de Ethernet
pueden ser de 10, 100, 1000 ó 10000 Mbps. El formato básico de la trama y las
subcapas del IEEE de las Capas OSI 1 y 2 siguen siendo los mismos para todas las
formas de Ethernet (UTEZ, 2003).

Cuando es necesario expandir Ethernet para agregar un nuevo medio o capacidad, el


IEEE publica un nuevo suplemento del estándar 802.3. Los nuevos suplementos
reciben una designación de una o dos letras, como por ejemplo: 802.3u. También se
asigna una descripción abreviada (identificador) al suplemento. La descripción
abreviada consta de (Caballero, 2000):

• Un número que indica el número de Mbps que se transmiten.


• La palabra "base", que indica que se utiliza la señalización banda base.
• Una o más letras del alfabeto que indican el tipo de medio utilizado (F = cable de
fibra óptica, T = par trenzado de cobre no blindado).

Ethernet emplea señalización banda base, la cual utiliza todo el ancho de banda del
medio de transmisión. La señal de datos se transmite directamente por el medio de
transmisión. Los datos se transmiten directamente sobre el medio de transmisión
(Ibídem).

El IEEE no puede forzar a los fabricantes de equipamiento para redes a cumplir con
todas las particularidades de ningún estándar. El IEEE espera que se logre lo siguiente
(Pérez, 2006):

• Proporcionar la información de ingeniería necesaria para fabricar dispositivos que


cumplan con los estándares de Ethernet.
• Promover que los fabricantes introduzcan innovaciones.

28
Capitulo 2. Estado del Arte. 29
____________________________________________________________________________

2.2.6 REGLAS PARA LA DENOMINACIÓN DE ETHERNET

Cada dispositivo equipado con Ethernet opera de forma independiente del resto de los
dispositivos de la red, las redes Ethernet no hacen uso de un dispositivo central de
control. Todos los dispositivos son conectados a un canal de comunicaciones de
señales compartidas (Groth, 2005).

Las señales Ethernet son transmitidas en serie, se transmite un bit a la vez. Las
transmisiones se realizan a través del canal de señales compartidas donde todos los
dispositivos conectados pueden escuchar la transmisión (Herrera, 2003).

Antes de comenzar una transmisión, un dispositivo escucha el canal de transmisión


para ver si se encuentra libre de transmisiones. Si el canal se encuentra libre, el
dispositivo puede transmitir sus datos en la forma de una trama Ethernet (Reyders,
2003).

Después de que es transmitida una trama, todos los dispositivos de la red compiten por
la siguiente oportunidad de transmitir una trama. La disputa por la oportunidad de
transmitir una trama. La disputa por la oportunidad de transmitir entre los dispositivos es
pareja, para asegurar que el acceso al canal de comunicaciones sea justo, ningún
dispositivo puede bloquear a otros dispositivos. El acceso al canal de comunicaciones
compartido es determinado por la subcapa MAC (Ibídem).

2.2.6.1 DIRECCIONAMIENTO

Los campos de direcciones en una trama Ethernet llevan direcciones de 48 bits, tanto
para la dirección de destino como la de origen. El estándar IEEE administra parte del
campo de las direcciones mediante el control de la asignación un identificador de 24
bits conocido como OUI (UTEZ, 2003).

29
Capitulo 2. Estado del Arte. 30
____________________________________________________________________________

A cada organización que desee construir interfaces de red (NIC) Ethernet, se le asigna
un OUI de 24 bits único, el cual es utilizado como los primeros 24 bits de la dirección de
hardware, o dirección MAC. El uso de direcciones únicas pre asignadas, simplifica el
montaje y crecimiento de una red Ethernet (Ibídem).

La topología lógica de una red determina como las señales son trasferidas en la red. La
topología lógica de una re Ethernet provee un único canal de comunicaciones que
transporta señales de todos los dispositivos conectados. Esta topología lógica puede
ser diferente de la topología física o de la disposición real del medio. Por ejemplo, si los
segmentos del medio de una red Ethernet se encuentran concentrados físicamente
siguiendo una topología estrella, la topología lógica continua siendo la de un único
canal de comunicaciones que transporta señales de todos los dispositivos conectados.
La señal generada en un dispositivo es generada por el segmento del medio al cual
está conectado. La señal es repetida en todos los otros segmentos conectados de
forma que sea escuchada por todas las demás estaciones. Sin importa cuál sea la
topología física, solo existe un canal de señales para entregar tramas a través de todos
los segmentos a todos los dispositivos conectados como se aprecia en la figura 2.16
(McQuerry, 2008).

Figura 2.16 Topología de red Física

30
Capitulo 2. Estado del Arte. 31
____________________________________________________________________________

2.3. PROTOCOLOS TCP/IP

2.3.1 INTRODUCCIÓN

Internet se desarrolló para brindar una red de comunicación que pudiera continuar
funcionando en tiempos de guerra. Aunque la Internet ha evolucionado en formas muy
diferentes a las imaginadas por sus arquitectos, todavía se basa en un conjunto de
protocolos TCP/IP. El diseño de TCP/IP es ideal para la poderosa y descentralizada red
que es Internet. Muchos de los protocolos utilizados hoy en día se diseñaron utilizando
el modelo TCP/IP de cuatro capas (Reynders, 2003).

Resulta útil conocer los modelos de red OSI y TCP/IP. Cada modelo ofrece su propia
estructura para explicar cómo funciona una red, pero los dos comparten muchas
características. La falta de comprensión de cualquier de los dos modelos puede hacer
que un administrador de sistemas no cuente con la información suficiente para
determinar por qué una red funciona de cierta forma (Wright, 2003).

Todo dispositivo conectado a Internet que desee comunicarse con otros dispositivos en
línea debe tener un identificador exclusivo. El identificador se denomina dirección IP
porque los Routers utilizan un protocolo de la capa tres, el protocolo IP, para encontrar
la mejor ruta hacia dicho dispositivo. IPv4, la versión actual de IP, se diseñó antes de
que se produjera una gran demanda de direcciones. El crecimiento explosivo de
Internet ha amenazado con agotar el suministro de direcciones IP. La división en
subredes, la Traducción de direcciones en red (NAT) y el direccionamiento privado se
utilizan para extender el direccionamiento IP sin agotar el suministro. Otra versión de IP
conocida como IPv6 mejora la versión actual proporcionando un espacio de
direccionamiento mucho mayor, integrando o eliminando los métodos utilizados para
trabajar con los puntos débiles del IPv4 (Ibídem).

Además de la dirección física MAC, cada computador necesita de una dirección IP


exclusiva, a veces llamada dirección lógica, para formar parte de la Internet. Varios son

31
Capitulo 2. Estado del Arte. 32
____________________________________________________________________________

los métodos para la asignación de una dirección IP a un dispositivo. Algunos


dispositivos siempre cuentan con una dirección estática, mientras que otros cuentan
con una dirección dinámica que se les asigna cada vez que se conectan a la red. Cada
vez que se necesita una dirección IP asignada dinámicamente, el dispositivo puede
obtenerla de varias formas. Para que se produzca un enrutamiento eficiente entre los
dispositivos, se deben resolver otros problemas. Por ejemplo, las direcciones IP
repetidas pueden detener el eficiente enrutamiento de los datos (Reynders, 2003).

2.3.2 HISTORIA DE TCP/IP

El Departamento de Defensa de EE.UU. (DoD) creó el modelo de referencia TCP/IP


porque necesitaba una red que pudiera sobrevivir ante cualquier circunstancia. Para
tener una mejor idea, imagine un mundo, cruzado por numerosos tendidos de cables,
alambres, microondas, fibras ópticas y enlaces satelitales. Entonces, imagine la
necesidad de transmitir datos independientemente del estado de un nodo o red en
particular. El DoD requería una transmisión de datos confiable hacia cualquier destino
de la red, en cualquier circunstancia. La creación del modelo TCP/IP ayudó a solucionar
este difícil problema de diseño. Desde entonces, TCP/IP se ha convertido en el
estándar en el que se basa la Internet (Parker, 2001).

Figura 2.17 Modelo TCP/IP

El modelo TCP/IP tiene cuatro capas: la capa de aplicación, la capa de transporte, la


capa de Internet y la capa de acceso de red como se muestra en la figura 2.17. Es
importante observar que algunas de las capas del modelo TCP/IP poseen el mismo
nombre que las capas del modelo OSI. Resulta fundamental no confundir las funciones

32
Capitulo 2. Estado del Arte. 33
____________________________________________________________________________

de las capas de los dos modelos ya que estas desempeñan diferentes funciones en
cada modelo (Ibídem).

2.3.3 CAPAS DEL MODELO TCP/IP

2.3.3.1 CAPA DE APLICACIÓN

La capa de aplicación del modelo TCP/IP maneja protocolos de alto nivel, aspectos de
representación, codificación y control de diálogo, como se muestra en la figura 2.18. El
modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en una
sola capa y asegura que estos datos estén correctamente empaquetados antes de que
pasen a la capa siguiente. TCP/IP incluye no sólo las especificaciones de Internet y de
la capa de transporte, tales como IP y TCP, sino también las especificaciones para
aplicaciones comunes. TCP/IP tiene protocolos que soportan la transferencia de
archivos, e-mail, y conexión remota, además de los siguientes (UTEZ, 2003):

Figura 2.18 Protocolos usados en la capa de aplicación

• Protocolo de transferencia de archivos (FTP): es un servicio confiable orientado a


conexión que utiliza TCP para transferir archivos entre sistemas que admiten la

33
Capitulo 2. Estado del Arte. 34
____________________________________________________________________________

transferencia FTP. Permite las transferencias bidireccionales de archivos binarios


y archivos ASCII.
• Protocolo trivial de transferencia de archivos (TFTP): es un servicio no orientado
a conexión que utiliza el Protocolo de datagrama de usuario (UDP). Los Routers
utilizan el TFTP para transferir los archivos de configuración y para transferir
archivos entre los sistemas que admiten TFTP. Es útil en algunas LAN porque
opera más rápidamente que FTP en un entorno estable.
• Sistema de archivos de red (NFS): es un conjunto de protocolos para un sistema
de archivos distribuido, desarrollado por Sun Microsystems que permite acceso a
los archivos de un dispositivo de almacenamiento remoto, por ejemplo, un disco
rígido a través de una red.
• Protocolo simple de transferencia de correo (SMTP): administra la transmisión de
correo electrónico a través de las redes informáticas. No admite la transmisión de
datos que no sea en forma de texto simple.
• Emulación de terminal (Telnet): Telnet tiene la capacidad de acceder de forma
remota a otra computadora. Permite que el usuario se conecte a un host de
Internet y ejecute comandos. El cliente de Telnet recibe el nombre de host local.
El servidor de Telnet recibe el nombre de host remoto.
• Protocolo simple de administración de red (SNMP): es un protocolo que provee
una manera de monitorear y controlar los dispositivos de red y de administrar las
configuraciones, la recolección de estadísticas, el desempeño y la seguridad.
• Sistema de denominación de dominio (DNS): es un sistema que se utiliza en
Internet para convertir los nombres de los dominios y de sus nodos de red
publicados abiertamente en direcciones IP.

2.3.3.2 CAPA DE TRANSPORTE

La capa de transporte proporciona servicios de transporte desde el host origen hacia el


host destino. Esta capa forma una conexión lógica entre los puntos finales de la red, el
host transmisor y el host receptor (ver figura 2.19). Los protocolos de transporte
segmentan y re-ensamblan los datos mandados por las capas superiores en el mismo

34
Capitulo 2. Estado del Arte. 35
____________________________________________________________________________

flujo de datos, o conexión lógica entre los extremos. La corriente de datos de la capa de
transporte brinda transporte de extremo a extremo (Ibídem).

Figura 2.19 Protocolos usados en la capa de aplicación

Generalmente, se compara la Internet con una nube. La capa de transporte envía los
paquetes de datos desde la fuente transmisora hacia el destino receptor a través de la
nube. El control de punta a punta, que se proporciona con las ventanas deslizantes y la
confiabilidad de los números de secuencia y acuses de recibo, es el deber básico de la
capa de transporte cuando utiliza TCP. La capa de transporte también define la
conectividad de extremo a extremo entre las aplicaciones de los hosts. Los servicios de
transporte incluyen los siguientes servicios (Ibídem):

TCP y UDP

• Segmentación de los datos de capa superior


• Envío de los segmentos desde un dispositivo en un extremo a otro
dispositivo en otro extremo.

TCP solamente

• Establecimiento de operaciones de punta a punta.


• Control de flujo proporcionado por ventanas deslizantes.
• Confiabilidad proporcionada por los números de secuencia y los acuses
de recibo

35
Capitulo 2. Estado del Arte. 36
____________________________________________________________________________

Generalmente, se representa la Internet con una nube. La capa de transporte envía los
paquetes de datos desde la fuente transmisora hacia el destino receptor a través de la
nube (ver figura 2.20). La nube maneja los aspectos tales como la determinación de la
mejor ruta (ver figura 2.21).

Figura 2.20 Conexión de redes

Figura 2.21 Determinación de una mejor ruta

36
Capitulo 2. Estado del Arte. 37
____________________________________________________________________________

2.3.3.3. CAPA DE INTERNET

El propósito de la capa de Internet es seleccionar la mejor ruta para enviar paquetes por
la red (Parker, 2001). El protocolo principal que funciona en esta capa es el Protocolo
de Internet (IP). La determinación de la mejor ruta y la conmutación de los paquetes
ocurren en esta capa (UTEZ, 2003).

Figura 2.22 Protocolos usados en la capa de Internet

Los siguientes protocolos operan en la capa de Internet TCP/IP (ver figura 2.22):

• IP proporciona un enrutamiento de paquetes no orientado a conexión de máximo


esfuerzo. El IP no se ve afectado por el contenido de los paquetes, sino que
busca una ruta hacia el destino.
• El Protocolo de mensajes de control en Internet (ICMP) suministra capacidades
de control y envío de mensajes.
• El Protocolo de Resolución de Direcciones (ARP) determina la dirección de la
capa de enlace de datos, la dirección MAC, para las direcciones IP conocidas.
• El Protocolo de Resolución Inversa de Direcciones (RARP) determina las
direcciones IP cuando se conoce la dirección MAC.
• El IP ejecuta las siguientes operaciones (ver figura 2.23):

o Define un paquete y un esquema de direccionamiento.

37
Capitulo 2. Estado del Arte. 38
____________________________________________________________________________

o Transfiere los datos entre la capa Internet y las capas de acceso de red.
o Enruta los paquetes hacia los hosts remotos (UTEZ, 2003).

Figura 2.23 Operaciones realizadas por IP

Por último, a modo de aclaración de la terminología, a veces, se considera a IP como


protocolo poco confiable. Esto no significa que IP no enviará correctamente los datos a
través de la red. Llamar al IP, protocolo poco confiable simplemente significa que IP no
realiza la verificación y la corrección de los errores. Dicha función la realizan los
protocolos de la capa superior desde las capas de transporte o aplicación (Reynders,
2003).

2.3.3.4 CAPA DE ACCESO DE RED (CAPA DE HOST A RED)

La capa de acceso de red también se le denomina capa de host a red (ver figura 2.24).
La capa de acceso de red es la capa que maneja todos los aspectos que un paquete IP
requiere para efectuar un enlace físico real con los medios de la red. Esta capa incluye
los detalles de la tecnología LAN y WAN y todos los detalles de la capa física y de
enlace de datos del modelo OSI (UTEZ, 2003).

38
Capitulo 2. Estado del Arte. 39
____________________________________________________________________________

Figura 2.24 Capa de Acceso de Red

Los controladores para las aplicaciones de software, las tarjetas de módem y otros
dispositivos operan en la capa de acceso de red. La capa de acceso de red define los
procedimientos para realizar la interfaz con el hardware de la red y para tener acceso al
medio de transmisión. Los estándares del protocolo de los módem tales como el
Protocolo Internet de Enlace Serial (SLIP) y el Protocolo de Punta a Punta (PPP)
brindan acceso a la red a través de una conexión por módem. Debido a un intrincado
juego entre las especificaciones del hardware, el software y los medios de transmisión,
existen muchos protocolos que operan en esta capa. Esto puede generar confusión en
los usuarios. La mayoría de los protocolos reconocibles operan en las capas de
transporte y de Internet del modelo TCP/IP (Parker, 2001).

Las funciones de la capa de acceso de red incluyen la asignación de direcciones IP a


las direcciones físicas y el encapsulamiento de los paquetes IP en tramas. Basándose
en el tipo de hardware y la interfaz de la red, la capa de acceso de red definirá la
conexión con los medios físicos de la misma (Reynders, 2003).

Un buen ejemplo de una configuración de la capa de acceso de red sería configurar un


sistema Windows utilizando una NIC de otra empresa. De acuerdo con la versión de
Windows, la NIC sería automáticamente detectada por el sistema operativo y luego se
instalarían los controladores adecuados. Si esta fuera una versión de Windows antigua,
el usuario tendría que especificar el controlador de la tarjeta de la red. El fabricante de
la tarjeta provee estos controladores en formato de disco o en CD-ROM (Wright, 2003).
39
Capitulo 2. Estado del Arte. 40
____________________________________________________________________________

2.4 COMPARACIÓN DEL MODELO OSI Y EL MODELO TCP/IP

La siguiente es una comparación de los modelos OSI y TCP/IP comparando sus


similitudes y diferencias (McQuerry, 2008):

Similitudes entre los modelos OSI y TCP/IP:

• Ambos se dividen en capas.


• Ambos tienen capas de aplicación, aunque incluyen servicios muy distintos.
• Ambos tienen capas de transporte y de red similares.
• Se supone que la tecnología es de conmutación por paquetes y no de
conmutación por circuito.

Diferencias entre los modelos OSI y TCP/IP:

• TCP/IP combina las capas de presentación y de sesión en una capa de


aplicación
• TCP/IP combina la capas de enlace de datos y la capa física del modelo OSI en
una sola capa
• TCP/IP parece ser más simple porque tiene menos capas
• La capa de transporte TCP/IP que utiliza UDP no siempre garantiza la entrega
confiable de los paquetes mientras que la capa de transporte del modelo OSI sí.

La Internet se desarrolla de acuerdo con los estándares de los protocolos TCP/IP. El


modelo TCP/IP gana credibilidad gracias a sus protocolos. A diferencia, en general, las
redes no se construyen a base del protocolo OSI. El modelo OSI se utiliza como guía
para comprender el proceso de comunicación. En la figura 2.25 se puede observar la
relación entre ambos modelos (UTEZ, 2003).

40
Capitulo 2. Estado del Arte. 41
____________________________________________________________________________

Figura 2.25 Modelo OSI Vs. ModeloTCP/IP

41
Capitulo 2. Estado del Arte. 42
____________________________________________________________________________

2.5 PROTOCOLO HTTP

Los protocolos son reglas que ayudan a estandarizar la comunicación entre


ordenadores. De ellos, el que controla la transferencia de datos en la WWW es el
HTTP, que proporciona un vehículo de entrega para las imágenes, gráficos, video,
hipertexto u otros datos en la Web. Mientras se recorre la web, el explorador
intercambia mensajes con los servidores Web gracias al HTTP. Cada vez que hace un
clic en un hipervínculos o pasa de un recurso a otro, el explorador utiliza HTTP para
acceder al recurso seleccionado. HTTP es un protocolo sin estado, en otras palabras el
explorador y el servidor deben crear y después cortar una conexión de red por cada
operación HTTP, a este conjunto de peticiones y respuestas se denomina transacción.
Mediante HTTP los clientes y los servidores determinan de forma dinámica el formato
de los documentos, lo que permiten que utilicen formato de datos no estándar para el
intercambio de datos. Si el receptor no tiene un modo de ver o acceder a los datos,
puede descargar un programa complemento que le permita recibir el contenido
(Márquez, 2007).

Las cabeceras de HTTP pueden contener información acerca de los objetos que
transmite la aplicación a través de la Web. Con la información de las cabeceras, las
aplicaciones Cliente-Servidor negocian formatos que pueden utilizar para transferir los
objetos. Si no reconocen la información de la cabecera, la ignoran. Por tanto, puede
probar nuevos protocolos en la Web sin comprometer la integridad del HTTP. Además
el protocolo está basado en texto por lo cual es legible y no necesita decodificación.
La información transmitida es identificada mediante una url (de ahí que las páginas que
vemos en un navegador de internet comienzan con http://) y es conocida como recurso.
Esta arquitectura hace de este protocolo muy flexible a la hora de enviar y recibir datos,
ya que es estándar y puede manejar cualquier tipo de multimedia, audio, textos,
imágenes etc. El protocolo de Transferencia de Hipertexto es un protocolo de nivel de
aplicación en el formato de capas de TCP/IP para sistemas de información hipermedia
distribuida y colaborativa. Ha estado en usa por la iniciativa WWW desde 1990
(McQuerry, 2008).

42
Capitulo 2. Estado del Arte. 43
____________________________________________________________________________

La comunicación en HTTP se establece mediante una señal de petición, formada por un


encabezado el cual contiene la información de la acción que el cliente necesita que el
servidor realice. Pueden haber varios mensajes de respuesta, esto es, si el protocolo no
encontró respuesta del servidor entonces envía un mensaje al cliente que no es posible
establecer la conexión, en caso contrario si la conexión se establece satisfactoriamente
el servidor envía la información requerida, es decir una página web, y el cliente envía un
mensaje de recibido hacia el servido. Una característica muy importante de HTTP es la
sintaxis y la representación de la negociación del envió de datos, permitiendo así que
los sistemas se puedan construir independientemente de los datos que se vayan a
transmitir (ITLP, 2006).

2.5.1 HTTP EN LA HISTORIA DE LAS REDES INFORMÁTICAS

Una comunicación en HTTP está formada por un encabezado seguido, opcionalmente,


por una línea en blanco y algún dato. El encabezado especificará cosas como la acción
requerida del servidor, o el tipo de dato retomado, o el código de estado (Pérez, 2006).

El uso de campos de encabezados enviados en las transacciones HTTP permiten que


se envíe información descriptiva en la transacción, permitiendo así la autenticación,
cifrado e identificación de usuario. Un encabezado es un bloque de datos que precede
a la información propiamente dicha (Groth, 2005).

Si se reciben líneas de encabezado del cliente, el servidor las coloca en las variables de
ambiente de CGI con el prefijo "HTTP_" seguido del nombre del encabezado. Cualquier
carácter guión"-" del nombre del encabezado se convierte a caracteres "_” (Marquez,
2004).

El servidor envía al cliente:

• Un código de estado que indica si la petición fue correcta o no. Los códigos de
error típicos indican que el archivo solicitado no se encontró, que la petición no

43
Capitulo 2. Estado del Arte. 44
____________________________________________________________________________

realizada de forma correcta o que se requiere autenticación para acceder al


archivo.
• La información propiamente dicha. Como HTTP permite enviar documentos de
todo tipo y formato, es ideal para transmitir multimedia, como gráficos, audio y
video. Esta libertad es una de las mayores ventajas de HTTP.
• Información sobre el objeto que se retorna.

Un ejemplo de comunicación en HTTP puede ser el siguiente: Para obtener un recurso


con el URL http.7Awww.example.com/index.html

• Se, abre una conexión al host www.example.com, puerto 80 que es el puerto por
defecto para HTTP.
• Se envía un mensaje en el estilo siguiente:

GE/.index.html HTTP/1.1

Host: www.example.com

User-Agent: nombre-cliente

[Línea en blanco]

• La respuesta del servidor está formada por encabezados seguidos del recurso
solicitado, en el caso de una página web:

HTTP/1.1 200 OK

Date: mon, 11 may 2005 13:45:45 GMT

Content-Type: text/html

Content-Length: 1221

<htmt>

44
Capitulo 2. Estado del Arte. 45
____________________________________________________________________________

<body>

<h1>Página principal de tu Host </h1>

(Contenido)

</body>

</html>

En la respuesta del servidor observamos la sintaxis del código con el que se


implementa el envió y recepción de datos en HTTP (UTEZ, 2003).

2.5.2 SEGURIDAD DE HTTP

La versión inicial del protocolo no presentaba especificaciones de seguridad por lo tanto


se creó una versión más segura conocida como HTTPS. El Hypertext Transfer Protocol
Secure (Protocolo seguro de transferencia de hipertexto), es un protocolo de red
basado en el protocolo HTTP, destinado a la transferencia segura de datos de
hipertexto, es decir, es la versión segura de HTTP (Márquez, 2004).

El sistema HTTPS utiliza un cifrado basado en las Secure Socket Layers (SSL) para
crear un canal cifrado (cuyo nivel de cifrado depende del servidor remoto y del
navegador utilizado por el cliente) más apropiado para el tráfico de información sensible
que el protocolo HTTP. De este modo se consigue que la información sensible (usuario
y claves de paso normalmente) no puede ser usada por un atacante que haya
conseguido interceptar la transferencia de datos de la conexión, ya que lo único que
obtendrá será un flujo de datos cifrados que le resultará imposible de descifrar. Los
protocolos HTTPS son utilizados por navegadores como: Zafarí, Internet Explorer,
Mozilla Firefox, Opera y Google Chrome, entre otros. El puerto estándar para este
protocolo es el 443 (Ibídem).

45
Capitulo 2. Estado del Arte. 46
____________________________________________________________________________

Para conocer si una página web que estamos visitando, utiliza el protocolo https y es,
por tanto, segura en cuanto a la trasmisión de los datos que estamos transcribiendo,
debemos observar si en la barra de direcciones de nuestro navegador, aparece https al
comienzo, en lugar de http. Algunos navegadores utilizan un icono generalmente un
candado) en la parte derecha de la barra de direcciones para indicar la existencia de un
protocolo de comunicaciones seguro e incluso cambian el color del fondo de la barra de
direcciones por amarillo (Firefox) o verde (Internet Explorer) para identificar páginas
web seguras (UTEZ, 2003).

46
Capitulo 2. Estado del Arte. 47
____________________________________________________________________________

2.6 INTRODUCCIÓN AL MICROCONTROLADOR

2.6.1 ¿QUÉ ES UN MICROCONTROLADOR?

Muchos de saben que apariencia tiene una computadora, usualmente tiene teclado,
monitor, CPU (Unidad de Procesamiento Central), impresora y mouse. Este tipo de
computadoras, como Mac o PC, son diseñadas principalmente para comunicarse con
humanos. Manejo de base de datos, análisis financieros o incluso procesadores de
textos, se encuentran todos dentro de la “gran caja”, que contiene CPU, la memoria, el
disco rígido, etc. El verdadero “cómputo”, sin embargo, tiene lugar dentro de la CPU. Si
piensa sobre esto, el único propósito del monitor, teclado, mouse e incluso la impresora,
es “conectar” a la CPU con el mundo exterior (González, 2002).

Existen dispositivos en todos lados, corriendo programas y haciendo cálculos


silenciosamente sin interactuar con ningún humano. Se llama a éstos dispositivos
“microcontroladores”. Micro porque son pequeños, y controladores, porque controlan
máquinas o incluso otros controladores. Los Microcontroladores, por definición
entonces, son diseñados para ser conectados más a máquinas que a personas. Son
muy útiles porque se puede construir una máquina o artefacto, escribir programas para
controlarlo, y luego dejarlo trabajar automáticamente (Campos, 2004).

Hay un número infinito de aplicaciones para los microcontroladores. Algunos son


programados una vez y producidos para aplicaciones específicas, tales como controlar
el horno de microondas. Otros son “reprogramables”, eso quiere decir que pueden ser
usados una y varias veces para diferentes aplicaciones. Los Microcontroladores son
increíblemente versátiles, el mismo dispositivo puede controlar un aeromodelo, una
tostadora, o incluso el ABS de un auto (Ibídem).

Un microcontrolador es un circuito integrado que en su interior contiene una unidad


central de procesamiento (CPU), unidades de memoria (RAM y ROM), puertos de
entrada y salida y periféricos, como se puede observar en la figura 2.26. Estas partes

47
Capitulo 2. Estado del Arte. 48
____________________________________________________________________________

están interconectadas dentro del microcontrolador, y en conjunto forman lo que se le


conoce como microcomputadora. Se puede decir con toda propiedad que un
microcontrolador es una microcomputadora completa encapsulada en un circuito
integrado. El microcontrolador es un computador dedicado a diversas aplicaciones. En
su memoria sólo reside un programa destinado a gobernar una aplicación determinada;
sus líneas de entrada/salida soportan el conexionado de los sensores y actuadores del
dispositivo a controlar, y todos los recursos complementarios disponibles tienen como
única finalidad atender sus requerimientos. Una vez programado y configurado el
microcontrolador solamente sirve para gobernar la tarea asignada (Ponce, 2000).

Figura 2.26 Estructura de un Microcontrolador

Toda microcomputadora requiere de un programa para que realice una función


específica. Este se almacena normalmente en la memoria ROM. No está de más
mencionar que sin un programa, los microcontroladores carecen de utilidad. El
propósito fundamental de los microcontroladores es el de leer y ejecutar los programas
que el usuario le escribe, es por esto que la programación es una actividad básica e
indispensable cuando se diseñan circuitos y sistemas que los incluyan. El carácter
programable de los microcontroladores simplifica el diseño de circuitos electrónicos.
Permiten modularidad y flexibilidad, ya que un mismo circuito se puede utilizar para que
realice diferentes funciones con solo cambiar el programa del microcontrolador, en la
figura 2.27 se ilustran algunos tipos de microcontroladores (Ibídem).

48
Capitulo 2. Estado del Arte. 49
____________________________________________________________________________

Figura 2.27 Microcontroladores

Como se ha visto anteriormente, un microcontrolador es un circuito integrado


programable que contiene todos los componentes necesarios para controlar el
funcionamiento de una tarea determinada, como el control de un microondas, un
teclado de un ordenador, una impresora, un sistema de alarma, etc. Para esto, el
microcontrolador precisa de muy pocos componentes asociados. La utilización de
microcontroladores en un circuito, reduce notablemente el tamaño y el número de
componentes y, en consecuencia, disminuye el número de averías, el volumen, el peso
y el precio de los equipos, entre otras ventajas. El microcontrolador nace cuando las
técnicas de integración han progresado lo suficiente para permitir su fabricación; pero
también porque, muy a menudo, tanto en las aplicaciones domésticas como
industriales, se tiene la necesidad de sistemas “inteligentes” o, al menos programables.
El microcontrolador uno de los inventos más notables del siglo XX. En el mercado hay
gran cantidad de ellos, con multitud de posibilidades y características (Torres, 2004).

2.6.2 HISTORIA DE LOS MICROCONTROLADORES

Inicialmente cuando no existían los microprocesadores las personas se ingeniaban en


diseñar sus circuitos electrónicos y los resultados estaban expresados en diseños que
implicaban muchos componentes electrónicos y cálculos matemáticos. Un circuito
lógico básico requería de muchos elementos electrónicos basados en transistores,
resistencias, etc., lo cual desembocaba en circuitos con muchos ajustes y fallos; pero
en el año 1971 apareció el primer microprocesador el cual originó un cambio decisivo

49
Capitulo 2. Estado del Arte. 50
____________________________________________________________________________

en las técnicas de diseño de la mayoría de los equipos. Al principio se creía que el


manejo de un microprocesador era para aquellas personas con un coeficiente
intelectual muy alto; por lo contrario con la aparición de este circuito integrado todo
sería mucho más fácil de entender y los diseños electrónicos serian mucho más
pequeños y simplificados. Entre los microprocesadores más conocidos tenemos el
popular Z-80 y el 8085. Los diseñadores de equipos electrónicos ahora tenían equipos
que podían realizar mayor cantidad de tareas en menos tiempo y su tamaño se redujo
considerablemente; sin embargo, después de cierto tiempo aparece una nueva
tecnología llamada microcontrolador que simplifica aun más el diseño electrónico
(Tamdenbaum, 2007).

2.6.3 ¿PARA QUÉ SE USAN LOS MICROCONTROLADORES?

La limitación en la aplicación de los microcontroladores a un desarrollo de ingeniería


tiene su límite en la imaginación del desarrollador. Con los diversos modelos
disponibles se pueden afrontar multitud de diseños distintos desde los más simples
hasta los más complejos. Por nombrar varios ejemplos de aplicaciones, se tienen
mandos a distancia, termómetros digitales, controles de acceso por puertas de
seguridad, sistemas ABS o EPS de los coches, control y sensoria de maquinaria,
domótica del hogar, micro robótica, monederos electrónicos, etc (Guerrero, 2003).

Realmente la dificultad no está en usar un microcontrolador para afrontar un proyecto


de hardware, sino en elegir el fabricante y el modelo adecuado para la aplicación. Con
esto lo que se tiene que tener presente es que los microcontroladores solucionarán la
vida en todos los temas, pero el objetivo es usar el mínimo número de ellos y con el
menor coste por unidad. Todo diseño se puede afrontar con microcontroladores, pero
según qué especificación o escenario, no siempre será la mejor idea usar uno solo, sino
varios distribuidos. Habrá aplicaciones para las que no será posible usar un único
microcontrolador, pero si varios de ellos, bien por restricciones de funcionamiento o
económicas (Aguayo, 2004).

50
Capitulo 2. Estado del Arte. 51
____________________________________________________________________________

2.6.4 DIFERENCIAS ENTRE MICROPROCESADOR Y MICROCONTROLADOR

Un microcontrolador difiere de un microprocesador de muchas maneras. Lo primero y lo


más importante es su funcionalidad. Para que un microprocesador sea usado, otros
componentes como la memoria e interfaces, deben agregarse para recibir y enviar
datos, es decir, el microprocesador es el corazón de una computadora. Por otro lado, el
microcontrolador fue diseñado para ser todo eso en un solo chip. Ningún otro
componente externo se necesita para su aplicación, porque todos los periféricos
necesarios ya se construyen en él. Así, se ahorra el tiempo y el espacio que se
necesitan para construir los dispositivos. Es muy habitual confundir los términos de
microcontrolador y microprocesador, cayendo así en un error de cierta magnitud. Un
microcontrolador es un sistema completo, con unas prestaciones limitadas que no
pueden modificarse y que puede llevar a cabo las tareas para las que ha sido
programado de forma autónoma. Un microprocesador, en cambio, es simplemente un
componente que conforma el microcontrolador, que lleva acabo ciertas tareas que en
conjunto con otros componentes, forman un microcontrolador (Pallas, 2007).

Un microcontrolador es un solo circuito integrado que contiene todos los elementos


electrónicos que se utilizaban para hacer funcionar un sistema basado con un
microprocesador; es decir contiene en un solo integrado la Unidad de Proceso, la
memoria RAM, memoria ROM , puertos de entrada, salidas y otros periféricos, con la
consiguiente reducción de espacio. El microcontrolador es en de definitiva un circuito
integrado que incluye todos los componentes de un computador. Debido a su reducido
tamaño es posible montar el controlador en el propio dispositivo al que gobierna. En
este caso el controlador recibe el nombre de controlador empotrado o embebido
(Ibídem).

Debe quedar clara por tanto la diferencia entre microcontrolador y microprocesador: a


modo de resumen, el primero es un sistema autónomo e independiente, mientras que el
segundo es una parte, cabe decir que esencial, que forma parte de un sistema mayor.

51
Capitulo 2. Estado del Arte. 52
____________________________________________________________________________

2.6.5 VENTAJAS DE UN MICROCONTROLADOR FRENTE A UN


MICROPROCESADOR

Las diferencias más importantes son: Por ejemplo la configuración mínima básica de un
microprocesador estaba constituida por un Micro de 40 Pines, Una memoria RAM de 28
Pines, una memoria ROM de 28 Pines y un decodificador de direcciones de 18 pines;
pero un microcontrolador incluye todo estos elementos en un solo Circuito Integrado por
lo que implica una gran ventaja en varios factores: En el circuito impreso por su amplia
simplificación de circuitería, el costo para un sistema basado en microcontrolador es
mucho menor y, lo mejor de todo, el tiempo de desarrollo de su proyecto electrónico se
disminuye considerablemente (Gonzalez, 2002).

Se dice que un microprocesador es un sistema abierto porque su configuración es


variable de acuerdo con la aplicación a la que se destine (véase figura 2.28). El
microcontrolador es un sistema cerrado. Todas las partes del computador están
contenidas en su interior y sólo salen al exterior las líneas que gobiernan los periféricos
como puede observarse en la figura 2.29 (Novas, 2004).

Se piensa que las características de un sistema cerrado representan una desventaja


con relación a los Microprocesadores, pero en la práctica cada fabricante de
microcontroladores oferta un elevado número de modelos diferentes, desde los más
sencillos hasta los más poderosos. No es difícil encontrar uno que se adapte a los
requerimientos que se necesiten. Es posible seleccionar la capacidad de las memorias,
el número de líneas de (ENTRADA / SALIDA) E/S, la cantidad y potencia de los
elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy
destacado del diseño es la selección del microcontrolador a utilizar (Pallas, 2007).

Se puede concluir con que la diferencia fundamental entre un Microprocesador y un


Microcontrolador: es que el Microprocesador es un sistema abierto con el que se puede
construirse un computador con las características que se desee, acoplándole los
módulos necesarios. Los productos que para su regulación incorporan un

52
Capitulo 2. Estado del Arte. 53
____________________________________________________________________________

microcontrolador disponen de las siguientes ventajas: Aumento de prestaciones, un


mayor control sobre un determinado elemento representa una mejora considerable en
el mismo. Aumento de la habilidad al reemplazar el microcontrolador por un elevado
número de elementos disminuye el riesgo de averías y se precisan menos ajustes.
Reducción del tamaño en el producto acabado. La integración del microcontrolador en
un chip disminuye el volumen, la mano de obra y los stocks. Mayor flexibilidad: las
características de control están programadas por lo que su medicación sólo necesita
cambios en el programa de instrucciones (Torres, 2004).

Figura 2.28 Estructura de un sistema abierto basado en un microprocesador

Figura 2.29 El microcontrolador como un sistema cerrado

53
Capitulo 2. Estado del Arte. 54
____________________________________________________________________________

2.6.6 LOS MICROCONTROLADORES HOY EN DÍA

Los microcontroladores están presentes en el trabajo, en el hogar y en la vida en


general. Se pueden encontrar controlando el funcionamiento de los ratones y teclados
de los computadores, en los teléfonos, en los hornos microondas y los televisores de
nuestro hogar. Cada vez existen más productos que incorporan un microcontrolador
con el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y coste,
mejorar su fiabilidad y disminuir el consumo (Campos, 2004).

Algunos fabricantes de microcontroladores superan el millón de unidades de un modelo


determinado producidas en una semana. Este dato puede dar una idea de la masiva
utilización de estos componentes. Los microcontroladores están siendo empleados en
multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, horno
microondas, frigoríficos, televisores, computadoras, impresoras, módems, el sistema de
arranque de nuestro coche, etc. Y otras aplicaciones con las que seguramente no se
esta tan familiarizados como instrumentación electrónica, control de sistemas en una
nave espacial, etc. Una aplicación típica podría emplear varios microcontroladores para
controlar pequeñas partes del sistema. Estos pequeños controladores podrían
comunicarse entre ellos y con un procesador central, probablemente más potente, para
compartir la información y coordinar sus acciones, como, de hecho, ocurre ya
habitualmente en cualquier PC (Mandado, 2007).

2.6.7 ARQUITECTURA INTERNA DE UN MICROCONTROLADOR

Von Neumann:

El tamaño de la unidad de datos o instrucciones está fijado por el ancho del bus que
comunica la memoria con la CPU. Así un microprocesador de 8 bits con un bus de 8
bits, tendrá que manejar datos e instrucciones de una o más unidades de 8 bits (bytes)
de longitud. Si tiene que acceder a una instrucción o dato de más de un byte de
longitud, tendrá que realizar más de un acceso a la memoria. Y el tener un único bus

54
Capitulo 2. Estado del Arte. 55
____________________________________________________________________________

hace que el microprocesador sea más lento en su respuesta, ya que no puede buscar
en memoria una nueva instrucción mientras no finalicen las transferencias de datos de
la instrucción anterior, como se ilustra a grandes rasgos en la figura 2.30. Resumiendo
todo lo anterior, las principales limitaciones que nos encontramos con la arquitectura
Von Neumann son (Orduña, 2001):

• La limitación de la longitud de las instrucciones por el bus de datos, que hace


que el microprocesador tenga que realizar varios accesos a memoria para buscar
instrucciones complejas.
• La limitación de la velocidad de operación a causa del bus único para datos e
instrucciones que no deja acceder simultáneamente a unos y otras, lo cual
impide superponer ambos tiempos de acceso.

Figura 2.30 Arquitectura Von Neumann

Harvard:

La arquitectura Harvard tiene la unidad central de proceso (CPU) conectada a dos


memorias (una con las instrucciones y otra con los datos) por medio de dos buses
diferentes. Una de las memorias contiene solamente las instrucciones del programa
(Memoria de Programa), y la otra sólo almacena datos (Memoria de Datos). Ambos
buses son totalmente independientes y pueden ser de distintos anchos. Para un
procesador de Set de Instrucciones Reducido, o RISC (Reduced Instrucción Set
Computer), el set de instrucciones y el bus de memoria de programa pueden diseñarse
de tal manera que todas las instrucciones tengan una sola posición de memoria de
programa de longitud. Además, al ser los buses independientes, la CPU puede acceder

55
Capitulo 2. Estado del Arte. 56
____________________________________________________________________________

a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la
siguiente instrucción a ejecutar. Ventajas de esta arquitectura (Ibídem):

• El tamaño de las instrucciones no está relacionado con el de los datos, y por lo


tanto puede ser optimizado para que cualquier instrucción ocupe una sola
posición de memoria de programa, logrando así mayor velocidad y menor
longitud de programa.
• El tiempo de acceso a las instrucciones puede superponerse con el de los datos,
logrando una mayor velocidad en cada operación.

Figura 2.31 Arquitectura Harvard

En conclusión de ambas arquitecturas tenemos que aunque inicialmente todos los


microcontroladores adoptaron la arquitectura clásica de Von Neumann, en el momento
presente se impone la arquitectura Harvard. La arquitectura de von Neumann se
caracteriza por disponer de una sola memoria principal donde se almacenan datos e
instrucciones de forma indistinta. A dicha memoria se accede a través de un sistema de
buses único (direcciones, datos y control). La arquitectura Harvard dispone de dos
memorias independientes, una que contiene sólo instrucciones y otra, sólo datos
(Ibídem).

2.6.8 ESTRUCTURA Y ELEMENTOS DE LOS MICROCONTROLADORES

A continuación se describen los elementos más comunes en todo tipo de


microcontroladores y sistemas.

56
Capitulo 2. Estado del Arte. 57
____________________________________________________________________________

El procesador o UCP

Es el elemento más importante del microcontrolador y determina sus principales


características, tanto a nivel hardware como software. Se encarga de direccionar la
memoria de instrucciones, recibir el código OP de la instrucción en curso, su
decodificación y la ejecución de la operación que implica la instrucción, así como la
búsqueda de los operandos y el almacenamiento del resultado. Existen tres
orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales
(Novas, 2004):

• CISC: Un gran número de procesadores usados en los microcontroladores


están basados en la filosofía CISC (Computadores de Juego de Instrucciones
Complejo). Disponen de más de 80 instrucciones máquina en su repertorio,
algunas de las cuales son muy sofisticadas y potentes, requiriendo muchos
ciclos para su ejecución. Una ventaja de los procesadores CISC es que ofrecen
al programador instrucciones complejas que actúan como macros.

• RISC: Tanto la industria de los computadores comerciales como la de los


microcontroladores están decantándose hacia la filosofía RISC (Computadores
de Juego de Instrucciones Reducido). En estos procesadores el repertorio de
instrucciones máquina es muy reducido y las instrucciones son simples y,
generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las
instrucciones permiten optimizar el hardware y el software del procesador.

• SISC: En los microcontroladores destinados a aplicaciones muy concretas, el


juego de instrucciones, además de ser reducido, es “específico”, o sea, las
instrucciones se adaptan a las necesidades de la aplicación prevista. Esta
filosofía se ha bautizado con el nombre de SISC (Computadores de Juego de
Instrucciones Específico).

57
Capitulo 2. Estado del Arte. 58
____________________________________________________________________________

Memoria

En los microcontroladores la memoria de instrucciones y datos está integrada en el


propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el
programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo
RAM, volátil, y se destina a guardar las variables y los datos. Hay dos peculiaridades
que diferencian a los microcontroladores de los computadores personales (Orduña,
2008):
1. No existen sistemas de almacenamiento masivo como disco duro
disquetes. Como el microcontrolador sólo se destina a una tarea en la
memoria ROM, sólo hay que almacenar un único programa de trabajo.
2. La RAM en estos dispositivos es de poca capacidad pues sólo debe
contener las variables y los cambios de información que se produzcan en
el transcurso del programa.

Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia
del mismo en la RAM pues se ejecuta directamente desde la ROM. Los usuarios de
computadores personales están habituados a manejar Megabytes de memoria, pero,
los diseñadores con microcontroladores trabajan con capacidades de ROM
comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512
bytes. Según el tipo de memoria ROM que dispongan los microcontroladores, la
aplicación y utilización de los mismos es diferente. Se describen las cinco versiones de
memoria no volátil que se pueden encontrar en los microcontroladores del mercado
(Aguayo, 2004).

• ROM con máscara: Es una memoria no volátil de sólo lectura cuyo contenido se
graba durante la fabricación del chip. El elevado coste del diseño de la máscara
sólo hace aconsejable el empleo de los microcontroladores con este tipo de
memoria cuando se precisan cantidades superiores a varios miles de unidades.

58
Capitulo 2. Estado del Arte. 59
____________________________________________________________________________

• OTP: El microcontrolador contiene una memoria no volátil de sólo lectura


“programable una sola vez” por el usuario. OTP (One Time Programmable). Es el
usuario quien puede escribir el programa en el chip mediante un sencillo
grabador controlado por un programa desde un PC. La versión OTP es
recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la
construcción de prototipos y series muy pequeñas. Tanto en este tipo de
memoria como en la EPROM, se suele usar la encriptación mediante fusibles
para proteger el código contenido.

• EPROM Los microcontroladores que disponen de memoria EPROM (Erasable


Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces.
La grabación se realiza, como en el caso de los OTP, con un grabador
gobernado desde un PC. Si, posteriormente, se desea borrar el contenido,
disponen de una ventana de cristal en su superficie por la que se somete a la
EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de
material cerámico y son más caros que los microcontroladores con memoria OTP
que están hechos con material plástico.

• EEPROM: Se trata de memorias de sólo lectura, programables y borrables


eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy
Memory). Tanto la programación como el borrado, se realizan eléctricamente
desde el propio grabador y bajo el control programado de un PC. Es muy
cómoda y rápida la operación de grabado y la de borrado. No disponen de
ventana de cristal en la superficie. Los microcontroladores dotados de memoria
EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas
veces se quiera sin ser retirados de dicho circuito. El número de veces que
puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es
recomendable una reprogramación continúa. Son muy idóneos para la
enseñanza y la Ingeniería de diseño. Se va extendiendo en los fabricantes la
tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos
programables para guardar y modificar cómodamente una serie de parámetros

59
Capitulo 2. Estado del Arte. 60
____________________________________________________________________________

que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria
es relativamente lenta.

• FLASH: Se trata de una memoria no volátil, de bajo consumo, que se puede


escribir y borrar. Funciona como una ROM y una RAM pero consume menos y es
más pequeña. A diferencia de la ROM, la memoria FLASH es programable en el
circuito. Es más rápida y de mayor densidad que la EEPROM. La alternativa
FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad
de memoria de programa no volátil. Es más veloz y tolera más ciclos de
escritura/borrado. Las memorias EEPROM y FLASH son muy útiles al permitir
que los microcontroladores que las incorporan puedan ser reprogramados “en
circuito”, es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un
dispositivo con este tipo de memoria incorporado al control del motor de un
automóvil permite que pueda modificarse el programa durante la rutina de
mantenimiento periódico, compensando los desgastes y otros factores tales
como la compresión, la instalación de nuevas piezas, etc. La reprogramación del
microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a
punto.

Puertas de Entrada y Salida

La principal utilidad de las patitas que posee la cápsula que contiene un


microcontrolador es soportar las líneas de E/S que comunican al computador interno
con los periféricos exteriores. Según los controladores de periféricos que posea cada
modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a
las señales de entrada, salida y control (Ponce, 2000).

Reloj principal

Todos los microcontroladores disponen de un circuito oscilador que genera una onda
cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la

60
Capitulo 2. Estado del Arte. 61
____________________________________________________________________________

sincronización de todas las operaciones del sistema. Generalmente, el circuito de reloj


está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes
exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes
suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador
cerámico o una red R-C. Aumentar la frecuencia de reloj supone disminuir el tiempo en
que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de
energía (Ibídem).

RECURSOS ESPECIALES

Cada fabricante oferta numerosas versiones de una arquitectura básica de


microcontrolador. En algunas amplía las capacidades de las memorias, en otras
incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para
aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo
que satisfaga todos los requerimientos de su aplicación. De esta forma, minimizará el
coste, el hardware y el software. Los principales recursos específicos que incorporan los
microcontroladores son (Orduña, 2001):

• Temporizadores o “Timers”: Se emplean para controlar periodos de tiempo


(temporizadores) y para llevar la cuenta de acontecimientos que suceden en el
exterior (contadores). Para la medida de tiempos se carga un registro con el valor
adecuado y a continuación dicho valor se va incrementando o decrementando al
ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a
0, momento en el que se produce un aviso. Cuando se desean contar
acontecimientos que se materializan por cambios de nivel o flancos en alguna de
las patitas del microcontrolador, el mencionado registro se va incrementando o
decrementando al ritmo de dichos impulsos.

• Perro guardián o “Watchdog”. Cuando el computador personal se bloquea por un


fallo del software u otra causa, se pulsa el botón del reset y se reinicializa el
sistema. Pero un microcontrolador funciona sin el control de un supervisor y de
forma continuada las 24 horas del día. El Perro guardián consiste en un

61
Capitulo 2. Estado del Arte. 62
____________________________________________________________________________

temporizador que, cuando se desborda y pasa por 0, provoca un reset


automáticamente en el sistema. Se debe diseñar el programa de trabajo que
controla la tarea de forma que refresque o inicialice al Perro guardián antes de
que provoque el reset. Si falla el programa o se bloquea, no se refrescará al
Perro guardián y, al completar su temporización, “ladrará y ladrará” hasta
provocar el reset.

• Protección ante fallo de alimentación o “Brownout”. Se trata de un circuito que


resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a
un voltaje mínimo (“brownout”). Mientras el voltaje de alimentación sea inferior al
de brownout el dispositivo se mantiene reseteado, comenzando a funcionar
normalmente cuando sobrepasa dicho valor.

• Estado de reposo o de bajo consumo. Son abundantes las situaciones reales de


trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se
produzca algún acontecimiento externo que le ponga de nuevo en
funcionamiento. Para ahorrar energía, (factor clave en los aparatos portátiles),
los microcontroladores disponen de una instrucción especial (SLEEP en los PIC),
que les pasa al estado de reposo o de bajo consumo, en el cual los
requerimientos de potencia son mínimos. En dicho estado se detiene el reloj
principal y se “congelan” sus circuitos asociados, quedando sumido en un
profundo “sueño” el microcontrolador. Al activarse una interrupción ocasionada
por el acontecimiento esperado, el microcontrolador se despierta y reanuda su
trabajo.

• Conversor A/D. Los microcontroladores que incorporan un Conversor A/D


(Analógico/Digital) pueden procesar señales analógicas, tan abundantes en las
aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada
del CAD diversas señales analógicas desde las patitas del circuito integrado.

62
Capitulo 2. Estado del Arte. 63
____________________________________________________________________________

• Conversor D/A. Transforma los datos digitales obtenidos del procesamiento del
computador en su correspondiente señal analógica que saca al exterior por una
de las patitas de la cápsula. Existen muchos efectores que trabajan con señales
analógicas.

• Comparador analógico. Algunos modelos de microcontroladores disponen


internamente de un Amplificador Operacional que actúa como comparador entre
una señal fija de referencia y otra variable que se aplica por una de las patitas de
la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una
señal sea mayor o menor que la otra. También hay modelos de
microcontroladores con un módulo de tensión de referencia que proporciona
diversas tensiones de referencia que se pueden aplicar en los comparadores.

• Modulador de anchura de impulsos o PWM. Son circuitos que proporcionan en


su salida impulsos de anchura variable, que se ofrecen al exterior a través de las
patitas del encapsulado.

• Puertas de E/S digitales. Todos los microcontroladores destinan algunas de sus


patitas a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan
de ocho en ocho formando Puertas. Las líneas digitales de las Puertas pueden
configurarse como Entrada o como
• Salida cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a
su configuración.

• Puertas de comunicación. Con objeto de dotar al microcontrolador de la


posibilidad de comunicarse con otros dispositivos externos, otros buses de
microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con
otros elementos bajo otras normas y protocolos. Algunos modelos disponen de
recursos que permiten directamente esta tarea, entre los que destacan:

• UART, adaptador de comunicación serie asíncrona.

63
Capitulo 2. Estado del Arte. 64
____________________________________________________________________________

• USART, adaptador de comunicación serie síncrona y asíncrona


• Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.
• USB (Universal Serial Bus), que es un moderno bus serie para los PC.
• Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
• CAN (Controller Area Network), para permitir la adaptación con redes
de conexionado multiplexado desarrollado conjuntamente por Bosch e
Intel para el cableado de dispositivos en automóviles. En EE.UU. se
usa el J185O.

2.6.9 ¿QUÉ MICROCONTROLADOR EMPLEAR?

A la hora de escoger el microcontrolador a emplear en un diseño concreto hay que


tener en cuenta multitud de factores, como la documentación y herramientas de
desarrollo disponibles y su precio, la cantidad de fabricantes que lo producen y por
supuesto las características del microcontrolador (tipo de memoria de programa,
número de temporizadores, interrupciones, etc.): Costes. Como es lógico, los
fabricantes de microcontroladores compiten duramente para vender sus productos. Y
no les va demasiado mal ya que sin hacer demasiado ruido venden 10 veces más
microcontroladores que microprocesadores. Para que nos hagamos una idea, para el
fabricante que usa el microcontrolador en su producto una diferencia de precio en el
microcontrolador de algunas pesetas es importante (el consumidor deberá pagar
además el coste del empaquetado, el de los otros componentes, el diseño del hardware
y el desarrollo del software). Si el fabricante desea reducir costos debe tener en cuenta
las herramientas de apoyo con que va a contar: emuladores, simuladores,
ensambladores, compiladores, etc. Es habitual que muchos de ellos siempre se
decanten por microcontroladores pertenecientes a una única familia. Aplicación. Antes
de seleccionar un microcontrolador es imprescindible analizar los requisitos de la
aplicación (Angulo, 2003):

64
Capitulo 2. Estado del Arte. 65
____________________________________________________________________________

• Procesamiento de datos: puede ser necesario que el microcontrolador realice


cálculos críticos en un tiempo limitado. En ese caso debemos asegurarnos de
seleccionar un dispositivo suficientemente rápido para ello. Por otro lado, habrá
que tener en cuenta la precisión de los datos a manejar: si no es suficiente con
un microcontrolador de 8 bits, puede ser necesario acudir a microcontroladores
de 16 ó 32 bits, o incluso a hardware de coma flotante. Una alternativa más
barata y quizá suficiente es usar librerías para manejar los datos de alta
precisión.

• Entrada Salida: para determinar las necesidades de Entrada/Salida del sistema


es conveniente dibujar un diagrama de bloques del mismo, de tal forma que sea
sencillo identificar la cantidad y tipo de señales a controlar. Una vez realizado
este análisis puede ser necesario añadir periféricos hardware externos o cambiar
a otro microcontrolador más adecuado a ese sistema.

• Consumo: algunos productos que incorporan microcontroladores están


alimentados con baterías y su funcionamiento puede ser tan vital como activar
una alarma antirrobo. Lo más conveniente en un caso como éste puede ser que
el microcontrolador esté en estado de bajo consumo pero que despierte ante la
activación de una señal (una interrupción) y ejecute el programa adecuado para
procesarla.

• Memoria: para detectar las necesidades de memoria de nuestra aplicación


debemos separarla en memoria volátil (RAM), memoria no volátil (ROM,
EPROM, etc.) y memoria no volátil modificable (EEPROM). Este último tipo de
memoria puede ser útil para incluir información específica de la aplicación como
un número de serie o parámetros de calibración. El tipo de memoria a emplear
vendrá determinado por el volumen de ventas previsto del producto: de menor a
mayor volumen será conveniente emplear EPROM, OTP y ROM. En cuanto a la
cantidad de memoria necesaria puede ser imprescindible realizar una versión
preliminar, aunque sea en pseudo-código, de la aplicación y a partir de ella hacer

65
Capitulo 2. Estado del Arte. 66
____________________________________________________________________________

una estimación de cuánta memoria volátil y no volátil es necesaria y si es


conveniente disponer de memoria no volátil modificable.

• Ancho de palabra: el criterio de diseño debe ser seleccionar el microcontrolador


de menor ancho de palabra que satisfaga los requerimientos de la aplicación.
Usar un microcontrolador de 4 bits supondrá una reducción en los costes
importante, mientras que uno de 8 bits puede ser el más adecuado si el ancho de
los datos es de un byte. Los microcontroladores de 16 y 32 bits, debido a su
elevado coste, deben reservarse para aplicaciones que requieran sus altas
prestaciones (Entrada/Salida potente o espacio de direccionamiento muy
elevado).

• Diseño de la placa: la selección de un microcontrolador concreto condicionará el


diseño de la placa de circuitos. Debe tenerse en cuenta que quizá usar un
microcontrolador barato encarezca el resto de componentes del diseño. Los
microcontroladores más populares se encuentran, sin duda, entre las mejores
elecciones:

• 8048 (Intel). Es el padre de los microcontroladores actuales, el primero


de todos. Su precio, disponibilidad y herramientas de desarrollo hacen
que todavía sea muy popular.
• 8051 (Intel y otros). Es sin duda el microcontrolador más popular. Fácil
de programar, pero potente. Está bien documentado y posee cientos
de variantes e incontables herramientas de desarrollo.
• 80186, 80188 y 80386 EX (Intel). Versiones en microcontrolador de los
populares microprocesadores 8086 y 8088. Su principal ventaja es que
permiten aprovechar las herramientas de desarrollo para PC.
• 68HC11 (Motorola y Toshiba). Es un microcontrolador de 8 bits potente
y popular con gran cantidad de variantes.

66
Capitulo 2. Estado del Arte. 67
____________________________________________________________________________

• 683xx (Motorola). Surgido a partir de la popular familia 68k, a la que se


incorporan algunos periféricos. Son microcontroladores de altísimas
prestaciones.
• PIC (MicroChip). Familia de microcontroladores que gana popularidad
día a día. Fueron los primeros microcontroladores RISC.

Es preciso resaltar en este punto que existen innumerables familias de


microcontroladores, cada una de las cuales posee un gran número de variantes. Para el
desarrollo del sistema de adquisición y transmisión de datos se usara un
microcontrolador PIC de Microchip, posteriormente se describirá mas a detalle las
características y familias de los PIC.

67
Capitulo 2. Estado del Arte. 68
____________________________________________________________________________

2.7 MICROCONTROLADORES PIC

Las aplicaciones más habituales (casi un 90%) la elección de una versión adecuada de
PIC es la mejor solución; sin embargo, dado su carácter general, otras familias de
microcontroladores son más eficaces en aplicaciones específicas, especialmente si en
ellas predomina una característica concreta, que puede estar muy desarrollada en otra
familia. Las razones que se tomaron en cuenta para el uso de los PIC en el presente
trabajo son los siguientes (Microchip, 2009):

• Sencillez de manejo: Tienen un juego de instrucciones reducido; 35 en la gama


media.
• Buena información, fácil de conseguir y económica.
• Precio: Su coste es comparativamente inferior al de sus competidores.
• Poseen una elevada velocidad de funcionamiento. Buen promedio de
parámetros: velocidad, consumo, tamaño, alimentación, código compacto, etc.
• Herramientas de desarrollo fáciles y baratas. Muchas herramientas software se
pueden recoger libremente a través de Internet desde Microchip.
• Existe una gran variedad de herramientas hardware que permiten grabar,
depurar, borrar y comprobar el comportamiento de los PIC.
• Rápido diseño.
• La gran variedad de modelos de PIC permite elegir el que mejor responde a los
requerimientos de la aplicación.

Una de las razones del éxito de los PIC se basa en su utilización. Cuando se aprende a
manejar uno de ellos, conociendo su arquitectura y su repertorio de instrucciones, es
muy fácil emplear otro modelo.

2.7.1 CARATERÍSTICAS RELEVANTES

Descripción de las características más representativas de los PIC (Duran, 2006):

68
Capitulo 2. Estado del Arte. 69
____________________________________________________________________________

• Arquitectura. La arquitectura del procesador sigue el modelo Harvard. En esta


arquitectura, la CPU se conecta de forma independiente y con buses distintos
con la memoria de instrucciones y con la de datos. La arquitectura Harvard
permite a la CPU acceder simultáneamente a las dos memorias. Además,
propicia numerosas ventajas al funcionamiento del sistema como se irán
describiendo.

• Segmentación. Se aplica la técnica de segmentación (“pipe-line”) en la ejecución


de las instrucciones. La segmentación permite al procesador realizar al mismo
tiempo la ejecución de una instrucción y la búsqueda del código de la siguiente.
De esta forma se puede ejecutar cada instrucción en un ciclo (un ciclo de
instrucción equivale a cuatro ciclos de reloj). Las instrucciones de salto ocupan
dos ciclos al no conocer la dirección de la siguiente instrucción hasta que no se
haya completado la de bifurcación.

• Formato de las instrucciones. El formato de todas las instrucciones es de la


misma longitud. Todas las instrucciones de los microcontroladores de la gama
baja tienen una longitud de 12 bits. Las de la gama media tienen 14 bits y más
las de la gama alta. Esta característica es muy ventajosa en la optimización de la
memoria de instrucciones y facilita enormemente la construcción de
ensambladores y compiladores.

• Juego de instrucciones. Procesador RISC (Computador de Juego de


Instrucciones Reducido). Los modelos de la gama baja disponen de un repertorio
de 33 instrucciones, 35 los de la gama media y casi 60 los de la alta.

• Todas las instrucciones son ortogonales. Cualquier instrucción puede manejar


cualquier elemento de la arquitectura como fuente o como destino.

69
Capitulo 2. Estado del Arte. 70
____________________________________________________________________________

• Arquitectura basada en un “banco de registros”. Esto significa que todos los


objetos del sistema (puertas de E/S, temporizadores, posiciones de memoria,
etc.) están implementados físicamente como registros.

• Diversidad de modelos de microcontroladores con prestaciones y recursos


diferentes. La gran variedad de modelos de microcontroladores PIC permite que
el usuario pueda seleccionar el más conveniente para su proyecto.

• Herramientas de soporte potentes y económicas. La empresa Microchip y otras


que utilizan los PIC ponen a disposición de los usuarios numerosas herramientas
para desarrollar hardware y software. Son muy abundantes los programadores,
los simuladores software, los emuladores en tiempo real, Ensambladores,
Compiladores C, Intérpretes y Compiladores BASIC, etc. La arquitectura Harvard
y la técnica de segmentación son los principales recursos en los que se apoya el
elevado rendimiento que caracteriza estos dispositivos programables, mejorando
dos características esenciales:

1. Velocidad de ejecución.
2. Eficiencia en la compactación del código.

2.7.2 TIPOS DE MICROCONTROLADORES PIC

Entre casi un centenar de fabricantes de microcontroladores que existen en el mundo


es muy difícil seleccionar el mejor. En realidad no existe, porque en cada aplicación son
sus características específicas las que determinan el más conveniente. A continuación
se describen las familias de PIC (Microchip, 2007):

• Gama baja o básica: PIC16C5X con instrucciones de 12 bits. Se trata de una


serie de PIC de recursos limitados, pero con una de las mejores relaciones
coste/prestaciones. Sus versiones están encapsuladas con I8 y 28 patitas y
pueden alimentarse a partir de una tensión de 2,5 V lo que les hace ideales en

70
Capitulo 2. Estado del Arte. 71
____________________________________________________________________________

las aplicaciones que funcionan con pilas. Tienen un repertorio de 33


instrucciones cuyo formato consta de I2 bits. No admiten ningún tipo de
interrupción y la pila sólo dispone de dos niveles.

• Gama media: PIC16CXXX con instrucciones de 14 bits. Es la gama más variada


y completa de los PIC. Abarca modelos con encapsulado desde 18 pines hasta
68, cubriendo varias opciones que integran abundantes periféricos. Dentro de
esta gama se halla el fabuloso PIC 16F84. El repertorio de instrucciones es de 35
a 14 bits cada una y compatible con el de la gama baja. Sus distintos modelos
contienen todos los recursos que se precisan en las aplicaciones de los
microcontroladores de 8 bits. También dispone de interrupciones y una Pila de 8
niveles que permite el anidamiento de subrutinas.

• Gama alta: PIC17CXXX con instrucciones de 16 bits. Se alcanzan las 58


instrucciones de 16 bits en el repertorio y sus modelos disponen de un sistema
de gestión de interrupciones vectorizadas muy potente. También incluyen
variados controladores de periféricos, puertas de comunicación serie y paralelo
con elementos externos y un multiplicador hardware de gran velocidad. Quizás la
característica más destacable de los componentes de esta gama es su
arquitectura abierta, que consiste en la posibilidad de ampliación del
microcontrolador con elementos externos. Para este fin, las patitas sacan al
exterior las líneas de los buses de datos, direcciones y control, a las que se
conectan memorias o controladores de periféricos. Esta filosofía de construcción
del sistema es la que se empleaba en los microprocesadores y no suele ser una
práctica habitual cuando se emplean microcontroladores.

• Gama mejorada: PIC18C(F)XXX con instrucciones de 16 bits. En los inicios del


tercer milenio de nuestra era Microchip presentó la gama mejorada de los
microcontroladores PIC con la finalidad de soportar las aplicaciones avanzadas
en las áreas de automoción, comunicaciones, ofimática y control industrial. Sus
modelos destacaron por su alta velocidad (40 MHz) y su gran rendimiento (10

71
Capitulo 2. Estado del Arte. 72
____________________________________________________________________________

MIPS a 10 Mhz). Entre las aportaciones más representativas de esta serie de


modelos que crece cada año, destacan:

• Un espacio de direccionamiento para la memoria de programa que


permite alcanzar los2 MB, y 4 KB para la memoria de datos.
• Inclusión de la tecnología FLASH para la memoria de código.
• Potente juego de 77 instrucciones de 16 bits cada una. Permiten
realizar una multiplicación 8 x 8 en un ciclo de instrucción, mover
información entre las memorias y modificar el valor de un bit en un
registro o en una línea de E/S.
• Orientación a la programación en lenguaje C con la incorporación de
compiladores muy eficientes para este lenguaje.
• Nuevas herramientas para la emulación.

2.7.3 HERRAMIENTAS PARA DESARROLLAR SISTEMAS CON PIC

Las herramientas de desarrollo están formadas por un conjunto de programas


interfaces que permiten realizar los proyectos de la forma más eficiente posible.
Algunas de las principales herramientas de ayuda para desarrollar sistemas basados en
microcontroladores son las siguientes (Peatman, 2003):

• Ensamblador. La programación en lenguaje ensamblador puede resultar un


tanto ardua para el principiante, pero permite desarrollar programas muy
eficientes, ya que otorga al programador el dominio absoluto del sistema.

• Compilador. La programación en un lenguaje de alto nivel (como C o Basic)


permite disminuir el tiempo de desarrollo de un producto y si además está
familiarizado con C o Basic es una buena opción. No obstante, cuando el
compilador convierta el código del programa a un lenguaje ensamblado, cada
línea de código del programa en lenguaje de alto nivel habrá generado bastantes

72
Capitulo 2. Estado del Arte. 73
____________________________________________________________________________

más líneas de código en lenguaje ensamblador, normalmente en una relación de


uno a tres. Esto significa que para utilizar un lenguaje de alto nivel necesitaremos
un microcontrolador con una capacidad de memoria relativamente grande.

• Simulador. Se trata de un software que es capaz de ejecutar en un PC


programas realizados para el microcontrolador. Los simuladores permiten tener
un control absoluto sobre la ejecución de un programa, siendo ideales para la
depuración de los mismos. Su gran inconveniente es que es difícil simular la
entrada y salida de datos del microcontrolador.

• Placas de evaluación. Se trata de pequeños sistemas con un microcontrolador


ya montado y que suelen conectarse a un PC desde el que se cargan los
programas que se ejecutan en el microcontrolador. Las placas suelen incluir
visualizadores LCD, teclados, LEDs, fácil acceso a los pines de E/S, etc.

• Emuladores en circuito. Se trata de un instrumento que se coloca entre el PC


anfitrión y el zócalo de la tarjeta de circuito impreso donde se alojará el
microcontrolador definitivo. El programa es ejecutado desde el PC, pero para la
placa de la aplicación es como si lo hiciese el mismo microcontrolador que luego
irá en el zócalo.

• Programador. Es un dispositivo que conectado a un PC permite grabar en el


microcontrolador el programa desarrollado. Otra posibilidad es utilizar un
cargador de arranque, muy útil en la etapa de desarrollo de un programa. Un
cargador de arranque es un pequeño programa en el microcontrolador que está
montado en la placa del circuito que se está desarrollando y que puede
comunicarse con las herramientas de desarrollo a través de un enlace serie,
como puede ser RS232, USB, I2C o un bus CAN. El programa cargador de
arranque debe interpretar comandos para leer, grabar y borrar la parte de
memoria reservada para el programa de la aplicación. Cuando se desea verificar
el programa que se está desarrollando se inicia la comunicación con el programa

73
Capitulo 2. Estado del Arte. 74
____________________________________________________________________________

cargador de arranque, que carga el código de programa en la memoria de


programa del microcontrolador.

• Paquetes IDE. Actualmente existen paquetes de software denominados


Entornos de Desarrollo Integrado, IDE, que suelen funcionar bajo Windows y que
incluyen editores de texto para el ensamblador o el compilador, permiten la
simulación del programa y también pueden integrar el control de emuladores y
programadores de dispositivos. Ejemplos de estos entornos de desarrollo son
MPLAB de Microchip que permite programar en lenguaje ensamblado y PCWH
de la casa CCS que incluye un compilador C para los microcontroladores PIC de
Microchip (Douglas, 2002).

74
Capitulo 2. Estado del Arte. 75
____________________________________________________________________________

2.8 SERVIDOR WEB

Un servidor Web es un programa que implementa el protocolo HTTP (HyperText


Transfer Protocol). Este protocolo pertenece a la capa de aplicación del modelo OSI y
está diseñado para transferir hipertextos, páginas web y emisión de audio y video. Este
programa se ejecuta continuamente en un dispositivo manteniéndose a la espera de
peticiones HTTP por parte de un cliente y responde a estas peticiones enviando código
fuente, el cual recibe el cliente que interpreta el código y lo exhibe en pantalla en forma
de texto, imágenes, tablas, etc. La instalación de un servidor Web permite, entre otras
cosas, utilizar alguno de los programas, tecnologías o aplicaciones Web de la
actualidad (Masadelante.com, 2009).

El servicio web clásico consta de porciones de código que se ejecutan cuando se


realizan ciertas peticiones o respuestas HTTP. Hay que distinguir entre:

• Aplicaciones del cliente: El cliente web es el encargado de ejecutarlas en la


máquina del usuario. Son las aplicaciones tipo Java o Javascript: el servidor
proporciona el código de las aplicaciones al cliente y éste, mediante el
navegador, las ejecuta. Es necesario, por tanto, que el cliente disponga de un
navegador con capacidad para ejecutar aplicaciones (también llamadas scripts).
Comúnmente, los navegadores permiten ejecutar aplicaciones escritas en
lenguaje javascript y java, aunque pueden añadirse más lenguajes mediante el
uso de plugins (Ibídem).

• Aplicaciones del servidor: El servidor web ejecuta la aplicación; ésta, una vez
ejecutada, genera cierto código HTML; el servidor toma este código recién
creado y lo envía al cliente por medio del protocolo HTTP (Ibídem).

Las aplicaciones de servidor muchas veces suelen ser la mejor opción para realizar
aplicaciones web. La razón es que, al ejecutarse ésta en el servidor y no en la máquina
del cliente, éste no necesita ninguna capacidad añadida, como sí ocurre en el caso de

75
Capitulo 2. Estado del Arte. 76
____________________________________________________________________________

querer ejecutar aplicaciones javascript o java. Así pues, cualquier cliente dotado de un
navegador web básico puede utilizar este tipo de aplicaciones. Dependiendo del tipo de
dispositivo y sus características, los servidores web se encuentran en computadoras y
en sistemas embebidos (Ibídem).

2.8.1 SERVIDORES EN COMPUTADORAS

En este caso el servidor web se refiere al software usado, como el servidor de http de
Apache, que funciona en la computadora y maneja la entrega de los componentes de
las páginas web como respuesta a peticiones de los navegadores de los clientes
(Module for hosting, 2009).

Apache es un estándar de distribución libre que dio el empujón inicial para la expansión
de la Web, su plataforma de código abierto garantiza estabilidad, disponibilidad e
interoperabilidad de las plataformas y tecnologías Web modernas, al igual de su
facilidad de implementación en la mayoría de sistemas operativos existentes. Apache
cuenta con una comunidad de desarrolladores y miembros que añaden funciones con el
propósito de asegurar su funcionamiento con los estándares HTTP que surgen
(Ibídem).

Las funciones de Apache soportan scripts y permiten contenido dinámico en los


dispositivos, su amplio rango de capacidades incluye el soporte de CGI para la
comunicación de aplicaciones de software externo y el servidor, Aplicaciones de lado
del servidor, como lo es emisión de audio y video, Javascripts, etc. Debido a todo esto
el servidor Apache ha sido el servidor Web más popular en Internet desde 1996, lo cual
indica su uso para implementar soluciones y aplicaciones Web (Ibídem).

2.8.2 SERVIDORES EMBEBIDOS

Un servidor Web embebido es un componente de un software (generalmente escrito en


C++) en un dispositivo con características limitadas que implementa el uso del protocolo

76
Capitulo 2. Estado del Arte. 77
____________________________________________________________________________

HTTP, el cual provee una interfaz sencilla con características y funciones mínimas a
comparación de los servidores en computadoras (SourceForge, 2008).

Sus características son:

• Una interfaz mínima para aplicaciones tradicionales.


• Contiene herramientas de indexado, reporte y depuración para la etapa de
desarrollo.
• Implementa un protocolo de distribución y adquisición de información para ser
mostrada en una interfaz regular como un servicio web o uso de XML.
• Permite el desarrollo de aplicaciones Web y Ethernet.

Las limitaciones de las plataformas o dispositivos donde un servidor HTTP será


embebido contribuyen a la lista de los requisitos para su funcionamiento (Ibídem). Sin
embargo los requisitos más comunes son:

• Una cantidad pequeña de RAM y ROM.


• Utilización mínima de CPU.
• Compilación y soporte de múltiples CPU’s y combinaciones de sistemas
operativos.
• Fácil integración con aplicaciones existentes, incluyendo vínculos con distintos
sistemas operativos y aplicaciones.
• Servicio de páginas para aplicaciones con el uso de una memoria externa.
• Modularidad.
• Soporte de tareas simples y múltiples.

77
Capitulo 2. Estado del Arte. 78
____________________________________________________________________________

2.9 HERRAMIENTAS DE MICROCHIP

Microchip pone a disposición de los desarrolladores herramientas que pueden ser


usadas en distintos proyectos, los cuales agregan funciones extra y proporcionan
flexibilidad y adaptabilidad a los sistemas. Las herramientas recomendadas por
Microchip para sistemas Ethernet son:

• Microchip File System (MPFS).


• Servidor FTP.
• Servidor HTTP interno.

2.9.1 MPFS

Es un sistema de archivo simple desarrollado por Microchip, que se usa en el servidor


HTTP interno para guardar páginas Web en el EEPROM externo. MPFS sigue un
formato especial para guardar múltiples archivos en una sola imagen. Un componente
de gran importancia es el generador de imágenes MPFS, que es un programa para PC
(MPFS.exe mostrado en la figura 2.32) el cual construye una imagen MPFS “.c” o “.bin”,
a partir de un lote de archivos (Sarmiento y Aguayo, 2007).

Los pasos para ejecutar el programa MPFS.exe son los siguientes:

• Guardar el Programa MPFS.EXE en la dirección C:\


• Abrir el menú inicio de Windows.
• Seleccionar Ejecutar.
• Teclear: cmd. Posteriormente hacer clic en aceptar.
• En la pantalla resultante escribir C:\mpfs.exe

78
Capitulo 2. Estado del Arte. 79
____________________________________________________________________________

Figura 2.32 Programa MPFS.exe

La sintaxis completa de la línea de comandos para MPFS.exe es:

mpfs [/?] [/c] [/b] [/r<Block>]<InputDir> <OutputFile>

Donde:

• /? Muestra el mensaje de ayuda.


• /c Genera un archivo de datos “C”.
• /b Genera un archivo de datos binario (Opción por defecto).
• /r Reserva un bloque de memoria al inicio del archivo (valido solo en archivo de
datos binario).
• <InputDir> Es el directorio que contiene los archivos para crear la imagen.
• <OutputFile> Es el nombre del archivo a crear.

Por ejemplo, el comando MPFS C:\WebPages MPFSImg.bin genera un archivo binario


(MPFSImg.bin) de un grupo de archivos contenido en el directorio c:\WebPages. Es de
suma importancia que antes de la generación de la imagen MPFS, se debe de crear un
directorio que contenga las páginas Web y archivos correspondientes (Sarmiento y
Aguayo, 2007).

79
Capitulo 2. Estado del Arte. 80
____________________________________________________________________________

2.9.2 SERVIDOR FTP

El servidor FTP es una tarea cooperativa que coexiste con el Stack TCP/IP desarrollado
por microchip y la aplicación principal, el cual consta de dos componentes (Rajbharti,
2006):

• El servidor FTP: Es un servidor mínimo propio de sistemas embebidos.


• Autentificación FTP: Es un método de seguridad que usa un nombre de usuario y
contraseña.

El servidor FTP incorpora las siguientes características:

• Una conexión FTP, autentificada por el usuario.


• Interacción automática con el sistema de archivos MPFS.
• Programabilidad remota de una imagen MPFS con un solo comando: put.
• Sin cargas individuales de archivos.
• Tiempo automático de desconexión por inactividad de 180 segundos para cargas
y descargas. De esta forma no se “cuelga” indefinidamente el servidor FTP y se
evitan problemas durante las cargas.

2.9.3 SERVIDOR HTTP INTERNO

El servidor HTTP interno al igual que el servidor FTP contiene funciones mínimas
propias de un sistema embebido. El servidor cuenta con las siguientes características y
funciones (Rajbharti, 2006):

• Soporta múltiples conexiones HTTP


• Contiene un archivo MPFS.
• Soporte de páginas Web localizadas en una memoria EEPROM externa.
• Soporte del método HTTP “GET”.

80
Capitulo 2. Estado del Arte. 81
____________________________________________________________________________

• Soporte de una versión modificada de CGI (Common Gateway Interface), para


invocar funciones y variables remotas.
• Soporte de generación de contenido dinámico.
• Uso del puerto 80 para el tráfico de entrada y salida.

El servidor HTTP usa el archivo “index.htm” como la página Web por defecto, la cual es
mostrada cada vez que se ingresa por primera vez. Esto requiere que todas las
aplicaciones incluyan un archivo “index.htm” como parte de la imagen MPFS. De igual
manera es de gran importancia asegurarse que ninguno de los nombres de otras
páginas Web a usar contenga alguno de los siguientes caracteres alfanuméricos
(Ibídem):

• Comillas simples o dobles ( ‘ y “ )


• Corchetes y llaves ( [, {, ] y } )
• Corchetes angulares ( < y > )
• El signo de número ( # )
• El signo de porcentaje ( % )
• El símbolo “pipe” ( | )
• La barra invertida ( \ )
• El acento circunflejo ( ^ )
• La tilde ( ~ )

Si un archivo contiene cualquiera de estos caracteres, la página Web correspondiente


se volverá inaccesible y ninguna advertencia previa será mostrada.

El servidor también contiene una lista de los archivos que son soportados, usando esta
información para avisar al explorador remoto como interpretar un archivo en particular,
basado en una extensión de un archivo de tres letras. Por defecto el servidor soporta
los archivos “.txt”, “.htm”, “.gif”, “.cgi”, “.jpg”, “.cla” y “.wav”. Una aplicación no puede
usar tipos de archivo que no están incluidos en esta lista (Ibídem).

81
Capitulo 2. Estado del Arte. 82
____________________________________________________________________________

2.10 TECNOLOGÍAS WEB

En la actualidad existen una gran variedad de tecnologías, protocolos, herramientas y


software que son utilizadas para una infinidad de aplicaciones; Al conjunto de todo ello
es conocido como “Tecnologías Web”. Estas tecnologías son desarrolladas por distintas
empresas, organizaciones o público en general, más sin embargo todas son
supervisadas por el World Wide Web Consortium (W3C), que desarrolla protocolos,
estándares y lineamientos para asegurar la interoperabilidad y crecimiento de la Web.
(W3C, 2009).

Algunas de tecnologías Web más utilizadas para sistemas que realizan o reciben
peticiones de información y respuestas a la interacción con los clientes o usuarios son
las siguientes:

• HTTP CGI
• HTML Dinámico
• JavaScript
• AJAX
• CSS

2.10.1 HTTP CGI

Para el uso en el servidor HTTP se implementa una versión modificada de CGI. Con
esta interfaz un cliente HTTP puede invocar una función (variable o comando) con
HTTP y recibir resultados en la forma de una página Web. Cuando un cliente remoto
invoca una función por el método HTML GET con más de un parámetro, el servidor
HTTP analiza y llama a la aplicación principal con el método actual de código y todos
los parámetros. Al usar HTTP CGI no se realiza “decodificación de URL”, esto significa
que si cualquiera de las formas de campos de texto que contengan ciertos caracteres
especiales (como <, >, “, #, %, etc.), el valor actual de un parámetro debe de contener
“%xx” (siendo “xx” el valor hexadecimal del carácter ASCII de una variable), en lugar del

82
Capitulo 2. Estado del Arte. 83
____________________________________________________________________________

nombre de la variable y debe contener “%x” (siendo “x” un valor numérico de un solo
digito). Un archivo que contenga esta forma de HTML, debe de tener “.cgi” como su
extensión de archivo (NCSA, 2009).

2.10.2 GENERACIÓN DE PÁGINAS DINÁMICAS HTTP (HTML DINÁMICO)

Un servidor HTTP puede dinámicamente alterar páginas y sustituir información en


tiempo real, tal como status de entrada y salida. Para incorporar información en tiempo
real, un archivo CGI correspondiente debe contener una cadena de texto ‘%xx’, donde
el carácter ‘%’ sirve como código de control y ‘xx’ representa una variable identificadora
de dos dígitos. El valor de variables tiene un rango de 00-99. Cuando el servidor HTTP
encuentra esta cadena de texto, se remueve el carácter ‘%’ y llama la función
HTTPGetVar. Esta función realiza un llamado de HTTP, cuando el servidor HTTP
encuentra una cadena ‘%xx’ en una página CGI en servicio se llama a esta función.
HTTPGetVar es usada en la aplicación principal del usuario y transfiere una variable de
estatus específica de HTTP (Rajbharti, 2006).

De igual manera para la generación HTML dinámico, se hacen uso de otras


herramientas como el uso de etiquetas XML y JavaScript.

2.10.3 JAVASCRIPT

Es un lenguaje de programación desarrollo por Netscape orientado tanto a


procedimientos y a objetos, que aporta características dinámicas (datos variables en
función del tiempo y en el modo de acceso, interactividad con el usuario,
personalización, etc.) a las páginas Web, escritas en lenguaje HTML. Su sintaxis básica
es intencionalmente similar a Java y C++ para reducir el número de nuevos conceptos
requeridos para el lenguaje. Las funciones JavaScript van adentro de la etiqueta
<HEAD> de la página Web a crear y su código debe de ir entre <script
language="JavaScript"> y </script>. Así de esta manera se indica que el código no debe
de ser tratado como HTML (Mozilla Developer Center, 2009).

83
Capitulo 2. Estado del Arte. 84
____________________________________________________________________________

2.10.4 TECNOLOGÍA AJAX

El término AJAX significa Asynchronous JavaScript And XML (Javascript y XML


Asíncrono), y es una colección de diversas tecnologías que permiten a los usuarios
enviar peticiones asíncronas a un servidor Web a través de pequeñas llamadas de
JavaScripts (Guzmán, 2006). Cuando se usa una página Web con tecnología AJAX se
va más allá de las aplicaciones tradicionales de clientes. Un ejemplo es de que con
AJAX se puede completar uno o más elementos de entrada o de salida usando
información de un servidor, a este tipo de aplicaciones son llamadas “Aplicaciones de
Internet” o “Aplicaciones Web 2.0” (Modelworks Software Solutions, 2008).

Para el funcionamiento de AJAX se necesita el DOM (Document Object Model). El DOM


es una estructura de objetos que representa absolutamente todos los elementos que
componen una página Web, y mediante él se puede acceder a información de la página
Web, añadir nuevos elementos, modificarlos, etc. Todos estos métodos pertenecen a
objetos del DOM: Window, Document, y Element (Peréz, 2007).

Una de la mayores aplicaciones de AJAX es que el usuario elimina la recarga completa


de una página. Es decir no tiene que esperar la actualización de toda la página, solo
una parte de la página es actualizada con los datos solicitados a un servidor. De esta
manera la tecnología AJAX ejecutada en el navegador mejora la forma de usar
aplicaciones Web debido a sus llamadas asíncronas hechas al servidor. Esto significa
que cuando un usuario solicita una petición al servidor, la aplicación espera a los
resultados arrojados por los procedimientos del servidor. Así, la página Web muestra
dinámicamente la información en una sección de ella, definida previamente por el
desarrollador (Google Code University, 2009).

La llave que hace funcionar a AJAX es el objeto JavaScript “XMLHttpRequest”. El uso


de XMLHttpRequest se muestra a continuación en la figura 2.33 (Modelworks Software
Solutions, 2008):

84
Capitulo 2. Estado del Arte. 85
____________________________________________________________________________

Figura 2.33 Diagrama de funcionamiento del objeto JavaScript “XMLHttpRequest”

Los procesos de AJAX comienzan con un evento DOM, en el paso 1 se necesita


obtener un objeto XMLHttp. Esto es realizado típicamente con el uso de un código
parecido al siguiente (Ibídem):

function GetXMLHttpRequest()
{
var object = null;
if (window.XMLHttpRequest)
{ object = new XMLHttpRequest(); }
else if (window.ActiveXObject)
{
try
{ object = new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) { }
if (object == null)

85
Capitulo 2. Estado del Arte. 86
____________________________________________________________________________

{
try
{ object = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) { }
}
}
if (object == null)
{ alert("Your browser does not support AJAX"); }
return object;
}

También es válido escribir function GetXmlHttpObject(handler) en lugar de function


GetXMLHttpRequest(), debido a que este método es invocado para comprobar la
compatibilidad del navegador. Este método creará el objeto GetXmlObject en una
manera distinta dependiendo de cual navegador de internet se esté usando, ya sea
Opera, Internet Explorer, Mozilla Firefox, etc (Peréz, 2007).

Otro tipo de elementos que también se pueden obtener son:

• GetXmlHttpObject(Function): Obtiene un elemento dinámico HTTP que modifica


una parte especifica de la página Web, el cual cambia continuamente. En su
sintaxis “Function” especifica el elemento o función a obtener (Guzmán, 2006).
• GetServerFile(FileName, AssignTo): Obtiene remotamente un archivo, elemento
o variable contenida en el servidor interno HTTP. En su sintaxis “FileName”
especifica el nombre de la variable a obtener y “AssignTo” especifica el ID o valor
que representará (Ibídem).
• document.getElementById(FileName): Obtiene remotamente un archivo o valor
en un documento, el cual es seleccionado por una etiqueta o ID. En su sintaxis
“FileName” se especifica el nombre de la variable a obtener (Ibídem).

86
Capitulo 2. Estado del Arte. 87
____________________________________________________________________________

Después de obtener el objeto XMLHttpRequest, se necesitará configurar la función de


llamada “onreadystatechange” y llamar a los métodos “open” y “send” usando el código
(Modelworks Software Solutions, 2008):

XMLHttpRequestObject.onreadystatechange = ProcessRequest;
XMLHttpRequestObject.open("GET", url, true); XMLHttpRequestObject.send(data);

Se debe notar que los datos que son enviados y recibidos cuando se usa el objeto
XMLHttpRequest pueden ser en cualquier formato que el usuario necesite.

Al final del paso 1, se debe de proveer al usuario una indicación visual de que algo ha
cambiado. Luego el paso 2 se necesita tener un manejador para los procesos que son
solicitados en el servidor, el manejador puede ser un CGI u otro tipo de script como
PHP, ASP o JSP. Por ejemplo (Modelworks Software Solutions, 2008):

function UpdateStatus()
{ xmlHttp = GetXmlHttpObject(StateChanged); xmlHttp.open("GET","Status.cgi",
true);xmlHttp.send(null); }

El método “open(mode, url, boolean)” configura el entorno: “Mode” establece el tipo de


petición ya sea GET (usado en operaciones de peticiones de datos) o POST (usado
para enviar datos al servidor), “url” establece la ruta del archivo a usar y boolean
adquiere el valor “true” para modo asíncrono y false para modo síncrono (Google Code
University, 2009).

Para finalizar en el paso 3 se necesita procesar la respuesta usando una función


similar a la siguiente (Modelworks Software Solutions, 2008):

function stateChanged()
{ if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{ document.getElementById("txtHint").innerHTML= xmlHttp.responseText } }

87
Capitulo 2. Estado del Arte. 88
____________________________________________________________________________

Para el uso de funciones similares que usen el atributo readyState se debe de verificar
el status que se asigna, debido a que el manejador será llamado con diferentes estados
y códigos de estatus. Los códigos posibles a utilizar son (Google Code University,
2009):

• 0 No inicializado.
• 1 Cargando.
• 2 Cargado.
• 3 Interactuando.
• 4 Completo.

En base a lo descrito anteriormente, algunos de los usos de AJAX son:

• Actualización de información de páginas Web.


• Validación de datos en tiempo real.
• Obtención de datos para control.
• Respuesta a eventos del servidor.
• Envió de datos al cliente.
• Interacción en tiempo real.
• Monitoreo en tiempo real.
• Llenado automático de formas.

2.10.5 CSS (Cascading Style Sheets)

Las hojas de estilos en cascada (CSS) son un conjunto de reglas de formato que
determinan el aspecto del contenido de una página Web. La utilización de estilos CSS
para aplicar formato a una página permite separar el contenido de la presentación. El
contenido de la página (el código HTML) reside en el archivo HTML, mientras que las
reglas CSS que definen la presentación del código residen en otro archivo (una hoja de
estilos externa) o en otra parte del documento HTML (normalmente, en la sección
head). La separación del contenido y la presentación hace que resulte mucho más fácil

88
Capitulo 2. Estado del Arte. 89
____________________________________________________________________________

mantener el aspecto del sitio desde una ubicación central, ya que no es necesario
actualizar las propiedades de las distintas páginas cuando se desea realizar algún
cambio. La separación del contenido y la presentación también depura y simplifica el
código HTML, lo que disminuye el tiempo de carga en los navegadores y agiliza la
navegación para personas con problemas de accesibilidad (por ejemplo, para los
usuarios que utilicen lectores de pantalla) (Adobe, 2008).

El lenguaje CSS ofrece gran flexibilidad y control para lograr el aspecto exacto que se
desee para la página. Con CSS, se pueden controlar numerosas propiedades del texto,
entre ellas las fuentes y los tamaños de fuente específicos; negrita, cursiva, subrayado
y sombras de texto; color de texto y de fondo; color y subrayado de vínculos; etc. Si se
utiliza CSS para controlar las fuentes, también se conseguirá un tratamiento más
coherente del diseño y el aspecto de la página en múltiples navegadores. Además para
dar formato al texto, se utiliza CSS para definir el formato y la posición de elementos de
nivel de bloque (block-level) de una página Web. Un elemento de nivel de bloque es un
elemento de contenido independiente que normalmente está separado por una nueva
línea en el código HTML y que tiene visualmente el formato de un bloque. Por ejemplo,
las etiquetas “h1”, “p” y “div” generan elementos de nivel de bloque en una página Web.
CSS puede ajustar márgenes y bordes para elementos de nivel de bloque, situarlos en
una ubicación concreta, añadirles color de fondo, colocar texto flotante alrededor de
ellos, etc. La manipulación de elementos de nivel de bloque es, en definitiva, la forma
en que se establece el diseño de las páginas con CSS (Ibídem).

De igual manera el diseño de páginas con CSS, con su correcto manejo provee la
facilidad de seleccionar temas limpios, claros y unificados, sin importar el navegador
que el cliente use o que versión ocupe. El uso de CSS a botones y formas resuelve
muchos problemas, con lo cual hace a los sitios lucir mejor y funciona de igual manera
en cualquier versión de navegador que el cliente utilice (Matti, 2008).

89
Capitulo 2. Estado del Arte. 90
____________________________________________________________________________

2.11 HERRAMIENTAS Y SERVICIOS DE RED

2.11.1 DNS (Domain Name System)

El Sistema de Nombres de Dominio, es un estándar de la IETF (Internet Engineering


Task Force) con un sistema jerárquico de nombramiento de computadoras, servicios o
cualquier recurso de Internet. Este servicio traduce los nombres de dominio a una
dirección IP numérica asociada con equipo de red para el propósito de localizar
dispositivos o páginas Web en cualquier lugar del mundo (Kavelov, 2006).

En un principio el uso de DNS era muy sencillo debido a que eran pocos los dispositivos
alrededor del mundo que contaban con nombres de dominio y además de contaba con
IP estáticas, pero debido al rápido crecimiento de la internet y la proliferación de
computadoras personales, los proveedores de servicios de internet (ISP) comenzaron a
asignar direcciones IP dinámicas, las cuales cambiaban constantemente lo cual generó
que hubiera una mayor dificultad para la resolución de nombres de dominio (Ibídem).

2.11.1.1 DDNS (Dynamic DNS)

La tecnología de DNS Dinámico permite actualizar la dirección IP de un dominio en


tiempo real, esto permite superar los problemas que genera localizar un dispositivo o
acceder a nombres de dominio que pertenecen a una red que tiene direcciones IP
dinámicas o variables (TechFAQ, 2007).

Con la inclusión de direcciones IP dinámicas a nombres de dominio, DDNS hace


posible que usuarios de Internet y otros sitios Web se conecten a un servidor particular
sin tener que rastrear la dirección IP del servidor o de la red en la que se encuentren
(Ibídem).

90
Capitulo 2. Estado del Arte. 91
____________________________________________________________________________

2.11.2 APERTURA DE PUERTOS

2.11.2.1 EL ROUTER

Uno de los dispositivos más comunes en cualquier red, después de las computadoras
en el router. Se encuentra entre el modem y los otros dispositivos de la red, su trabajo
consiste en dirigir el tráfico de y desde Internet a los dispositivos de la red de área local
que comparten una única conexión a Internet. Un router es más que un simple
separador, puesto que maniobra de manera inteligente los paquetes de datos y
establece una prioridad entre dispositivos para asegurar la transferencia de datos,
muchos incluyen una variedad de características que incluyen la configuración de la
Calidad del Servicio (QoS), opciones de red privada virtual, filtrado de contenido Web,
restricciones de acceso y mucho más (DynDNS, 2008).

Muchos routers están preconfigurados de fábrica con una variedad de ajustes de


seguridad, incluyendo un firewall establecido para rechazar nuevas conexiones
entrantes hacia la red. Esta medida de seguridad es simple, efectiva y rara vez molesta
a las actividades cotidianas en la Web; Navegar en la Internet, ver videos y chatear con
amigos y familia. Debido a que el firewall del router impide que los visitantes de Internet
lleguen a los dispositivos de la LAN, el usuario debe de abrir un túnel (puerto) en el
firewall del router para permitir una conexión externa específica para llegar a un
dispositivo específico mientras se mantiene el resto de la red segura (Ibídem).

2.11.2.2 NETWORK ADDRESS TRANSLATION (NAT)

Cada dispositivo en Internet tiene por lo menos una dirección IP, la cual es usada para
identificar un dispositivo, además esa dirección es dividida en varios puertos. Cuando
una computadora envía datos a otra, los datos son enviados de un puerto en una
dirección IP a otro puerto en una dirección IP. Es importante mencionar que un puerto
puede ser usado por un solo programa a la vez. Teniendo lo en cuenta lo anterior, la
NAT toma una dirección IP y básicamente la separa en varias direcciones IP. La

91
Capitulo 2. Estado del Arte. 92
____________________________________________________________________________

dirección IP que es separada es la dirección IP externa que es la que posee el router y


es concedida por el ISP. En la figura 2.34 se muestra un ejemplo en la que la dirección
IP externa es dividida en dos direcciones IP internas. La IP interna IP1 corresponde al
router (de ahora en adelante será definida como Gateway), mientras que la IP2
corresponde al primer dispositivo (PortFordward, 2006).

Figura 2.34 División de la IP externa en varias IP internas

En la figura 2.35 se aprecia que solo los dispositivos de la LAN pueden ver solamente
las direcciones IP internas, por lo tanto no pueden ver directamente un dispositivo fuera
de la red. Cuando un dispositivo de la red requiere enviar datos enviar datos a otro
fuera de la LAN, este envía los datos al Gateway, que transmite la información fuera de
la dirección IP externa hacia el internet. Un dispositivo fuera de la LAN no puede ver un
dispositivo dentro de ella, solo ve y envía datos a la dirección externa del router,
entonces este debe decidir qué hacer con estos datos (Ibídem).

Figura 2.35 Visión de los dispositivos internos y externos de la LAN

92
Capitulo 2. Estado del Arte. 93
____________________________________________________________________________

2.11.2.3 DIRECCIONAMIENTO DE PUERTOS

Todo el trafico TCP y UDP en Internet usa puertos para identificar el protocolo que será
usado, por ejemplo el puerto 80 para HTTP (Web) y el 25 para SMTP (Email). Para
resolver el problema del firewall y permitir visitantes a la red, el usuario da instrucciones
al router que permita pasar el tráfico a través de un puerto dado. Esto es conocido
como “Direccionamiento de Puertos”, debido a que el router dirige las peticiones de
Internet a un puerto especifico para un dispositivo local. Las condiciones que se deben
de cumplir o características del direccionamiento son definidas como reglas de
direccionamiento. Para establecer las reglas de direccionamiento, el router toma datos
de la dirección IP externa y número de puerto (con un formato: xxx.xxx.xxx.xxx:#) y los
manda a una dirección IP interna a un número de puerto (xxx.xxx.xxx.xxx:#). Las reglas
de direccionamiento son creadas por puerto. Por ejemplo si se crea una regla para el
puerto 53, sólo funcionara para el puerto 53 (DynDNS, 2008).

El uso de los puertos en la dirección IP externa y las direcciones IP internas es la


siguiente: Un puerto solo puede ser usado por un programa a la vez. De esta manera
cuando un dispositivo está usando un puerto (por ejemplo el puerto 500) de la dirección
IP interna, este mismo puerto estará también en uso en la dirección IP externa. Esto
significa que solo se puede usar ese puerto para un dispositivo en la red a la vez. El uso
de ese puerto en otro dispositivo al mismo tiempo significa una violación a las reglas y
los datos se pierden o se corrompen. Por esto la mayoría de los routers requieren
especificar una dirección IP interna a la que se le asigne el direccionamiento de uno o
más puertos, siempre y cuando esos puertos no se repitan en otra dirección IP interna
(PortFordward, 2006).

En práctica existen tres diferentes tipos de direccionamiento de puertos:

• Direccionamiento de puertos estándar: En este tipo de direccionamiento el


túnel esta siempre encendido o abierto a través del firewall del router. Cualquier
visitante puede conectarse a la red local en cualquier momento en el puerto

93
Capitulo 2. Estado del Arte. 94
____________________________________________________________________________

dado. Esta es la elección para servicios siempre disponibles como Servidores


Web o servidores de correo (DynDNS, 2008).
• Activación de puerto: Este es un tipo especial que requiere de una conexión
inicial de salida. Una vez que es establecida la conexión, el router comienza a
dirigir las conexiones entrantes a un dispositivo local; Cuando el dispositivo cierra
la conexión, la regla de direccionamiento se apaga. Este tipo de
direccionamiento es comúnmente usado en juegos, conferencias de video, entre
otras (Ibídem).
• Zona desmilitarizada (DMZ por sus siglas en ingles): Este tipo de
direccionamiento posiciona al dispositivo afuera de la protección del router
dirigiendo todo el tráfico en todos los puertos hacia el dispositivo. Este
direccionamiento solo es usado con propósitos de resolución de problemas y de
configuraciones avanzadas de red; Como tal no es recomendado su uso para
propósitos de hospedaje de cualquier tipo (Ibídem).

En la mayoría de los routers una regla de direccionamiento usa la siguiente información:

• Nombre de aplicación: La etiqueta de la regla de direccionamiento.


• Puerto de inicio y fin: Son los puertos usados por una aplicación, de esta
manera se puede direccionar un arreglo de puertos con una sola regla.
• Protocolo: El protocolo TCP, UDP o ambos para la regla de direccionamiento. El
protocolo depende del tipo de servicio que se provee.
• Dirección IP: La dirección IP interna del dispositivo destino en la LAN,
usualmente comienza con 192.168.1.x.

94
Capitulo 3. Diseño 94
____________________________________________________________________________

CAPITULO III. DISEÑO

3.1 INTRODUCCIÓN

En el presente capitulo se describirán las etapas en las que se encuentra dividido el


sistema, la forma en que se acoplan cada una de ellas, las características de los
dispositivos empleados y la forma en que se hace su configuración, así como una
prueba del funcionamiento del sistema para verificar su capacidad para adquirir y
transmitir datos.

El sistema está dividido en tres etapas: La etapa de Internet, que está integrada por un
modem que permite el enlace a la nube de internet proporcionando acceso desde
cualquier lugar donde haya una conexión a esta. La etapa de Ethernet permite realizar
la interfaz con la etapa de internet y la etapa de potencia, algunos sensores y a demás
de proporcionar una pequeña memoria EEPROM para guardar una página web muy
sencilla que servirá como medio de interacción con el usuario, mediante el uso de una
tarjeta de desarrollo. Por último la etapa de Potencia, la cual está formada por un
circuito electrónico que permite la manipulación de distintos actuadores.

Una vez acopladas estas etapas el usuario simplemente tendrá que ingresar a la página
web y de una manera muy sencilla podrá hacer uso del sistema para poder controlar o
adquirir datos de un determinado lugar, dando mayor confort, rendimiento y seguridad.

94
Capitulo 3. Diseño 95
____________________________________________________________________________

3.2 MODEM 2WIRE

Este modelo de modem es uno de los más usados en el país, ya que es proporcionado
por la empresa líder en telecomunicaciones que brinda el servicio de internet, cabe
mencionar que no solamente se puede realizar con este dispositivo, puede usarse
cualquier otro realizando las configuraciones necesarias. A continuación se describirán
las características del modem 2Wire, su instalación y configuración para ser parte del
sistema de adquisición y transmisión de datos vía Ethernet.

3.2.1 CARACTERÍSTICAS

El modem 2Wire empleado es el modelo 2701HG-T, se ilustra en la figura 3.1, es uno


de los más comúnmente usados, a continuación se indican las características más
relevantes de este dispositivo, funciones y accesorios (2Wire, 2007):

Figura 3.1 Modem 2Wire modelo 2701HG-T

Características del modem 2Wire:

• Velocidad: 54 Mbps.
• Alcance: 120 m.

95
Capitulo 3. Diseño 96
____________________________________________________________________________

• Compatibilidad: ADSL, ADSL2, ADSL2+, CABLEMODEM.


• Tipo de puertos: 1 salida USB, 4 RJ45 Y Wireless.
• Alimentación: 5 Volts, 2 Amperes.
• Antena: 2 Antenas de emisión 100 mW y una de recepción de 200 mW
• Dimensiones: 18 cm de ancho, 23 cm de largo y 4 cm de alto.
• Peso: 800 g sin fuente.
• Canales de operación: 12.
• Frecuencia: Se pueden tener 11 frecuencias distintas.
• Encriptación: WEP, WEP SHARED, WPA.
• Características adicionales: Firewall, capas para manejar reglas de aplicación a 1
o varias PC y con horarios.
• Firewall: Permite controlar la seguridad sobre una PC con moto STEAHLT,
(modo invisible), se puede abrir todos los puertos con un solo clic.
• Compatibilidad: Con todos las placas Wi-Fi del mercado.

En la siguiente imagen (figura 3.2) se puede apreciar los puertos con los que cuenta el
modem (Telmex, 2007):

Figura 3.2 Puertos del Modem 2Wire

96
Capitulo 3. Diseño 97
____________________________________________________________________________

Funciones:

• Modem ADSL.
• Configurarlo como Router y tener una red en la cual se pueda compartir archivos
e impresoras con diferentes computadoras.
• Acceso Inalámbrico de un alcance de hasta 120 metros en campo abierto.
• Cuenta con FIREWALL para evitar intrusos que quieran acceder a la red sin una
contraseña.
• Compatible con cualquier dispositivo Wi-Fi (PSP, XBOX 360, PLAYSTATION 3,
IPHONE, IPOD TOUCH, ETC.).

Accesorios (ver figura 3.3):

• Adaptador de Corriente.
• Microfiltros.
• Cable Telefónico (gris).
• Cable Ethernet (amarillo).
• Cable USB (azul).

Figura 3.3 Accesorios Modem 2Wire

3.2.2 INSTALACIÓN Y CONFIGURACIÓN

Para la instalación del modem se deben realizar determinadas conexiones que


permitirán accionar este dispositivo para posteriormente realizar su configuración.

97
Capitulo 3. Diseño 98
____________________________________________________________________________

Lo primero por hacer es identificar los componentes y accesorios que se van a utilizar
para poner en funcionamiento el modem (Ver figura 3.4):

• Cable azul, da acceso por medio de una conexión USB.


• Cable amarillo, dará acceso por medio de la conexión Ethernet de la NIC de la
PC.
• Cable gris, es el cable que se conectara de la roseta telefónica al modem.
• Un adaptador de corriente.
• El modem 2Wire modelo 2701HG-T.
• Un CD de instalación.
• Microfiltros, con la finalidad de mantener la estabilidad del servicio y eliminar el
ruido en las llamadas se debe instalar uno por cada extensión de teléfono, así
como por cada dispositivo que utilice la extensión de teléfono como pueden ser
la línea de fax, alarmas de seguridad, contestadoras automáticas y
decodificadores de televisión satelital.

Para realizar el proceso de conexión se debe seguir los siguientes pasos, para tener un
buen funcionamiento del modem y el servicio de internet sea proporcionado.

• Encender la computadora, y cerrar cualquier aplicación que se encuentre abierta,


insertar el CD de instalación, y leer las instrucciones que se presentan en
pantalla.
• Es muy importante desconectar cualquier teléfono o dispositivo que ocupe la
línea.
• Como se menciono, se debe conectar un microfiltro en cada roseta así como en
los aparatos que usen la línea de teléfono, posteriormente se vuelve a conectar
los teléfonos o dispositivos directamente al microfiltro en el puerto etiquetado con
la leyenda phone,
• El cable gris debe conectarse al modem en el puerto etiquetado como ADSL y
colocar el otro extremo del cable en el microfiltro en el puerto etiquetado como
ADSL. Solamente el modem deberá estar conectado al puerto etiquetado como

98
Capitulo 3. Diseño 99
____________________________________________________________________________

ADSL en el microfiltro más cercano al equipo, cualquier otro dispositivo deberá


conectarse al puerto etiquetado como phone del microfiltro.
• Existen dos métodos de conexión, USB o Ethernet, se debe elegir Ethernet ya
que es indispensable para el funcionamiento del sistema, a demás de ser
compatible con cualquier versión de sistema operativo. Conectar un extremo del
cable amarillo en algún puerto Ethernet del modem y el otro en el puerto de la
tarjeta NIC de la computadora.
• Conectar el eliminador de corriente al modem en el puerto etiquetado como
power, y conectar el otro extremo a un regulador de corriente, para evitar daños
ocasionados por descargas eléctricas.
• Verificar que los LEDs indicadores en la parte frontal de modem, que se
encuentran con las leyendas power, Ethernet, USB, DSL e Internet parpadeen en
verde.
• Si todos los LEDs encienden en verde continuar el llenando los datos que se te
piden en pantalla, durante el proceso de instalación.

Una vez que se hayan concluido estos pasos, al abrir el navegador por primera vez, se
desplegara el contrato de servicio de la compañía que provee el servicio de internet, dar
clic en aceptar y se tendrá acceso a la nube de internet. Una vez concluyendo la
instalación se procede a modificar los parámetros del modem.

99
Capitulo 3. Diseño 100
____________________________________________________________________________

Figura 3.4 Conexión del modem 2Wire mediante Ethernet

El modem cuenta con una configuración de fabrica, la seguridad de esta configuración


impide el acceso a los dispositivos de la red local para su manipulación, para modificar
estos parámetros y se tenga acceso a la red local desde cualquier sitio con conexión a
internet es necesario realizar algunas modificaciones a los parámetros del modem.

• Ingresar al navegador instalado en la PC, en la barra de direcciones colocar la


palabra “home”, o en su defecto colocar la dirección IP, como se ilustra en la
figura 3.5, con esto se mostrara una página web, donde se podrán realizar las
modificaciones necesarias a la configuración del modem (ver figura 3.6).

Figura 3.5 Barra de direcciones del explorador de internet

100
Capitulo 3. Diseño 101
____________________________________________________________________________

Figura 3.6 Página de configuración del modem

• Ir al vinculo “Bloqueo de intrusos”, después dar clic en la pestaña de


“Configuración avanzada” (ver figura 3.7), donde se pedirá ingresar la contraseña
del sistema, una vez accesada desplegara una ventana como la que se ilustra en
la figura 3.8.

Figura 3.7 Vínculos seleccionados con un círculo para ingresar a la configuración avanzada de
bloqueo de intrusos

• Activar la casilla NetBIOS y dar clic en guardar, como se muestra en la figura 3.8.

101
Capitulo 3. Diseño 102
____________________________________________________________________________

Figura 3.8 Ventana de Configuración avanzada de Bloque de intrusos

Una vez realizados estos pasos, se tendrá acceso a los dispositivos que se encuentran
dentro de la red local desde cualquier lugar con conexión a internet, permitiendo de
esta forma acceder a la tarjeta de desarrollo PICDEM.net.2.

102
Capitulo 3. Diseño 103
____________________________________________________________________________

3.3 TARJETA DE DESARROLLO PICDEM.NET.2

La tarjeta de desarrollo PICDEM.net.2 (DM163024) es una tarjeta de Internet/Ethernet


capaz de soportar el popular controlador de Ethernet ENC28J60 y el singular chip de la
familia de los microcontroladores Ethernet, el PIC18F97J60. Con esta tarjeta, usando el
stack TCP/IP libre de Microchip, un servidor web puede desarrollar la capacidad de un
monitoreo remoto y control de aplicaciones integradas a través de internet, la tarjeta
PICDEM.NET.2 se puede observar en la figura 3.9 (Microchip, 2007).

Figura 3.9 Tarjeta de desarrollo PICDEM.NET.2

3.3.1 CARACTERÍSTICAS

Esta tarjeta cuenta con diversas características que pueden ser útiles para realizar
diversas aplicaciones mediante el uso de un servidor, algunas de ellas son (Ibídem):

• Servidor Web con soporte HTML.

• TCP/IP con soporte de Microchip.

• 2 Interfaces Ethernet (conector RJ-45).

• Conector PICtailTM para agregar tarjetas de expansión.

• Display de 16 x 2 caracteres alfa-numéricos.

103
Capitulo 3. Diseño 104
____________________________________________________________________________

• Interfaz ICSP™/MPLAB ICD 2 para programación en circuito y depuración.

• Botones y LEDs Programables.

• Sensor de temperatura.

• Interfaz RS-232/RS-485.

• Reloj de tiempo real.

La Tarjeta de Desarrollo PICDEM.net.2 tiene todas las características para comenzar a


desarrollar aplicaciones de conectividad a Internet a través de una conexión Ethernet.
El Firmware preprogramado grabado en la memoria EEPROM, permite usar la tarjeta
de desarrollo sin necesidad de una configuración o programación adicional. A
continuación se describirá cada una de las características de esta tarjeta, en la figura
3.10 se pueden ubicar cada uno de los compontes (User’s Guide, 2007).

Figura 3.10 Diseño de la tarjeta de desarrollo PICDEM.NET.2

104
Capitulo 3. Diseño 105
____________________________________________________________________________

1. MICROCONTROLADOR El microcontrolador PIC18F97J60 junto con el


controlador Ethernet y el transmisor que están integrados en la tarjeta. El
dispositivo esta en sincronizado a 25 MHz y puede programarse el firmware
usando el stack TCP/IP de Microchip. Los jumpers JP15 y JP3 pueden usarse
para medir el consumo de corriente del microcontrolador.
2. CONTROLADOR ETHERNET: A demás del PIC18F97J60, la tarjeta de
desarrollo también dispone de un microchip ENC28J60 (controlador de Ethernet),
este dispositivo provee de una conexión a Ethernet al microcontrolador y las
aplicaciones utilizando una interfaz SPI.
3. MEMORIA: La memoria EEPROM 25LC256, proporciona 256 Kbits (32 Kbytes)
de almacenamiento para páginas web y no volátil para opciones de
configuración. La 25LC256 es programable por medio de una interfaz SPI.
4. PANTALLA LCD: Dos líneas de 16 caracteres, una matriz de punto muestra
diagnósticos y mensajes de error con el firmware de fabrica. Puede ser
reprogramada para otras aplicaciones.
5. CONECTORES LCD EXTERNOS OPCIONALES: El espacio provisto en la
tarjeta para la instalación es de 30-pin, un botón de contacto para la base del
conector (HiroseFH12-30S-0.5SH o equivalente), esto permitirá el uso de un
modulo LCD de caracteres (tales como Optrex F-51320) a la tarjeta mediante un
cable ribbon. Nota, el uso de módulos LCD externos requiere modificaciones al
código de aplicación, así como el uso de cable ribbon compatible con el
conector.
6. SENSOR DE TEMPERATURA: Es un sensor de temperatura analógico, modelo
TC1047, es conectado a un pin de I/O analógica del microcontrolador. Se puede
desconectar por jumpers.
7. LEDS DEFINIDOS POR EL USUARIO: Ocho LEDs son controlados por pins de
I/O digital del microcontrolador (PORTJ), y pueden ser utilizados para simular
una salida digital para controlar algún dispositivo. También pueden ser
habilitados o deshabilitados por una selección de jumpers de la tarjeta.

105
Capitulo 3. Diseño 106
____________________________________________________________________________

8. ÁREA DE BOTONES DEFINIDA POR EL USUARIO: Estos switches son


conectados a pins de I/O digital del microcontrolador (PORTB), y puede ser
utilizada para simular una entrada digital en una aplicación de control.
9. POTENCIÓMETRO DEFINIDO POR EL USUARIO: Potenciómetro de 1 a 10
kOhm es conectado a un pin de I/O analógica del microcontrolador. Puede ser
usado para simular una entrada analógica en una aplicación de control.
10. BOTÓN PARA REINICIAR: Este interruptor está ligado al pin del
microcontrolador, y es usado para reiniciar la tarjeta.
11. RJ-45 (10Base-T) CONECTORES MODULARES: La tarjeta de desarrollo
PICDEM.net.2 está equipada con dos módulos de conector (ICMs), uno para el
PIC18F97J60 y otro para el ENC28J60. Estos ICMs proporcionan un jack
modular así como las transformaciones necesarias. EMI de supresión y LEDs de
estado para la conectividad Ethernet. Cada ICM tiene su propia actividad y sus
LEDs a los lados izquierdo y derecho del ICM respectivamente (vistos desde
arriba), estos muestran si una aplicación Ethernet está recibiendo o transmitiendo
un paquete, y si la conexión de Ethernet esta activa. Los LEDs del PIC18F97J60
pueden ser desconectados por los jumpers si los puertos de I/O de RA0 y RA1
se utilizaran para otro fin.
12. RJ-11 (SIX-WIRE) CONECTOR MODULAR: Permite a la tarjeta de desarrollo
conectarse con el sistema Microchip MPLAB ICD 2 para la programación del
sistema, así como una avanzada aplicación de depuración.
13. PUERTO SERIAL: La tarjeta de desarrollo incluye un puerto RS-232 con un
conector DB9 y un adecuado nivel desplazando hardware. Esto permite la
configuración de tarjetas IP y direcciones Ethernet mediante una norma de
conexión serial. Este puerto también permite a los usuarios la descarga de
nuevas páginas web a la EEPROM.
14. I/O y ACCESO A LA TARJETA PICtail DAUGHTER: Un par de bandas hembra
(J5 y J6), permiten el acceso directo a cinco de los puertos de I/O del
microcontrolador. Incluso los pins de J5 también pueden servir como interfaz
estándar entre la tarjeta de desarrollo PICDEM.net.2 y cualquiera de las series
de tarjetas PICtail DAUGHTER.

106
Capitulo 3. Diseño 107
____________________________________________________________________________

15. ÁREA DE PROTOTIPOS: Una superficie de 9x20 con una red de agujeros para
que los usuarios puedan desarrollar circuitos adicionales. Tres pastillas SOT-23
y un SOIC-28 son también la huella de la superficie de montaje de componentes
comunes. Las conexiones provistas son +3.3 VDC, +5 VDC, +9 VDC y tierra.
16. ENTRADA DE ALIMENTACIÓN: Dos reguladores de la tarjeta proveen de 5
VDC, 3.3 CC a 500 mA de corriente común. J7 suministra 9 VDC.
17. LED DE ENCENDIDO: El LED (D9) muestra si la tarjeta está encendida.
18. ETIQUETAS DE ETHERNET ID: Los números en las dos etiquetas se utilizan
para formar una única Media Control Access (MAC) Adress usada para la
transmisión de Ethernet para la identificación y filtrado de paquetes. El número
es la base 10 versión de los últimos 6 dígitos hexadecimales de los 12 dígitos de
la dirección MAC. Por ejemplo, la etiqueta “12345”, la representación
hexadecimal 003039h de la dirección MAC. Uno de estos es asignado al
PIC18F97J60 y el otro a ENC28J60. Estas direcciones MAC pueden ser
cambiadas en el software.

La familia PIC18F97J60 está optimizada para aplicaciones embebidas e integra un


Controlador de Acceso a Medios (Medium Access Controller, MAC) y un Dispositivo de
Capa Física (Physical Layer Device, PHY). Con la integración de un controlador
Ethernet 10BASE-T en el PIC18F97J60 de 10 MIPS y hasta 128 Kbytes de memoria de
programa Flash, proporciona una solución sencilla y económica para comunicación
remota en un único chip para una amplia variedad de aplicaciones (Burhart, 2008).

Microchip ofrece asimismo una pila de software gratuita TCP/IP para reducir el tiempo
de desarrollo. Ethernet es la tecnología líder de red para redes locales (LAN), y se
puede utilizar para conectar dispositivos embebidos a través de una LAN a Internet. La
infraestructura, prestaciones, interoperabilidad, escalabilidad y sencillo desarrollo de
Ethernet la han convertido en la elección estándar para este tipo de comunicaciones
embebidas. Cualquier aplicación embebida que precise conectividad Ethernet puede
aprovechar la nueva familia de microcontroladores PIC18F97J60.

107
Capitulo 3. Diseño 108
____________________________________________________________________________

Principales características de esta familia son (Microchip, 2007):

• Sencilla Migración: Añada Ethernet a los diseños existentes basados en


PIC18F97J60 con un mínimo coste y tiempo de desarrollo.
• Conformidad con IEEE 802.3: La integración de 10BASE-T MAC y PHY
proporciona una transmisión y recepción fiable de paquetes de datos.
• Buffer Ethernet Dedicado de 8 Kbyte: permite un eficiente almacenamiento
de los paquetes, su consulta y modificación, y reduce la demanda en el
microcontrolador integrado.
• 128 Kbytes de Flash y 4 Kbytes de SRAM: para albergar la pila TCP/IP y
el servidor Web, dejando así un gran espacio para el código de aplicación.

La Placa de Desarrollo PIC18F97J60 PICDEM.net™ 2 (referencia DM163024) se ha


creado específicamente para asistir en el desarrollo de estos nuevos dispositivos
integrados. Además, se puede descargar la versión más reciente de la Pila TCP/IP
Ethernet gratuita en la página del fabricante. La nueva familia cuenta asimismo con el
soporte del conjunto de herramientas de desarrollo de alta calidad de Microchip.

Microchip ofrece una pila de software TCP/IP optimizado. La pila es un conjunto de


programas que proveen de los servicios TCP/IP a las aplicaciones. Los usuarios no
necesitan conocer todas las complejidades de las especificaciones TCP/IP para poder
hacer uso de ellas. Basada en el modelo de referencia TCP/IP, la pila se divide en
múltiples capas (ver figura 3.11), la misión de cada capa es proveer servicios a las
capas superiores, haciéndoles transparentes el modo en que esos servicios se llevan a
cabo. De esta manera, cada capa debe ocuparse exclusivamente de su nivel
inmediatamente inferior, a quien solicita servicios, y del nivel inmediatamente superior, a
quien devuelve resultados. Por especificaciones, muchas de las capas están “vivas”, en
el sentido de que no sólo actúan cuando se solicita un servicio, sino también cuando los
eventos como el tiempo de espera o la llegada de un nuevo paquete se producen. La
pila sigue un diseño modular y está escrita en lenguaje de programación C. En

108
Capitulo 3. Diseño 109
____________________________________________________________________________

conjunción con el controlador Ethernet, permite reducir los tiempos y costes de


desarrollo de aplicaciones a través de una red de área local o Internet (Burhart, 2008).

Figura 3.11 Capas TCP/IP Stack

La pila de TCP/IP de Microchip, incluye las siguientes características principales


(Microchip, 2007):

• Optimizado para todas las familias PIC18, PIC24 Y PIC32.


• Soporta los protocolos: ARP, IP, ICMP, UDP, TCP, DHCP, SNMP, HTTP, FTP,
TFTP.
• Enchufe de apoyo para TCP y UDP.
• Servicio de nombre NetBIOS.
• Secure sockets layer (SSL).
• DNS- Domain Name System.
• Dispositivos de Ethernet.
• Soportado por compiladores MPLAB C18, C30 y C32.

En el apéndice A se puede encontrar el programa principal preprogramado que utiliza la


tarjeta de desarrollo para su funcionamiento, y en la siguiente dirección web http://cid-
76e8a0bd435da18b.skydrive.live.com/self.aspx/P%c3%bablico/codigos%20fuente.rar
podrá encontrar el resto de estos códigos.

109
Capitulo 3. Diseño 110
____________________________________________________________________________

3.3.2 INSTALACIÓN Y CONFIGURACIÓN.

La tarjeta de desarrollo PICDEM.net.2, está diseñada para demostrar sus posibilidades


de conexión en red con los controladores embebidos a través de Ethernet e
Internet. Antes de comenzar con la instalación se deben tomar en cuenta algunas
precauciones.

El nuevo hardware o software cuando se va a añadir a una red, siempre es aconsejable


crear una red de prueba que está aislada de la LAN. Esto permite probar el nuevo
sistema en un entorno controlado y minimiza las posibilidades de interferencia en la red
de los nuevos equipos. Las principales fuentes de posibles interferencias son (User’s
Guide, 2007):

• Direccionamiento: Cada dispositivo de red debe tener una dirección única. Si el


Protocolo de Configuración Dinámica Host (DHCP) está en uso, la tarjeta de
Desarrollo PICDEM.net.2 adquiere automáticamente una dirección IP válida. Si el
DHCP no está utilizado, o se requiere de una dirección fija, añadir la tarjeta a la
red sin asignar una dirección, puede crear conflictos de red.
• Niveles de tráfico: Mientras que el controlador Ethernet de la tarjeta filtra los
mensajes no deseados, una gran carga de red con muchos envíos de mensajes
pueden colocar una carga considerable en la placa de desarrollo.
• Seguridad de datos: Aunque es poco probable que la adición de un solo
dispositivo ponga en peligro la integridad o privacidad de la información, siempre
es una buena idea llevar acabo extensas pruebas antes de añadirlo a una red
segura.
• Experimentación: Incluso como un simple dispositivo basado en un
microcontrolador, la tarjeta de desarrollo es capaz de generar un gran volumen
de tráfico en la red que puede perturbar gravemente las operaciones normales
de la red.

110
Capitulo 3. Diseño 111
____________________________________________________________________________

Hay dos configuraciones básicas para la tarjeta de de desarrollo PICDEM.net.2: la


conexión directa a una red, o la conexión a un host local a través de un cable cruzado.
En este caso se utilizara la conexión directa a una red. Esta configuración es el método
básico para la conexión de la tarjeta de desarrollo a la red. Esto asume que hay una red
estable de Ethernet usando TCP/IP para las comunicaciones y que por lo menos un
servidor DHCP está presente en la red (Ibídem).

Para configurar la tarjeta mediante una conexión directa (ver figura 3.12):

• Coloque la tarjeta cerca del ordenador host sobre una superficie no conductora.
• Conecte el cable de Ethernet (cable cruzado) a la tarjeta al conector J1, después
a la red Ethernet. Esto puede ser en un puerto de red, o en un puerto disponible
en algún dispositivo de red (como un switch, hub, router o modem).
• Aplicar Voltaje a la tarjeta (9 VDC) en J7, mediante un convertidor de 2.5 mm de
centro positivo de 7 V a 12 V (preferentemente 9 V) con una capacidad de
corriente de 500 mA es suficiente.

Figura 3.12 Conexión de la tarjeta de desarrollo PICDEM.net.2 a una red

Para confirmar que la tarjeta está operando, una vez que esté conectada y encendida
se deben de ver las siguientes características:

111
Capitulo 3. Diseño 112
____________________________________________________________________________

• El LED D8 debe estar parpadeando.


• Los LEDs D1 a D7 deben estar apagados.
• El LED verde de liga en J1 se ilumina.
• La LCD muestra el siguiente mensaje:
TCPStack v3.75
?.?.?.?
Donde ?.?.?.? es la dirección IP de la tarjeta, asignada por el servidor de red.
(ver figura 3.13)

Figura 3.13 LCD de la tarjeta de desarrollo mostrando la versión TCPStack y dirección IP

Por último para comprobar que la comunicación ha sido establecida, una vez que la
tarjeta de desarrollo PICDEM.net.2 este correctamente instalada, todo lo que sigue es
iniciar sesión. Para esto, puede hacerse de la misma manera en que se accede a
cualquier sitio web, en este caso se debe ingresar la dirección IP que se muestra en la
pantalla LCD en la barra de direcciones del navegador, y se mostrara un página web
como la de la figura 3.14. En la página web se puede observar tres botones y tres
indicadores de estatus, los botones marcados con la palabra LED1 y LED2, que sirven
para encender y apagar los LEDs de la tarjeta desarrollo D1 y D2, mostrando un cambio
en el indicador de estatus denominado LEDs con 1 indica encendido y un 0 indica
apagado; en el recuadro se puede escribir un mensaje que al dar clic en el botón Write
será mostrado en la LCD de la tarjeta de desarrollo. El indicador Pot, muestra las
variaciones que se realicen en el potenciómetro de la tarjeta y por último el indicador
Botones mostrara cambios si en la tarjeta es presionado alguno de los botones
indicando cuál de ellos fue el activado.

112
Capitulo 3. Diseño 113
____________________________________________________________________________

Figura 3.14 Página Web de la tarjeta de desarrollo PICDEM.net.2

113
Capitulo 3. Diseño 114
____________________________________________________________________________

3.4. INTERFAZ DE POTENCIA

Esta interfaz de potencia es un circuito que permite el acoplamiento entre la tarjeta de


desarrollo PICDEM.net.2 y los actuadores que van a controlarse. A continuación se
describen las características de este circuito así como su funcionamiento e
implementación.

3.4.1 CONSTRUCCIÓN, FUNCIONAMIENTO E IMPLEMENTACIÓN

El circuito empleado para realizar la interfaz de potencia se muestra en el diagrama


eléctrico de la figura 3.15.

Figura 3.15 Diagrama eléctrico de la Interfaz de Potencia.

Para este circuito se usan fotorresistencias, ya que las salidas de datos de la tarjeta de
desarrollo PICDEM.net.2 son por medio del encendido o apagado LEDs, por lo tanto el
diseño del circuito se baso en transformar esas señales luminosas en pulsos que
activen y desactiven un actuador.

114
Capitulo 3. Diseño 115
____________________________________________________________________________

El funcionamiento del circuito es simple, como es sabido los transistores funcionan a


base de corriente, por lo que cuando no está encendido el LED de la tarjeta de

desarrollo PICDEM.net.2, la fotorresistencia tiene un valor muy alto cerca de los M
por lo cual la corriente que llega a la base del transistor es insuficiente para que este
conduzca del colector a emisor.
Cuando el LED se encuentra encendido, la fotorresistencia reduce su valor hasta unos
cuantos cientos de ohms, lo cual incrementa la corriente que llega a la base del
transistor haciéndolo conducir de colector a emisor y de esta forma pasa la corriente a
través de la bobina del relevador cerrando el contactor y así encender el foco.

Para la construcción de este circuito se emplean los siguientes componentes y material:

• 1 fotorresistencias.
• 1 resistencias de 100.
• 1 resistencias de 1 KΩ.
• 1 TIP 120.
• 1 Relevador (1 polo, 2 tiros).
• 1 Placa fenolica.
• Caimanes.
• 1 fuente de alimentación de 12 VDC.
• Cautín, soldadura, cinta de aislar, cable para ProtoBoard, pinzas de corte.

Una vez que se tiene todo el material, se procede al ensamble del circuito de acuerdo al
diagrama eléctrico, se colocan todos los componentes electrónicos sobre la placa
fenolica, para posteriormente ser soldados, en la figura 3.16 se muestra la interfaz de
potencia terminada, se puede observar dos circuitos idénticos, esto se debe a que es
necesario elaborar un circuito de potencia por cada actuador que se desee controlar, en
este caso se están utilizando dos circuitos, ya que únicamente se utilizan dos salidas
de datos de la tarjeta de desarrollo PICDEM.net.2. Si se desea conocer más detalles y
características técnicas de los componentes empleados puede verse los DataSheet de
estos elementos en las siguientes direcciones web:

115
Capitulo 3. Diseño 116
____________________________________________________________________________

Fotorresistencias: http://www.electan.com/catalog/datasheets/cebek/CE-C2795.pdf
Transistor: http://www.fairchildsemi.com/ds/TI/TIP120.pdf
Relevador: http://www.steren.com.mx/catalogo/interior3.asp?pdto=RAS-0610

Figura 3.16 Interfaz de Potencia.

Las características principales de la etapa de potencia son:

• Voltaje: 120V@8A
• 2 entradas ópticas
• 2 Salidas a Relevador

Una vez que ya se conocen las especificaciones del circuito y ha sido ensamblado, se
procede a la conexión de este, las fotorresistencias deben ser colocadas sobre los
LEDs D1 y D2 de la tarjeta de desarrollo PICDEM.net.2, teniendo especial cuidado en
cubrir perfectamente las fotorresistencias para evitar que otra fuente luminosa pueda
causar interferencia en estas (ver figura 3.17)

116
Capitulo 3. Diseño 117
____________________________________________________________________________

Figura 3.17 Acoplamiento de la interfaz de Potencia y la Tarjeta de desarrollo PICDEM.net.2

A continuación se procede a conectar las salidas de los relevadores a la fase del


suministro eléctrico, esta conexión debe realizarse en paralelo y tomarse las medidas
de precaución necesarias para evitar algún accidente. Una vez realizado se puede
tener el acoplamiento con un actuador determinado que este alimentado por la corriente
del suministro eléctrico (ver figura 3.18). Para finalizar con las conexiones, se alimenta
el circuito con la fuente de poder a 12VDC.

FIG. 3.18 Acoplamiento de la interfaz de potencia con el actuador.

117
Capitulo 3. Diseño 118
____________________________________________________________________________

3.5 SISTEMA DE ADQUISICIÓN Y TRANSMISIÓN DE DATOS VÍA


ETHERNET.

Una vez concluida la instalación, conexión y acoplamiento de cada una de las etapas
(ver figura 3.19), se tiene el Sistema de Adquisición y Transmisión de Datos Vía
Ethernet.

Figura 3.19 SISTEMA DE ADQUISICIÓN Y TRANSMISIÓN DE DATOS VÍA ETHERNET


(Modem + PICDEM.net.2 + Interfaz de Potencia)

3.5.1 PRUEBA DE FUNCIONAMIENTO DEL SISTEMA.

Se procede a realizar una prueba para verificar el funcionamiento del sistema de


transmisión y adquisición de datos vía Ethernet. Para esto se debe verificar que cada
etapa este funcionando correctamente, una vez realizado esto, se procederá a acceder
a la página web, una vez en la página, se va enviar un mensaje a la LCD, activar un
LED y que este a su vez accione la interfaz de potencia para encender una lámpara, se
harán variaciones en el potenciómetro de la placa y se presionara un botón, estas
acciones deben ser registradas en los indicadores que se muestran en la página web.
Al realizar dichas acciones se observo que el sistema funciona de forma óptima, por lo
cual no se tuvo ningún inconveniente durante la prueba.

118
Capitulo 4. Aplicación 119
____________________________________________________________________________

CAPITULO 4. APLICACIÓN

4.1 INTRODUCCIÓN

Después del diseño y creación del Sistema de Adquisición y Transmisión de Datos vía
Ethernet, es preciso hacer un análisis de sus posibilidades de expansión y mejora. De
igual manera es de suma importancia la tarea de realizar una aplicación que muestre
las capacidades y el potencial del sistema.

La mejor manera de realizar la aplicación es usar el Sistema de Adquisición y


Transmisión de Datos vía Ethernet a su máxima capacidad, esto al hacer uso de las
herramientas de Microchip, para luego como un sistema embebido formar parte de un
sistema mayor, como lo es un servidor HTTP. El servidor debe poseer la capacidad de
utilizar aplicaciones TCP/IP con las distintas tecnologías Web, entre las cuales se
encuentran el streaming de video para vigilancia/monitoreo, contenido dinámico, uso de
contenido flash, almacenamiento en línea, entre otros. Todo debe ser integrado y
visualizado en un sitio Web propio con una interfaz de fácil navegación.

De igual manera una parte muy importante para las aplicaciones basadas en
tecnologías Ethernet, TCP/IP y Web es la presencia en Internet. Para poder tener
presencia en internet es necesario hacer uso de las herramientas y servicios de red, lo
cual asegura la conectividad a internet que permite el acceso remoto.

119
Capitulo 4. Aplicación 120
____________________________________________________________________________

4.2 USO Y PROGRAMACIÓN DEL SERVIDOR HTTP INTERNO DEL


SISTEMA DE ADQUISICIÓN Y TRANSMISIÓN DE DATOS VÍA
ETHERNET

4.2.1 DISEÑO DEL SITIO WEB INTERNO

La idea general para el diseño del sitio Web interno es hacer uso de componentes de
uso común, como lo son tablas, imágenes, hipervínculos y scripts de Java. Para ello se
utiliza la página principal “index.htm” que contiene las herramientas principales del
control remoto, además de páginas extra en las cuales se muestran distintos aspectos y
características de los componentes usados por el Sistema de Adquisición y Transmisión
de Datos vía Ethernet. Las paginas mostrarán las características, la arquitectura y el
footprint, con sus los archivos “Features.htm”, “Arch.htm” y “Footprnt.htm”
respectivamente. Se debe de hacer énfasis de que el tamaño total de los archivos
utilizados no exceda la capacidad de almacenamiento de la memoria EEPROM externa
de 32 Kbytes, que es la limitante de memoria que posee el sistema.

Para la creación de las páginas del sitio Web interno, se hace uso del programa
Dreamweaver CS4 de Adobe. Este programa es un editor de páginas Web de distintos
formatos, entre los cuales figuran PHP, HTML, DHTML, entre otros. Una de sus
principales ventajas es la posibilidad de observar y editar el código fuente y el diseño de
las páginas al mismo tiempo, además de contar con una vista y prueba en tiempo real
de los cambios realizados y de igual manera de una gran facilidad de sus herramientas
para la edición.

Para hacer uso de todo lo anterior es necesario hacer uso de las herramientas de
microchip: MPFS, servidor FTP y el servidor HTTP interno.

120
Capitulo 4. Aplicación 121
____________________________________________________________________________

4.2.2 CREACIÓN DE LAS PÁGINAS WEB

4.2.2.1 PÁGINAS CGI

Para la creación de las páginas CGI se abre un bloc de notas y dependiendo de los
datos o acciones que se necesiten del servidor, se debe escribir el código de la variable
o comando a utilizar, ya sea de la tabla 4.1 o de la tabla 4.2.

Los códigos de las variables CGI usadas en el Sistema de Adquisición y Transmisión de


Datos vía Ethernet se muestran en la tabla 4.1, y los códigos de comando en la tabla
4.2.

Tabla 4.1 Códigos de las variables CGI

Variable Valor
LED0 0x00
LED1 0x01
LED2 0x10
LED3 0x11
LED4 0x12
LED5 0x13
LED6 0x14
LED7 0x15
ANAIN_AN0 0x02
ANAIN_AN1 0x03
DIGIN0 0x04 (Button0)
DIGIN1 0x0D
(Button1)
DIGIN2 0x0E (Button2)
DIGIN3 0x0F (Button3)

121
Capitulo 4. Aplicación 122
____________________________________________________________________________

STACK_VERSION 0x16
STACK_DATE 0x17
STROUT_LCD 0x05
MAC_ADDRESS 0x06
SERIAL_NUMBER 0x07
IP_ADDRESS 0x08
SUBNET_MASK 0x09
GATEWAY_ADDRESS 0x0A
DHCP 0x0B
DHCP_TRUE 0x0B
DHCP_FALSE 0x0C

Tabla 4.2 Códigos de los comandos CGI

Comando Valor
LED1 0x0
LED2 0x1

La página puede contener únicamente ese valor o igual puede contener fragmentos de
código HTML, una vez escrito el código fuente de la página se guarda el archivo con
extensión “.cgi” (Rajbharti, 2006).

Las páginas CGI creadas y su código fuente se muestran en la tabla 4.3.

Tabla 4.3 Páginas CGI y su código fuente

Nombre de la página Código fuente


BuiltDate %17
Button0 %04
Button1 %0D

122
Capitulo 4. Aplicación 123
____________________________________________________________________________

Button2 %0E
Button3 %0F
Index <html>
<body>
<b>Bienvenido</b><br>
Stack version: %16<br>
Build date: %17<br>
<br>
<form method="get" action="0">
<b>Acciones</b><br>
Alternar:<br>
<input type="submit" name="1"
value="LED2"></input>
<input type="submit" name="0"
value="LED1"></input>
</form>
<form method="get" action="1">
Escribir a LCD:
<input type="text" name="3" size="16"></input>
<input type="submit" value="Write"></input>
</form><br>
<b>Status</b><br>
Analogo: %02<br>
Digital: %0F %0E %0D %04<br>
LEDs: %15 %14 %13 %12 %11 %10 %01 %00<br>
</body>
</html>
LED0 %00
LED1 %01
Pot0 %02
Status <table cellpadding="3">

123
Capitulo 4. Aplicación 124
____________________________________________________________________________

<tr>
<td>Analogo:</td>
<td>%02</td>
</tr>
<tr>
<td>Digital:</td>
<td>%0F %0E %0D %04</td>
</tr>
<tr>
<td>LEDs:</td>
<td>%15 %14 %13 %12 %11 %10 %01 %00</td>
</tr>
</table>
Version %16

4.2.2.2 PÁGINAS HTM

Las páginas Web que se cargarán en la memoria EEPROM, son diseñadas para
mostrar las características y posibilidades que tiene el Sistema de Adquisición y
Transmisión de Datos vía Ethernet.

La primera página a diseñar es la página principal “Index.htm”, que es la que contiene la


visualización de los datos de entrada y salida, y que ejecuta los comandos del servidor
interno. Para mostrar las características de los componentes que forman al sistema se
diseña la página “Features.htm”, de igual manera se diseña la página “Arch.htm” que
muestre la arquitectura básica del sistema para comprender su funcionamiento. Y por
último la página “Footprnt.htm” que muestra los componentes del Stack TCP/IP del
sistema para entender su función como un agente primordial para el sistema. El código
fuente de las páginas HTM es mostrado en el apéndice B.

124
Capitulo 4. Aplicación 125
____________________________________________________________________________

Index.htm

En particular para la creación de la pagina “index.htm” es necesario hacer uso de


archivos HTTP CGI y de la generación de páginas dinámicas HTTP.

El resultado en pantalla del código se muestra en la figura 4.1:

Figura 4.1 Página Index.htm

Features.htm

El resultado en pantalla del código se muestra en la figura 4.2:

125
Capitulo 4. Aplicación 126
____________________________________________________________________________

Figura 4.2 Página Features.htm

Arch.htm

El resultado en pantalla del código se muestra en la figura 4.3:

Figura 4.3 Página Arch.htm

Footprnt.htm

El resultado en pantalla del código se muestra en la figura 4.4:

126
Capitulo 4. Aplicación 127
____________________________________________________________________________

Figura 4.4 Página Footprnt.htm

4.2.2.3 CARGA DEL SITIO WEB A LA EEPROM

Una vez que tanto las páginas CGI y HTM sean creadas, se procede a colocarlas junto
con sus archivos correspondientes, en una carpeta que se creará con el nombre de
“WebPages” en la ruta “c:\”. Posteriormente se ejecuta el programa MPFS.exe y se
escribe el comando MPFS c:\WePages MPFSImg.bin, con lo cual se crea el archivo
MPFSImg.bin que es el sitio Web que se cargará a la EEPROM mediante el servidor
FTP. Es de suma importancia verificar que el archivo creado no exceda un tamaño de
32 Kbytes (Rajbharti, 2006). La creación y el tamaño total se muestran en la figura 4.5

Figura 4.5 Creación del archivo MPFSImg.bin

127
Capitulo 4. Aplicación 128
____________________________________________________________________________

Para realizar la carga se realizan los siguientes pasos:

1. Comprobar que el sistema este encendido y conectado al router de la LAN.


2. Abrir una ventana de comando de Windows.
3. En la pantalla resultante escribir el comando ftp x.x.x.x. (donde “x.x.x.x” es la
dirección IP asignada por el router) y presionar <ENTER>.
4. Una vez listo el servidor FTP, se ingresan el nombre de usuario y contraseña
(los asignados por defecto: “ftp” y “microchip” respectivamente.
5. Después de un inicio de sesión exitoso escribir el comando put MPFSImg.bin y
presionar <ENTER>.
6. Después de la notificación de la transferencia completa, escribir “quit” para cerrar
sesión.

Figura 4.6 Uso del servidor FTP para carga del sitio Web a la EEPROM

128
Capitulo 4. Aplicación 129
____________________________________________________________________________

4.3 SERVIDOR HTTP EXTERNO

La idea fundamental de utilizar un Servidor HTTP externo, es hacer uso de la capacidad


de almacenamiento de la computadora donde está alojado el servidor y de igual manera
de enlaces externos. Esto es con la finalidad de poder tener un contenido Web más
amplio del que se podría obtener al usar solo la memoria EEPROM del sistema y de
igual manera poder realizar emisión de video. Para ello se hace uso de un programa
que genere los archivos y configuraciones necesarias para la instalación y uso de un
Servidor HTTP externo.

4.3.1 APPSERV

En la actualidad mucha gente en el mundo tiene problemas en la instalación de un


Servidor Web Apache, PHP o MySQL debido a la larga y laboriosa tarea de
configuración. De esta manera el concepto de AppServ es la fácil instalación de
Apache, PHP y MySQL en aproximadamente 1 minuto. AppServ contiene todas las
funciones de Apache, MySQL, PHP y con phpMyAdmin, los cuales son instalados en un
minuto (AppServNetwork, 2009).

El paquete de AppServ incluye:

• Apache.
• PHP.
• MySQL.
• phpMyAdmin.

La descarga de todos los paquetes corresponde a los lanzamientos “Official Binary”.

El uso de AppServ hace fácil la configuración, la cual es una configuración especial en


el momento de instalación: Apache se configura con httpd.conf, MySQL con my.ini y
PHP con php.ini. Lo cual garantiza que cualquier paquete de AppServ trabaja estable

129
Capitulo 4. Aplicación 130
____________________________________________________________________________

como la versión oficial de Apache, PHP y MySQL. El objetivo de AppServ es la facilidad


de instalación, se puede instalar fácilmente un Servidor Web o un Servidor de Bases de
Datos en poco tiempo. De igual manera puede ser usado para un Servidor de
Producción Web o de Producción de Bases de Datos (AppServNetwork, 2009).

4.2.1.1 INSTALACIÓN DE APPSERV

Se descarga el programa AppServ de la dirección http://www.appservnetwork.com, en


donde se puede escoger la versión 2.4.x o 2.5.x.

• 2.5.x es una versión estable para todos los usuarios, esta versión usa PHP 5.x
debido a que trabaja bien con el antiguo código PHP.
• 2.6.x provee lo nuevo y experimental de Apache, PHP y MySQL.

En este caso de selecciona la versión 2.5.x debido a la estabilidad y siguiendo las


recomendaciones de los desarrolladores de AppServ. Una vez descargado el programa
hacer doble clic a appserv-win32-x.x.x.exe para instalar AppServ en la computadora.
Esto da como resultado la pantalla mostrada en la figura 4.7.

Figura 4.7 Pantalla de bienvenida de AppServ

130
Capitulo 4. Aplicación 131
____________________________________________________________________________

El programa es distribuido bajo una licencia GNU/GLP, se debe de leer el acuerdo de la


licencia antes de la instalación, si se esta de acuerdo con la licencia dar click en Next
para continuar con la instalación. Posteriormente se seleciona la ruta de instalación, al
hacer click en Next se selecciona la ruta por defecto que es C:\AppServ.

La siguiente pantalla muestra la selección de componentes, por defecto se seleccionan


todos los componentes como se observa en la figura 4.8. Los cuales son:

• Apache HTTP Server: Servidor Web.


• MySQL Database: Servidor de base de datos.
• PHP Hypertext Processor: Procesador de programación PHP.
• phpMyAdmin: Es un control de de base de datos MySQL vía WWW.

Figura 4.8 Pantalla de selección de componentes

Lo siguiente es la configuración de Apache, en la cual se dan configuraciones


especificas de Apache.

• Server Name: Se especifica el nombre del servidor, por comodidad se asigna el


nombre de localhost.
• Admin Email: Se especifica el Email del administrador

131
Capitulo 4. Aplicación 132
____________________________________________________________________________

nemesis_cidm@hotmail.com
• HTTP Port: Se especifica el puerto HTTP de escucha para el Servidor Web
Apache, en este caso por comodidad se usa el puerto 8088.

Figura 4.9 Pantalla de configuración del Servidor Web Apache

Acontinuación se muestra la pantalla de configuración MySQL:

• Root Password: Se debe de ingresar una contraseña para la base de datos


MySQL. La contraseña por defecto es root.
• Character Sets: Especifica el conjunto de caracteres para el almacenamiento de
idiomas. Por defecto se selecciona UTF-8 Unicode.
• Old Password: Si se tiene problemas cuando se codifica PHP con MySQL
antiguo, esto genera un error Client does not support authentication protocol
requested by server; consider upgrading MySQL client. El cual se evita al
seleccionar la casilla.
• Enable InnoDB: Se deshabilita por defecto.

132
Capitulo 4. Aplicación 133
____________________________________________________________________________

Figura 4.10 Pantalla de configuración de la base de datos MySQL

De esta manera ya esta lista la configuración inicial del programa AppServ, solo resta
hacer clic en Install. Una vez finalizada la instalación se pide iniciar Apache y MySQL
para completar la configuración de AppServ, de esta manera ya estará trabajando el
Servidor Web en la computadora. Para ello se hace clic en el botón Finish como se
observa en la figura 4.11.

Figura 4.11 Pantalla final de configuración de AppServ

133
Capitulo 4. Aplicación 134
____________________________________________________________________________

Al terminar para corroborar que se realizo bien la instalación se procede a abrir en


navegador de internet y en la barra de dirección se escribe “localhost:8088”
(AppServNetwork, 2009). Lo que da como resultado la pantalla mostrada en la figura
4.12.

Figura 4.12 Pantalla inicial de AppServ

De igual manera en la figura 4.12 se muestra la página “Index” del servidor con página
Web “index.php”, que da por defecto el programa al escribir la ruta anterior. Sin
embargo esta puede ser cambiada o modificada de acuerdo a distintas necesidades
(AppServNetwork, 2009).

4.3.1.2 USO DE APPSERV Y SU ESTRUCTURA DE DIRECTORIOS

A continuación se muestra la estructura del directorio de Apache, PHP y MySQL


después de la instalación de AppServ (Nogués, 2006).

134
Capitulo 4. Aplicación 135
____________________________________________________________________________

Figura 4.13 Estructura de los directorios de AppServ

Estructura de directorios del Servidor Web Apache:


• apache\bin Programa principal de Apache.
• apache\conf Archivo de configuración de Apache.
• apache\error Plantilla de Error de Apache.
• apache\icons Iconos de Apache.
• apache\logs Archivo de registro de Apache.
• apache\modules Módulos de Apache

Estructura de directorios de la Base de Datos MySQL:


• mysql\bin Archivo de ejecución principal de la base de Datos MySQL.
• mysql\data Almacenamiento de la base de Datos MySQL.
• mysql\share Mensaje de erroe de MySQL.

Estructura de directorios de PHP:


• php Comando de línea de ejecución PHP y librería DLL.
• php\ext Extensión solo para PHP 5.
• php\extension Extensión solo para PHP 4.
• php\PEAR Marco de componentes PEAR para PHP.

Estructura de directorios de almacenamiento de archivos WWW:


• www Directorio raíz para archivos de páginas Web.
135
Capitulo 4. Aplicación 136
____________________________________________________________________________

• www\cgi-bin Directorio de archivos CGI.


• www\phpMyAdmin Directorio del programa phpMyAdmin.
• www\appserv Archivos de AppServ.
• www\index.php Index del servidor, puede ser borrado o remplazado.

Después de la instalación y del entendimiento acerca de la estructura de los directorios,


se pueden realizar los cambios necesarios al servidor, como lo es añadir páginas web
completas o nuevos directorios. Los archivos correspondientes deben ser guardados en
la ruta “C:\AppServ\www”. Si se necesitan realizar pruebas a estos en el navegador de
internet se debe de especificar la ruta en la barra de direcciones. Por ejemplo:
http://localhost/prueba.html (AppServNetwork, 2009).

4.3.1.3 AFINACIÓN DEL SERVIDOR APACHE DE APPSERV

Por último solo queda afinar el servidor, para ello se abre el archivo “httpd.conf”. Se
buscan los módulos mostrados en la tabla x y establecen los valores correspondientes
(Castán, 2008).

Tabla 4.4 Valores para Módulos Multiproceso de Apache

Modulo Multiproceso Valor


StartServers 50
MinSpareServers 15
MaxSpareServers 30
MaxClients 200
MaxRequestsPerChild 2000
ThreadsPerChild 250
MaxRequestsPerChild 2000

Los valores son los recomendados para el uso de Apache en Windows por distintos
desarrolles y Web Masters (ibídem).

136
Capitulo 4. Aplicación 137
____________________________________________________________________________

4.4 SISTEMA DE EMISIÓN DE VIDEO ACTIVE WEBCAM

Active WebCam captura imágenes hasta 30 frames por segundo de cualquier


dispositivo de video, incluyendo cámaras USB, cámaras analógicas conectadas a una
tarjeta de captura, videocámaras con FireWire (IEEE 1394) y cámaras IP. El programa
envía audio y video capturado en tiempo real a una computadora cliente o a través de
un servidor HTTP, el cual puede ser visto en un navegador de internet o en otra copia
del programa Active WebCam (PY Software, 2009).

Active WebCam puede ser usado en:

• Instituciones financieras: Como una solución para incrementar la seguridad, con


archivos de video separados o para acciones específicas hospedadas en un
servidor Web central, además de ofrecer la habilidad de encriptación de video
para una mejor confidencialidad.
• Oficinas, construcciones, centros comerciales y estacionamientos: Con el
continuo monitoreo seguro y fácil de usar, hace de estos lugares más seguros
para los visitantes al incluir cámaras nocturnas o con el evento de detección de
movimiento.
• Tiendas: Como seguridad adicional a los sistemas analógicos que se encuentran
en las tiendas que son muy propensas a la amenaza de los robos. El video es
transmitido vía Web y es guardado en un lugar seguro, siendo mejor que una
cinta que esta fácilmente al alcance de los criminales potenciales.
• Seguridad del hogar: Durante el día desde cualquier lugar remoto se puede
observar a los hijos, a los familiares, mascotas, etc. Mientras que en la noche se
pueden usar configuraciones extras para protección contra robos.

Requerimientos de sistema.

El programa necesita los siguientes requerimientos para poder funcionar


adecuadamente:

137
Capitulo 4. Aplicación 138
____________________________________________________________________________

• Procesador Intel® Pentium® o AMD® @1GHz. o superior.


• 256Mb de RAM.
• 1Gb de espacio en disco duro.
• Sistema operativo Microsoft Windows®.
• Una fuente de video como lo son cámaras análogas, DVR, VCR, cámaras USB o
cámaras IP.

4.4.1 INSTALACIÓN DEL PROGRAMA

Seleccionar y el ejecutar el archivo Active.Webcam.11.xx.exe

Figura 4.14 Pantalla de instalación y selección directorio destino del programa Active WebCam

Si se desea instalar el programa en un directorio diferente, se da clic en el botón


Browse para cambiar la ruta, posteriormente se hace clic en el botón Install para
continuar la instalación.

4.4.2 ESTRUCTURA DE DIRECTORIOS DEL PROGRAMA

El folder del programa contiene todos los archivos necesarios para usar Active
WebCam y los sub folders organizan los archivos de acuerdo a su uso (PY Software,
2008).

138
Capitulo 4. Aplicación 139
____________________________________________________________________________

• \Gallery: Contiene imágenes capturadas, las cuales son creadas con el comando
take a picture.
• \Help: Contiene los archivos de ayuda.
• \Images: Es usado en el método de publicación Web Cam HTTP server.
• \Logs: Contiene los archivos de registro.
• \NetCams Models: Contiene los archivos de configuración de varios tipos de
cámaras IP.
• \Page Templates: Contiene plantillas para Web Page Creation Wizard.

4.4.3 CONECTANDO DISPOSITIVOS

Los dispositivos primordiales son las cámaras USB debido a su bajo costo y
accesibilidad. Para conectar una o más cámaras USB en una computadora:

• Instalar el software que viene con la cámara y reiniciar la computadora.


• Después de reiniciar la computadora, conectar la cámara a un puerto USB.
• Windows mostrará la notificación de Nuevos dispositivos encontrados y el
asistente de instalación buscará el controlador adecuado para el nuevo
dispositivo.
• Ejecutar el programa de Active WebCam.
• Seleccionar Buscar Cámaras en la pantalla de bienvenida o del menú archivo.

139
Capitulo 4. Aplicación 140
____________________________________________________________________________

Figura 4.15 Pantalla de bienvenida del programa con la opción de buscar cámaras seleccionada

De esta manera el programa busca las cámaras conectadas a la computadora y


muestra cada cámara en ventanas separadas, tal y como se muestra a continuación en
la figura 4.16.

Figura 4.16 Pantalla Principal mostrando las cámaras conectadas a la computadora

Para otro tipo de dispositivos tales como cámaras IP, DVR’s, VCR’s o tarjetas de
adquisición consultar el manual de Active WebCam.

140
Capitulo 4. Aplicación 141
____________________________________________________________________________

4.4.4 PANTALLA PRINCIPAL DE ACTIVE WEBCAM

El área de trabajo del programa contiene paneles que se pueden mostrar u ocultar, los
siguientes componentes son los más usados.

• La ventana de las cámaras es usada para control y vista previa de las cámaras.
• La vista previa de las cámaras es usada para seleccionar una cámara y
mostrarla u ocultarla.
• El panel de información muestra información útil acerca del estado de las
cámaras.
• El panel de registro muestra un historial de los eventos y errores, es de ayuda
para la resolución de problemas en un proceso de broadcast. Puede ser impreso
o guardado en un archivo.
• El panel de visitantes muestra un historial de las direcciones IP de los visitantes.
• El panel de la galería muestra pequeñas imágenes de archivos guardados y
capturas.

Figura 4.17 Pantalla del área principal de trabajo de Active WebCam

141
Capitulo 4. Aplicación 142
____________________________________________________________________________

4.4.5 CONFIGURACIÓN DE LAS CÁMARAS

El programa trabaja con muchas fuentes de video simultáneamente, cada fuente es


representada por una ventana de cámara. Las fuentes posibles son cámaras locales
(cámaras USB o tarjetas de adquisición), cámaras de red (cámaras IP Axis®, D-Link®,
etc.) y cámaras remotas (otras cámaras con Active WebCam en un sitio remoto). Para
acceder a la ventana de configuración de las cámaras; En la barra de menús hacer clic
en Settings y posteriormente seleccionar Dispositivos de Audio y Video. Tal y como se
muestra en la figura 4.18, o con la combinación de teclas Ctrl + Alt + I (PY Software,
2008).

Figura 4.18 Forma de acceder a la configuración de las cámaras

Una vez hecho lo anterior se aprecia la ventana de configuración, en la cual se


muestran distintas pestañas. Las cuales son:

• Dispositivo: Contiene la configuración básica de los dispositivos conectados


(cámaras USB, IP o remotas), como lo son la escala, el Frame Rate, el método
de captura, entre otros.
• Compresión: Configura la calidad del audio y del video cambiando el nivel de
compresión para su transmisión o grabación.

142
Capitulo 4. Aplicación 143
____________________________________________________________________________

• Emisión: Es el método de compartir audio y video capturado a usuarios a través


de internet o de la red local.
• Cortar/Escalar: Permite escalar, cortar o rotar la imagen obtenida a través de las
cámaras.
• Grabación: Contiene la configuración para guardar el audio y video de las
fuentes conectadas a la computadora.
• Etiquetas: Configura etiquetas como los son números, texto y capturas
rectangulares en imágenes obtenidas de las fuentes de video.
• Movimiento: Muestra las opciones disponibles para la configuración y acciones
para la detección de movimiento.

Figura 4.19 Pestañas de la ventana de configuración de las cámaras

La primera configuración a realizar es la pestaña Dispositivo, en la cual se introducen


en ambas cámaras los valores de 10 Frames por segundo en el cuadro Frames en vista
previa, y se configura el tamaño de imagen a 320x240 pixeles tal y como se muestra en
la figura 4.20 y 4.21.

143
Capitulo 4. Aplicación 144
____________________________________________________________________________

Figura 4.20 Ventana de configuración de la cámara #1

Figura 4.21 Ventana de configuración de la cámara #2

La siguiente configuración es la compresión, la cual para ambas cámaras se establece


tal y como muestra en la figura 4.22.

144
Capitulo 4. Aplicación 145
____________________________________________________________________________

Figura 4.22 Valores de configuración de compresión para las cámaras

Posteriormente se procede a configurar la emisión de video, para lo cual se selecciona


la opción HTTP Server, para poder usar el servidor instalado anteriormente en la
computadora. Para un buen rendimiento se ingresa en Ratio Frames el valor de 8
frames por segundo para ambas cámaras. Se establece por comodidad para la cámara
#1 el puerto 8080 (Figura 4.23) y para la cámara #2 el puerto 8082 (Figura 4.24).

Figura 4.23 Configuración de emisión de la cámara #1

145
Capitulo 4. Aplicación 146
____________________________________________________________________________

Figura 4.24 Configuración de emisión de la cámara #2

Para configuraciones avanzadas o extras léase el manual de Active WebCam.

4.4.6 CONFIGURACIÓN DE LA EMISIÓN DEL SERVIDOR HTTP

Para habilitar la emisión con el servidor HTTP, se selecciona el menú herramientas y se


hace clic en la opción On/Off Servidor HTTP.

Figura 4.25 Habilitación del servidor HTTP de Active WebCam

146
Capitulo 4. Aplicación 147
____________________________________________________________________________

Una vez activado se selecciona Crear Página Web en el menú Herramientas, lo cual
dará como resultado la pantalla mostrada en la figura 4.26 en la cual se seleccionan las
cámaras que van a ser transmitidas vía Web.

Figura 4.26 Pantalla de bienvenida del asistente de creación de la Web

Una vez realizada la selección se hace clic en siguiente, de esta manera se muestra la
pantalla de selección de Método de Emisión. Para poder usar el servidor instalado en la
computadora se selecciona la primera opción.

Figura 4.27 Pantalla de selección de Método de Emisión

147
Capitulo 4. Aplicación 148
____________________________________________________________________________

La siguiente pantalla es el Método de Muestra (Figura 4.28), en la cual se selecciona el


método de mostrar el video de las cámaras vía Web. Para usar la menor cantidad
posible de recursos de la computadora solo se selecciona Usar ActiveX y para usar el
menor espacio posible en pantalla se selecciona también Ocultar Barra Superior y
Ocultar Barra Inferior.

Figura 4.28 Pantalla de selección de Método de Muestra

A continuación se debe de especificar el nombre del archivo Web a utilizar para la


emisión del video, de igual manera la ruta de la carpeta del servidor. Por facilidad se
utiliza el nombre de archivo de webcam.html y para seleccionar la ruta del servidor se
hace clic en el botón examinar y se selecciona la carpeta “www” del servidor instalado
en el computador.

Figura 4.29 Pantalla de localización de la página Web

148
Capitulo 4. Aplicación 149
____________________________________________________________________________

Figura 4.30 Selección de la ruta de la carpeta “www” del servidor instalado

Por último se especifican las propiedades de la página, como lo son el titulo de la


página, el titulo superior, el titulo inferior, la combinación de colores y la plantilla a
utilizar. En este caso solo se especifica como titulo de página el texto “Cámaras”, se
selecciona la plantilla #3 y se establece un fondo color blanco y color de texto negro
como se muestra en la figura 4.31.

Figura 4.31 Pantalla Propiedades de Página

Ya realizadas todas las configuraciones pertinentes el asistente de creación informa


que ha sido completado el proceso (Figura 4.32), si se desea probar la página Web se
hace clic en el botón Probar Web. Para salvar toda la configuración se da clic en
finalizar.

149
Capitulo 4. Aplicación 150
____________________________________________________________________________

Figura 4.32 Informe del asistente de creación web

4.4.7 CONFIGURAR Y GUARDAR LA SESIÓN

Para un funcionamiento óptimo se configura la sesión realizada hasta el momento. De


esta manera se asegura que todas las configuraciones y las opciones seleccionadas
permanecen activas a pesar de cerrar el programa o de migrar de equipo de cómputo.
Antes que nada en el menú Configuración se selecciona Configuración de Programa, el
cual muestra las Opciones de Programa. En la pestaña General se seleccionan las
opciones: Abrir sesión al arrancar, Abrir Última sesión salvada, Ejecutar cuando
Windows arranque, Iniciar como servicio, Iniciar Minimizado y Minimizar a la barra de
tareas.

150
Capitulo 4. Aplicación 151
____________________________________________________________________________

Figura 4.33 Opciones de programa a seleccionar

Ahora solo resta salvar la sesión, para ello se abre el menú Archivo, se selecciona
Salvar Sesión y se especifica la ruta y el nombre de la sesión.

Figura 4.34 Salvar sesión

151
Capitulo 4. Aplicación 152
____________________________________________________________________________

4.5 PRESENCIA EN INTERNET

Para poder acceder remotamente al Sistema de Adquisición y Transmisión de Datos vía


Ethernet, al servidor Web y de igual manera emitir video, es necesario tener localizado
el router en internet. Esto se consigue mediante la función de DDNS (Sistema Dinámico
de Nombres de Dominio por sus siglas en ingles). Dicha función permite configurar un
router para asociarlo, mediante un nombre de dominio a una dirección IP lo cual lleva a
cabo un servidor, que proporciona soporte para DNS con IP dinámica (ADSLAyuda,
2005).

4.5.1 CONFIGURACIÓN DE DYNDNS

Uno de los servidores que proveen el soporte es propiedad de DynDNS (Dynamic


Network Services, Inc.), la cual es una compañía de Internet de los Estados Unidos de
América dedicada a soluciones de DNS en direcciones IP dinámicas, además ofrece
servicios gratuitos de redirección a IP de subdominios de una gran lista de nombres
disponibles. Para hacer uso de los servicios de DynDNS es necesario abrir una cuenta
en la dirección www.dyndns.com en el apartado Account. Una vez ahí se selecciona el
vínculo Create Account, en donde se debe de elegir un nombre de usuario, una
contraseña y poner una dirección de e-mail, a esa dirección de correo se envía la
confirmación de la creación de la nueva cuenta. Ya con la nueva cuenta creada se inicia
sesión en el apartado Loggin de DynDNS ingresando el nombre de usuario y
contraseña (Minitutorials.com, 2008).

Con la sesión abierta se accede al apartado My Services, en donde se selecciona el


enlace Add Host Services en el apartado Host Level Services como se muestra en la
figura 4.35.

152
Capitulo 4. Aplicación 153
____________________________________________________________________________

Figura 4.35 Apartado My Services de DynDNS

El servicio que se utiliza es el de host dinámico, por lo tanto se selecciona Add Dynamic
DNS Host.

Figura 4.36 Pantalla de selección de adición de servicio de host

En la ventana resultante se especifica lo siguiente:

• Hostname: El nombre de dominio o dirección Web asociada a la cuenta; tesis-


pic.dyndns.org
• IP Adress: La IP publica del router en el momento.
• Enable Wildcard: Si se desea una resolución de dominio www. No seleccionado
por defecto.
• Mail Exchanger (MX): Permite un registro de entrega y recepción de correo. No
seleccionado por defecto.

153
Capitulo 4. Aplicación 154
____________________________________________________________________________

Para finalizar se hace clic en el botón Add Host como se muestra en la figura 4.37.

Figura 4.37 Pantalla de ingreso de datos del nombre de dominio

Ahora se activa el dominio recién creado, lo cual asocia por el momento el nombre de
dominio a la dirección IP del router. Más sin embargo, debido a que los proveedores de
servicio de internet (ISP por sus siglas en ingles) asignan direcciones IP dinámicas a los
usuarios, es necesario establecer una forma de mantener constantemente actualizada
la asociación del nombre de dominio a la IP del router, cuando se realice el cambio de
IP. Un método es mediante hardware, en la cual un router con soporte para la función
de DDNS envía la dirección IP por sí mismo, actualizando la base de datos de DynDNS.
Así de esta manera, cualquiera que escriba la dirección del dominio creado
anteriormente será reenviado a la IP de la computadora. Más sin embargo no todos los
routers soportan esta función, así que por facilidad se selecciona otro método de
actualizar la IP. Este método es mediante un software, que es proporcionado por el
proveedor del servicio de DDNS y que realiza la misma función que la forma detallada
anteriormente. El programa es descargado e instalado en una computadora bajo el
mismo router al que se quiere que tenga presencia en internet, en este caso la
computadora que tiene instalado el servidor (DynDNS, 2009).

Para realizar la instalación se descarga y ejecuta el programa DynDNS Updater de la


dirección www.dyndns.com, en la pantalla de instalación nos muestra el aviso de las
consideraciones antes de realizar la instalación, después muestra el acuerdo de la
licencia que aceptamos haciendo clic en el botón I Agree (Ibídem).

154
Capitulo 4. Aplicación 155
____________________________________________________________________________

Figura 4.38 Consideraciones de instalación y acuerdo de licencia de DynDNS Updater

Posteriormente se muestra la pantalla de selección de componentes (Figura 4.39), en la


que se seleccionan todos para asegurar una instalación completa, después en la
pantalla siguiente se selecciona “Install the DynDNS Updater as a Windows Service”,
para asegurar el funcionamiento del programa haciendo que este inicie antes del inicio
de sesión del usuario de Windows y después del cierre de sesión mientras la
computadora permanezca encendida (Minitutorials.com, 2008).

Figura 4.39 Pantalla de selección de componentes y de instalación como servicio

En la pantalla de selección de la ruta del folder de instalación se selecciona el


establecido por defecto haciendo clic en el botón Install. Para finalizar se hace clic en el

155
Capitulo 4. Aplicación 156
____________________________________________________________________________

botón Finish, lo cual concluye la instalación y ejecuta el programa DynDNS Updater


(Ibídem).

Figura 4.40 Pantalla de selección de ruta de instalación y de conclusión del instalador

La primera vez que se ejecuta el programa pedirá el nombre de usuario y contraseña


que se usó para el registro. Una vez ingresados los datos aparece la pantalla principal
del programa (Figura 4.41) en la que se puede observar un resumen de la cuenta y de
la actividad entre otras opciones. Para realizar la asociación del nombre de dominio con
la IP se hace clic en el vínculo Refresh Host List, con lo que el programa establece
comunicación con DynDNS y da como resultado el nombre de dominio creado
anteriormente, el cual es seleccionado. Ahora se observa la sección de estatus que se
encuentra en la parte inferior izquierda, si está en color verde con una palomita,
significa que la IP esta actualizada, en caso contrario se hace clic en el vinculo Refresh
IP (DynDNS, 2009).

156
Capitulo 4. Aplicación 157
____________________________________________________________________________

Figura 4.41 Pantalla principal del programa DynDNS Updater

4.5.2 CONFIGURACIÓN DEL ROUTER PARA EL DIRECCIONAMIENTO DE


PUERTOS

Para la configuración del router se debe de abrir un navegador de internet y escribir en


la barra de direcciones la dirección IP 192.168.1.254 (Figura 4.42) que es la dirección
IP interna asignada por defecto al router o de igual manera se teclea la palabra home
con lo cual se obtienen los mismos resultados (PortFordward, 2008).

Figura 4.42 Ingreso de la dirección para la configuración del router

La pantalla principal del router se muestra en la figura 4.43 en la cual se da un resumen


del estado y configuración del router, además de distintas opciones que ofrece el router.
Para acceder a la configuración del direccionamiento de puertos se hace clic en la
opción Bloqueo de Intrusos (Ibídem).

157
Capitulo 4. Aplicación 158
____________________________________________________________________________

Figura 4.43 Pantalla principal de configuración del router

En la pantalla principal del bloqueo de intrusos (Figura 4.44) se muestra un resumen de


la configuración, en la cual se muestra una tabla que contienen un listado con los
dispositivos de la red local y sus respectivas aplicaciones a las cuales se les ha
asignado una regla de direccionamiento. Ahora bien se procede a asignar las reglas
necesarias para las aplicaciones que se utilizaran, las cuales son el servidor, las
cámaras de vigilancia y la Aplicación del Sistema de Adquisición y Transmisión de
Datos vía Ethernet. Para ello se hace clic en el hipervínculo Configuración del bloqueo
de intrusos.

Figura 4.44 Pantalla principal del Bloqueo de intrusos

158
Capitulo 4. Aplicación 159
____________________________________________________________________________

En la pantalla se muestran distintas opciones:

• Seleccionar una computadora: En esta se selecciona el dispositivo para al que


se aplicara el direccionamiento de puertos, esta contiene una lista con los
nombres o direcciones IP que son visibles en la LAN (2Wire, 2009).
• Modificar la configuración del bloqueo de intrusos correspondientes a esta
computadora: Permite seleccionar la forma en la que el router dirigirá el tráfico
al dispositivo seleccionado, las distintas opciones son Protección máxima,
Permitir aplicaciones individuales y modo DMZ. En esta opción se selecciona
Permitir aplicaciones individuales (Ibídem).

Ahora se asignan las reglas de direccionamiento al dispositivo, para ello se hace clic en
el hipervínculo Agregar una nueva aplicación definida por el usuario.

Figura 4.45 Pantalla de configuración del sistema de bloqueo de intrusos

159
Capitulo 4. Aplicación 160
____________________________________________________________________________

La pantalla resultante permite modificar la aplicación a la que se le asignará un número


de puerto a un dispositivo deseado. En este caso la primera aplicación asignada será la
del servidor, así que establecen los s valores siguientes:

• Nombre de aplicación: Server8088. Se asigna este nombre como recordatorio


de que esta regla pertenece a la aplicación del servidor que usa el puerto 8088.
• Protocolo: Se selecciona TCP.
• Puerto (o intervalo): Se asigna el valor 8088, que es número de puerto que se
selecciono en el momento de la instalación del servidor Apache.
• Tiempo de espera de protocolo: Se ingresa el valor predeterminado sugerido
por el router, el cual es de 86400 segundos por defecto.
• Asignar al puerto de host: Se deja en blanco por defecto.
• Tipo de aplicación: Se utiliza el predeterminado, el cual es Ninguno.

Por último se hace clic en el botón agregar definición, con lo cual queda establecida la
regla de direccionamiento para la aplicación del servidor.

Figura 4.46 Pantalla de configuración de aplicación

160
Capitulo 4. Aplicación 161
____________________________________________________________________________

Ahora para la aplicación de vigilancia de Active WebCam, se repiten los mismos pasos,
pero ingresando los siguientes valores para dos aplicaciones:

• Nombre de aplicación: Camara 1.


• Protocolo: TCP.
• Puerto (o intervalo): 8080.
• Tiempo de espera de protocolo: 86400.
• Asignar al puerto de host: En blanco.
• Tipo de aplicación: Ninguno.

• Nombre de aplicación: Camara 2.


• Protocolo: TCP.
• Puerto (o intervalo): 8082.
• Tiempo de espera de protocolo: 86400.
• Asignar al puerto de host: En blanco.
• Tipo de aplicación: Ninguno.

A continuación se asigna otra aplicación la cual será usada por la aplicación del
Sistema de Adquisición y Transmisión de Datos vía Ethernet, los valores son los
siguientes:

• Nombre de aplicación: PIC.


• Protocolo: TCP.
• Puerto (o intervalo): 80.
• Tiempo de espera de protocolo: 86400.
• Asignar al puerto de host: En blanco.
• Tipo de aplicación: Ninguno.

Por último en la pantalla de configuración del sistema de bloqueo de intrusos se


proceden a alojar o direccionar las aplicaciones al dispositivo correspondiente.

161
Capitulo 4. Aplicación 162
____________________________________________________________________________

Se comenzará con la aplicación pic hacia la Aplicación del Sistema de Adquisición y


Transmisión de Datos vía Ethernet, para ello en la lista de selección de computadora se
selecciona el nombre que fue otorgado por el router, el cual es su dirección IP interna:
192.168.1.75. Posteriormente se selecciona Permitir aplicaciones individuales, en
donde se selecciona la aplicación “pic” y se hace clic en el botón AGREGAR.

Figura 4.47 Alojamiento de una aplicación a un dispositivo

El resultado se observa en la siguiente figura.

Figura 4.48 Resultado del alojamiento de la aplicación

162
Capitulo 4. Aplicación 163
____________________________________________________________________________

Ahora repitiendo el procedimiento anterior se alojan las aplicaciones server8088,


cámara 1 y cámara 2, a la computadora donde se encuentra instalado el servidor
apache.

Figura 4.49 Alojamiento de las aplicaciones server8088, cámara 1 y cámara 2

Para asegurar que lo anterior se realizó con éxito, se hace clic en el hipervínculo
resumen, luego en la pantalla resultante se hace clic en el botón VER DETALLES
(Figura 4.50), lo que mostrará los detalles del bloqueo de intrusos. En esta pantalla
observa una tabla que muestra los dispositivos de la LAN que contienen reglas de
direccionamiento, las aplicaciones permitidas del dispositivo, el tipo de protocolo, el
número de puerto asignado a la aplicación y la dirección IP pública.

Figura 4.50 Detalles del bloqueo de intrusos

163
Capitulo 4. Aplicación 164
____________________________________________________________________________

4.6 SITIO WEB EXTERNO

El propósito de crear el sitio Web externo es hacer uso pleno del Servidor Web externo.
Esto es haciendo uso de la capacidad de almacenamiento del equipo de cómputo en
donde está alojado el servidor y de otros enlaces Web. De esta manera se pueden
mostrar las posibilidades de una mayor expansión del Sistema de Adquisición y
Transmisión de Datos vía Ethernet. El diseño del sitio Web externo se basa en su
correcto manejo, para unir streaming de video, el sitio Web interno y algunos extras que
se deseen agregar, todo en un solo entorno agradable y de fácil uso para el cliente.
Las páginas Web que integrarán el sitio utilizaran elementos comunes que se pueden
encontrar actualmente en muchos sitios Web, tal como: El uso de Scripts de Java, CSS,
Frames, Iframes, objetos Flash, Etc. De igual manera el sitio se diseña para una
resolución de pantalla estándar de 1024 x 768 pixeles y para una navegación con
Internet Explorer 7 o superior.

4.6.1 DISEÑO DE LAS PÁGINAS WEB

La página principal que es donde se comienza la navegación del sitio Web externo
debe contener el nombre “index.html”, que es el nombre por defecto recomendado para
que un servidor reconozca la página principal. La página “index.html” hará uso de
frames para la navegación del sitio Web entero, esto significa que se debe de crear un
encabezado y un pie de página con su respectiva página Web.

De igual manera otras páginas a utilizar son:

• Portada.
• El documento electrónico de la presente tesis.
• La aplicación del Sistema de Adquisición y Transmisión de Datos vía Ethernet.
• El streaming de video.
• Documentos anexos con vínculos de almacenamiento externo.

164
Capitulo 4. Aplicación 165
____________________________________________________________________________

Las páginas Web a crear se deben guardar en el directorio de almacenamiento de


archivos del servidor y tener la siguiente estructura:

• www\ Carpeta principal de almacenamiento de las páginas Web.


• www\IMG Carpeta de almacenamiento de imágenes a utilizar.
• www\paginas Carpeta de almacenamiento de páginas auxiliares.

4.6.2 CREACIÓN DE LAS PÁGINAS WEB

Index.html

Contiene la interfaz de navegación del sitio Web y es la página principal usada por el
Servidor Web Externo. Es compuesta por los frames encabezado, pie y main.

Encabezado.html

La página Web encabezado contiene la barra de navegación, con la cual se realiza el


desplazamiento entre las distintas páginas que contienen el sitio. Para mostrar la
capacidad de contenido dinámico se utilizan Javascripts. El resultado en pantalla del
código se muestra en la figura 4.51.

Figura 4.51 Página encabezado.html


Pie.html

Contiene la información que se desee mostrar, en este caso solo se muestra texto, más
sin embargo se puede usar otro tipo de contenido (Objetos de control, estadísticas,
vínculos, etc.).

165
Capitulo 4. Aplicación 166
____________________________________________________________________________

El resultado en pantalla del código se muestra en la figura 4.52.

Figura 4.52 Página pie.html

Portada.html

Es la presentación del sitio Web que se muestra al cliente, el resultado en pantalla del
código se muestra en la figura 4.53.

Figura 4.53 Página portada.html

Tesis.html

Contiene el documento electrónico de la presente tesis, para ello se pueden utilizar


distintas formas de presentación. La forma elegida es un documento flash generado a
partir de archivo con formato PDF.

166
Capitulo 4. Aplicación 167
____________________________________________________________________________

El resultado en pantalla del código se muestra en la figura 4.54.

Figura 4.54 Página tesis.html

Aplicación.html

Es la página principal, donde se vinculan el servidor Web interno y el streaming de


video con el servidor Web externo. Los componentes son mostrados mediante el uso de
“iframes”.

El iframe 1 muestra la navegación del sitio del servidor Web interno y los iframes 2 y 3
muestran a visualización de las cámaras #1 y #2 del streaming de video. La
visualización es controlada mediante el uso de contenido dinámico generado por css,
los comandos utilizados son “encender” y “apagar”. Para el comando “apagar” se hace
uso de una página auxiliar “nada.html”.

El resultado en pantalla del código se muestra en la figura 4.55.

Figura 4.55 Página aplicacion.html

167
Capitulo 4. Aplicación 168
____________________________________________________________________________

Nada.html

Es la página auxiliar para el comando “apagar” de la página de aplicación.html. La


función de esta página es llamar a una página en blanco para restablecer el iframe de la
cámara seleccionada.

Vigilancia.html

Muestra únicamente las cámaras de la emisión de video para aplicaciones de vigilancia.


El resultado en pantalla del código se muestra en la figura 4.56.

Figura 4.56 Página vigilancia.html

Documentos.html

En esta página se muestra una forma de utilizar vínculos externos para


almacenamiento de datos, los documentos pueden estar en distintos formatos. Los
documentos utilizados en este caso son datasheets de los componentes del Sistema de
Adquisición y Transmisión de Datos vía Ethernet, al igual que la correspondiente tesis.

El resultado en pantalla del código se muestra en la figura 4.57.

168
Capitulo 4. Aplicación 169
____________________________________________________________________________

Figura 4.57 Página documentos.html

3.5.3 PRUEBA DEL SITIO WEB EXTERNO

Para la prueba del sitio Web externo se conecta el Sistema de Adquisición y


Transmisión de Datos vía Ethernet a la red local, se inicializa el sistema de streaming
de video Active WebCam y se comprueba que la dirección IP este actualizada en el
programa DynDNS Updater. Con todo lo anterior listo, desde un navegador en una
computadora fuera de la red local se ingresa la dirección “http://tesis-
pic.dyndns.org:8088”. Una vez en la página principal (index.html), se procede a probar
el contenido del sitio Web haciendo clic en los hipervínculos que lo componen. Los
resultados de muestran en las figuras 4.58, 4.59, 4.60, 4.61 y 4.62.

169
Capitulo 4. Aplicación 170
____________________________________________________________________________

Figura 4.58 Prueba de la página http://tesis-pic.dyndns.org e hipervínculo Portada

Figura 4.59 Prueba del hipervínculo Tesis

170
Capitulo 4. Aplicación 171
____________________________________________________________________________

Figura 4.60 Prueba del hipervínculo Aplicación

Figura 4.61 Prueba del hipervínculo Vigilancia

171
Capitulo 4. Aplicación 172
____________________________________________________________________________

Figura 4.62 Prueba del hipervínculo Documentos

Como se puede apreciar en la figura 4.60 la página contenida en el hipervínculo


aplicación une al servidor HTTP interno del Sistema de Adquisición y Transmisión de
Datos vía Ethernet con el sitio Web del servidor HTTP externo y la emisión de video.

172
Capitulo 4. Aplicación 173
____________________________________________________________________________

4.7 APLICACIONES FUTURAS

En base a las características y capacidades del Sistema de Adquisición y Transmisión


de Datos vía Ethernet, se mencionan a continuación algunas áreas en las que se podría
aplicar, las cuales son:

• Automatización Industrial
o Control industrial
o Monitoreo de suministro de energía
o Monitoreo del servidor de red
o Monitoreo y control ambiental
• Automatización en construcciones
o Seguridad y control de incendios
o Control de acceso
o Paneles de seguridad
o Control de iluminación
o Intercomunicación VoIP
• Control casero
o Seguridad
o Electrodomésticos de red
• Control comercial
o Aparatos de cocina
o Dispensadores de bebidas
o Minibares de hoteles
o Terminales de punto de venta.

Como se puede observar el rango de posibilidades de aplicación del sistema va desde


el control industrial o casero, hasta para fines comerciales. En cada una de estas áreas
de aplicación se puede tomar ventaja del control remoto y monitoreo, las cuales pueden
ser complementadas con la interacción y el uso de distintas tecnologías y herramientas
existentes hoy en día como se puede apreciar en la figura 4.63.

173
Capitulo 4. Aplicación 174
____________________________________________________________________________

Figura 4.63 Relación con otras tecnologías y herramientas y posibles aplicaciones futuras

Así de esta manera se dejan abiertas las posibilidades de la aplicación futura del
presente trabajo.

174
Conclusiones 174
____________________________________________________________________________

CONCLUSIONES

La adquisición y transmisión de datos fue posible mediante la implementación del


hardware de la tarjeta PICDEM.NET.2, además del desarrollo de software mediante
código fuente para aplicaciones embebidas. Así de esta manera se desarrollo un
sistema modular y flexible que integró todos los bloques necesarios para una interfaz
Ethernet completa con conectividad a internet gracias al stack TCP/IP.

Una vez diseñado, se realizo la prueba de su funcionamiento para posteriormente


desarrollar una aplicación que muestre las capacidades y características del sistema. La
aplicación consistió en utilizar el sistema de manera embebida como parte de un
servidor HTTP y de aplicaciones TCP/IP. Estos recursos son unidos mediante la
creación de un sitio Web propio, que unió las tecnologías HTML dinámico, FTP, HTTP
CGI, AJAX, DDNS, etc. El sitio Web muestra una interfaz sencilla e intuitiva para el
control de un servidor HTTP embebido del sistema, así como la función de monitoreo y
vigilancia y también información extra para la comprensión del sistema de parte de los
usuarios o clientes. De esta manera se cumplen los objetivos planteados al inicio del
trabajo de tesis.

Además se deja el sistema abierto para futuros trabajos que integren todas las
cualidades y beneficios del sistema para el hogar o la industria.

174
Glosario 175
____________________________________________________________________________

GLOSARIO

10Base2: Estándar de cableado para Ethernet que utiliza cable coaxial fino como
medio de transmisión. La longitud de cada segmento de la red no puede superar los
185 m. Los dispositivos se pueden conectar directamente en serie a la LAN.

10Base5: Estándar de cableado para Ethernet que utiliza cable coaxial grueso de doble
pantalla como medio de transmisión. La longitud de cada segmento de la red no puede
superar los 500 m. El cable va conectado a una unidad MAU (Medium Attachment Unit)
para que los dispositivos se puedan comunicar a través de un puerto AUI (Attachment
Unit Interface) situado en el dispositivo Ethernet.

10BaseFL: Estándar de cableado para Ethernet que utiliza cable de fibra óptica como
medio de transmisión. El cable 10BaseFL ofrece una velocidad de transmisión de 10
Mbits/s.

10BaseT: Estándar de cableado para Ethernet que utiliza dos pares trenzados de hilo
de cobre como medio de transmisión. La distancia máxima permitida entre los
dispositivos o a un hub o un switch de red es de 100 m. Los dispositivos Ethernet se
conectan con un conector de tipo RJ-45. El cable 10BaseT ofrece una velocidad de
transmisión de 10 Mbits/s, mientras que la del cable 100BaseT es de 100 Mbits/s.

ActiveX: ActiveX es una tecnología de Microsoft para el desarrollo de páginas


dinámicas, de igual manera son pequeños programas que se pueden incluir dentro de
páginas web y sirven para realizar acciones de diversa índole. ActiveX tiene presencia
en la programación del lado del servidor y del lado del cliente.

175
Glosario 176
____________________________________________________________________________

ADSL: Asymmetric Digital Subscriber Line (Línea de Suscripción Digital Asimétrica).


ADSL es un tipo de línea DSL. Consiste en una transmisión de datos digitales (la
transmisión es analógica) apoyada en el par simétrico de cobre que lleva la línea
telefónica convencional o línea de abonado, siempre y cuando el alcance no supere los
5,5 km. medidos desde la Central Telefónica, o no haya otros servicios por el mismo
cable que puedan interferir.

AJAX: AJAX significa Asynchronous JavaScript And XML (Javascript y XML


Asíncrono), y es una colección de diversas tecnologías que permiten a los usuarios
enviar peticiones asíncronas a un servidor Web a través de pequeñas llamadas de
JavaScripts.

APACHE: El servidor HTTP APACHE es un servidor web HTTP de código abierto para
plataformas Unix (BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa
el protocolo HTTP y la noción de sitio virtual.

ARP: El Address Resolution Protocol (protocolo de resolución de direcciones) se utiliza


para convertir direcciones IP en direcciones MAC. Dado que se trata de una
herramienta TCP/IP, se utiliza para añadir o borrar información de direcciones MAC o
IP.

Autodetección: Capacidad de un dispositivo Ethernet de 10/100 de interpretar la


velocidad o el modo dúplex del dispositivo conectado. El dispositivo configurará
automáticamente sus parámetros de manera que coincidan con la configuración
requerida.

CGI: Common Gateway Interface (Interfaz de Entrada Común). Es una tecnología


estándar para enlazar aplicaciones externas con información con servidores, como

176
Glosario 177
____________________________________________________________________________

servidores HTTP o Web. CGI es ejecutado en tiempo real, lo que brinda información
dinámica entre un explorador Web y un servidor.

Colisión: Se produce cuando dos o más dispositivos intentan transmitir datos al mismo
tiempo por la misma red. Los datos que colisionan se corrompen.

CSS: Cascading Style Sheets (Hojas de Estilos en Cascada). Son un conjunto de


reglas de formato que determinan el aspecto del contenido de una página Web, además
de modificar dinámicamente el aspecto visual del mismo.

Datagrama. Secuencia de datos autocontenida que transporta información suficiente


para ser encaminada desde el dispositivo de origen hasta el dispositivo de destino sin
que se haya producido previamente interacción alguna entre ambos.

DNS: Domain Name System (Servicio de Nombres de Dominio). Este servicio traduce
los nombres de dominio a una dirección IP numérica asociada con equipo de red para
el propósito de localizar dispositivos o páginas Web en cualquier lugar del mundo

DDNS: Dynamic DNS (DNS Dinámico). La tecnología de DNS Dinámico permite


actualizar la dirección IP de un dominio en tiempo real.

DHCP: Dynamic Host Configuration Protocol (protocolo dinámico de configuración de


equipos). Permite a los equipos solicitar (y recibir) una dirección IP de un servidor
DHCP situado en la LAN. Si no se dispone de servidor DHCP, las direcciones IP deben
definirse de manera estática en la configuración del dispositivo Ethernet.

DHTML: Dymanic HTML (HTML Dinámico). Designa el conjunto de técnicas que


permiten crear sitios web interactivos utilizando una combinación de lenguaje HTML

177
Glosario 178
____________________________________________________________________________

estático, un lenguaje interpretado en el lado del cliente (como JavaScript), el lenguaje


de hojas de estilo en cascada (CSS) y la jerarquía de objetos de un DOM.

Dirección IP: La dirección IP es un número de 32 bits que identifica a un dispositivo de


red. Se compone de cuatro partes. En primer lugar, el identificador de una red concreta,
y en segundo lugar, un identificador del dispositivo determinado dentro de la red.
Actualmente se está implementando un nuevo método: el de las direcciones IPv6.

Dirección MAC: Media Access Control Address (Dirección de Control de Acceso al


Medio es un número hardware único que se asigna al dispositivo Ethernet en el
momento de su fabricación. Por lo general, la dirección MAC no se puede modificar.

DOM: Document Object Model (Modelo de Objetos del Documento). El DOM es una
estructura de objetos que representa absolutamente todos los elementos que
componen una página Web, y mediante él se puede acceder a información de la página
Web, añadir nuevos elementos, modificarlos, etc.

EEPROM: Electrically-Erasable Programmable Read-Only Memory (ROM programable


y borrable eléctricamente). Es un tipo de memoria ROM que puede ser programado,
borrado y reprogramado eléctricamente, a diferencia de la EPROM que ha de borrarse
mediante un aparato que emite rayos ultravioletas. Son memorias no volátiles.

Etiquetado: Capacidad de un dispositivo de red Ethernet de insertar una etiqueta en un


paquete Ethernet para que tenga más prioridad que otros paquetes en la misma red.

Firewall: Es una parte de un sistema o una red que está diseñado para bloquear el
acceso no autorizado, permitiendo al mismo tiempo autorizado de comunicaciones. Se

178
Glosario 179
____________________________________________________________________________

trata de un dispositivo o conjunto de dispositivos configurados para permitir, limitar,


cifrar, descifrar, el tráfico entre los diferentes ámbitos sobre la base de un conjunto de
normas y otros criterios.

Firmware: Firmware (Programación en Firme). Es un bloque de instrucciones de


programa para propósitos específicos, grabado en una memoria de tipo no volátil (ROM,
EEPROM, flash, etc), que establece la lógica de más bajo nivel que controla los
circuitos electrónicos de un dispositivo de cualquier tipo. Al estar integrado en la
electrónica del dispositivo es en parte hardware, pero también es software, ya que
proporciona lógica y se dispone en algún tipo de lenguaje de programación.
Funcionalmente, el firmware es el intermediario (interfaz) entre las órdenes externas
que recibe el dispositivo y su electrónica, ya que es el encargado de controlar a ésta
última para ejecutar correctamente dichas órdenes externas.

Frames: Los frames (marcos o cuadros) permiten dividir la ventana en varias más
pequeñas, de modo que en cada una de ellas se cargua una página html distinta.

Fotorresistencia: Es un componente electrónico cuya resistencia disminuye con el


aumento de intensidad de luz incidente.

FRNT: Fast Re-Configuration Network Topology (Protocolo de Reconfiguración Rápida


de la Topología de Red). Los switches Ethernet se instalan formando múltiples anillos
redundantes. Para reforzar la redundancia los anillos separados se conectan por medio
de enlaces de respaldo.

FTP: File Transfer Protocol (Protocolo de Transferencia de Archivos). Este protocolo es


una de las maneras más sencillas de transferir archivos por Internet. Utiliza los
protocolos TCP/IP.

Full dúplex: Método de comunicación bidireccional en el que las señales pueden


circular en ambas direcciones simultáneamente.

179
Glosario 180
____________________________________________________________________________

Half dúplex: Método de comunicación bidireccional en el que las señales no pueden


circular en ambas direcciones simultáneamente, sino solamente en una de ellas.

HTML: HyperText Markup Language (Lenguaje de Marcas de Hipertexto). Es el


lenguaje de marcado predominante para la construcción de páginas web. Es usado
para describir la estructura y el contenido en forma de texto, así como para
complementar el texto con objetos tales como imágenes, video, etc.

HTTP: HyperText Transfer Protocol (Protocolo de Transferencia de Hipertexto). Es el


protocolo usado en cada transacción de la Web (WWW). Define la sintaxis y la
semántica que utilizan los elementos software de la arquitectura web (clientes,
servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y
sigue el esquema petición-respuesta entre un cliente y un servidor.

Hub: Dispositivo sencillo que permite conectar segmentos de red. Cuando se recibe un
paquete en un puerto, se envía a todos los puertos del hub.

ICMP: Internet Control Message Protocol (Protocolo de Mensajes de Control de


Internet). Es el sub protocolo de control y notificación de errores del Protocolo de
Internet (IP). Como tal, se usa para enviar mensajes de error, indicando por ejemplo
que un servicio determinado no está disponible o que un router o host no puede ser
localizado.

IEEE802.1p: Norma en la que se define la priorización de paquetes. Se trata de un


método de priorización que utiliza la inserción de etiquetas de prioridad en los paquetes.
De este modo, el paquete puede pasar por delante del tráfico de baja prioridad.

180
Glosario 181
____________________________________________________________________________

IEEE802.3: Es la norma de especificación de Ethernet.

IEEE802.3x: Norma de control de flujo Ethernet. Especifica un método de aumentar la


velocidad de un switch cuando el búfer está a punto de desbordarse. Se envía un
paquete que solicita al switch de origen que deje de transmitir paquetes durante cierto
tiempo.

iFrames: Es una etiqueta HTML que permite crear un frame interno dentro de un
documento HTML. El frame interno puede contener un documento HTML (página web)
y presenta un mayor control que los frames tradicionales.

IP: El Internet Protocol (protocolo de Internet) transporta los paquetes de un nodo a otro
sin tener en cuenta su contenido. IP envía cada paquete en función de una dirección de
destino de cuatro bytes (la dirección IP).

ISP: Internet Services Provider (Proveedor de Servicios de Internet). Es una empresa


dedicada a conectar a Internet a los usuarios, o las distintas redes que tengan, y a dar
el mantenimiento necesario para que el acceso funcione correctamente. También
ofrece servicios relacionados, como alojamiento web o registro de dominios, entre otros.

Javascrip: Es un lenguaje de programación desarrollo por Netscape orientado tanto a


procedimientos y a objetos, que aporta características dinámicas (datos variables en
función del tiempo y en el modo de acceso, interactividad con el usuario,
personalización, etc.) a las páginas Web, escritas en lenguaje HTML.

181
Glosario 182
____________________________________________________________________________

LAN: Una red de área local es un grupo de ordenadores o dispositivos Ethernet que
comparte una estructura de comunicaciones. El tamaño de las redes LAN oscila entre
un par de dispositivos y varios cientos.

Máscara de subred: Cuando varios dispositivos Ethernet desean comunicarse por


Internet o a través de un router, debe existir un método que permita al router comprobar
si el destino del paquete se encuentra en la red local o en otra red. El router sabe qué
bits de la máscara de subred debe comprobar, pues un «1» indica que forma parte de la
ID de la red, mientras que un «0» indica que forma parte de la ID del servidor. El límite
entre la ID de la red y la del servidor no se puede determinar analizando únicamente la
dirección IP.

MIB Management Information Base. La base de información de gestión es una base de


datos de objetos en la que se pueden efectuar búsquedas o interrogaciones con un
sistema de gestión que utiliza SNMP.

Microfiltro Son pequeños dispositivos que reducen las interferencias entre la señal
ADSL y la señal telefónica. Estos aparatos le permitirán utilizar equipos telefónicos
(teléfonos, módems analógicos, fax, etc.) en la misma línea y simultáneamente al
servicio ADSL. Por ello debe instalar uno sobre cada equipo telefónico del que vaya a
hacer uso.

MPFS: Microchip File System (Sistema de Archivos de Microchip). Es un sistema de


archivo simple desarrollado por Microchip, que se usa en el servidor HTTP interno para
guardar páginas Web en el EEPROM externo

182
Glosario 183
____________________________________________________________________________

MySQL: My Structured Query Language (Mi Lenguaje de Consulta Estructurado). Es un


sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis
millones de instalaciones. Oracle Corporation desde abril de 200 desarrolla MySQL
como software libre en un esquema de licenciamiento dual.

NAT: Network Address Translation (Traducción de Dirección de Red.) Es un


mecanismo utilizado por routers IP para intercambiar paquetes entre dos redes que se
asignan mutuamente direcciones incompatibles. Consiste en convertir en tiempo real las
direcciones utilizadas y en editar los paquetes para permitir la operación de protocolos
que incluyen información de direcciones dentro de la conversación del protocolo.

NetBIOS: Network Basic Input/Output System (Sistema Básico de Entradas/Salidas de


Red). Es, en sentido estricto, una especificación de interfaz para acceso a servicios de
red, es decir, una capa de software desarrollado para enlazar un sistema operativo de
red con hardware específico. NetBIOS fue originalmente desarrollado por IBM para el
software cliente de recursos de una Red de área local (LAN). Desde su creación,
NetBIOS se ha convertido en el fundamento de muchas otras aplicaciones de red.

NIC: Chip de la tarjeta de red que se encarga de servir como interfaz de Ethernet entre
el medio físico (por ejemplo un cable coaxial) y el equipo (por ejemplo un ordenador
personal o una impresora). Es un chip usado en computadoras o periféricos tales como
las tarjetas de red, impresoras de red o sistemas embebidos para conectar dos o más
dispositivos entre sí a través de algún medio, ya sea conexión inalámbrica , cable UTP,
cable coaxial, fibra óptica, etcétera.

NTP: Network Time Protocol (protocolo de tiempo de red). Estándar de Internet que
garantiza la sincronización horaria de los relojes instalados en los dispositivos Ethernet
con una precisión del orden de un milisegundo. El protocolo se basa en TCP/IP.

183
Glosario 184
____________________________________________________________________________

OPC: Open Process Control (Control de procesos Abierto). Estándar abierto que
permite a los dispositivos comunicarse entre sí de forma totalmente abierta con
independencia de quién haya fabricado cada uno de ellos.

Paquete: Es la unidad de datos que se transmite de un dispositivo de origen a otro de


destino en Internet. Cuando un dispositivo solicita datos, la capa TCP del protocolo
TCP/IP divide el archivo en paquetes.TCP/IP numera cada uno de los paquetes de tal
modo que, aunque se transmitan por caminos diferentes, es posible restaurarlos
correctamente en el dispositivo de destino. El tamaño de los paquetes varía entre 48 y
1.518 bytes (1.522 bytes si incluyen una etiqueta de prioridad).

PAP: Password Authentication Protocol. El protocolo de autenticación de contraseña


envía una contraseña en texto no cifrado al servidor con fines de comparación.

PHP: Acronimo recursico para PHP: Hypertext Preprocessor y es un lenguaje de


programación interpretado, diseñado originalmente para la creación de páginas web
dinámicas.

PHY: Physical Leyer Protocol. La subcapa PHY especifica detalles de transmisión,


como codificación y decodificación de paquetes de datos en secuencias de símbolos.

PPP: Point to Point Protocol (Protocolo Punto a Punto). Protocolo de comunicación que
permite al PC conectarse a cualquier dispositivo Ethernet adicional a través de un
enlace serie y comunicarse con él.

R
184
Glosario 185
____________________________________________________________________________

Relevador: Es un dispositivo que controla el estado de un interruptor mediante una


entrada eléctrica. En su interior, posee comúnmente una bobina que al energizarse -por
Ley de Faraday- induce una fuerza magnética que cambia el estado del interruptor.

Router: Un router o encaminador es un dispositivo conectado al menos a dos redes


que determina el siguiente punto de red al que debe transmitirse un paquete.
Normalmente, el paquete pasa por varios routers antes de llegar a su destino final. Los
routers más complejos disponen de tablas de rutas que les permiten determinar el
trayecto más rápido o rentable.

Sistema Embebido: Es un sistema informático de uso específico construido dentro de


un dispositivo mayor. Los sistemas integrados se utilizan para usos muy diferentes de
los usos generales para los que se emplea un ordenador personal. En un sistema
integrado la mayoría de los componentes se encuentran incluidos en la placa base (la
tarjeta de vídeo, audio, módem, etc.).

SNMP: Simple Network Management Protocol (Protocolo de Gestión de Red Simple).


Los dispositivos configurados para admitir el protocolo SNMP hacen búsquedas en la
red individual o los dispositivos Ethernet de datos que se encuentran en su MIB.
SNTP: Simple Network Time Protocol (Protocolo de Tiempo de Red Simple). Este
protocolo es una versión simplificada del protocolo de tiempo de red (NTP).

SPI: Serial Peripheral Interface Bus (Bus Serial de Interfaz de Periféricos). Es un


estándar de enlace de datos seriales sincronizados por un reloj que operan en modo full
duplex. Los dispositivos se comunican en modo maestro/esclavo donde el dispositivo
maestro inicia el data frame (trama de red o marco de datos). Múltiples dispositivos
esclavos están permitidos en líneas Slave Select (SS) individuales. En otras palabras, el
bus SPI permite la comunicación entre circuitos integrados de equipos electrónicos.

185
Glosario 186
____________________________________________________________________________

SSL: Secure Sockets Layer (Protocolo de Capa de Conexión Segura). Son protocolos
criptográficos que proporcionan comunicaciones seguras por una red, comúnmente
Internet.

Streaming: Es un término que se refiere a ver, oír o ejecutar un archivo directamente


en una página web sin necesidad de descargarlo antes al ordenador. De igual manera
se refiere al término de emitir desde un computador audio, video o contenido multimedia
hacia Internet.

Subred: Sección identificable de una red más grande. Por ejemplo, puede consistir en
todos los dispositivos de un edificio o una zona de procesamiento.

Switch: Dispositivo Ethernet que filtra y transmite paquetes entre segmentos de la LAN.
El switch opera en el nivel de enlace de datos (nivel 2) y ocasionalmente en el nivel de
red (nivel 3). Los paquetes que llegan a un puerto se analizan para determinar si tienen
errores y sólo se envían al puerto que tiene una conexión con el dispositivo de destino.

TCP: Transmission Control Protocol (Protocolo de Control de Transmisión). Se encarga


de entregar y verificar los datos transmitidos de un dispositivo a otro. El protocolo
detecta los errores o datos perdidos y puede activar una retransmisión hasta que los
datos se hayan recibido completos y sin errores.

TFTP: Trivial file transfer Protocol (Protocolo de transferencia de archivos trivial). Es un


protocolo de transferencia muy simple semejante a una versión básica de FTP. TFTP a
menudo se utiliza para transferir pequeños archivos entre ordenadores en una red,
como cuando un terminal X Window o cualquier otro cliente ligero arrancan desde un
servidor de red.

186
Glosario 187
____________________________________________________________________________

TP: Puerto de par trenzado de cobre.

Trama: Una trama es un conjunto de datos que se transmite entre dos dispositivos
Ethernet como una unidad completa con información de direccionamiento y control de
protocolo. La información se transmite en serie, bit a bit.

Transistor: es un dispositivo electrónico semiconductor que cumple funciones de


amplificador, oscilador, conmutador o rectificador.

URL: Uniform Resource Locator (Localizador Uniforme de Recursos). Es una secuencia


de caracteres, de acuerdo a un formato estándar, que se usa para nombrar recursos,
como documentos e imágenes en Internet, por su localización.

UDP: User Datagram Protocol (Protocolo de Datagramas de Usuario). Se encarga de


transmitir los datos de un dispositivo a otro. Normalmente utiliza IP en la transmisión,
pero al contrario de TCP, no permite dividir el mensaje en paquetes que puedan
restaurarse correctamente una vez llegados a su destino. Por consiguiente, la
aplicación que utilice UDP debe ser capaz de detectar que el mensaje o los datos se
han recibido correctamente. Con todo, UDP tiene la ventaja de que transmite los datos
a mayor velocidad y con menos sobrecarga que TCP. UDP es ideal en las aplicaciones
que requieren la transmisión de volúmenes reducidos de datos a gran velocidad.

WAN: Una Network o Red de Área Extendida es una red de comunicaciones


geográficamente dispersa.

187
Apéndice A. Código fuente .C 188
____________________________________________________________________________

APÉNDICE A

CÓDIGO FUENTE .C

En este apéndice se muestra el código fuente del programa principal para el


funcionamiento de la tarjeta de desarrollo PICDEM.net.2.

A.1 MAIN.C

//APLICACIÓN DEL SERVIDOR WEB USANDO EL STACK TCP/IP DE MICROCHIP


// Se define únicamente este archivo como principal para la
//entrada/aplicación de todo el proyecto, solamente se hace una
//definición y el archivo define la variable AppConfig.

#define THIS_IS_STACK_APPLICATION
#define VERSION "v3.75" // Versión del Stack TCP/IP
#define BAUD_RATE (19200) // bps

// Estas cabeceras se incluyen para los defs requeridos


#include <string.h>
#include "..\Include\Compiler.h"
#include "..\Include\StackTsk.h"
#include "..\Include\Tick.h"
#include "..\Include\MAC.h"
#include "..\Include\Helpers.h"
#include "..\Include\Delay.h"
#include "..\Include\UART.h"
#include "..\Include\MPFS.h"
#include "..\Include\LCDBlocking.h"
#include "..\Include\GenericTCPClient.h"
#if defined(STACK_USE_DHCP)
#include "..\Include\DHCP.h"
#endif

#if defined(STACK_USE_HTTP_SERVER)
#include "..\Include\HTTP.h"
#endif

#if defined(STACK_USE_FTP_SERVER) && defined(MPFS_USE_EEPROM)

188
Apéndice A. Código fuente .C 189
____________________________________________________________________________

#include "..\Include\FTP.h"
#endif

#if defined(STACK_USE_ANNOUNCE)
#include "..\Include\Announce.h"
#endif

#if defined(MPFS_USE_EEPROM)
#include "..\Include\XEEPROM.h"
#endif

#if defined(STACK_USE_NBNS)
#include "..\Include\NBNS.h"
#endif

#if defined(STACK_USE_DNS)
#include "..\Include\DNS.h"
#endif

#if defined(STACK_USE_GENERIC_TCP_EXAMPLE)
#include "..\Include\GenericTCPClient.h"
#endif

#define USART_USE_BRGH_LOW
#if defined(USART_USE_BRGH_LOW)
#define SPBRG_VAL ( ((INSTR_FREQ/BAUD_RATE)/16) - 1)
#else
#define SPBRG_VAL ( ((INSTR_FREQ/BAUD_RATE)/4) - 1)
#endif

#if (SPBRG_VAL > 255) && !defined(__C30__)


#error "Calculated SPBRG value is out of range for currnet
CLOCK_FREQ."
#endif

// Este es usado para otros elementos del Stack.


// La aplicación principal se define y se inicializa con los
valores aprpiados.
APP_CONFIG AppConfig =
{
{MY_DEFAULT_IP_ADDR_BYTE1, MY_DEFAULT_IP_ADDR_BYTE2,
MY_DEFAULT_IP_ADDR_BYTE3, MY_DEFAULT_IP_ADDR_BYTE4},
{MY_DEFAULT_MAC_BYTE1, MY_DEFAULT_MAC_BYTE2,
MY_DEFAULT_MAC_BYTE3, MY_DEFAULT_MAC_BYTE4, MY_DEFAULT_MAC_BYTE5,
MY_DEFAULT_MAC_BYTE6},
{MY_DEFAULT_MASK_BYTE1, MY_DEFAULT_MASK_BYTE2,
MY_DEFAULT_MASK_BYTE3, MY_DEFAULT_MASK_BYTE4},

189
Apéndice A. Código fuente .C 190
____________________________________________________________________________

{MY_DEFAULT_GATE_BYTE1, MY_DEFAULT_GATE_BYTE2,
MY_DEFAULT_GATE_BYTE3, MY_DEFAULT_GATE_BYTE4},
{MY_DEFAULT_DNS_BYTE1, MY_DEFAULT_DNS_BYTE2,
MY_DEFAULT_DNS_BYTE3, MY_DEFAULT_DNS_BYTE4},
{0b00000001}, // Banderas, activan el DHCP
};

BYTE myDHCPBindCount = 0;
#if defined(STACK_USE_DHCP)
extern BYTE DHCPBindCount;
#else
#define DHCPBindCount (0xFF)
#endif

//Establezca la configuración de fusibles.


#if defined(__18CXX)
#if defined(__18F8722)
// Tarjeta de exploración PICDEM HPC
#pragma config OSC=HSPLL, FCMEN=OFF, IESO=OFF,
PWRT=OFF, WDT=OFF, LVP=OFF
#elif defined(__18F87J10) || defined(__18F86J15) ||
defined(__18F86J10) || defined(__18F85J15) || defined(__18F85J10)
|| defined(__18F67J10) || defined(__18F66J15) ||
defined(__18F66J10) || defined(__18F65J15) || defined(__18F65J10)
// Tarjeta exploratoria PICDEM HPC
#pragma config XINST=OFF, WDTEN=OFF, FOSC2=ON,
FOSC=HSPLL
#elif defined(__18F97J60) || defined(__18F96J65) ||
defined(__18F96J60) || defined(__18F87J60) || defined(__18F86J65)
|| defined(__18F86J60) || defined(__18F67J60) ||
defined(__18F66J65) || defined(__18F66J60)
// Tarjeta PICDEM.net 2
#pragma config XINST=OFF, WDT=OFF, FOSC2=ON,
FOSC=HSPLL, ETHLED=ON
#elif defined(HI_TECH_C)
// Tarjeta PICDEM HPC Explorer
__CONFIG(1, HSPLL);
__CONFIG(2, WDTDIS);
__CONFIG(3, MCLREN);
__CONFIG(4, XINSTDIS & LVPDIS);
#elif defined(__18F4620)
// Tarjeta PICDEM.net
// #pragma config OSC=HS, WDT=OFF, MCLRE=ON, PBADEN=OFF,
LVP=OFF, XINST=OFF
#elif defined(__18F452)
// Tarjeta PICDEM.net

190
Apéndice A. Código fuente .C 191
____________________________________________________________________________

#pragma config OSC=HS, WDT=OFF, LVP=OFF


#endif
#elif defined(__PIC24F__)
// Tarjeta Explorer 16
_CONFIG2(FNOSC_PRIPLL & POSCMOD_XT) // XT primario
OSC with 4x PLL
_CONFIG1(JTAGEN_OFF & FWDTEN_OFF) // Apagado JTAG,
// apagado del perro
// guardián.
#elif defined(__dsPIC33F__) || defined(__PIC24H__)
// Tarjeta Explorer 16
_FOSCSEL(FNOSC_PRIPLL) // Activar PLL
_FOSC(OSCIOFNC_OFF & POSCMD_XT) // Oscilador XT
_FWDT(FWDTEN_OFF) // Desabilitar perro
// guardian
// JTAG debe ser deshabilitado también
#elif defined(__dsPIC30F__)
// Tarjeta dsPICDEM 1.1
_FOSC(XT_PLL16) // XT Osc + 16X PLL
_FWDT(WDT_OFF) // Desabilita el perro
//guardian
_FBORPOR(MCLR_EN & PBOR_OFF & PWRT_OFF)
#endif
// Funciones de ayuda privada.
// Estos pueden estar presentes o no en todas las aplicaciones
static void InitAppConfig(void);
static void InitializeBoard(void);
static void ProcessIO(void);
BOOL StringToIPAddress(char *str, IP_ADDR *buffer);
static void DisplayIPValue(IP_ADDR *IPVal);
static void SetConfig(void);
static void FormatNetBIOSName(BYTE Name[16]);
#if defined(MPFS_USE_EEPROM)
static BOOL DownloadMPFS(void);
static void SaveAppConfig(void);
#else
#define SaveAppConfig()
#endif
#if defined(HI_TECH_C)
void interrupt HighISR(void)
#else
#pragma interruptlow HighISR
void HighISR(void)
#endif
{
#ifdef __18CXX
TickUpdate();

191
Apéndice A. Código fuente .C 192
____________________________________________________________________________

#endif

#if defined(STACK_USE_SLIP)
MACISR();
#endif
}
#if defined(__18CXX) && !defined(HI_TECH_C)
#pragma code highVector=0x08
void HighVector (void)
{
_asm goto HighISR _endasm
}
#pragma code // Regresa a la sección de código establecida.
#endif
ROM char NewIP[] = "New IP Address: ";
ROM char CRLF[] = "\r\n";
// Aplicación principal entrada de puntos.
#ifdef __C30__
int main(void)
#else
void main(void)
#endif
{
static TICK t = 0;

// Inicializa cualquier aplicación de hardware especifico.


InitializeBoard();

#ifdef USE_LCD
// Inicializa y muestra la versión de stack en la LCD
LCDInit();
DelayMs(100);
strcpypgm2ram(LCDText, "TCPStack " VERSION " "
" ");
LCDUpdate();
#endif

// Inicializa todos los componentes relacionados con la pila.


// Pasos que deben ser seguidos para todas las aplicaciones
// usadas
// PICmicro TCP/IP Stack.
TickInit();

// PICmicro TCP/IP Stack.


MPFSInit();

// Cargar el nombre de host NetBIOS predeterminado.

192
Apéndice A. Código fuente .C 193
____________________________________________________________________________

memcpypgm2ram(AppConfig.NetBIOSName, (ROM
void*)MY_DEFAULT_HOST_NAME, 16);
FormatNetBIOSName(AppConfig.NetBIOSName);

// Inicializar la pila y aplicaciones relacionadas con las


// variables NV.
InitAppConfig();
// Iniciar el proceso de instalación de la tarjeta si el
// botón esta encendido.
if(BUTTON0_IO == 0)
{
SetConfig();
}
StackInit();
#if defined(STACK_USE_HTTP_SERVER)
HTTPInit();
#endif
#if defined(STACK_USE_FTP_SERVER) && defined(MPFS_USE_EEPROM)
FTPInit();
#endif
#if defined(STACK_USE_DHCP) || defined(STACK_USE_IP_GLEANING)
if(!AppConfig.Flags.bIsDHCPEnabled)
{
// Fuerza a la dirección IP a mostrar actualización.
myDHCPBindCount = 1;
#if defined(STACK_USE_DHCP)
DHCPDisable();
#endif
}
#endif
// Una vez que se inicializan todos los elementos, entrar en
// bucle infinito, y dejar que la pila ejecute sus tareas. Si
// la aplicación tiene que realizar su propia tarea, debe
// hacerse al final del bucle while. Tenga en cuenta que esta
// es una "cooperativa multi-tarea" mecanismo por el que cada
// una de las tareas realiza sus tareas (si todos en un tiro
// o parte de ella) y devuelve a fin de que otras tareas
// pueden hacer su trabajo. Si un grupo de necesidades desde
// hace mucho tiempo para realizar su trabajo, debe dividirse
// en piezas más pequeñas a fin de que otras tareas pueden
// tener tiempo de CPU.
while(1)
{
// Sistema LED preparado cada Segundo
if ( TickGetDiff(TickGet(), t) >= TICK_SECOND/2 )
{
t = TickGet();

193
Apéndice A. Código fuente .C 194
____________________________________________________________________________

LED0_IO ^= 1;
}

// Esta tarea lleva a cabo tareas normales de pila incluida la


// comprobación de los paquetes, el tipo de paquete y pidiendo
pila
// entidad apropiada para procesar la misma.
StackTask();
#if defined(STACK_USE_HTTP_SERVER)
// Esta es una aplicación TCP Esta lista en el puerto 80.
// Con uno o más sockets responde a las aplicaciones
// remotas.
HTTPServer();
#endif
#if defined(STACK_USE_FTP_SERVER) && defined(MPFS_USE_EEPROM)
FTPServer();
#endif
#if defined(STACK_USE_ANNOUNCE)
DiscoveryTask();
#endif
#if defined(STACK_USE_NBNS)
NBNSTask();
#endif
#if defined(STACK_USE_GENERIC_TCP_EXAMPLE)
GenericTCPClient();
#endif
// En el futuro como nuevas aplicaciones TCP/IP están escritas
// Agrega tu aplicación especifica a la tarea aquí.
ProcessIO();
// Para la información DHCP, se muestra varias veces
//cuando se renueva la IP
// se configura desde el ultimo restablecimiento.
if ( DHCPBindCount != myDHCPBindCount )
{
myDHCPBindCount = DHCPBindCount;
putrsUART(NewIP);
DisplayIPValue(&AppConfig.MyIPAddr); // Imprime UART
putrsUART(CRLF);
#if defined(STACK_USE_ANNOUNCE)
AnnounceIP();
#endif
}

}
}
static void DisplayIPValue(IP_ADDR *IPVal)
{

194
Apéndice A. Código fuente .C 195
____________________________________________________________________________

// printf("%u.%u.%u.%u", IPVal->v[0], IPVal->v[1], IPVal->v[2],


IPVal->v[3]);
BYTE IPDigit[5];
#ifdef USE_LCD
BYTE i;
BYTE LCDPos=16;
#endif
itoa(IPVal->v[0], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)
{
LCDText[LCDPos++] = IPDigit[i];
}
LCDText[LCDPos++] = '.';
#endif
while(BusyUART());
WriteUART('.');

itoa(IPVal->v[1], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)
{
LCDText[LCDPos++] = IPDigit[i];
}
LCDText[LCDPos++] = '.';
#endif
while(BusyUART());
WriteUART('.');

itoa(IPVal->v[2], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)
{
LCDText[LCDPos++] = IPDigit[i];
}
LCDText[LCDPos++] = '.';
#endif
while(BusyUART());
WriteUART('.');

itoa(IPVal->v[3], IPDigit);
putsUART(IPDigit);
#ifdef USE_LCD
for(i=0; i < strlen(IPDigit); i++)

195
Apéndice A. Código fuente .C 196
____________________________________________________________________________

{
LCDText[LCDPos++] = IPDigit[i];
}

while(LCDPos < 32)


{
LCDText[LCDPos++] = ' ';
}
LCDUpdate();
#endif
while(BusyUART());
}
static char AN0String[8];
//static char AN1String[8] = "";

static void ProcessIO(void)


{
#ifdef __C30__
// Nota: floats y sprintf usan una gran cantidad de memoria y
// ciclos de CPU por lo que se comenta solo el float de
// temperatura

// // Convierte el resultado de la temperatura en una cadena


// ASCII
// Temperature = ((float)(ADC1BUF0)*(3.3/1024.)-0.500)*100.;
// sprintf(AN1String, "%3.1f°C", Temperature);
// Convierte el resultado del potenciómetro en una cadena
// ASCII
itoa((unsigned)ADC1BUF0, AN0String);
#else
// AN0 ya debe estar configurado como una entrada analógica.
ADCON0bits.GO = 1;

// Espere a que la conversión A/D se realice


while(ADCON0bits.GO);
#if !defined(__18F452)
PRODL = ADCON2;
ADCON2bits.ADCS0 = 1;
ADCON2bits.ADCS1 = 1;
ADCON2 = PRODL;
#endif
// Convertir el valor 10-bit a una cadena ASCII
itoa(*((WORD*)(&ADRESL)), AN0String);
#endif
}
// Código de comandos CGI
#define CGI_CMD_DIGOUT (0)

196
Apéndice A. Código fuente .C 197
____________________________________________________________________________

#define CGI_CMD_LCDOUT (1)


#define CGI_CMD_RECONFIG (2)

// Codigos Variables CGI- Podria haber 00h-FFH


// NOTA: Cuando especificamos variables en nuestras paginas
dinamicas (.cgi) specifying variables in your dynamic pages
(.cgi), utilizar el esquema de numeración hexadecimal y siempre
que la almohadilla cero hacer exactamente dos caracters. Ej:
“%04”,”%2c”; no “%4” o “%02C”
#define VAR_LED0 (0x00)
#define VAR_LED1 (0x01)
#define VAR_LED2 (0x10)
#define VAR_LED3 (0x11)
#define VAR_LED4 (0x12)
#define VAR_LED5 (0x13)
#define VAR_LED6 (0x14)
#define VAR_LED7 (0x15)
#define VAR_ANAIN_AN0 (0x02)
#define VAR_ANAIN_AN1 (0x03)
#define VAR_DIGIN0 (0x04) // Button0 en Explorer16
#define VAR_DIGIN1 (0x0D) // Button1 en Explorer16
#define VAR_DIGIN2 (0x0E) // Button2 en Explorer16
#define VAR_DIGIN3 (0x0F) // Button3 en Explorer16
#define VAR_STACK_VERSION (0x16)
#define VAR_STACK_DATE (0x17)
#define VAR_STROUT_LCD (0x05)
#define VAR_MAC_ADDRESS (0x06)
#define VAR_SERIAL_NUMBER (0x07)
#define VAR_IP_ADDRESS (0x08)
#define VAR_SUBNET_MASK (0x09)
#define VAR_GATEWAY_ADDRESS (0x0A)
#define VAR_DHCP (0x0B) // Use esta variable cuando la
// pagina web esta
// actualizandose
#define VAR_DHCP_TRUE (0x0B) // Use this variable when we
are generating the web page
#define VAR_DHCP_FALSE (0x0C) // Use this variable when we
are generating the web page
#define CMD_LED1 (0x0)
#define CMD_LED2 (0x1)
#if defined(STACK_USE_HTTP_SERVER)
ROM char COMMANDS_OK_PAGE[] = "INDEX.CGI";
ROM char CONFIG_UPDATE_PAGE[] = "CONFIG.CGI";
ROM char CMD_UNKNOWN_PAGE[] = "INDEX.CGI";
#define COMMANDS_OK_PAGE_LEN (sizeof(COMMANDS_OK_PAGE))
#define CONFIG_UPDATE_PAGE_LEN (sizeof(CONFIG_UPDATE_PAGE))
#define CMD_UNKNOWN_PAGE_LEN (sizeof(CMD_UNKNOWN_PAGE))

197
Apéndice A. Código fuente .C 198
____________________________________________________________________________

void HTTPExecCmd(BYTE** argv, BYTE argc)


{
BYTE command;
BYTE var;
#ifdef ENABLE_REMOTE_CONFIG
BYTE CurrentArg;
WORD_VAL TmpWord;
#endif
command = argv[0][0] - '0';

switch(command)
{
case CGI_CMD_DIGOUT:
var = argv[1][0] - '0';

switch(var)
{
case CMD_LED1:
LED1_IO ^= 1;
break;

case CMD_LED2:
LED2_IO ^= 1;
break;
}

memcpypgm2ram((void*)argv[0], (ROM
void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
break;
#if defined(USE_LCD)
case CGI_CMD_LCDOUT:
if(argc > 2)
{
if(strlen(argv[2]) < 32)
{
memset(LCDText, ' ', 32);
strcpy(LCDText, argv[2]);
}
else
{
memcpy(LCDText, (void*)argv[2], 32);
}

LCDUpdate();
}
else
{

198
Apéndice A. Código fuente .C 199
____________________________________________________________________________

LCDErase();
}
memcpypgm2ram((void*)argv[0], (ROM
void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
break;
#endif
#if ENABLE_REMOTE_CONFIG
// HTTP
case CGI_CMD_RECONFIG:
CurrentArg = 1;
while(argc > CurrentArg)
{
TmpWord.byte.MSB = argv[CurrentArg][0];
TmpWord.byte.LSB = argv[CurrentArg++][1];
var = hexatob(TmpWord);

if(CurrentArg >= argc)


break;

switch(var)
{
case VAR_SERIAL_NUMBER:
AppConfig.SerialNumber.Val =
atoi(argv[CurrentArg]);
AppConfig.MyMACAddr.v[4] =
AppConfig.SerialNumber.byte.MSB;
AppConfig.MyMACAddr.v[5] =
AppConfig.SerialNumber.byte.LSB;
break;
case VAR_IP_ADDRESS:
case VAR_SUBNET_MASK:
case VAR_GATEWAY_ADDRESS:
{
DWORD TmpAddr;

if(!StringToIPAddress(argv[CurrentArg],
(IP_ADDR*)&TmpAddr))
break;
if(var == VAR_IP_ADDRESS)
{
if(TmpAddr !=
*(DWORD*)&AppConfig.MyIPAddr)
DHCPBindCount++;
memcpy((void*)&AppConfig.MyIPAddr,
(void*)&TmpAddr, sizeof(AppConfig.MyIPAddr));
}
else if(var == VAR_SUBNET_MASK)

199
Apéndice A. Código fuente .C 200
____________________________________________________________________________

memcpy((void*)&AppConfig.MyMask,
(void*)&TmpAddr, sizeof(AppConfig.MyMask));
else if(var == VAR_SUBNET_MASK)
memcpy((void*)&AppConfig.MyGateway,
(void*)&TmpAddr, sizeof(AppConfig.MyGateway));
}
break;

case VAR_DHCP:
if(AppConfig.Flags.bIsDHCPEnabled)
{
if(!(argv[CurrentArg][0]-'0'))
{
AppConfig.Flags.bIsDHCPEnabled = FALSE;
}
}
else
{
if(argv[CurrentArg][0]-'0')
{
AppConfig.MyIPAddr.Val = 0x00000000ul;
AppConfig.Flags.bIsDHCPEnabled = TRUE;
AppConfig.Flags.bInConfigMode = TRUE;
DHCPReset();
}
}
break;
}
CurrentArg++;
}
SaveAppConfig();

memcpypgm2ram((void*)argv[0],
(ROM void*)CONFIG_UPDATE_PAGE,
CONFIG_UPDATE_PAGE_LEN);
break;
#endif
default:
memcpypgm2ram((void*)argv[0], (ROM
void*)COMMANDS_OK_PAGE, COMMANDS_OK_PAGE_LEN);
break;
}
}
#endif
#if defined(STACK_USE_HTTP_SERVER)
WORD HTTPGetVar(BYTE var, WORD ref, BYTE* val)
{

200
Apéndice A. Código fuente .C 201
____________________________________________________________________________

static BYTE VarString[20];


#if ENABLE_REMOTE_CONFIG
static BYTE VarStringLen;
BYTE *VarStringPtr;
BYTE i;
BYTE *DataSource;
#endif
switch(var)
{
case VAR_LED0:
*val = LED0_IO ? '1':'0';
break;
case VAR_LED1:
*val = LED1_IO ? '1':'0';
break;
case VAR_LED2:
*val = LED2_IO ? '1':'0';
break;
case VAR_LED3:
*val = LED3_IO ? '1':'0';
break;
case VAR_LED4:
*val = LED4_IO ? '1':'0';
break;
case VAR_LED5:
*val = LED5_IO ? '1':'0';
break;
case VAR_LED6:
*val = LED6_IO ? '1':'0';
break;
case VAR_LED7:
*val = LED7_IO ? '1':'0';
break;
case VAR_ANAIN_AN0:
*val = AN0String[(BYTE)ref];
if(AN0String[(BYTE)ref] == '\0')
return HTTP_END_OF_VAR;
else if(AN0String[(BYTE)++ref] == '\0' )
return HTTP_END_OF_VAR;
return ref;

case VAR_DIGIN0:
*val = BUTTON0_IO ? '1':'0';
break;
case VAR_DIGIN1:
*val = BUTTON1_IO ? '1':'0';
break;

201
Apéndice A. Código fuente .C 202
____________________________________________________________________________

case VAR_DIGIN2:
*val = BUTTON2_IO ? '1':'0';
break;
case VAR_DIGIN3:
*val = BUTTON3_IO ? '1':'0';
break;
case VAR_STACK_VERSION:
if(ref == HTTP_START_OF_VAR)
{
strcpypgm2ram(VarString, VERSION);
}
*val = VarString[(BYTE)ref];
if(VarString[(BYTE)ref] == '\0')
return HTTP_END_OF_VAR;
else if(VarString[(BYTE)++ref] == '\0' )
return HTTP_END_OF_VAR;
return ref;
case VAR_STACK_DATE:
if(ref == HTTP_START_OF_VAR)
{
strcpypgm2ram(VarString, __DATE__ " " __TIME__);
}
*val = VarString[(BYTE)ref];
if(VarString[(BYTE)ref] == '\0')
return HTTP_END_OF_VAR;
else if(VarString[(BYTE)++ref] == '\0' )
return HTTP_END_OF_VAR;
return ref;
#if ENABLE_REMOTE_CONFIG
case VAR_MAC_ADDRESS:
if ( ref == HTTP_START_OF_VAR )
{
VarStringLen = 2*6+5;
i = 0;
VarStringPtr = VarString;
while(1)
{
*VarStringPtr++ =
btohexa_high(AppConfig.MyMACAddr.v[i]);
*VarStringPtr++ =
btohexa_low(AppConfig.MyMACAddr.v[i]);
if(++i == 6)
break;
*VarStringPtr++ = '-';
}
}

202
Apéndice A. Código fuente .C 203
____________________________________________________________________________

*val = VarString[(BYTE)ref];

if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;

case VAR_SERIAL_NUMBER:
if ( ref == HTTP_START_OF_VAR )
{
itoa(AppConfig.SerialNumber.Val, VarString);
VarStringLen = strlen(VarString);
}
*val = VarString[(BYTE)ref];

if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;
case VAR_IP_ADDRESS:
case VAR_SUBNET_MASK:
case VAR_GATEWAY_ADDRESS:
if ( ref == HTTP_START_OF_VAR )
{
if(var == VAR_IP_ADDRESS)
DataSource = (BYTE*)&AppConfig.MyIPAddr;
else if(var == VAR_SUBNET_MASK)
DataSource = (BYTE*)&AppConfig.MyMask;
else if(var == VAR_GATEWAY_ADDRESS)
DataSource = (BYTE*)&AppConfig.MyGateway;

VarStringPtr = VarString;
i = 0;
while(1)
{
itoa((WORD)*DataSource++, VarStringPtr);
VarStringPtr += strlen(VarStringPtr);
if(++i == 4)
break;
*VarStringPtr++ = '.';
}
VarStringLen = strlen(VarString);
}

*val = VarString[(BYTE)ref];

if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;

203
Apéndice A. Código fuente .C 204
____________________________________________________________________________

case VAR_DHCP_TRUE:
case VAR_DHCP_FALSE:
if ( ref == HTTP_START_OF_VAR )
{
if((var == VAR_DHCP_TRUE) ^
AppConfig.Flags.bIsDHCPEnabled)
return HTTP_END_OF_VAR;
VarStringLen = 7;
memcpypgm2ram(VarString, (rom void *)"checked";
}
*val = VarString[(BYTE)ref];
if ( (BYTE)++ref == VarStringLen )
return HTTP_END_OF_VAR;
return ref;
#endif
}
return HTTP_END_OF_VAR;
}
#endif
#if defined(STACK_USE_FTP_SERVER) && defined(MPFS_USE_EEPROM)
ROM char FTP_USER_NAME[] = "ftp";
ROM char FTP_USER_PASS[] = "microchip";
#undef FTP_USER_NAME_LEN
#define FTP_USER_NAME_LEN (sizeof(FTP_USER_NAME)-1)
#define FTP_USER_PASS_LEN (sizeof(FTP_USER_PASS)-1)
BOOL FTPVerify(char *login, char *password)
{
if ( !memcmppgm2ram(login, (ROM void*)FTP_USER_NAME,
FTP_USER_NAME_LEN) )
{
if ( !memcmppgm2ram(password, (ROM void*)FTP_USER_PASS,
FTP_USER_PASS_LEN) )
return TRUE;
}
return FALSE;
}
#endif
static void InitializeBoard(void)
{
LED0_TRIS = 0;
LED1_TRIS = 0;
LED2_TRIS = 0;
LED3_TRIS = 0;
LED4_TRIS = 0;
LED5_TRIS = 0;
LED6_TRIS = 0;
#if !defined(EXPLORER_16)

204
Apéndice A. Código fuente .C 205
____________________________________________________________________________

LED7_TRIS = 0;
#endif
LED0_IO = 0;
LED1_IO = 0;
LED2_IO = 0;
LED3_IO = 0;
LED4_IO = 0;
LED5_IO = 0;
LED6_IO = 0;
LED7_IO = 0;
#ifdef __C30__
#if defined(__dsPIC33F__) || defined(__PIC24H__)
PLLFBD = 39; CLKDIV = 0x0000;

AD1PCFGHbits.PCFG23 = 1; // Make RA7 (BUTTON1) a digital


input
#endif
// ADC
AD1CON1 = 0x84E4;
AD1CON2 = 0x0404;
AD1CON3 = 0x1003;
AD1CHS = 0;
AD1PCFGbits.PCFG5 = 0;
AD1PCFGbits.PCFG4 = 0;
AD1CSSL = 1<<5;
// UART
UARTTX_TRIS = 0;
UARTRX_TRIS = 1;
U2BRG = (INSTR_FREQ+8ul*BAUD_RATE)/16/BAUD_RATE-1;
U2MODE = 0x8000;
U2STA = 0x0400;
#else
OSCTUNE = 0x40;
#if defined(PICDEMNET2) || defined(PIC18F97J60_TEST_BOARD)
ADCON0 = 0b10001001;
ADCON1 = 0b00001011;
TRISA = 0x2F;
#elif defined(__18F452)
ADCON0 = 0b10000001;
ADCON1 = 0b10001110;
TRISA = 0x23;
#else
ADCON0 = 0b00000001;
ADCON1 = 0b00001110;
TRISA = 0x23;
#endif
ADCON2 = 0b10111110;

205
Apéndice A. Código fuente .C 206
____________________________________________________________________________

INTCON2bits.RBPU = 0;

TXSTA = 0b00100000;
RCSTA = 0b10010000;
SPBRG = SPBRG_VAL;
T0CON = 0;
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;
#if defined(__18F87J10) || defined(__18F86J15) ||
defined(__18F86J10) || defined(__18F85J15) || defined(__18F85J10)
|| defined(__18F67J10) || defined(__18F66J15) ||
defined(__18F66J10) || defined(__18F65J15) || defined(__18F65J10)
|| defined(__18F97J60) || defined(__18F96J65) ||
defined(__18F96J60) || defined(__18F87J60) || defined(__18F86J65)
|| defined(__18F86J60) || defined(__18F67J60) ||
defined(__18F66J65) || defined(__18F66J60)
ADCON0bits.ADCAL = 1;
ADCON0bits.GO = 1;
while(ADCON0bits.GO);
ADCON0bits.ADCAL = 0;
#endif
#endif
#if defined(DSPICDEM11)
LCDCTRL_CS_TRIS = 0;
LCDCTRL_CS_IO = 1;
CODEC_RST_TRIS = 0;
CODEC_RST_IO = 0;
#endif
}
static void InitAppConfig(void)
{
#if defined(MPFS_USE_EEPROM)
BYTE c;
BYTE *p;
#endif

#if defined(STACK_USE_DHCP) || defined(STACK_USE_IP_GLEANING)


AppConfig.Flags.bIsDHCPEnabled = TRUE;
#else
AppConfig.Flags.bIsDHCPEnabled = FALSE;
#endif

#if defined(MPFS_USE_EEPROM)
p = (BYTE*)&AppConfig;
XEEBeginRead(EEPROM_CONTROL, 0x00);
c = XEERead();

206
Apéndice A. Código fuente .C 207
____________________________________________________________________________

XEEEndRead();
if(c == 0x55)
{
XEEBeginRead(EEPROM_CONTROL, 0x01);
for ( c = 0; c < sizeof(AppConfig); c++ )
*p++ = XEERead();
XEEEndRead();
}
else
SaveAppConfig();
#endif
}
#if defined(MPFS_USE_EEPROM)
static void SaveAppConfig(void)
{
BYTE c;
BYTE *p;
p = (BYTE*)&AppConfig;
XEEBeginWrite(EEPROM_CONTROL, 0x00);
XEEWrite(0x55);
for ( c = 0; c < sizeof(AppConfig); c++ )
{
XEEWrite(*p++);
}
XEEEndWrite();
}
#endif
ROM char menu[] =
"\r\n\r\n\rMicrochip TCP/IP Config Application ("VERSION", "
__DATE__ ")\r\n\r\n"
"\t1: Change Board serial number.\r\n"
"\t2: Change Board Host Name.\r\n"
"\t3: Change default IP address.\r\n"
"\t4: Change default gateway address.\r\n"
"\t5: Change default subnet mask.\r\n"
"\t6: Change default DNS server address.\r\n"
"\t7: Enable DHCP & IP Gleaning.\r\n"
"\t8: Disable DHCP & IP Gleaning.\r\n"
"\t9: Download MPFS image.\r\n"
"\t0: Save & Quit.\r\n"
"\r\n"
"Enter a menu choice (1-0): ";
typedef enum _MENU_CMD
{
MENU_CMD_SERIAL_NUMBER = '1',
MENU_CMD_HOST_NAME,
MENU_CMD_IP_ADDRESS,

207
Apéndice A. Código fuente .C 208
____________________________________________________________________________

MENU_CMD_GATEWAY_ADDRESS,
MENU_CMD_SUBNET_MASK,
MENU_CMD_DNS_ADDRESS,
MENU_CMD_ENABLE_AUTO_CONFIG,
MENU_CMD_DISABLE_AUTO_CONFIG,
MENU_CMD_DOWNLOAD_MPFS,
MENU_CMD_QUIT = '0',
MENU_CMD_INVALID = MENU_CMD_DOWNLOAD_MPFS
+ 1
} MENU_CMD;

ROM char * const menuCommandPrompt[] =


{
"\r\nNow running application...\r\n",
"\r\nSerial Number (",
"\r\nHost Name (",
"\r\nDefault IP Address (",
"\r\nDefault Gateway Address (",
"\r\nDefault Subnet Mask (",
"\r\nDefault DNS Server Address (",
"\r\nDHCP & IP Gleaning enabled.\r\n",
"\r\nDHCP & IP Gleaning disabled.\r\n",
"\r\nReady to download MPFS image - Use Xmodem
protocol.\r\n",
};
ROM char InvalidInputMsg[] = "\r\nInvalid input received - Input
ignored.\r\n"
"Press any key to continue...\r\n";
BOOL StringToIPAddress(char *str, IP_ADDR *buffer)
{
BYTE v;
char *temp;
BYTE byteIndex;

temp = str;
byteIndex = 0;

while( v = *str )
{
if ( v == '.' )
{
*str++ = '\0';
buffer->v[byteIndex++] = atoi(temp);
temp = str;
}
else if ( v < '0' || v > '9' )
return FALSE;

208
Apéndice A. Código fuente .C 209
____________________________________________________________________________

str++;
}

buffer->v[byteIndex] = atoi(temp);

return (byteIndex == 3);


}
MENU_CMD GetMenuChoice(void)
{
BYTE c;
while(!DataRdyUART())
{
#if defined(MPFS_USE_EEPROM)
if(BUTTON0_IO == 0)
{
TICK StartTime = TickGet();

while(BUTTON0_IO == 0)
{
if(TickGet() - StartTime > 4*TICK_SECOND)
{
XEEBeginWrite(EEPROM_CONTROL, 0x00);
XEEWrite(0x00);
XEEEndWrite();
putrsUART("\r\n\r\nBUTTON0 held for more
than 4 seconds. EEPROM contents erased.\r\n\r\n");
break;
}
}
}
#endif
}
c = ReadUART();
if ( c >= '0' && c < MENU_CMD_INVALID )
return c;
else
return MENU_CMD_INVALID;
}
#define MAX_USER_RESPONSE_LEN (20)
void ExecuteMenuChoice(MENU_CMD choice)
{
char response[MAX_USER_RESPONSE_LEN];
IP_ADDR tempIPValue;
IP_ADDR *destIPValue;
putrsUART(CRLF);
putrsUART(menuCommandPrompt[choice-'0']);

209
Apéndice A. Código fuente .C 210
____________________________________________________________________________

switch(choice)
{
case MENU_CMD_SERIAL_NUMBER:
itoa(AppConfig.SerialNumber.Val, response);
putsUART(response);
putrsUART("): ");
if(ReadStringUART(response, sizeof(response)))
{
AppConfig.SerialNumber.Val = atoi(response);
AppConfig.MyMACAddr.v[4] =
AppConfig.SerialNumber.v[1];
AppConfig.MyMACAddr.v[5] = AppConfig.SerialNumber.v[0];
}
break;
case MENU_CMD_HOST_NAME:
putsUART(AppConfig.NetBIOSName);
putrsUART("): ");
ReadStringUART(response, sizeof(response) >
sizeof(AppConfig.NetBIOSName) ? sizeof(AppConfig.NetBIOSName) :
sizeof(response));
if(response[0] != '\0')
{
memcpy(AppConfig.NetBIOSName, (void*)response,
sizeof(AppConfig.NetBIOSName));
FormatNetBIOSName(AppConfig.NetBIOSName);
}
break;
case MENU_CMD_IP_ADDRESS:
destIPValue = &AppConfig.MyIPAddr;
goto ReadIPConfig;
case MENU_CMD_GATEWAY_ADDRESS:
destIPValue = &AppConfig.MyGateway;
goto ReadIPConfig;
case MENU_CMD_SUBNET_MASK:
destIPValue = &AppConfig.MyMask;
goto ReadIPConfig;
case MENU_CMD_DNS_ADDRESS:
destIPValue = &AppConfig.PrimaryDNSServer;
ReadIPConfig:
DisplayIPValue(destIPValue);
putrsUART("): ");
ReadStringUART(response, sizeof(response));
if ( !StringToIPAddress(response, &tempIPValue) )
{
putrsUART(InvalidInputMsg);
while(!DataRdyUART());
ReadUART();

210
Apéndice A. Código fuente .C 211
____________________________________________________________________________

}
else
{
destIPValue->Val = tempIPValue.Val;
}
break;
case MENU_CMD_ENABLE_AUTO_CONFIG:
AppConfig.Flags.bIsDHCPEnabled = TRUE;
break;

case MENU_CMD_DISABLE_AUTO_CONFIG:
AppConfig.Flags.bIsDHCPEnabled = FALSE;
break;
case MENU_CMD_DOWNLOAD_MPFS:
#if defined(MPFS_USE_EEPROM)
DownloadMPFS();
#endif
break;
case MENU_CMD_QUIT:
#if defined(MPFS_USE_EEPROM)
SaveAppConfig();
#endif
break;
}
}
static void SetConfig(void)
{
MENU_CMD choice;
do
{
putrsUART(menu);
choice = GetMenuChoice();
if ( choice != MENU_CMD_INVALID )
ExecuteMenuChoice(choice);
} while(choice != MENU_CMD_QUIT);

}
#if defined(MPFS_USE_EEPROM)
#define XMODEM_SOH 0x01
#define XMODEM_EOT 0x04
#define XMODEM_ACK 0x06
#define XMODEM_NAK 0x15
#define XMODEM_CAN 0x18
#define XMODEM_BLOCK_LEN 128
static BOOL DownloadMPFS(void)
{
enum SM_MPFS

211
Apéndice A. Código fuente .C 212
____________________________________________________________________________

{
SM_MPFS_SOH,
SM_MPFS_BLOCK,
SM_MPFS_BLOCK_CMP,
SM_MPFS_DATA,
} state;
BYTE c;
MPFS handle;
BOOL lbDone;
BYTE blockLen;
BYTE lResult;
BYTE tempData[XMODEM_BLOCK_LEN];
TICK lastTick;
TICK currentTick;
state = SM_MPFS_SOH;
lbDone = FALSE;
handle = MPFSFormat();
lastTick = TickGet();
do
{
currentTick = TickGet();
if ( TickGetDiff(currentTick, lastTick) >=
(TICK_SECOND/2) )
{
lastTick = TickGet();
while(BusyUART());
WriteUART(XMODEM_NAK);

LED6_IO ^= 1;
}

} while(!DataRdyUART());
while(!lbDone)
{
if(DataRdyUART())
{
LED6_IO ^= 1;
c = ReadUART();
}
else
{
continue;
}
switch(state)
{
default:
if ( c == XMODEM_SOH )

212
Apéndice A. Código fuente .C 213
____________________________________________________________________________

{
state = SM_MPFS_BLOCK;
}
else if ( c == XMODEM_EOT )
{
LED6_IO = 1;

MPFSClose();
while(BusyUART());
WriteUART(XMODEM_ACK);
lbDone = TRUE;
}
else
{
while(BusyUART());
WriteUART(XMODEM_NAK);
}
break;
case SM_MPFS_BLOCK:

lResult = XMODEM_ACK;
blockLen = 0;
state = SM_MPFS_BLOCK_CMP;
break;
case SM_MPFS_BLOCK_CMP:
state = SM_MPFS_DATA;
break;
case SM_MPFS_DATA:
tempData[blockLen++] = c;
if ( blockLen > XMODEM_BLOCK_LEN )
{
MPFSPutBegin(handle);
lResult = XMODEM_ACK;
for ( c = 0; c < XMODEM_BLOCK_LEN; c++ )
MPFSPut(tempData[c]);
handle = MPFSPutEnd();
while(BusyUART());
WriteUART(lResult);
state = SM_MPFS_SOH;
}
break;
}
}
#if defined(STACK_USE_SLIP)
{
BYTE i = 255;
while(i--);

213
Apéndice A. Código fuente .C 214
____________________________________________________________________________

}
#endif
return TRUE;
}
#endif
static void FormatNetBIOSName(BYTE Name[16])
{
BYTE i;

Name[15] = '\0';
strupr(Name);
i = 0;
while(i < 15)
{
if(Name[i] == '\0')
{
while(i < 15)
{
Name[i++] = ' ';
}
break;
}
i++;
}
}

214
Apéndice B. Código fuente HTML 215
____________________________________________________________________________

APÉNDICE B

CÓDIGO FUENTE HTML

En este apéndice se muestra el código fuente HTML utilizado para la aplicación del
Sistema de Adquisición y Transmisión de Datos por PIC vía Ethernet.

B.1 INDEX.HTM

<html>
<head>
<title>Microchip TCP/IP Stack</title>
<script language="JavaScript">
var xmlHttp;
var ObjArray = new Array; //array de ayuda
function GetXmlHttpObject(handler)
{
var objXmlHttp = null;
if(navigator.userAgent.indexOf("MSIE")>=0)
{
var ClassName = "Msxml2.XMLHTTP";
if(navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
ClassName = "Microsoft.XMLHTTP";
}
try
{
objXmlHttp = new ActiveXObject(ClassName);
objXmlHttp.onreadystatechange = handler;
return objXmlHttp;
}
catch(e)

215
Apéndice B. Código fuente HTML 216
____________________________________________________________________________

{
alert("Error: ActiveX scripting may be disabled.");
return;
}
}
else
{
try
{
objXmlHttp = new XMLHttpRequest();
objXmlHttp.onload = handler;
objXmlHttp.onerror = handler;
return objXmlHttp;
}
catch(e)
{
alert("Error: Browser may not be supported or browser
security
restrictions are too high. XMLHttpRequest() support is
required.");
}
}
}
function StateChanged()
{
if(xmlHttp.readyState == 4 || xmlHttp.readyState ==
"complete")
{
document.getElementById("txtAutoUpdateStatus").innerHTML
=xmlHttp.responseText;
xmlHttp = null;
UpdateStatus();

216
Apéndice B. Código fuente HTML 217
____________________________________________________________________________

}
}
function UpdateStatus()
{
xmlHttp = GetXmlHttpObject(StateChanged);
xmlHttp.open("GET", "Status.cgi" , true);
xmlHttp.send(null);
}
function GetServerFile(FileName, AssignTo)
{
var NiftyObj = new Object();
NiftyObj.XMLDevice = new GetXmlHttpObject(StateChanged2);
NiftyObj.XMLDevice.open("GET", FileName, true);
NiftyObj.XMLDevice.send(null);
NiftyObj.Text = AssignTo;
ObjArray.push(NiftyObj);
}
function StateChanged2()
{
for(i in ObjArray)
{
if(ObjArray[i].XMLDevice.readyState == 4 ||
ObjArray[i].XMLDevice.readyState == "complete")
{
if(ObjArray[i].Text != "")
{
document.getElementById(ObjArray[i].Text).innerHTML=
ObjArray[i].XMLDevice.responseText;
}
if(ObjArray[i].Text == "txtAutoUpdateStatus")
{
GetServerFile("Status.cgi", "txtAutoUpdateStatus");

217
Apéndice B. Código fuente HTML 218
____________________________________________________________________________

}
delete ObjArray[i].XMLDevice;
delete ObjArray[i];
}
}
}
</script>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="white" onLoad="UpdateStatus();
GetServerFile('Version.cgi','txtStackVersion');
GetServerFile('BuildDate.cgi','txtBuildDate');">
<table border="0" cellpadding="0" cellspacing="0"
width="100%" fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<font color="#FFFFFF">
<b>Index</b>
</font>
</td>
<td width="25%">
<a href="Features.htm">
<font color="#FFFFFF">
<b>Caracteristicas</b>
</font>
</a>
</td>
<td width="25%">
<a href="Arch.htm">
<font color="#FFFFFF">
<b>Arquitectura</b>
</font>

218
Apéndice B. Código fuente HTML 219
____________________________________________________________________________

</a>
</td>
<td width="25%">
<a href="Footprnt.htm">
<font color="#FFFFFF">
<b>Stack Footprint</b>
</font>
</a>
</td>
</tr>
</table>
<br>
<b>&iexcl;Bienvenido!</b>
<br>
Stack version: <span id="txtStackVersion">Unknown</span>
&nbsp;&nbsp;&nbsp;&nbsp;
Build date: <span id="txtBuildDate">Unknown</span><br>
<p>
En este sito se muestra la capacidad de un servidor web
embebido,
el cual es potenciado por un Microcontrolador PIC que
ejecuta un
Stack TCP/IP de Microchip. Todo lo que se puede apreciar es
manejado a traves de un controlador de Ethernet ENC28J60
10Base-T
y del modulo PIC18F97J60 de la familia de Ethernet de
Microchip.
<br><br>
La siguiente seccion de la pagina muestra el control de la
aplicación en tiempo real:
La seccion &quot;Acciones&quot; contiene comandos para
realizar

219
Apéndice B. Código fuente HTML 220
____________________________________________________________________________

distintas funciones.
La seccion &quot;Status&quot; es actualizada con
informacion del
&quot;Sistema de Adquisición y Transmisión de Datos por PIC
vía
Ethernet&quot; periodicamente usando JavaScript.
</p>
<table cellpadding="1">
<form>
<tr>
<td width="101">
<b>Acciones</b>
</td>
</tr> <tr>
<td>Alternar:</td>
<td width="100">
<input type="button" value="LED2" onClick=
"GetServerFile('0?1=LED2','')"></input>
</td>
<td width="90">
<input type="button" value="LED1" onClick=
"GetServerFile('0?0=LED1','')"></input>
</td>
</tr>
<tr>
<td>Mensaje a LCD:</td>
<td>
<input type="text" name="3" id="LCDText"
size="16"></input>
</td>
<td>
<input type="button" value="Write" onClick=

220
Apéndice B. Código fuente HTML 221
____________________________________________________________________________

"GetServerFile('1?3='+document.getElementById
('LCDText').value,'')"></input>
</td>
</tr>
</form>
<tr>
<td>
<b>Status</b>
</td> <td></td><td></td>
<td width="28">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="justify" width="487">
Si el navegador no soporta AJAX, puede ir a <a
href="Index.cgi">
esta pagina</a> para una instantánea estatica
actualizable
del estado de la aplicacion con opciones de control.
</td>
</tr>
</table>
<span id="txtAutoUpdateStatus">Loading...</span>
</body>
</html>

B.2 FEATURES.HTM

<html>
<head>
<title>Microchip TCP/IP Stack Features</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="#FFFFFF">

221
Apéndice B. Código fuente HTML 222
____________________________________________________________________________

<table border="0" cellpadding="0" cellspacing="0" width="100%"


fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<a href="Index.htm"> <font color="#FFFFFF"> <b>Index</b>
</font> </a> </td>
<td width="25%">
<font color="#FFFFFF"> <b>Caracteristicas</b> </font> </td>
<td width="25%">
<a href="Arch.htm"> <font color="#FFFFFF">
<b>Arquitectura</b>
</font> </a> </td>
<td width="25%">
<a href="Footprnt.htm"> <font color="#FFFFFF">
<b>Stack Footprint</b> </font> </a> </td>
</tr>
</table> <br>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%"><b>Los modulos de la familia de Ethernet
ENC28J60 y PIC18F97J60 ofrecen:</b></td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Compatibilidad IEEE
802.3</td>
</tr>
<tr> <td width="100%">* Puerto 10Base-T</td> </tr>
<tr>
<td width="100%" bgcolor="#D1D1D1">* 8Kbytes de buffer
SRAM</td>
</tr> <tr>
<td width="100%">* Modulo interno DMA para transporte rapido
de datos</td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Filtros programables para
minimizar la recepcion de paquetes no deseados</td>
</tr> <tr>
<td width="100%">* Entradas tolerantes de 5V</td>
</tr>
<tr> <td width="100%">&nbsp;</td> </tr>
<tr>
<td width="100%">

222
Apéndice B. Código fuente HTML 223
____________________________________________________________________________

<b>Las caracteristicas especificas del ENC28J60 incluyen:</b>


</td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Interfaz SPI con
veloicidades hasta de 20Mb/s</td>
</tr>
<tr><td width="100%">* Empaque de 28 pines</td></tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td width="100%"><strong>El Stack TCP/IP ofrece:</strong></td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Licencia gratuita</td>
</tr> <tr>
<td width="100%">* Portabilidad a la familia de
microcontroladores PIC18, PIC24F, PIC24H, dsPIC30, and
dsPIC33</td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Implementa una maquina de
estado TCP completa</td>
</tr> <tr>
<td width="100%">* Manejo de conexiones simultaneas TCP and
UDP</td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Diseño modular para
añadir facilmente nuevos componentes</td>
</tr> <tr>
<td width="100%">* Puede ser usado como parte de un servidor
HTTP o de cualquier aplicacion TCP/IP</td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Incluye el sistema
Microchip File System (MPFS)</td>
</tr> <tr>
<td width="100%">* Convertidor de archivos de PC a MPFS</td>
</tr> <tr>
<td width="100%" bgcolor="#D1D1D1">* Incluye los modulos: MAC,
ARP, IP, ICMP, TCP, UDP, DHCP, FTP, IP Gleaning, HTTP, MPFS,
Announce.</td>
</tr> <tr>
<td width="100%">*Modulos extra: EEPROM serial externo, Tick
Manager y Xmodem Receiver</td>
</tr> </table>

223
Apéndice B. Código fuente HTML 224
____________________________________________________________________________

</body>
</html>

B.3 ARCH.HTM

<html>
<head>
<title>Microchip TCP/IP Stack Architecture</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="#FFFFFF">
<table border="0" cellpadding="0" cellspacing="0" width="100%"
fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<a href="Index.htm"> <font color="#FFFFFF"> <b>Index</b>
</font> </a> </td>
<td width="25%">
<font color="#FFFFFF"> <b>Caracteristicas</b> </font> </td>
<td width="25%">
<a href="Arch.htm"> <font color="#FFFFFF">
<b>Arquitectura</b>
</font> </a> </td>
<td width="25%">
<a href="Footprnt.htm"> <font color="#FFFFFF">
<b>Stack Footprint</b> </font> </a> </td>
</tr>
</table> <br>
<p>El controlador Ethernet de Microchip incorpora eficazmente
todo los bloques necesarios para una interfaz Etherner completa.
Solo unos pocos componentes son requeridos, como se muestra a
continuacion.</p>
<img src="ENC28J60Connect.png">
<p> El Stack TCP/IP de Microchip usa un método cooperativo
multitarea para separarse a si mismo de la aplicación principal
para un mejor funcionamiento. Es decir todos los componentes
principales están en fuentes separadas de archivos.
</p>
</body>
</html>

224
Apéndice B. Código fuente HTML 225
____________________________________________________________________________

B.4 FOOTPRNT.HTM

<html>
<head>
<title>Microchip TCP/IP Stack Footprint</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0" bgcolor="#FFFFFF">
<table border="0" cellpadding="0" cellspacing="0" width="100%"
fgcolor="white">
<tr bgcolor="#FF0000" fgcolor="white">
<td width="25%">
<a href="Index.htm"> <font color="#FFFFFF"> <b>Index</b>
</font> </a> </td>
<td width="25%">
<font color="#FFFFFF"> <b>Caracteristicas</b> </font> </td>
<td width="25%">
<a href="Arch.htm"> <font color="#FFFFFF">
<b>Arquitectura</b>
</font> </a> </td>
<td width="25%">
<a href="Footprnt.htm"> <font color="#FFFFFF">
<b>Stack Footprint</b> </font> </a> </td>
</tr>
</table> <br>
<table border="1" cellpadding="0" cellspacing="0" width="100%"
bordercolor="#000000">
<tr>
<td width="20%" bgcolor="#FFFF00"><strong>Capa</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>Componente
</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>ROM (Words)
</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>RAM (bytes)
</strong></td>
<td width="20%" bgcolor="#FFFF00"><strong>Info</strong></td>
</tr> <tr>
<td rowspan="2" width="20%" bgcolor="#D1D1D1">Fisica</td>
<td width="20%" bgcolor="#D1D1D1">Ethernet</td>
<td width="20%" bgcolor="#D1D1D1">1358</td>
<td width="20%" bgcolor="#D1D1D1">55</td>

225
Apéndice B. Código fuente HTML 226
____________________________________________________________________________

<td width="20%" bgcolor="#D1D1D1">ENC28J60</td>


</tr> <tr>
<td bgcolor="#D1D1D1">USART</td>
<td bgcolor="#D1D1D1">-</td>
<td bgcolor="#D1D1D1">-</td>
<td bgcolor="#D1D1D1">Ver SLIP</td>
</tr> <tr>
<td rowspan="3">Red</td>
<td>SLIP</td>
<td>780</td>
<td>12 + Tx & Rx Buffers</td>
<td>Tamaño de Buffer definido por el usuario</td>
</tr> <tr>
<td>ARP</td><td>324</td><td>0</td><td>&nbsp;</td>
</tr> <tr>
<td>ARPTask</td><td>152</td><td>11</td>
<td>&nbsp;</td>
</tr> <tr>
<td rowspan="2" bgcolor="#D1D1D1">Internet</td>
<td bgcolor="#D1D1D1">IP</td>
<td bgcolor="#D1D1D1">305</td>
<td bgcolor="#D1D1D1">2</td>
<td bgcolor="#D1D1D1">&nbsp;</td>
</tr> <tr>
<td bgcolor="#D1D1D1">ICMP</td>
<td bgcolor="#D1D1D1">243</td>
<td bgcolor="#D1D1D1">0</td>
<td bgcolor="#D1D1D1">&nbsp;</td>
</tr> <tr>
<td rowspan="2">Transporte</td>
<td>TCP</td><td>2524</td><td>42</td>
<td>Each extra socket consumes 36 bytes of RAM</td>
</tr> <tr>
<td>UDP</td><td>608</td><td>20</td>
<td>Cada socket extra consume 19 bytes of RAM</td>
</tr> <tr>
<td rowspan=6 bgcolor="#D1D1D1">Aplicacion</td>
<td bgcolor="#D1D1D1">HTTP</td>
<td bgcolor="#D1D1D1">912</td>
<td bgcolor="#D1D1D1">10</td>
<td bgcolor="#D1D1D1">Debe incluir TCP, MPFS</td>

226
Apéndice B. Código fuente HTML 227
____________________________________________________________________________

</tr> <tr>
<td bgcolor="#D1D1D1">DHCP</td>
<td bgcolor="#D1D1D1">738</td>
<td bgcolor="#D1D1D1">26</td>
<td bgcolor="#D1D1D1">Debe incluir UDP</td>
</tr> <tr>
<td bgcolor="#D1D1D1">SNMP</td>
<td bgcolor="#D1D1D1">2819</td>
<td bgcolor="#D1D1D1">28</td>
<td bgcolor="#D1D1D1">Debe incluir UDP, MPFS</td>
</tr> <tr>
<td bgcolor="#D1D1D1">FTP Server</td>
<td bgcolor="#D1D1D1">637</td>
<td bgcolor="#D1D1D1">35</td>
<td bgcolor="#D1D1D1">Debe incluir TCP, MPFS</td>
</tr> <tr>
<td bgcolor="#D1D1D1">IP Gleaning</td>
<td bgcolor="#D1D1D1">20</td>
<td bgcolor="#D1D1D1">1</td>
<td bgcolor="#D1D1D1">Tamaño aproximado - Parte del Stack
Manager</td>
</tr> <tr>
<td bgcolor="#D1D1D1">Announce</td>
<td bgcolor="#D1D1D1">187</td>
<td bgcolor="#D1D1D1">0</td>
<td bgcolor="#D1D1D1">&nbsp;</td>
</tr> <tr>
<td rowspan=5>Otra</td><td>File System (MPFS)</td>
<td>276</td><td>5</td>
<td>Programa de almacenamiento de memoria interna</td>
</tr> <tr>
<td>Stack Manager</td><td>297</td><td>12 + ICMP Buffer</td>
<td>Tamaño de buffer ICMP definido por el usuario</td>
</tr> <tr>
<td>Tick Manager</td><td>33</td><td>2</td>
<td>El usuario puede personalizar el Tick Manager</td>
</tr> <tr>
<td>Helper/Common functions</td><td>660</td>
<td>0</td><td>Ninguno</td>
</tr> <tr>
<td>SPI EEPROM Storage Routines</td>

227
Apéndice B. Código fuente HTML 228
____________________________________________________________________________

<td>211</td><td>4 + EEPROM Buffer</td>


<td>Buffer EEPROM definido por el usuario</td>
</tr> </table></body>
</html>

B.5 INDEX.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<title>Tesis - Control Ethernet - </title>
</head>
<frameset rows="125,*,22" cols="*" framespacing="0"
frameborder="no" border="0">
<frame src="encabezado.html" name="topFrame" scrolling="No"
noresize="noresize" id="topFrame" title="topFrame" />
<frame src="portada.html" name="mainFrame" id="mainFrame"
title="mainFrame" />
<frame src="pie.html" name="bottomFrame" scrolling="No"
noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>
<noframes><body>
</body></noframes>
</html>

B.6 ENCABEZADO.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<title>Encabezado</title>
<script type="text/javascript">
<!--
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

228
Apéndice B. Código fuente HTML 229
____________________________________________________________________________

var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0;


i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image;
d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length)
{d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for
(i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_nbGroup(event, grpName) { //v6.0
var i,img,nbArr,args=MM_nbGroup.arguments;
if (event == "init" && args.length > 2) {
if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
img.MM_init = true; img.MM_up = args[3]; img.MM_dn =
img.src;
if ((nbArr = document[grpName]) == null) nbArr =
document[grpName] = new Array();
nbArr[nbArr.length] = img;
for (i=4; i < args.length-1; i+=2) if ((img =
MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = img.MM_dn = args[i+1];
nbArr[nbArr.length] = img;
} }
} else if (event == "over") {
document.MM_nbOver = nbArr = new Array();
for (i=1; i < args.length-1; i+=3) if ((img =
MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = (img.MM_dn && args[i+2]) ? args[i+2] :
((args[i+1])? args[i+1] : img.MM_up);
nbArr[nbArr.length] = img;
}
} else if (event == "out" ) {
for (i=0; i < document.MM_nbOver.length; i++) {

229
Apéndice B. Código fuente HTML 230
____________________________________________________________________________

img = document.MM_nbOver[i]; img.src = (img.MM_dn) ?


img.MM_dn : img.MM_up; }
} else if (event == "down") {
nbArr = document[grpName];
if (nbArr)
for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src =
img.MM_up; img.MM_dn = 0; }
document[grpName] = nbArr = new Array();
for (i=2; i < args.length-1; i+=2) if ((img =
MM_findObj(args[i])) != null) {
if (!img.MM_up) img.MM_up = img.src;
img.src = img.MM_dn = (args[i+1])? args[i+1] : img.MM_up;
nbArr[nbArr.length] = img;
} }
}
//-->
</script>
</head>
<body bgcolor="#000000" text="#3333CC" leftmargin="0"
topmargin="0" marginwidth="0" marginheight="0"
onload="MM_preloadImages('IMG/portada_on.jpg','IMG/tesis_off.jpg'
,'IMG/tesis_on.jpg','IMG/vigilancia_off.jpg','IMG/vigilancia_on.j
pg','IMG/aplicacion_off.jpg','IMG/aplicacion_on.jpg','IMG/documen
tos_off.jpg','IMG/documentos_on.jpg','IMG/portada_off.jpg')">
<center>
<p><img align="middle"src="IMG/encabezado.jpg" width="1000"
height="100" alt="encabezado" /><br />
<a href="portada.html" target="mainFrame"
onclick="MM_nbGroup('down','group1','Portada','IMG/portada_off.jp
g',1)"
onmouseover="MM_nbGroup('over','Portada','IMG/portada_on.jpg','IM
G/portada_on.jpg',1)" onmouseout="MM_nbGroup('out')"><img
src="IMG/portada_off.jpg" alt="" name="Portada" border="0"
id="Portada" onload="" /></a><a href="paginas/tesis.html"
target="mainFrame"
onclick="MM_nbGroup('down','group1','Tesis','IMG/tesis_off.jpg',1
)"
onmouseover="MM_nbGroup('over','Tesis','IMG/tesis_on.jpg','IMG/te
sis_on.jpg',1)" onmouseout="MM_nbGroup('out')"><img
src="IMG/tesis_off.jpg" alt="" name="Tesis" border="0" id="Tesis"
onload="" /></a>

230
Apéndice B. Código fuente HTML 231
____________________________________________________________________________

<a href="aplicacion.html" target="mainFrame"


onclick="MM_nbGroup('down','group1','Aplicacion','IMG/aplicacion_
off.jpg',1)"
onmouseover="MM_nbGroup('over','Aplicacion','IMG/aplicacion_on.jp
g','IMG/aplicacion_on.jpg',1)"
onmouseout="MM_nbGroup('out')"><img src="IMG/aplicacion_off.jpg"
alt="" name="Aplicacion" border="0" id="aplicacion" onload=""
/></a>
<a href="vigilancia.html" target="mainFrame"
onclick="MM_nbGroup('down','group1','Vigilancia','IMG/vigilancia_
off.jpg',1)"
onmouseover="MM_nbGroup('over','Vigilancia','IMG/vigilancia_on.jp
g','IMG/vigilancia_on.jpg',1)"
onmouseout="MM_nbGroup('out')"><img src="IMG/vigilancia_off.jpg"
alt="" name="Vigilancia" border="0" id="Vigilancia" onload=""
/></a>
<a href="documentos.html" target="mainFrame"
onclick="MM_nbGroup('down','group1','Documentos','IMG/documentos_
off.jpg',1)"
onmouseover="MM_nbGroup('over','Documentos','IMG/documentos_on.jp
g','IMG/documentos_on.jpg',1)"
onmouseout="MM_nbGroup('out')"><img src="IMG/documentos_off.jpg"
alt="" name="Documentos" border="0" id="otro" onload="" /></a>
</p>
</center>
</body>
</html>

B.7 PIE.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<title>Pie</title>
<body bgcolor="#000000" text="#336699" leftmargin="0"
topmargin="0" marginwidth="0" marginheight="0">
231
Apéndice B. Código fuente HTML 232
____________________________________________________________________________

<div align="right">Universidad Autónoma del estado de Hidalgo,


ICBI.
Ingeniería en Electrónica y Telecomunicaciones
</div>
</body>
</html>

B.8 PORTADA.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<title>Portada</title>
</head>
<body>
<p align="center" style="font-size:19px"><strong>UNIVERSIDAD
AUTÓNOMA DEL ESTADO DE HIDALGO</strong></p>
<p align="center" style="font-size:18px">INSTITUTO DE CIENCIAS
BÁSICAS E INGENIERÍA</p>
<p align="center"><img src="IMG/escudouaeh.jpg" width="170"
height="194" alt="UAEH" /></p>
<p align="center" style="font-size:18px"><strong>DISEÑO Y
APLICACIÓN DE UN<br />SISTEMA DE ADQUISICIÓN Y TRANSMISIÓN<br />
DE DATOS VÍA ETHERNET</strong></p>
<p align="center" style="font-size:16px"><strong>TESIS
</strong></p>
<p align="center">QUE PARA OBTENER EL TITULO DE INGENIERO EN
ELECTRÓNICA<br />
Y TELECOMUNICACIONES
<p align="center">PRESENTAN:</p>
<p align="center" style="font-size:18px"><strong>CLAUDIO IVÁN
DURÁN MARROQUÍN</strong><br />
<strong>GUTIÉRREZ ROJAS EMMANUEL</strong>
</p>
<p align="center">ASESOR:<br /><br />

232
Apéndice B. Código fuente HTML 233
____________________________________________________________________________

<strong style="font-size:17px">ING. FRANCISCO JAVIER CUELLAR


ORTEGA</strong></p>
</body>
</html>

B.9 TESIS.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<title>Tesis</title>
</head>
<body>
<center>
<object
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash
/swflash.cab#version=9,0,0,0" id="doc_76490124131346"
name="doc_76490124131346" classid="clsid:d27cdb6e-ae6d-11cf-
96b8-444553540000" align="middle" height="670" width="625" >
<param name="movie"
value="http://d.scribd.com/ScribdViewer.swf?document_id=14665442&
access_key=key-
paqan99osjvoz3s88rl&page=1&version=1&viewMode=list">
<param name="quality" value="high">
<param name="play" value="true">
<param name="loop" value="true">
<param name="scale" value="showall">
<param name="wmode" value="opaque">
<param name="devicefont" value="false">
<param name="bgcolor" value="#ffffff">
<param name="menu" value="true">
<param name="allowFullScreen" value="true">
<param name="allowScriptAccess" value="always">
<param name="salign" value=""> <param name="mode" value="list">
<embed
src="http://d.scribd.com/ScribdViewer.swf?document_id=14665442&ac
cess_key=key-paqan99osjvoz3s88rl&page=1&version=1&viewMode=list"
quality="high"

233
Apéndice B. Código fuente HTML 234
____________________________________________________________________________

pluginspage="http://www.macromedia.com/go/getflashplayer"
play="true" loop="true" scale="showall" wmode="opaque"
devicefont="false" bgcolor="#ffffff"
name="doc_76490124131346_object" menu="true"
allowfullscreen="true" allowscriptaccess="always" salign=""
type="application/x-shockwave-flash" align="middle" mode="list"
height="500" width="450"></embed> </object>
<div style="margin: 6px auto 3px auto; font-family:
Helvetica,Arial,Sans-serif; font-style: normal; font-variant:
normal; font-weight: normal; font-size: 12px; line-height:
normal; font-size-adjust: none; font-stretch: normal; -x-system-
font: none; display: block;">
</div>
</center>
</body>
</html>

B.10 APLICACION.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<style type="text/css">
a.btn{
color:#000;
font: bold 90% 'trebuchet ms',helvetica,sans-serif;
background-color:#46afe6;
border:2px solid;
border-color: #2f759a #1a3333 #1a3333 #2f759a;
filter:progid:DXImageTransform.Microsoft.Gradient(GradientTy
pe=0,StartColorStr='#ffffffff',EndColorStr='#ffeeddaa');
}
a.btnhov{
background-color:#5190f6;
border:2px solid;
border-color: #000 #000 #000 #000;
}
</style>

234
Apéndice B. Código fuente HTML 235
____________________________________________________________________________

<title>Aplicacion</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">
<p align="center">
<iframe name="iframe1" height="400" align="center" width="100%"
frameborder="0" src="http://tesis-pic.dyndns.org
" scrolling="si">iframe</iframe>
<br />
Camara 1:
<a href='AppletWin1.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">&nbsp;&nbsp;Apagar&nbsp;&nbsp;<
/a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Camara 2:
<a href='AppletWin2.html' target="iframe3" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe3" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">&nbsp;&nbsp;Apagar&nbsp;&nbsp;<
/a>
<br />
<iframe name="iframe2" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
<iframe name="iframe3" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
</p>
</body>
</html>

235
Apéndice B. Código fuente HTML 236
____________________________________________________________________________

B.11 NADA.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<title>apagado</title>
</head>
<body></body>
</html>

B.12 VIGILANCIA.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-
8" />
<style type="text/css">
a.btn{
color:#000;
font: bold 90% 'trebuchet ms',helvetica,sans-serif;
background-color:#46afe6;
border:2px solid;
border-color: #2f759a #1a3333 #1a3333 #2f759a;
filter:progid:DXImageTransform.Microsoft.Gradient(GradientTy
pe=0,StartColorStr='#ffffffff',EndColorStr='#ffeeddaa');
}
a.btnhov{
background-color:#5190f6;
border:2px solid;
border-color: #000 #000 #000 #000;
}
</style>
<title>Vigilancia</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0"
marginheight="0">

236
Apéndice B. Código fuente HTML 237
____________________________________________________________________________

<p align="center">
<strong>En esta pagina se muestran unicamente las camaras de
la aplicación para vigilancia.</strong><br />
Seleccione la camara deseada:</p>
<p align="center">
Camara 1:
<a href='AppletWin1.html' target="iframe1" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe1" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">&nbsp;&nbsp;Apagar&nbsp;&nbsp;<
/a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Camara 2:
<a href='AppletWin2.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">Encender</a>
<a href='nada.html' target="iframe2" class='btn'
onmouseover="this.className='btn btnhov'"
onmouseout="this.className='btn'">&nbsp;&nbsp;Apagar&nbsp;&nbsp;<
/a>
</p>
<p align="center">
<iframe name="iframe1" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
<iframe name="iframe2" height="320" align="center" width="400"
frameborder="0" scrolling="no">iframe</iframe>
</p>
</body>
</html>

B.13 DOCUMENTOS.HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

237
Apéndice B. Código fuente HTML 238
____________________________________________________________________________

<meta http-equiv="Content-Type" content="text/html; charset=utf-


8" />
<title>Documentos</title>
</head>
<body>
<p> En esta página se encuentran algunos documentos de relevancia
para la creación de la presente tesis.</p>
<table align="center" width="75%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td>Manual del usuario del programa Active WebCam:</td>
<td><iframe scrolling="No" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/Active%20WebCam%20Manual.pdf"></iframe></td>
</tr>
<tr>
<td>Notas de aplicación del Stack TCP/IP:</td>
<td><iframe scrolling="No" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/Application%20Notes%20-%20TCPIP%20Stack%20-
%2000833b.pdf"></iframe></td>
</tr>
<tr>
<td>Datasheet EEPROM serial 25LC256:</td>
<td><iframe scrolling="No" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/25LC256%20Datasheet%20-%2021822E.pdf"></iframe></td>
</tr>
<tr>
<td>Datasheet Controlador de Interfaz Ethernet ENC28J60:</td>
<td><iframe scrolling="No" marginheight="0" marginwidth="0"

238
Apéndice B. Código fuente HTML 239
____________________________________________________________________________

frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/ENC28J60%20Datasheet%20-%2039662b.pdf"></iframe></td>
</tr>
<tr>
<td>Datasheet Microcontrolador PIC18F97J60:</td>
<td><iframe scrolling="No" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/PIC18F97J60%20Family%20Datasheet%20-
%2039762b.pdf"></iframe></td>
</tr>
<tr>
<td>Códigos fuente de la tarjeta PICDEM.net.2</td>
<td><iframe scrolling="no" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/codigos%20fuente.rar"></iframe></td>
</tr>
<tr>
<td>Documento electronico PDF de la presente tesis:</td>
<td><iframe scrolling="no" marginheight="0" marginwidth="0"
frameborder="0"
style="width:240px;height:66px;margin:3px;padding:0;border:1px
solid #dde5e9;background-color:#ffffff;" src="http://cid-
76e8a0bd435da18b.skydrive.live.com/embedrowdetail.aspx/P%c3%babli
co/Tesis%20SATDPVE.pdf"></iframe></td>
</tr> </table>
</body>
</html>

239
Referencias 240
____________________________________________________________________________

REFERENCIAS

2Wire (2009). Opening and Mapping Ports. Artículo:


http://support.2wire.com/?page=view&article=21

Adobe (2008). Uso de Adobe® Dreamweaver® CS4 para Windows® y Mac OS. 2008.
Manual del usuario. Adobe Systems Incorporated.

ADSLAyuda (2005). CONFIGURACIÓN DE DDNS. (Dynamic Domain Name System).


Documento electrónico: http://www.adslayuda.com/befsr41-configuracion_DDNS.html

Aguayo, P. (2004). Introducción al Microcontrolador. Página Web:


http://usuarios.lycos.es/sfriswolker

Alejandre, E. (2006). Microcontroladores PIC. Documento Web:


www.elalejandre.netSg16F877.pdf

Andrew, S. (2002). Redes de Computadoras. Tercera Edición, Editorial Camile


Trentacoste.

Angulo, J. (2003). Microcontroladores PIC. Diseño práctico de aplicaciones. Editorial


McGraw Hill.

AppServNetwork (2009). AppServ Open Project. Página Web:


http://www.appservnetwork.com/

Burhart, M. (2008). Introducción a los servidores Web Dedicados. Página Web:


http://www.daleya.com/?query=PILA+TCP%2FIP+MICROCHIP&chat=activo&daleyaide
xt%5B%5D=1&ext=

Caballero, M. (200). Redes de Banda Ancha. Edicion Original, Grupo Editorial.

Campos, M. (2004). Introducción a los Microcontroladores. Documento Web:


http://www.todopic.com.ar/

Castán, A. (2008). Tuning LAMP. Red telemática educativa de Cataluña. Documento


electrónico http://www.xtec.es/~acastan/textos/Tuning%20LAMP.pdf

Cuenca, E. (2003). Microcontroladores PIC. Diseño práctico de aplicaciones. Editorial


McGraw Hill.

Douglas V. (2002). Microprocessors and Intefacing. Massachusetts, USA, Editorial


McGraw Hill.

Duran, C. (2006). Microcontroladores PICs. Documento Web:


http://www2.ing.puc.cl/~iee3912/files/pic.pdf

240
Referencias 241
____________________________________________________________________________

DynDNS (2008). Routers and Port Forwarding. Dynamic Network Services Inc.
Documento electrónico.
http://www.dyndns.com/support/kb/routers_and_port_forwarding.html

DynDNS (2009). DynDNS Free. Dynamic Network Services Inc. Página Web:
http://www.dyndns.com/services/dns/dyndns/

Google Code University (2009). AJAX Tutorial. Google. Página Web:


http://code.google.com/intl/es-ES/edu/ajax/tutorials/ajax-tutorial.html

González, A. (2002). Introducción a los Microcontroladores. Madrid, España, Editorial


McGraw Hill/Internacional de España.

Groth, D. (2005). “Guía del estudio de redes”. Cuarta Edición. Sybex, Inc. ISBN 0-7821-
4406-3.

Guerrero, E. (2003). Sistemas Digitales III. Documento Web:


http://www.itson.mx/die/eromero/biblioelec/bsistdig3/SD3_UN1.2_%20p02.pdf.

Guzman, D. (2006). AJAX definition and quick tutorial for JSP applications. White Paper.

Herrera, P. (2003). Tecnologías de Redes y Transmisión de Datos. Segunda Edición,


Editorial Limusa.

ITLP (2006). Tutorial de Redes de Computadoras. Página Web:


http://sistemas.itlp.edu.mx/tutoriales/redes/index.htm.

Kavelov, A. (2006). DNS in Action. Packt Publishing LTD.

Mandado, E. (2007). Microcontroladores PIC: Sistema Integrado para el


Autoaprendizaje. Editorial Marcombo.

Márquez, J. (2007). Ethernet: Su origen, Funcionamiento y Rendimiento. Documento


Web: http://ciruelo.uninorte.edu.co/pdf/ingenieria_desarrollo/9/ethernet.pdf.

Márquez, M. (2004). Seguridad de Redes de Computadoras. Documento Web:


http://www.ateneonline.net/datos/86_03_Marquez_Johann.pdf

Masadelante.com (2009). ¿Qué es un servidor? – Definición de servidor. Página Web:


http://www.masadelante.com/faqs/servidor

Matti, M (2008). Stylish Buttons. Webreference.com. Página Web:


http://www.webreference.com/programming/css_stylish/

241
Referencias 242
____________________________________________________________________________

McQuerry, S. (2008). Interconecting Cisco Network Devices, Part 1 (ICND 1). Segunda
Edición, Editorial CISCO.

Microchip (2007). PICDEM.net.2 Internet/Ethernet Development Board User’s Guide.


Página Web: http://ww1.microchip.com/downloads/en/DeviceDoc/51623b.pdf

Microchip (2007). PICDEM.net.2 Development Board. Página Web:


http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&d
DocName=en028217

Microchip (2007). Microchip, The embedded control solutions company. Data Book,
Microchip Technology Inc.

Minitutorials.com (2008). Setting up DynDNS to point to your Web Server. Documento


Web: http://minitutorials.com/apache/dyndns11.shtml

Modelworks Software Solutions (2008). AJAX. Documento Electrónico:


http://www.modelworks.com/ajax.html

Module for hosting (2009). What is Apache HTTP Server?. Página Web:
http://www.modulehosting.com/apache.html

Mozilla Developer Center (2009). About JavaScript. Mozilla Organization. Página Web:
https://developer.mozilla.org/en/about_javascript.

NCSA (2009). The Common Gateway Interface (CGI). National Center for
Supercomputing Aplications, Universidad de Illinois. Página Web:
http://hoohoo.ncsa.illinois.edu/cgi/

Nogués, A. (2006). Instalación de Apache, PHP y MySQL. Documento electrónico:


http://www.scribd.com/doc/2912089/Instalacion-de-Apache-PHP-y-MYSQL.

Novas, D. (2004). Microcontroladores: Arquitectura, Programación y Aplicación.


Documento Web:
http://www.aiu.edu/applications/DocumentLibraryManager/upload/Despradel%20Novas
%20Pe%C3%B1a.pdf.

Orduña, J. (2001). Arquitectura y Programación de Microcontroladores. Colección


Ingeniería Informática. Universidad Politécnica de Valencia.

Parker, T. (2001). Aprendiendo TCP/IP en 14 días. Edición en Español, Editorial


Prentice-Hall Hispanoamericana.

Pallas, R. (2007). Microcontroladores: Fundamentos y Aplicaciones con PIC. 1º Edición,


Ediciones Técnicas Marcombo.

242
Referencias 243
____________________________________________________________________________

Pérez, J. (2007). 10 Funciones imprescindibles en Javascript. Maestros del Web.


Artículo:
http://www.maestrosdelweb.com/editorial/diez-funciones-imprescindibles-en-javascript/

Pérez, S. (2006). Administración de Redes de Computadoras Ethernet. Comisión


Federal de Electricidad.

Ponce, F. (2000). Introducción a los Microprocesadores. Página Web:


http://www.tecnologiaseso.es/indice.htm.

PortFordward.com (2006). What is Port Forwarding?. PortFordward.com Documento


Web: http://portforward.com/help/portforwarding.htm

PortFordward (2008). Port Forwarding AppNameTag on the 2wire 2701HG-T.


PortFordward.com. Documento Web:
http://www.portforward.com/english/routers/port_forwarding/2wire/2701HG-T/default.htm

Peatman, J. (2003). Desing whit microcontroller. New York, USA, Editorial McGraw Hill.

PY Software (2009). Active WebCam. Página Web:


http://www.pysoft.com/ActiveWebCamMainpage.htm.

PY Software (2008). Active WebCam Tutorial. Página Web:


http://www.pysoft.com/ActWebCamHelp/ActiveWebCamHelpFrame.html.

Rajbharti, N. (2006). Microchip TCP/IP Stack. Notas de aplicación. Microchip.

Reynders, D. (2003). TCP/IP and Ethernet Networking. Segunda Edición, Editorial


ELSERVIER.

Sanguanpong, A., Surasak, P. (2000). Ethernet. Documento Web:


http://www.cpe.ku.ac.th/~nguan/presentations/datacom/ethernet.pdf.

Sarmiento, I., Aguayo, P. (2007). Tutorial PIC-WEB. Ingeniería MCI Electronics.

SourceForge (2008). Embedded HTTP Server. Página Web:


http://sourceforge.net/projects/ehttpd/

Tamdenbaum, A. (2007). Historia de los Microcontroladores. Documento Web:


http://galia.fc.uaslp.mx/~cantocar/z8plus/documentos/historia01.pdf.

TechFAQ (2007). What is Dynamic DNS?. Página Web: http://www.tech-


faq.com/dynamic-dns.shtml

Telmex (2007). Tutoriales Telmex para la instalación de Prodigy Infinitum. Página Web:
http://www.telmex.com/mx/seccion/video/tutoriales/insta_paqinfini.html

243
Referencias 244
____________________________________________________________________________

Telmex (2006). Manual de usuario de Prodigy Infinitum Exceso de Velocidad.

Torres, V. (2004). Microcontroladores. Servicios de Publicaciones Universidad


Politécnica de Valencia.

UTEZ (2003), Página Web:


http://srvutez.utez.edu.mx/curriculas/ccna1_ES/CHAPID=null/RLOID=null/RIOID=null/kn
et/311072827537671/coursetoc.html

Uyless D. (2003). Redes de Transmisión de Datos y Procesos Distribuidos. Cuarta


Edición, Editorial Camile Trentacoste.

W3C (2009). World Wide Web Consortium. Página Web: http://www.w3.org/

244

Вам также может понравиться