manuel ballesteros corzovillanuevitas.galeon.com/diplomas/tesis_part1.pdf · control de un brazo...
TRANSCRIPT
CONTROL DE UN BRAZO ROBÓTICO POR MEDIO DE TECNOLOGÍAS WEB
MANUEL BALLESTEROS CORZO
UNIVERSIDAD DE PAMPLONAFACULTAD DE INGENIERIAS Y ARQUITECTURA
DEPARTAMENTO DE INGENIERIA INDUSTRIAL, MECÁNICA YMECATRÓNICA
PROGRAMA DE INGENIERÍA MECATRÓNICAPAMPLONA, COLOMBIANOVIEMBRE DE 2008
CONTROL DE UN BRAZO ROBÓTICO POR MEDIO DE TECNOLOGÍAS WEB
MANUEL BALLESTEROS CORZO
TRABAJO DE TESIS PARA OPTAR AL TITULO DE INGENIERO ENMECATRÓNICA
DIRECTOR:ING. ESP. SERGIO PEÑALOZA ROJAS
CODIRECTOR:ING. EDINSON BALLESTEROS CORZO
UNIVERSIDAD DE PAMPLONAFACULTAD DE INGENIERIAS Y ARQUITECTURA
DEPARTAMENTO DE INGENIERIA INDUSTRIAL, MECÁNICA YMECATRÓNICA
PROGRAMA DE INGENIERÍA MECATRÓNICAPAMPLONA, COLOMBIANOVIEMBRE DE 2008
”Si una persona es perseverante,aunque sea dura de entendimiento,se hará inteligente; y aunque sea débilse transformará en fuerte.”
Leonardo di Ser Piero da Vinci(1452 - 1519) Arquitecto, escultor, pintor, inventor, músico e ingen iero
DEDICATORIA
Dedico la realización de mi tesis a mis padres, José Manuel Ballesteros Rivero ySocorro Corzo Ortiz quienes han hecho posible junto a Dios Padre creador de
todos los universos, el estar vivo, maquinando “maravillas mate riales”, queespero aporten beneficios en Pro de la humanidad.
AGRADECIMIENTOS
Muchas personas han contribuido con ayuda técnica, excelentes revisiones,
información de utilidad y consejos prácticos, por lo cual, hay una lista de
personas que me ayudaron directa e indirectamente a concluir este trabajo. A
continuación presento dichos personajes que fueron pieza clave en la consecución
de los objetivos planteados.
Al Ing. Leonardo Mejía, me asesoro en la parte del control de servomotores
además de sugerir el uso del microcontrolador 16F628A de la serie Microchip;
igualmente agradezco al Ing. Harold Rodríguez quien me aconsejo ut ilizar
programación modular en A ssembler. En el diseño estructural del brazo robótico
agradezco la colaboración de los ingeni eros Ricardo Calderón y Oscar
Castellanos. Al profesor Mauricio Rojas y al sena virtual por guiarme en los
primeros pasos y darme a conocer las herramientas que ofrece el lenguaje de
programación java. A mi codirector Ing. Edinson Ballesteros Corzo por la
información y revisión de programas hechos en sockets -java y a mi director de
tesis Ing. Esp. Sergio Peñaloza Rojas por la información y revisión de programas
utilizando tecnología AJAX, además de la implemen tación del servidor Web. No
sobra decir, que mi s patrocinadores financieros y el apoyo moral y afectivo se los
debo a mis queridos padres, José Manuel Ballesteros Rivero y Socorro Corzo
Ortiz a quienes ofrezco mis mas sinceras muestras de agradecimiento.
Finalmente, agradezco al Demiurgo Universal que me dio la oportunidad de
manifestarme en este mundo, dándome oportunidades y probándome
constantemente con obstáculos.
RESUMEN
La tesis que se presenta a continuación se fundamenta en la creación del
entorno básico necesario para el control de un manipu lador con 5 grados
de libertad de configuración angular por medio de la red Internet, el
proyecto lo conforman básicamente tres partes:
-Diseño y elaboración del software de control
-Diseño y construcción de la tarjeta de control
-Diseño y ensamble del brazo robótico
Para la realización del proyecto se combinan varios lenguajes de
programación entre los que se destaca Java, en el cual recaerá gran parte de
la funcionalidad que va tener el control por medio de la Web. El
manipulador escogido aunque no rivaliza con los robots actuales
utilizados con fines comerciales, posee ciertas características que lo
hacen muy interesante desde el punto de vista didáctico, razón por la cual
se propone como medio de enseñanza en materias como Robótica,
Control Industrial, Programación Mecatrónica entre otras.
CONTENIDO
Pág.
INTRODUCCIÓN ................................ ................................ ................................ .............. 13
1. OBJETO................................ ................................ ................................ ........................ 15
2. PROBLEMA................................ ................................ ................................ .................. 17
3. DELIMITACIÓN Y METODOLOGÍA ................................ ................................ ............ 18
3.1 OBJETIVO GENERAL ................................ ................................ .......................... 18
3.2 OBJETIVOS ESPECIFICOS .............................. .. ................................ ................. 18
3.3 ACOTACIONES ................................ ................................ ................................ .... 18
3.4 METODOLOGÍA ................................ ....................... ......... ................................ .... 18
4. MARCO TEÓRICO ................................ ................................ ................................ ....... 21
4.1 ROBÓTICA Y TECNOLOGÍAS WEB ................................ ............................. 21
4.2 COMUNICACIONES BASADAS EN EL PROTO COLO TCP ........................ 22
4.3 LENGUAJE DE PROGRAMACIÓN JAVA ................................ ..................... 23
4.3.1 Clases, Objetos y métodos ................................ ................................ ............. 24
4.3.2 Applets................................ ................................ ................................ ............. 25
4.3.3 Socket-Java................................ ...................... .......... ................................ ..... 27
4.3.3.1 Establecimiento de comunicaciones (Socket -Java) ................................ 27
4.4 JSP ................................ ................................ ................................ .................. 29
4.5 JAVASCRIPT ................................ ................................ ................................ .. 30
4.6 HTML ................................ ................................ ................................ ............... 31
4.7 XML ................................ ................................ ................................ ................. 31
4.8 XHTML................................ ................................ ................................ ............. 32
4.9 CSS................................ ................................ ................................ .................. 33
4.10 ARCHIVOS *.BAT ................................ ................................ .......................... ..... 33
4.11 SERVIDOR WEB ................................ ................................ ................................ . 34
4.12 TECNOLOGÍA AJAX ................................ ................................ .......................... 34
4.13 MICROCONTROLADOR ................................ ................................ .................... 37
4.13.1 Programación de microcontroladores ................................ ........................... 37
4.13.2 Pic 16F628A ................................ ................................ ................................ .. 37
4.13.2.1 Organización de la memoria ................................ ................................ .. 38
4.13.2.2 Manejo de puertos ................................ ................................ ................. 39
4.13.2.3 Usart ................................ ................................ ................................ ....... 41
4.14 QUE ES UN SERVOMOTOR? ................................ ................................ ............. 44
4.15 NETMEETING ................................ ................................ ................................ ..... 44
4.15.1 Realizar una llamada con NetMeeting ................................ .......................... 45
4.15.2 Configuración de video en Netmeeting ................................ ......................... 45
4.16 PRINCIPIO DE TRANSMISIÓN EN SERIE ................................ ........................ 46
4.16.1 Método de transmisión en serie ................................ ................................ .... 47
4.16.2 Estándar RS232 ................................ ................................ ............................ 48
4.16.2.1 Descripción (RS232) ....................... ......... ................................ .............. 49
4.16.2.2 Características eléctricas ................................ ................................ ....... 49
4.16.2.3 Características mecánicas ................................ ................................ ..... 50
4.17 MAX232 ................................ ................................ ................................ ............... 51
5. HARDWARE Y SOFTWARE DE LA TARJETA DE CONTROL ................................ . 53
5.1 TARJETA DE CONTROL ................................ ................................ ..................... 53
5.2 DISEÑO DEL CIRCUITO ................................ ................................ ...................... 53
5.3 ACCESORIOS ................................ ................................ ................................ . 55
5.4 PROGRAMA PARA LA TARJETA DE CON TROL................................ ........ 57
5.4.1 Módulos (Pic 16F628A) ................................ ................................ .................. 57
5.4.1.1 Módulo < P16F628A.INC > ................................ ................................ 58
5.4.1.2 Módulo < MACROS.INC > ................................ ................................ .. 58
5.4.1.3 Módulo < ANG_.INC > ................................ ................................ ........ 58
5.4.1.4 Módulo < RS232_PIC16F628 A > ................................ ........................... 60
5.4.1.5 Módulo < RETARDOS.INC > ...................... .......... ................................ .. 62
5.4.2 PROGRAMA PRINCIPAL (TARJETA DE CONTROL) ................................ ... 63
5.4.2.1 CONFIGURACIÓN DEL PIC 16F628A ................................ .................... 63
5.4.2.2 RUTINAS Y SUBRUTINAS (PROGRAMA PRINCIPAL) ........................ 64
5.4.2.3 CONTROL DE SERVOS ................................ ................................ ........ 65
5.4.2.4 DIAGRAMA DE FLUJO DEL PROGRAMA PRINCIPAL .................... 68
6. DISEÑO MECÁNICO DEL BRAZO ROBÓTICO ................................ ......................... 71
6.1 DESCRIPCIÓN ................................ ................................ ................................ ...... 71
6.1.1 Composición del manipulador ................................ ................................ ........ 71
6.1.1.1 Base giratoria ................................ ................................ ........................... 72
6.1.1.2 Brazo y antebrazo ................................ ................................ .................... 73
6.1.1.3 Muñeca ................................ ................................ ................................ .... 73
6.1.1.4 Pinza ................................ ................................ ................................ ........ 74
6.2 MATERIALES ................................ ................................ ................................ ....... 74
6.3 DISEÑO DE PLANOS ................................ ............................... . ........................... 76
7. DISEÑO DE SOFTWARE PARA LA APLICACIÓN WEB ................................ ........... 77
7.1 APLICATIVO WEB UTILIZANDO SOCKET –JAVA ................................ .............. 77
7.2 DIAGRAMA EN BLOQUES (APLICATIVO SOCKET -JAVA) .............................. 77
7.2.1 Configuración Network Address Translation (NAT) ................................ ....... 79
7.3 DESCRIPCIÓN DEL PROGRAMA (APLICACIÓN SOCKET -JAVA) .................. 86
7.3.1 Interfaz gráfica (aplicación socket -java) ................................ ............................. 87
7.3.1.1 Firmar Applets ................................ ................................ ......................... 88
7.3.1.2 Archivos *.jar ................................ ................................ ........................... 90
7.3.2 Cliente/Servidor (aplicación Socket -Java) ................................ ..................... 91
7.3.2.1 Envío de datos a manipulador ( aplicación Socket-Java)......................... 95
7.3.2.2 Validación de usuario (aplicación Socket -Java) ................................ ... 100
7.4 APLICATIVO WEB UTILIZANDO EL MODELO AJAX ................................ ..... 102
7.5 DIAGRAMA EN BLOQUES (APLICATIVO CON MODELO AJAX) .................. 103
7.6 DESCRIPCIÓN DEL PROGRAMA (APLICATIVO CON MODELO AJAX) ....... 103
7.6.1 Interfaz gráfica (aplicativo con modelo AJAX) ................................ ............. 104
7.6.2 Cliente/Servidor (aplicativo con modelo AJAX) ................................ ............ 105
7.6.2.1 Envío de datos al servidor ................................ ................................ .... 106
7.6.2.2 Procesamiento de datos (servidor) ................................ ....................... 112
7.6.2.3 Transmisión de imágenes webcam (Aplicativo AJAX) ......................... 119
7.6.2.4 Validación de usuario (Aplicativo AJAX) ................................ .......... 122
7.6.2.5 Ingreso de nuevos usuarios ................................ ............................. 122
7.7 INSTALADORES ................................ ................................ ................................ 123
7.8 MANEJO DEL SERVIDOR (APLICATIVO AJAX) .......................... ...... .............. 124
7.8.2 Detener aplicativo AJAX ................................ ................................ ................ 125
7.8.3 Reiniciar aplicativo AJAX ................................ ................................ .............. 126
7.8.4 Programa ScreenShot ................................ ................................ ................... 127
7.8.5 Programa Imp_Port_Serial ................................ ................................ ............ 128
8. ANÁLISIS ECONÓMICO ................................ ................................ ............................ 129
8.1 COSTOS DE MATERIA PRIMA ................................ ................................ ......... 129
8.2 GASTOS DE OPERACIÓN ................................ ................................ ................. 129
8.3 INVERSIONES ................................ ................................ ................................ .... 130
8.4 INSUMOS GRATUITOS ................................ ................................ ...................... 130
8.5 FUENTES DE FINANCIAMENTO ................................ ................................ ....... 130
9. MARCO DE LEGALIDAD ................................ .............................. .. ........................... 131
10. PROTECCIÓN E HIGIENE DEL TRABAJO ................................ ............................ 132
11. INFLUENCIA AMBIENTAL DEL TRABAJO ................................ ........................... 133
12. CONCLUSIONES ................................ ................................ .............................. 134
13. RECOMENDACIONES ................................ ................................ ...................... 136
REFERENCIAS BIBLIOGRÁFICAS ................................ .................................. ............ 137
LISTA DE TABL AS
Pag.
Tabla 1. Características Eléctricas ............................... . ............................... . 49
Tabla 2. Características Mecánicas ................................ ............................. . 50
Tabla 3. Lista detalle (figura 10) ............................... . ............................... . .... 54
Tabla 4. Lista detalle (figura 12) ............................... . ................................ .... 56
Tabla 5. Rutinas y Subrutinas del mó dulo < ANG_.INK > .......................... 59
Tabla 6. Rutinas y Subrutinas del módulo < RS232_PIC16F628A > ....... 60
Tabla 7. Rutina y Subrutinas del módulo < RETARDOS.INC > ................. 62
Tabla 8. Rutinas y Subrutinas del programa principal ............................... . . 65
Tabla 9. Elementos de base giratoria ............................... . .......................... . 72
Tabla 10. Valores de la variable ‘bandera’ ................................ ................. 116
Tabla 11. Costos materia prima ............................... . ............................... . ... 129
Tabla 12. Gastos de operación ............................... . ............................... . .... 129
Tabla 13. Inversiones ............................... . ............................... . ................... 130
Tabla 14. Insumos gratuitos ............................... . ............................... . ......... 130
LISTA DE FIGURAS
Pag.
Figura 1. Esquema básico para el establecimiento de comunicaciones
TCP por medio de sockets ............................... . ............................... . ............. 28
Figura 2. Tecnologías agrupadas bajo el concepto AJAX .......................... 35
Figura 3. Comparación gráfica del modelo tradicional de aplicaciones Web
y el modelo propuesto por AJAX ............................... . ............................... . ... 36
Figura 4. PIC 16F628 (encapsulado DIP) [19] ............................. ... ............. 39
Figura 5. Iniciar llamada (NetMeesting) ............................... . ........................ 45
Figura 6. Configuración de video (Netmeeting) ............................... . ........... 46
Figura 7. Activación de cámara Web (NetMeeting) ............................... . ..... 46
Figura 8. Diagrama de los conect ores DB-25 y DB-9 ............................... . . 50
Figura 9. Conexión del MAX232 ............................... . ............................... . .... 51
Figura 10. Tarjeta de control ............................... . ............................... . .......... 54
Figura 11. Impresión cara superior de la placa ............................... . ............ 55
Figura 12. Accesorios de la tarjeta ................................ ............................... . 55
Figura 13. Conexión (tarjeta, caja externa) ............................... . .................. 56
Figura 14. Método para control de servos ............................... . .................... 66
Figura 15. Control para seis servos ............................... . ............................. . 67
Figura 16. Diagrama de flujo del programa principal (parte 1) ................... 69
Figura 17. Diagrama de flujo del programa principal (parte 2) ................... 70
Figura 18. Composición del brazo robótico ............................... . .................. 71
Figura 19. Base Giratoria ............................... . ............................... . ............... 72
Figura 20. Antebrazo ................................ ............................... . ...................... 73
Figura 21. Brazo ............................... . ............................... . ............................. . 73
Figura 22. Muñeca ............................... . ............................... . .......................... 74
Figura 23. Pinza ............................... . ............................... . ............................. . 74
Figura 24. Materiales ............................... . ................................ ..................... 75
Figura 25. Brazo Robótico ............................... . ............................... . ............. 76
Figura 26. Diagrama en bloques (Aplicativo Socket -Java) ......................... 78
Figura 27. Ingreso a configuración del router ............................... . .............. 81
Figura 28. Pagina de configuración de router ............................... . .............. 82
Figura 29. Configuración router menú “NAT” ............................... . ............... 83
Figura 30. Configuración router menú “Virtua l Circuit” ............................... . 83
Figura 31. Configuración router “NAT Setting” ............................... . ........... 84
Figura 32. Configuración router (NAT – Virtual Server) ............................. . 84
Figura 33. Configuración router “Submit” ............................... . ..................... 85
Figura 34. Configuración router (salir) ............................... . .......................... 86
Figura 35. Applet (aplicación Socket -Java) ............................... . .................. 87
Figura 36. Validación de usuario (Aplicación Socket -Java)...................... 102
Figura 37. Diagrama en bloques (aplicativo con modelo AJAX) ............. 103
Figura 38. Interfaz gráfica (aplicativo con modelo AJAX) ......................... 104
Figura 39. Diagrama de flujo para el ingreso al aplicativo con Modelo
AJAX............................... . ............................... . ........................... ..... ............... 106
Figura 40. Validación de usuario (aplicación AJAX) ............................... . .. 122
Figura 41. Menú de aplicación AJAX ............................... . .......................... 122
Figura 42. Ingreso de usuario (Aplicación AJAX) ............................... . ...... 123
Figura 43. Inicio del aplicativo AJA X ............................... . .......................... . 125
Figura 44. Detener Aplicativo AJAX ............................... . ........................... . 126
Figura 45. Inicio del servidor jakarta ............................... . .......................... . 127
Figura 46. Inicio del programa ScreenShot ............................... . ................ 127
Figura 47. Inicio de programa Imp_Port_Serial ............................... . ......... 128
13
INTRODUCCIÓN
Las tecnologías Web están acaparando gran parte del mercado, con
nuevas herramientas e implementaciones para el control industrial, la
enseñanza y las comunicaciones, es un hecho indubitable la extensa
variedad de posibilidades y flexibilidad en el campo tecnológico que
ofrece esta poderosa herramienta para soluciones ingenieriles
alternativas, aunque por otra parte , se estiman cuantiosos problemas a
resolver en cuestión de seguridad y fallos en la Internet . A pesar de estos
inconvenientes, no podemos negar el impacto social, cient ífico y
tecnológico que estas nuevas tecnologías están generando a nivel global,
dando paso a una nueva revolución, que bien podría llamarse “la
revolución industrial de la información”. Incluir la enseñanza de estas
tecnologías ayudaría en demasía a la nueva generación de profesionales
Colombianos, sin embargo, la mayoría de los institutos de educación
superior no cuenta con los estándares mínimos de calidad necesarios
para ofrecer este tipo de enseñanza, o no lo ven necesario, ya que en
cierto modo hay una inversión financiera que “frena” en primera estancia,
las iniciativas de los entusiastas en el tema. Una solución para estos
inconvenientes es utilizar software libre dejando el código abierto para
mejoras futuras y abriendo un nuevo campo investigativo que genere
soluciones a largo y mediano plazo. El trabajo de grado que se presenta a
continuación expone las bases necesarias para el “Control Vía Web” de un
manipulador robótico con 5 grados de libertad de configuración
angular, utilizando herramientas informáticas libres como JAVA, HTML,
JAVASCRIPT, JSP entre otras, la tarjeta de control para mover los
servomotores se basa en el pic 16F628A de la serie Microchip
programado en Assembler ( también es software libre), el código y el
diseño del hardware esta rá abierto para mejoras futuras y a que el
manipulador formará parte del laboratorio de robótica de la Universidad de
Pamplona. La iniciativa del proyecto es dar comienzo a muchas más
14
investigaciones en el campo del control a través de Internet, además
mejorando algunos aspectos del software, puede incluirse en la
enseñanza de materias como robótica, con programas de simulación
tridimensional y cinemática inversa y directa, para ejecutar movimientos
automatizados solo con el ingreso de las coordenadas de tra bajo.
15
1. OBJETO
En Colombia se observa a través de los últimos años un auge en la
tendencia de conexión a Internet, a pesar de ser un país subdesarrollado
se puede aprovechar esta demanda de servicio para crear sistemas de
monitores y mando a distancia a través de la Web abaratando costos y
abriendo la posibilidad de diseñarlos directamente en nuestra propia
patria. Aprovechar esta tecnología vanguardista , es un punto clave para el
desarrollo tecnológico colombiano y los entes educativos deberían
propiciar el espíritu investigativo tomando la iniciativa por cuenta propia.
Nuestra universidad no es la excepci ón y ha desarrollado los “semilleros de
investigación”, que pueden dar solución ha problemas en mediano y largo
plazo; en esa tónica es factible replantear algunas formas de
enseñanza como se expone a continuación, beneficiando directamente al
estudiantado y al mismo ente educativo.
Los Manipuladores Electromecánicos frecuentemente forman parte en el
aprendizaje de los estudiantes de Ingeniería Mecatr ónica, e inclusive, la
construcción y control de los ya mencionados se lleva a cabo en un curso
del programa de nuestra universidad; sin embargo, hoy en día las
tecnologías y las carreras hibridas (Mecatrónica es una carrera hibrida)
están dando paso a nue vas variantes en la solución de problemas
ingeniériles, y no podemos desconocer el impacto social, científico y
tecnológico que las aplicaciones Web están causando en nuestro
entorno.
Por tal razón, hace falta complementar la cátedra, introduciendo
conceptos y aplicaciones de estas nuevas herramientas, con el objetiv o
de que como ingeniero , se esté mejor preparado ante el mercado laboral
cada vez mas competitivo. La implementación de control vía Web podría
ser implementada conjuntamente en materias de á rea profesionales,
16
particularmente para ingeniería Mecatrónica (Aunque también se
relacionen con otras carreras como la Ingeniería Electrónica, Sistemas y
porque no, la Mecánica) como Robótica, Control, Programación
Mecatrónica, que beneficiarían al estudi antado con una base teórica -
práctica en la realidad de su profesión.
17
2. PROBLEMA
Actualmente la Universidad de Pamplona no cuenta con un manipulador
electromecánico para las prácticas en el laboratorio de robótica. El que se
ofrecía con dicha finalidad, esta averiado y su reparación requiere de
técnicos altamente calificados, sumándole además gastos econ ómicos.
Por otro lado, al ente educativo le c onviene en alto grado apoyar las
investigaciones para crear nuevas tecnologías en la enseñanza , como se
propone en el presente trabajo . Un pequeño paso en esta dirección, se da
al utilizar software libre, es imprescindible que en el ámbito estudiantil se
aprecie y conozca estas herramientas, ya que están en su punto álgido y
desconocer su impacto o no estar fam iliarizado con ellas conlleva a la
formación de profesionales con pocas alternativas ingenier iles para
solventar los problemas en el campo laboral.
18
3. DELIMITACIÓN Y METODOLOGÍA
3.1 OBJETIVO GENERAL
- Diseñar y construir un brazo robótico, manipulado po r medio de la
red Internet
3.2 OBJETIVOS ESPECIFICOS
- Diseñar y ensamblar un brazo robótico de cinco grados de libertad
- Diseñar y construir una tarjeta para el control del manipulador
- Diseñar Software para manipular vía Web el robot
- Elaborar un manual para el manejo de Software y Hardware
3.3 ACOTACIONES
Este trabajo no pretende conformar un sistema completamente terminado
que maneje todas las variables necesarias, sino hacer una primera
versión para que sea completada y perfeccionadas posteriormente, el
software y el hardware entregado es libre y el autor no se hace
responsable por daños y perjuicios que se puedan ocasionar por errores no
detectados en la fase de prueba o por negligencia en el uso indebido
por parte del usuario.
3.4 METODOLOGÍA
La puesta en marcha del sistema de Robótica -Remota (este proyecto solo
se limita a la parte de Actuación -Remota), combina varios lenguajes
informáticos en los que destacaremos a Java, en el cual recaerá gran
19
parte de la funcionalidad que va tener el cont rol por medio de la Web. El
manipulador escogido para el proyecto es un robot angular de 5 grados de
libertad. Este, aunque no puede rivalizar con los robots actuales
utilizados con fines comerciales, poseen ciertas características que lo
hacen muy interesantes desde el punto de vista didáctico.
La primera parte del proyecto consistirá en el ensamble de las piezas del
brazo robótico, incluyendo la adaptación de los servomotores en las
articulaciones móviles, luego se diseña y construye lo que será su tarje ta
de control o la interfaz entre el PC y el manipulador. Esta, se realizará por
medio del protocolo de comunicaciones RS -232 utilizando para tal fin una
tarjeta, basada en el Pic 16F628 A de microchip (Por economía, en
aplicaciones mas robustas se descar taría dicha solución). La tarjeta
contará con 6 salidas que controlaran las articulaciones y la pinza del
robot, el hardware y el software, estarán abiertos en caso de querer
ampliar sus capacidades (incluir entradas o salidas); para la transmisión de
datos se contará con el circuito integrado MAX232, con el cual,
podremos elevar o atenuar las señales requeridas en los niveles RS232.
En la segunda parte del proyecto entraremos en un campo de
investigación. Se hará contemplando la programación necesaria par a el
control en primera estancia entre el PC y el brazo robótico, luego,
establecer conexiones TCP/IP entre dos maquinas remotas, para tal fin la
primera opción que se tiene es Java, se estudiará la posibilidad de utilizar
bases de datos como MSQL, y sof tware como VBScript, JavaScrip,
Ethernet, Labview entre otros. La combinación inteligente y consecuente
con nuestros fines acompañados de la experiencia que el director y el
codirector aporten, nos hará escoger una u otra herramienta.
Finalmente, concluiremos con la interfaz gráfica, se ha pensado en un
applet de java, sin embargo es factible cambiar dependiendo de las
circunstancias que en adelante acontezcan. Esta interfaz contará con una
20
ventana de visualización en la cual se transmitirán imágenes del br azo
robótico en tiempo de ejecución. La documentación respectiva estará
incluida en un catalogo de instrucciones para el software y el hardware. Es
importante recalcar que este proyecto estará abierto para mejoras
futuras.
21
4. MARCO TEÓRICO
4.1 ROBÓTICA Y TECNOLOGÍAS WEB
En los últimos años se ha experimentado un considerable avance en el
ámbito del desarrollo de aplicaciones Web, tales como la realidad virtual,
sistemas remotos, Telemática. Una de las consecuencias directas de este
avance es el aumento de la flexibilidad, en términos temporales y
espaciales del acceso e implementación de tecnologías, que solventan
problemas en casi todos los campos. Las consideraciones anteriores
tienen además igual significado en el ámbito de los robots pues
constituyen sistemas que típicamente requieren ser operados a distancia en
situaciones en que el robot deba llevar a cabo sus tareas en entornos
peligrosos.
Existen una serie de conceptos relacionados con la posibilidad de
interactuar con un robot que se encuentra en una ubicación remota [1]:
Operación-Remota: extensión de capacidades sensoriales y destrezas
humanas a una localización remota.
Actuación-Remota: aspectos específicos de la Operación -Remota
relacionada con la generación de órdenes a los actuadores.
Sensorización-Remota: aspectos específicos de la Operación -Remota
para la captación y visualización de la información sensorial.
Robótica-Remota: forma evolucionada de la Operación -Remota
caracterizada por una aumen to de la autonomía en el sistema remoto
manteniendo una intervención significat iva del operador humano para la
22
supervisión u Operación-Remota directa.
Presencia-Remota: situación ideal en la que el operador se “siente”
presente en el lugar remoto.
Realidad-Virtual: utiliza la visión de un observador, de modo que el
usuario tiene la sensación de moverse en un mundo virtual.
Los sistemas de robótica han sido extensamente aplicados en la
automatización industrial, construcción industrial, exploración del es pacio,
construcción inteligente, cirugías, servicios militares y también en nuestra
vida diaria. Varios métodos de control remoto han sido desarrollados para
sistemas robóticas tales como radiofrecuencia, microondas, redes de
computadores, etc. Hoy en día, los servicios de redes de computadores
son utilizados ampliamente en nuestra vida diaria, tales como FTP,
Telnet, the World Wide Web. E -mail, etc. En consecuencia es muy
conveniente usar el Internet para el control de robots y los usuarios
aumentarán en el futuro. Durante la última década, muchos
investigadores han estado usando el Internet como un medio de
transmisión de comandos que pueden controlar robots y obtener señales de
realimentación. Aunque el Internet tiene muchas ventajas en una
variedad de campos, usándolo para control de robots inteligentes también
tiene algunas limitaciones, tales como el problema del retardo de tiempo
incierto, la perdida de datos y la seguridad en la transmisión [2].
4.2 COMUNICACIONES BASADAS EN EL PROTOCOLO TCP
El protocolo TCP (Transfer Control Protocol) funciona en el nivel de
transporte, basándose en el protocolo de red IP (Internet Protocol). IP
proporciona comunicaciones no fiables y no basadas en conexión, muy
dependientes en saturaciones en la red, caídas de nodos, etc. Por el
contrario, TCP está orientado a conexión y proporciona comunicaciones
23
fiables basadas en mecanismos de red que gestionan el control de flujo de
paquetes y de congestión en los nodos.
El control de flujo aludido es una característica important e en el
funcionamiento del protocolo TCP, evita que los nodos que envían
información puedan saturar a los que reciben; para lograr este objetivo, el
protocolo TCP utiliza de manera interna un mecanismo de sincronización
basada entre el cliente y el servido r [3].
4.3 LENGUAJE DE PROGRAMACIÓN JAVA
Java es un lenguaje de programación con el que podemos realizar
cualquier tipo de programa. En la actualidad es un lenguaje muy extendido
y cada vez cobra más importancia tanto en el ámbito de Internet como en la
informática en general. Está desarrollado por la compañía Sun
Microsystems con gran dedicación y siempre enfocado a cubrir las
necesidades tecnológicas más punteras.
Una de las principales características por las que Java se ha hecho muy
famoso es que es un lenguaje independiente de la plataforma. Eso quiere
decir que si hacemos un programa en Java podrá funcionar en cualquier
ordenador del mercado. Es una ventaja significativa para los
desarrolladores de software, pues antes tenían que hacer un programa
para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc.
Esto lo consigue porque se ha creado una Máquina de Java para cada
sistema que hace de puente entre el sistema operativo y el programa de
Java y posibilita que este último se entienda perfec tamente [4].
La independencia de plataforma es una de las razones por las que Java
es interesante para Internet, ya que muchas personas deben tener acceso
con ordenadores distintos. Pero no se queda ahí, Java está
desarrollándose incluso para distintos tip os de dispositivos además del
24
ordenador como móviles, agendas y en general para cualquier cosa que
se le ocurra a la industria.
Java fue pensado originalmente para utilizarse en cualquier tipo de
electrodoméstico pero la idea fracasó. Uno de los fundadore s de Sun
rescató la idea para utilizarla en el ámbito de Internet y convirtieron a Java en
un lenguaje potente, seguro y universal gracias a que lo puede utilizar todo
el mundo y es gratuito. Una de los primeros triunfos de Java fue que
se integró en el navegador Netscape y permitía ejecutar programas dentro
de una página W eb, hasta entonces impensable con el HTML [4].
Actualmente Java se utiliza en un amplio abanico de posibilidades y casi
cualquier cosa que se puede hacer en cualquier lenguaje se puede h acer
también en Java y muchas veces con grandes ventajas. En lo que
respecta al proyecto , con Java podemos programar páginas W eb
dinámicas, con accesos a bases de datos, utilizando XML, con cualquier
tipo de conexión de red entre cualquier sistema. En gene ral, cualquier
aplicación que deseemos hacer con acce so Web se puede hacer
utilizando Java.
4.3.1 Clases, Objetos y métodos . Las clases proporcionan la estructura
de los objetos y los mecanismos para fabricar objetos a partir de una
definición de clase. Las clases definen métodos (rutinas de programa) que
son colecciones de código ejecutable los cuales manejan datos
almacenados en los objetos. Los métodos proporcionan el
comportamiento de los objetos de una clase. Desde el punto de vista de la
programación estructurada, una clase se asemejaría a un módulo, los
atributos a las variables globales de dicho módulo, y los métodos a las
funciones del módulo [4].
Podemos definir objeto como el encapsulamiento de un conjunto de
operaciones (métodos) que pueden ser i nvocados externamente, y de un
estado que recuerda el efecto de los servicios.
25
Un objeto además de un estado interno, presenta una interfaz para poder
interactuar con el exterior. Es por esto por lo que se dice que en la
programación orientada a objetos "s e unen datos y procesos", y no como
en su predecesora, la programación estructurada, en la que estaban
separados en forma de variables y funciones.
Un objeto consta de [5]:
Tiempo de vida: La duración de un objeto en un programa siempre
está limitada en el tiempo. La mayoría de los objetos sólo existen
durante una parte de la ejecución del programa. Los objetos son
creados mediante un mecanismo denominado instanciación, y
cuando dejan de existir se dice que son destruidos.
Estado: Todo objeto posee un esta do, definido por sus atributos.
Con él se definen las propiedades del objeto, y el estado en que se
encuentra en un momento determinado de su existencia.
Comportamiento: Todo objeto ha de presentar una interfaz,
definida por sus métodos, para que el resto de objetos que
componen los programas puedan interactuar con él.
El equivalente de un objeto en el paradigma estructurado sería una
variable. Así mismo la instanciación de objetos equivaldría a la
declaración de variables , y el tiempo de vida de un objet o al ámbito de
una variable.
4.3.2 Applets. Entre las diversas ventajas que ofrece Java, su
independencia de la plataforma en la que se van a ejecutar las
aplicaciones resulta de especial utilidad para servir de soporte a una de
sus posibilidades mas notables, la distribución de programas asociados a
páginas Web y su ejecución a través de los navegadores.
Los programas de Java diseñados e implementados para su ejecución en un
navegador se denominan applets. Cualquier ordenador que disponga
de un navegador con máquina virtual Java (JVM) podrá ejecutar estos
26
programas, independientemente del procesador, arquitectura y sistema
operativo que conformen la máquina [4].
Las mayores ventajas de los applets son [5]:
La programación general de un applet es igual a la de una
aplicación, siendo necesario únicamente tener en cuenta unas
pocas reglas especificas a seguir.
Su ejecución es segura, en el sentido de que el usuario no podrá
sufrir consecuencias negativas derivadas de su utilización; por
ejemplo borrado de datos en el disco, establecimiento de
comunicaciones no deseadas, etc.
Entre sus mayores desventajas, podemos destacar [5]:
No son tan eficientes en ejecución como sus más directos
competidores, los ActiveX, ni tan “ligeros” en descarga como el
HTML dinámico.
Por motivos de seguridad, tienen restricciones en su ejecución, no
se puede leer ni escribir de unidades de disco, solo se pueden
establecer comunicaciones entre el servidor Web utilizado y el
ordenador del cliente, etc. Esta característica presenta la o tra “cara
de la moneda” respecto a la segunda ventaja expuesta
anteriormente. Existen casos en los que conviene saltarse, de
forma controlada, estas restricciones (en el proyecto se hizo). Java
incorpora la manera de hacerlo, actuando sobre el Security
Manager que incorpora JVM.
La tendencia de Microsoft es la de no incorporar la máquina virtual
Java en su programa Explorer; debido a su cuota de mercado esto
supone un serio problema a la hora de universalizar el uso de
applets.
27
4.3.3 Socket-Java. En java, las comunicaciones TCP se realizan
utilizando la clásica abstracción de socket. Los socket nos permiten
realizar establecer y programar comunicaciones sin tener que conocer los
niveles inferiores sobre los que se asientan [5].
Para identificar el destino de los paquetes de datos, los sockets utilizan
los conceptos de dirección y puntero. La dirección se refiere a la máquina
a la que se dirigen los datos; se determina gracias a la resolución de
nombres que proporcionan los DNS o simplemente aportando al sock et,
de manera directa, la dirección IP del nodo destino.
Puesto que una misma máquina (nodo) puede hacerse cargo de recoger
varias comunicaciones diferentes de datos (habitualmente ligadas a
distintos servicios), existe la necesidad de proporcionar un meca nismo
que nos permita distinguir los paquetes que llegan relacionados con los
distintos servicios ofrecidos (correo, news, Web, etc.); este mecanismo
son los puertos. Los puertos se representan con valores enteros, que no
deben coincidir para diferentes se rvicios.
Los datos que se envían a un nodo con dirección IP 138.100.48.54 y
puerto 6000 acabaran siendo tratados por programas diferentes
(servidores) que los enviados al mismo nodo (138.100.48.54) y puerto
7000. Este mecanismo no es tan diferente al que u samos en el correo
ordinario; además a la dirección de la casa a la que enviamos una carta,
indicamos la persona a la que se dir ige (que equivaldría al puerto).
4.3.3.1 Establecimiento de comunicaciones (Socket -Java). Java
proporciona dos clases de abstrac ción de comunicaciones TCP:
- Procesos cliente (Socket).
- Procesos servidor (ServerSocket).
28
A continuación se muestra el esquema básico para comunicaciones TCP
con sockets java [5].
Figura 1. Esquema básico para el establecimiento d e comunicaciones TCP pormedio de sockets
1 El programa que proporciona el servicio (programa servidor) crea
una instancia de la clase ServerSocket, indicando el puerto
asociado al servicio: ServerSocket.SocketServidor = new
ServerSocket(Puerto);
2 El programa se proporciona al servicio invoca el método accept
sobre el socket de tipo ServerSocket . Este método bloquea el
programa hasta que se produce una conexión por parte de un
cliente: --SocketServidor.accept();
3 El método accept devuelve un socket de tipo Socket, con el que se
realiza la comunicación de datos del cliente al servidor: Socket
ComunicaConCliente = SocketServidor.accept();
4 El programa cliente crea una instancia de tipo Socket, a la que
proporciona la dirección del nodo destino y el puerto del se rvicio:
Socket SocketCliente = new Socket (Destino, Puerto);
5 Internamente, el socket del cliente trata de establecer
comunicación con el socket de tipo ServerSocket existente en el
29
servidor; cuando la comunicación se establece es cuando
realmente se produce el paso 3 del diagrama.
6 Con los pasos anteriores completados se puede empezar a
comunicar datos entre el cliente (o clientes) y el servidor.
4.4 JSP
JSP es un acrónimo de Java Server Pages , que en castellano vendría a
decir algo como Páginas de Servidor Ja va. Es, pues, una tecnología
orientada a crear páginas W eb con programación en Java.
Con JSP podemos crear aplicaciones W eb que se ejecuten en variados
servidores Web, de múltiples plataformas, ya que Java es en esencia un
lenguaje multiplataforma. Las pág inas JSP están compuestas de código
HTML/XML mezclado con etiquetas especiales para programar scripts de
servidor en sintaxis Java. Por tanto, las JSP podremos escribirlas con
nuestro editor HTML/XML habitual.
El motor de las páginas JSP está basado en los servlets de Java -
programas en Java destinados a ejecutarse en el servidor -, aunque el
número de desarrolladores que pueden afrontar la programación de JSP
es mucho mayor, dado que resulta mucho más sencillo aprender que los
servlets.
En JSP creamos páginas de manera parecida a como se crean en ASP o
PHP -otras dos tecnologías de servidor -. Generamos archivos con
extensión .jsp que incluyen, dentro de la estructura de etiquetas HTML,
las sentencias Java a ejecutar en el servidor. Antes de que sean
funcionales los archivos, el motor JSP lleva a cabo una fase de traducción de
esa página en un servlet , implementado en un archivo class (Byte
codes de Java). Esta fase de traducción se lleva a cabo habitualmente
cuando se recibe la primera solicitud de la página . jsp, aunque existe la
opción de precompilar en código para evitar ese tiempo de espera la
primera vez que un cliente solicita la página [6].
30
4.5 JAVASCRIPT
JavaScrip es un lenguaje de programación que se utiliza pri ncipalmente
para crear páginas Web dinámicas. Una página Web dinámica es aquella
que incorpora efectos como texto que aparece y desapare ce,
animaciones, acciones que se activan al pulsar botones y ventanas co n
mensajes de aviso al usuario [7].
Como tantas otras aportaciones al mundo www, fue Netscape quien inició
la implementación de JavaScript (aunque al principio no se llamaba así), y
posteriormente, una alianza entre Netscape y Sun, creadora del lenguaje
Java, permitió que JavaScript tomase la debida consistencia, definiéndose
como una variante de Java, pero mucho más simple de usar. Esto no
significa que JavaScript sea Java simplificado o reducido. Salvo el nombre
y la sintaxis, JavaScript no tiene mucho en común con Java, pero cumple
su propósito de lenguaje auxiliar del HTML.
Al igual que Java, JavaScript es un lenguaje orientado a objetos
propiamente dicho, ya que dispone de Herencia, si bien esta se realiza
siguiendo el paradigma de programación basada en prototipos , ya que las
nuevas clases se generan clonando las clases base (prototipos) y
extendiendo su funcionalidad. Javascript se puede incluir en cualquier
documento HTML, o todo aquel que termine traduciéndose en HTML en el
navegador del cliente; como por ejemplo PHP o ASP.
Uno de los problemas más graves que tiene JavaScript es que cada
navegador tiene un nivel de lenguaje diferente (incluso alguno s hacen
caso omiso a los estándares), hay distintas versiones de l lenguaje oficial,
y hay versiones de lenguaje que sólo funcionan en un navegador
concreto. Esto propicia que cuando en una sesión el navegador ha
cargado un cierto número de páginas con código JavaScript, es raro que
todas ellas contengan código cien por cien compatible con el navegador, y
éste puede acabar colgándose, no cargando correctamente las páginas, o
no ejecutando los programas JavaScript que éstas contienen.
31
Otro aspecto que hay que acotar cuando se i ncluya código JavaScript en
páginas Web, es que el cliente, tal vez, tenga desactivado el JavaScript de
su navegador; en muchos casos incluso desconoce cómo activarlo [7]. Por
ello, no es recomendable basar en JavaScript aspectos esenciales del
funcionamiento de una página.
4.6 HTML
El HTML (Hyper Text Markup Language) es un lenguaje que sirve para
escribir hipertexto, es decir, documentos de texto presentado de forma
estructurada, con enlaces (links) que conducen a otros documentos o a
otras fuentes de información (p or ejemplo bases de datos) que pueden
estar en nuestra propia máquina o en máquinas remotas de la red. Todo
ello se puede presentar acompañado de cuantos gráficos estáticos o
animados y sonidos seamos capaces de imaginar [8].
4.7 XML
XML significa eXtensible Markup Language, o lenguaje de anotación
extensible. Ya conocemos el lenguaje HTML ( hypertext markup
language), lenguaje de anotación para páginas W eb que permite
navegación tipo hipertexto; sin em bargo, XML no es sólo un lenguaje, es
una forma de especificar lenguajes, de ahí lo de extensible. Todo lenguaje
que se exprese de una forma determinada puede ser XML. Por lo tanto,
XML no es un lenguaje para hacer mejores páginas W eb, sino un
lenguaje para información auto-descrita, o al menos, auto -descrita si las
etiquetas están bien puestas [8].
XML se inició como un subconjunto de SGML ( structured generalized
markup language), un standard ISO para documentos estructurados que
es sumamente complejo para poder servir documentos en la W eb. XML
es algo así como SGML simplificado, de forma que una aplicación no
necesita comprender SGML completo para interpretar un documento, sino
32
sólo el subconjunto que se defina. Los editores SGML, sin embargo,
pueden comprender XML.
Por tanto, no debe pensarse que XML es para crear páginas Web, o algo
parecido a las páginas Web. XML es un lenguaje que cambia el
paradigma de programación: de basada en las funciones u objetos a la
programación basada en el documento . XML se puede usar para cambiar
totalmente el paradigma de publicación; de un programa que recibe unas
entradas y produce unas salidas, se pasa a un documento que genera
otro documento, o bien programas que toman documentos y producen
otros documentos. Por eso, tam bién, y, en general, salvo en entornos de
servicios W eb, lo normal es que el XML se use en el servidor, y se sirva
otro tipo de documentos, HTML, por ejemplo, que se obtienen a base de
una serie de transformaciones. Precisamente, esto hace que los
documentos XML se usen dentro de entornos de aplicaciones . Este
entorno de aplicaciones permite publicar documentos XML, que, antes de
ser enviados al cliente, sufrirán una serie de transformaciones para
adaptarlo a los requisitos del mismo.
4.8 XHTML
Acrónimo inglés de eXtensible Hypertext Markup Language (lenguaje
extensible de marcado de hipertexto), es el lenguaje de marcado pensado
para sustituir a HTML como estándar para las páginas Web. En su versión
1.0, XHTML es solamente la versión XML de HTML, por lo que tiene,
básicamente, las mismas funcionalidades, pero cumple las
especificaciones, más estrictas, de XML. S u objetivo es avanzar en el
proyecto del World Wide Web Consortium de lograr una Web semántica,
donde la información, y la forma de presentarla estén claramente
separadas [9].
33
4.9 CSS
CSS es un lenguaje de hojas de estilos creado para controlar el aspecto o
presentación de los documentos electrónicos definidos con HTML y
XHTML, CSS es la mejor forma de separar los contenidos y su
presentación y es imprescindible para crear páginas Web complejas [10].
Separar la definición de los contenidos y la definición de su aspecto
presenta numerosas ventajas, ya que obliga a crear document os HTML /
XHTML, bien definidos y con significado completo. Además, mejora la
accesibilidad del documento, reduce la complejidad de su mantenimiento
y permite visualizar el mismo documento en infinidad de dispositivos
diferentes.
Al crear una página Web, se utiliza en primer lugar el lenguaje HTML /
XHTML, para marcar los contenidos, es decir, para designar la función de
cada elemento dentro de la página: párrafo, titular, texto destacado, tabla,
lista de elementos, etc.
Una vez creados los contenidos, se utiliza el lenguaje CSS para definir el
aspecto de cada elemento: color, tamaño y tipo de letra del texto,
separación horizontal y vertical entre elementos, posición de cada
elemento dentro de la página, etc [10].
4.10 ARCHIVOS *.BAT
Un batch (o bat) es un archivo de procesamiento por lotes , se trata de
archivos de texto sin formato, guardados con la extensión *.bat que
contienen un conjunto de comandos DOS. Cuando se ejecuta este
archivo bat, los comandos contenidos son ejecutados en grupo , de forma
secuencial, permitiendo automatizar diversas tareas [11].
Cualquier comando DOS puede ser utilizado en un archivo batch, existen
homólogos en otros sistemas operativos diferentes a Windows, por
ejemplo en linux son utilizados los archivos .sh , con el mismo fin.
34
4.11 SERVIDOR WEB
Un servidor W eb es un programa que sirve para atender y responder a las
diferentes peticiones de los navegadores, proporcionando los recursos
que soliciten usando el protocolo HTTP o el protocolo HTTPS (la versión
cifrada y autenticada). Un servidor W eb básico cuenta con un esquema
de funcionamiento muy simple, basado en ejecutar infinitamente el
siguiente bucle [12]:
1. Espera peticiones en el puerto TCP indicado (el estándar por
defecto para HTTP es el 80).
2. Recibe una petición.
3. Busca el recurso.
4. Envía el recurso utilizando la misma conexión por la que recibió
petición.
5. Vuelve al segundo punto.
Un servidor W eb que siga el esquema anterior cumplirá todos los
requisitos básicos de los servidores HTTP, aunque sólo podrá servir
ficheros estáticos.
A partir del anterior esquema se han diseñado y desarrollado todos los
servidores de HTTP que existen, variando sólo el tipo de peticiones
(páginas estáticas, CGIs, Servlets, etc.) que pueden atender, en función
de que sean o no sean multi -proceso o multi-hilos, etc.
4.12 TECNOLOGÍA AJAX
En realidad, el término AJAX es el acrónimo de Asynchronous JavaScript
+ XML, que se puede traducir como “JavaScript asincrono + XML”.
Ajax no es una tecnología (ver figura 2) es realmente muchas tecnologías,
cada una floreciendo por su propio mérito, uniéndose en poderosas
nuevas formas. AJAX incorpora [13]:
35
- Presentación basada en estándares usando XHTML y CSS.
- Exhibición e interacción dinámicas usando el Document Object
Model (DOM).
- XML, XSLT y JSON, para el intercambio y manipulación de
información.
- XMLHttpRequest, para el intercambio asíncrono de la información.
- JavaScript poniendo todo junto.
Figura 2. Tecnologías agrupadas bajo el co ncepto AJAX
El modelo clásico de aplicaciones Web en la mayoría de las acciones del
usuario en la interfaz (pinchar un botón, seleccionar un valor de una lista,
etc.) disparan un requerimiento HTTP al servidor Web. El servidor efectúa
un proceso (recopila información, procesa números, hablando con varios
sistemas propietarios), y le devuelve una pagina HTLM al cliente.
En el siguiente esquema, se muestra el mo delo clásico de una aplicación
Web y el modelo de una aplicación Web utilizando AJAX.
36
Figura 3. Comparación gráfica del modelo tradicional de aplicaciones Web y elmodelo propuesto por AJAX
Esta técnica tradicional para crear aplicaciones Web funciona
correctamente, pero no crea una buena sensación al usuario. Al realizar
peticiones continuas al servidor, el usuario debe esperar a que se
recargue la página con los cambios solicitados. Si la aplicación debe
realizar peticiones continuas, su uso se convierte en algo molesto.
AJAX permite mejorar completamente la interacción de l usuario con la
aplicación, evitando las recargas constantes de la pagina, ya que el
intercambio de información con el servidor se produce en un segundo
plano.
Las aplicaciones construidas con AJAX elimina n la recarga constante de
páginas mediante la creación de un elemento intermedio entre el usuario
y el servidor. La nueva capa intermedia de AJAX mejora la respuesta a la
aplicación, ya que el usuario nunca se encuentra con una ventana del
navegador vacía esperando la respuesta del servidor.
37
4.13 MICROCONTROLADOR
Un microcontrolador es un circuito integrado programable que contiene
todos los componentes de un computador. Se emplea para controlar el
funcionamiento de una tarea determinada y debido a su reducido tamaño,
suele ir incorporado en el propio artefacto al que gobierna. En su
memoria, solo 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 artefacto a controlar [14].
La industria Informática acapa ra gran parte de los microcontroladores que
se fabrican. Casi todos los periféricos del computador, desde el ratón o el
teclado hasta la impresora, son regulados por el programa de un
microcontrolador.
4.13.1 Programación de microcontroladores . Para este tipo de
dispositivos, utilizar lenguajes cercanos a la máquina (de bajo nivel)
representan un considerable ahorro de código en la confección de
programas, lo que es importante dada la limitación en la capacidad de
memoria de instrucciones. Los programas bie n realizados en lenguaje
Assembler optimizan el tamaño de la memoria que ocupan y su ejecución
es muy rápida.
Los lenguajes de alto nivel más empleados con microcontroladores son el
C y el BASIC, de los que existen varias empresas que comercializan
versiones de compiladores e intérpretes para diversas familias de
microcontroladores. En el caso de los PIC se destaca el compilador de C
PCM de la empresa CCS y el interprete PBASIC de PARALLAX.
4.13.2 Pic 16F628A. El PIC 16F628A es un microcontrolador CMOS
FLASH de 8 bits de arquitectura RISC capaz de operar con frecuencias de
reloj hasta de 20 MHz, disponible en cápsula DIP (doble hilera de pines)
y SOIC (Montaje superficial en forma cuadrada) de 18 pines [ver
anexo D].
38
Posee Internamente un oscilador de 4 MH z y un circuito de Power-On
Reset que eliminan la necesidad de componentes externos y expanden a
16 el número de pines a utilizar como líneas de entrada/salida.
Adicionalmente, el PIC 16F628A proporciona una memoria de datos
EEPROM de 128x8 (128 Bytes), u na memoria de programa FlASH de
2024x14 (2K x 14 bits por localidad), una memoria de datos RAM de
propósito general de 224x8, un módulo CCP (captura/comparación/PWM), un
USART, 3 comparadores análogos, una referencia de voltaje
programable y tres temporiza dores. Estas y otras características lo hacen
ideal en aplicaciones automotrices, industriales, y de electrónica de
consumo, así como en equipos e instrumentos programables de todo tipo.
4.13.2.1 Organización de la memoria . El PIC 16F628A posee un
contador de programas de 13 bits, capaz de direccionar un espacio de
memoria de 8Kx14. Sin embargo, únicamente los primeros 2Kx14, desde
0000h hasta 07FFh, están implementados. Los vectores de reset e
interrupción se encuentran en las direcciones 0000h hasta 000 4h,
respectivamente. La pila (stack) es de 8 niveles, lo que significa que
puede soportar hasta 8 direcciones de retorno de subrutina. El espacio de
memoria RAM de datos es de 512x8, dividido en 4 bancos de 128 bytes
cada uno. Sin embargo, solo están imple mentados 330 bytes,
correspondiendo 224 al área de los registros de propósito general (GPR)
y 36 al área de registros de función especial (SFR). Los restantes 70
bytes implementados son espejos de algunos SFR de uso frecuente, así
como los últimos 16 GPR del banco 0. Esta característica agiliza el
acceso a estos registros, puesto que no siempre es necesario especificar
el banco donde se encuentran. La selección del banco de ubicación de un
SFR o un GPR particular se hace mediante los bits 6 (RP1) y 5 (RP0) del
registro STATUS [ver anexo D].
39
4.13.2.2 Manejo de puertos. El PIC 16F628A (ver figura 4) cuenta con
dos puertos PORTA y PORTB, algunos pines de estos puertos de
entrada/salida son multiplexados con una función alternativa de los
periféricos del disposi tivo. Cuando un periférico es activado el pin no
puede ser usado para propósitos generales de entrada/salida.
Figura 4. PIC 16F628 (encapsulado DIP) [19]
El PORTA es un puerto de entrada de 8 bits. El pin RA4 esta multiplexado
con la entrada de reloj T0CK1. El pin RA5 es un disparador Schmitt solo de
entrada y no cuenta con controladores de salida. El resto de los pines RA5
de los puertos tienen un disparador Schmitt con todos los niveles de entrada
de datos y controladores de sal ida. Todos lo pines tienen bits de dirección
de datos (registros TRIS), mediante los cuales pueden
configurar estos como entradas o salidas (ver anexo D).
Un ‘1’ en el registro TRISA corresponde a poner el controlador
correspondiente de la salida en modo de alta impedancia, es decir, los
pines de PORTA se configuran como entradas de datos. Un ‘0’ en el
registro TRISA pone el contenido de la salida en el pin seleccionado, en
otras palabras los pines del puerto se configuran para la salida de datos.
Cuando se esta leyendo el registro PORTA este lee el estado de los pines
mientras que se le escriba, este escribirá en el puerto. Todas las
operaciones de escritura son operaciones de lectura – modificación –
escritura. La escritura al puerto implica que los pines del puerto sean
leídos primero y después este valor sea modificado y escrito en la salida
del puerto.
40
Los pines del PORTA son multiplexados por un comparador y un voltaje
de referencia. La operación de estos pines es seleccionada por el control
de bits en el registro CMCON (comparador control register) y el registro
VRCON (voltage reference control register). Cuando es seleccionado
como entrada el comparador, los pines se leerán como 0’s.
TRISA controla la dirección de los pines RA, inclusive cuando este
comienza a usarse como entrada en el comparador. El usuario debe
cerciorarse de mantener los pines configurados como entradas, al usarlas
como entradas del comparador.
La dirección 0x05 hace referencia a la dirección de PORTA el cual reside
en el BANCO 0 y el TRISA reside en la misma dirección pero del BANCO
1.
El PORTB es un puerto bidireccional de 8 bits. Su registro de datos
correspondiente es TRISB. Un ‘1’ en el registro TRISB pone el dispositivo de
salida correspondiente en modo de alta impedancia. Un ‘ 0’ en el
registro TRISB pone el contenido de la salida en el pin seleccionado. Esto
es justo lo mismo que ocurre en TRISA.
El PORTB es multiplexado con interrupciones externas, tales como
USART, el módulo CCP y el reloj de entrada/salida TMR1.
Durante la lectura en el registro PORTB este lee el estado de los pines,
mientras que esta escribiendo este escribirá en el puerto. Todas las
operaciones en el proceso de escritura son leer – modificar –escribir. Por
eso escribir en el puerto implica que los pines del puerto sean primero que
todo leídos, y después su valor sea modificado y escrito en el puerto.
Cuatro de los pines del PORTB (7 - 4), tienen una interrupción en cambios de
características. Solo lo pines configurados como entradas pueden
causar que ocurran estas interrupciones. Los pines de entrada (RB7 –
RB4) son comparados con el antiguo valor trabajado en el PORTB.
41
Para poder acceder a los distintos bancos, como se menciono
anteriormente se hace uso de los bits 5 y 6 del registro STATUS que
hacen posible realizar el acceso a los distintos bancos del
microcontrolador, esto es de suma importancia para poder realizar la
configuración de los puertos del PIC, ya que los registros PORTA y
PORTB se localizan en el BANCO 0 y sus correspondientes TRISA y
TRISB se localizan en el BANCO 1 (ver anexo D ) por lo que es necesario
realizar direccionamientos para poder cambiar el BANCO.
4.13.2.3 Usart. USART es el acrónimo de Universal
Synchronous/Asynchronous Receiver Transmitter , que traducido al
español viene a ser algo parecido a Transmisor y Receptor
Sincrono/Asincrono Universal .
Se trata de un periférico para la transmisión de datos en formato serie,
utilizando técnicas de transmisión sincrónica o asincrónica, según se
configure el periférico.
La USART del PIC 16F628A puede utilizarse de tres maneras diferentes
[ver anexo D]:
-Asincrono (full duplex)
-Sincrono Master (half duplex)
-Sincrono Slave (half duplex)
Este módulo, pemite enviar 8 o 9 bits por transmisión y tiene posibilidad de
alcanzar varias velocidades de transmisión, siendo lo mas importante, que
por ser una funcionalidad integrada al PIC, el programador logra
desentenderse de toda la complejidad del protocolo a nivel de capa 1 y es
suficiente con poner un dato en un registro del microcontrolador para
enviar y leer otro registro para recibir. A continuación, nos centraremos en
la comunicación asíncrona de 8 bits, pues es en ella en que se realiza la
transmisión de datos por parte de la tarjeta de control.
42
En el modo asincrono, se utiliza RB2/TX/CK (pin 8) para la transmisión de
datos y RB1/RX/DT (pin 7) para la recepción. Estos pines deben estar
configurados como entradas (puestos en 1 en los registros TRIS
correspondientes).
Para comunicar 2 PIC utilizando el USART, es suficiente con con ectar los
pines RX y TX cruzados, es decir el pin TX del pic1 conectada con el pin
RX del pic2 y el pin RX del PIC1 con el pin TX del PIC2. Dado que los 2
microcontroladores utilizan los mismos voltajes (la norma TTL) no hay que
hacer más cambios. Por otro lado si se quiere comunicar un PIC con un
PC utilizando el puerto serie con la norma RS232 (que e s nuestro caso),
hay que tener en cuenta que esta norma utiliza voltajes distintos para
representar el 1 y el 0 que los microcontroladores. Por lo tanto será
necesario pasar tanto el TX como el RX por un módulo convertid or de
voltajes del tipo MAX232 (ver sección 4.17).
Inicialmente es necesario hacer una serie de configuraciones para que
pueda usarse el modo USART, esto incluye definir a que velocidad se va
a transmitir, el modo (sincrónico / asincrónico), con interrupciones, etc. A
continuación se presenta los registros que intervienen en dicha
configuración.
Registro TXSTA. Transmit Status and Control Register (Registro de
estado y control de transmisión)
Incluye:
baudios.
CSRC selecciona la fuente de reloj (interna, externa).
TX9 habilita transmisiones de 8 o 9 bits.
TXEN habilita transmisión.
SYNC selección de modo (sincrónico, asincrónico).
BRGH complementa el control en la generación de
43
TRMT bit de estado del Transmit Shift Register
TX9D noveno bit de transmisión de datos.
Registro RCSTA. Receive Status and Control Register (Registro de
estado y control de recepción).
Incluye:
SPEN bit de habilitación del puerto serial.
RX9 configura la recepción de 8 o 9 bits.
SREN bit de habilitación de recepción simple.
CREN bit de habilitación de recepción continua.
ADDEN bit de habilitación de detección de dirección.
FERR bit bandera de error de framing.
OERR bit de error por sobreescritura.
RX9D noveno bit de recepción de datos.
Registro SPBRG. Genera los pulsos, el reloj de la transmisión. Existe un
timer independiente de 8 bits que decrementa hasta 0 a partir del valor de
este registro. Dependiendo de la velocidad de transmisión que se quiera
conviene configurar en 0 o 1 el BRGH, y dependiendo de este valor se
configura en el SPBRG.
Registro PIE1. Incluye:
TXIE habilita interrupciones por transmisión de USART
RCIE habilita interrupciones por recepción de USART
Registro PIR1. Incluye:
TXIF bandera que indica que se enviado por USART
RCIF bandera que indica que se ha recibido por USART
44
Registro TXREG. Registro que se debe escribir con el dato a enviar por
USART.
Registro RCREG. Registro que se debe leer al recibir un dato por
USART.
4.14 ¿QUE ES UN SERVOMOTOR?
Es un dispositivo sim ilar a un motor de corriente continua, con la
peculiaridad de posicionarse dentro de un rango y mantenerse fijo en
dicha posición. Esta conformado por un motor, una caja reductora y un
potenciómetro de realimentación . Los servomotores se utilizan
frecuentemente en sistemas de radio-control y robótica pero su uso no
esta limitado a estos.
4.15 NETMEETING
NetMeeting es una utilidad de telefonía que nos permite establecer
conferencias en tiempo real en Interne t con otras personas. Este software
viene incorporado de forma gratuita con Windows XP .
Las características de NetMeeting hacen posible realizar llamadas
mediante servidores de directorio, servidores de conferencia y páginas
Web. NetMeeting permite que resulte más fácil realizar llamadas a través
de Internet, la intranet de una organización, e incluso de un teléfono.
Se puede utilizar NetMeeting para enviar a los otros participantes en una
conferencia su imagen . Para enviar una imagen de vídeo, necesitará una
tarjeta de captura de vídeo y una cámara, o una cámara que admita Vídeo
para Windows.
Aunque no se tenga un sistema de vídeo, podrá recibir y ver la s imágenes
que le envíen. Si bien es cierto, que en una conferencia pueden participar
varias personas, sólo es posible intercambiar imágenes de vídeo con u na
de ellas.
45
4.15.1 Realizar una llamada con NetMeeting . Para realizar una llamada se
ejecutan los siguientes pasos:
- Se va a la barra direcciones y se escribe un correo electrónico, el
nombre del equipo, un número de teléfono o una dirección IP.
- Se presiona el botón ’Llamar’.
La figura 5, muestra la barra de direcciones y el botón para llamar del
programa NetMeeting.
Figura 5. Iniciar llamada (NetMeesting)
4.15.2 Configuración de video en NetMeeting. Para configurar el video
en NetMeeting, se hará doble click sobre ‘Opciones…’ del menú
‘Herramientas’, luego abrimos la pestaña ‘Video’ que desplegará una
imagen similar a la figura que se muestra a continuación .
46
Figura 6. Configuración de video (Net Meeting)
Para activar la cámara, debes presionar el botón ’Iniciar video’ (ver figura7).
Figura 7. Activación de cámara Web (NetMeeting)
4.16 PRINCIPIO DE TRANSMISIÓN EN SERIE
El concepto de las comunicaciones en serie es el si guiente, los datos son
enviados del emisor al receptor bit a bit a través de una única línea o
47
circuito. El puerto serie toma 8, 16 o 32 bits en paralelo del bus del
computador y los convierte en un flujo de 8, 16 o 32 bits en serie. El
nombre de transmisión en serie viene de aquí, cada bit de información es
transmitido en serie de un sitio a otro [15].
En la practica en una transmisión en serie algunos bits pueden perderse o
bien ser añadidos y por lo tanto alterar el resultado final. Si un bit se
pierde o se añade, todos los bits sucesivos son cambiados de posición y
se obtiene un resultado incorrecto. Así que para establecer
comunicaciones en serie fiables se deben corregir posibles errores en la
transmisión.
4.16.1 Método de transmisión en serie . Existen dos métodos de
transmisión en serie que corrigen errores de bit. El primero es la
comunicación sincrona . El emisor y el receptor son sincronizados
usando una señal de reloj que indica el tiempo entre cada bit. Controlando
esta señal, el receptor puede determinar si se ha perdido o se ha añadido un
bit. Por ejemplo, imaginemos una cinta transportadora en la que un
producto pasa a través de un sensor cada cinco segundos, si el sensor
detecta algo antes de cinco segundos asume que es un objeto extraño y
suena la alarma, si después de cinco segundos no detecta nada asume
que el producto se ha perdido y suena la alarma. Un aspecto a tener en
cuenta en este tipo de comunicación es que si alguno de los extremos de
la comunicación pierde la señal de reloj, la comunicación finaliza.
El método alternativo, conocido como comunicación asincrona, es
añadir marcadores dentro del flujo de bits para seguir la pista a cada bit de
datos. Si se introduce un bit de comienzo que indica el comienzo de un
bloque de bits, la posición de cada bit puede ser determinada
temporizando los bits en periodos regulares. Enviando bits de comienzo al
principio de cada bloque de bits, los dos extremos no tienen que estar
sincronizados por una señal de reloj. Al utilizar bloques de pequeño
tamaño no hay tiempo para que el temporizador se desincronize. El único
48
factor importante es que receptor y emisor tengan configurada la misma
velocidad en el puerto. Los datos se dividen en bloques de 5 a 8 bits
llamados palabras. El bit menos significativo de la pal abra se envía
primero y el más significativo el último. En la comunicación el emisor
codifica cada palabra añadiendo al principio de esta un bit de comienzo y
uno o dos bits de parada al final. Algunas veces se añade un bit de
paridad entre el último bit de la palabra y el bit de parada para comprobar
la integridad de los datos [15].
4.16.2 Estándar RS232. En los años 60, cada fabricante usaba un
interfaz diferente para comunicar un DTE (Data Terminal Equipment) y un
DCE (Data Communications Equipment). Cables, c onectores y niveles de
voltaje eran diferentes e incompatibles, por lo tanto, la interconexión entre
equipos de diferentes fabricantes requería el uso de convertidores de los
niveles de voltaje y la fabricación de cables y conectores especiales.
En 1969, el EIA (Electronic ---) junto con Bell Laboratories y otros
fabricantes establecieron un estándar para la interfaz entre DTE's y
DCE´s. El objetivo de este estándar era simplificar la interconexión de
equipos fabricados por diferentes firmas.
Este estándar llego a ser el RS-232-C (Recommended Standard number
232, revision C from the Electronic Industry Association). Un estándar
similar fue desarrollado en Europa por el CCITT (Comite Consultatif
Internatinale de Telegraphie et Telephonie) conocido como V.24
(descripción funcional) y V.28 (especificaciones eléctricas). El RS -232-C
fue adoptado por la mayor parte de fabricantes de terminales y
equipamiento.
En 1980 la creciente industria de los microcomputadores encontró el
estándar RS-232-C barato y apropiado para conectar periféricos al
microcomputador. El RS -232-C llego a ser rápidamente un estándar para
conectar al microcomputador: impresoras, cintas de backup, terminales y
otros microcomputadores.
49
Como el estándar solamente soporta velocidades de transmisión hasta 20
kbps y distancias hasta 16 metros, se adoptaron nuevos estándares por la
EIA. El RS449 (descripción mecánica) y RS423 (descripción eléctrica) son
compatibles con el RS-232-C y se puede operar a velocidades de hasta
10 Mbps y alcanzar distancias d e hasta 1200 metros. Sin embargo, la
adopción de un nuevo estándar es un proceso largo y costoso. El RS -232-
C esta muy expandido y por lo tanto le queda bastante vida [15].
4.16.2.1 Descripción (RS232) . El estándar RS-232-C describe un interfaz
entre un DTE y un DCE que emplea un intercambio en serie de datos
binarios. En el se definen características eléctricas, mecánicas,
funcionales del interfaz y modos de conexión comunes. Las
características eléctricas incluyen parámetros tales como niveles de
voltaje e impedancia del cable. La sección mecánica describe los pines
[15].
4.16.2.2 Características eléctricas. Los niveles de voltaje descritos en el
estándar son los siguientes [15]:
Tabla 1. Características Eléctricas
Señales de datos "0" "1"Emisor (necesario) de 5 a 15 de -5 a -15 VoltiosReceptor (esperado) de 3 a 25 de -3 a -25 Voltios
Señales de control "Off" "On"Emisor (necesario) de -5 a -15 de 5 a 15 VoltiosReceptor (esperado) de -3 a -25 de 3 a 25 Voltios
Puede verse que los voltajes del emisor y el receptor son diferentes. Esta
definición de los niveles de voltaje compensa las perdidas de voltaje a
través del cable. Las señales son atenuadas y distorsionadas a lo largo
del cable. Este efecto es debido en gran parte a la capacidad del cable.
En el estándar la capacidad máxima es de 2500 pf (picoFaradios). La
capacidad de un metro de cable es normalmente de 130 pf. Por lo tanto,
la longitud máxima del cable esta limitada a unos 17 metros. Sin embargo,
50
esta es una longitud nominal definida en el estándar y es posible llegar
hasta los 30 metros con cables de baja capacidad o utilizando
velocidades de transmisión bajas y mecanismos de corrección.
4.16.2.3 Características mecánicas
En el estándar no se hace referencia al ti po de conector que debe usarse.
Sin embargo los conectores más comunes son el DB-25 (25 pines) y el
DB-9 (9 pines). El conector hembra debe estar asociado con el DCE y el
macho con el DTE (ver figura 8).
Figura 8. Diagrama de los conectores DB-25 y DB-9
En la siguiente tabla puede verse la señal asociada a cada pin [15].
Tabla 2. Características Mecánicas
DB25Pin
DB9Pin Nombre EIA CCITT DTE-
DCE Nombre Formal
1 FG AA 101 Frama Ground2 3 TD BA 103 --> Transmitted Data3 2 RD BB 104 <-- Received Data4 7 RTS CA 105 --> Request To Send5 8 CTS CB 106 <-- Clear To Send6 6 DSR CC 107 <-- Data Set Ready7 5 SG AB 102 Signal Ground8 1 DCD CF 109 <-- Data Carrier Detect9 + P10 - P11 No asignado12 SDCD SCF 122 <-- Secondary Data Carrier13 SCTS SCB 121 <-- Secondary Clear To Send14 STD SBA 118 --> Secondary Transmitted15 TC DB 114 <-- Transmission Signal16 SRD SBB 119 <-- Secondary Received Data
17 RC DD 115 --> Receiver Signal ElementTiming
51
18 No asignado
19 SRTS SCA 120 --> Secondary Request ToSend
20 4 DTR CD 108.2 --> Data Terminal Ready21 SQ CG 110 <-- Signal Quality Detector22 9 RI CE 125 <-- Ring Indicator23 CH/CI 111/112 <--> Data Signal Rate Selector24 DA 113 <-- Transmitter Signal25 No asignado
4.17 MAX232
El MAX232 es un circuito integrado que convierte lo s niveles de las líneas
de un puerto serie RS232 a niveles TTL y viceversa. Lo interesante es
que sólo necesita una alimentación de 5V, ya que genera internamente
algunas tensiones que son necesarias para el estándar RS232. Otros
integrados que manejan las líneas RS232 requieren dos voltajes, +12V y -
12V [ver anexo C].
Figura 9. Conexión del MAX232
El MAX232 soluciona la conexión necesaria para lograr comunicación
entre el puerto serie de una PC (ver figura 9) y cualquier otro circuito con
funcionamiento en base a señales de nivel TTL/CMOS.
52
El circuito integrado posee dos conversores de nivel TTL a RS232 y otros
dos que, a la inversa, convierten de RS232 a TTL.
Estos conversores son suficientes para manejar las cuatro señales más
utilizadas del puerto serie del PC, que son TX, RX, RTS y CTS.
TX es la señal de transmisión de datos, RX es la de recepción, y RTS y
CTS se utilizan para establecer el protocolo para el envío y recepción de
los datos.