SISTEMA DE CONTROL Y TARIFICACIÓN DE TIEMPO PARA CONSOLAS DE VIDEOJUEGOS DIEGO FERNANDO FIGUEROA VILLEGAS UNIVERSIDAD CATÓLICA POPULAR DEL RISARALDA FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA PEREIRA - 2010 SISTEMA DE CONTROL Y TARIFICACIÓN DE TIEMPO PARA CONSOLAS DE VIDEOJUEGOS DIEGO FERNANDO FIGUEROA VILLEGAS PROYECTO DE GRADO Asesor GUILLERMO CÉSPEDES Ingeniero Electrónico UNIVERSIDAD CATÓLICA POPULAR DEL RISARALDA PROGRAMA DE INGENIERÍA DE SISTEMAS Y TELECOMUNICACIONES PRACTICAS PROFESIONALES PEREIRA 2010 DERECHOS DEL AUTOR Las bases fundamentales para el desarrollo de este proyecto se adquirieron en el transcurso del programa académico universitario, gracias al conocimiento y enseñanza de excelentes docentes, por este motivo es un deseo autorizar a la universidad Católica Popular del Risaralda a incluir el presente proyecto de grado dentro de su catalogo de consulta de la Biblioteca y permitir el acceso a todas las personas interesadas en su contenido, respetando la propiedad intelectual del mismo. AGRADECIMIENTOS Agradezco los dos asesores que me acompañaron en el transcurso del desarrollo de presente proyecto, en primera instancia a James Andrés Barrera quien me aporto grandes ideas para el mejoramiento del proyecto y en segunda a Guillermo Céspedes, quien me brindo su conocimiento, apoyo y tiempo para llevar a cabo este proyecto. Agradezco a mis padres por su apoyo incondicional y a mis compañeros de estudio por su colaboración. DEDICATORIA Este proyecto va dedicado a Dios, que me ha permitido llegar hasta el final de mi carrera universitaria, quien me ha llenado de fuerza y motivación en los malos momentos. Pero en especial va dedicado a mi familia, que siempre me ha apoyado en mis metas y sueños, que al igual que yo se han esforzado para sacar adelante mi carrera profesional, y que con su ejemplo y carácter han hecho de mí un ser humano integral. RESUMEN Los centros de entretenimiento son una fuente de diversión tanto para jóvenes como adultos. En la actualidad hay una gran cantidad de estos centros dedicados a ofrecer servicios de entretenimiento basados en videojuegos. El presente proyecto está enfocado al servicio de renta o alquiler de consolas de videojuegos en los centros de entretenimiento, ya que una gran parte de estos utilizan métodos rudimentarios para realizar el control y tarifación del servicio. El objetivo principal es diseñar y construir un sistema computacional y electrónico que permita administrar, controlar y facturar el servicio de renta o alquiler de consolas de videojuegos. Con este proyecto se pretende ofrecer una solución a los problemas de control y administración de los centros de entretenimiento, automatizando las actividades de asignación de tiempo, tarificación y generación de reportes de venta. El control y la tarifación del servicio de alquiler de las consolas de videojuegos se logra a través de un circuito electrónico encargado de bloquear y desbloquear la señal de video entre la consola y el TV, de acuerdo al tiempo de uso programado en un software especial de computadora que se comunica con el dispositivo vía USB y ofrece entre otras, funcionalidades como: autenticación y asignación de privilegios de usuario, creación de consolas y tarifas, generación y consulta de reportes de venta. Palabras claves: consolas de videojuegos, microcontrolador, tarjeta de control, comunicación USB, Firmware, Software. ABSTRACT Entertainment centers are a source of enjoyment for both young and old. Currently there are a lot of these centers are dedicated to providing entertainment services based on video games. This project is focused on the service of renting or leasing of video game consoles in entertainment centers, already a great part are using rudimentary methods for controlling and charging for the service. The main objective is to design and build a computer and electronic system that allows to manage, monitor and bill the service of renting or leasing of video game consoles. This project tries to provide a solution to the problems of management and control of the entertainment centers by automating the activities of time assignment, pricing and reporting of sales. Control and charging for the rental service video game consoles is achieved through an electronic circuit in charge of locking and unlocking the video signal between the console and TV, according to the time of use programmed into a special computer software that communicates to the device via USB and offers among others, features such as authentication and assignment privileges of user, creating consoles and fees, generation and query sales reports. Keywords: game consoles, microcontroller, control card, USB communication, Firmware, Software. CONTENIDO Pág. INTRODUCCIÓN ................................................................................................... 15 1. FORMULACIÓN DEL PROYECTO ................................................................. 17 1.1. SITUACIÓN ACTUAL ............................................................................... 17 1.2. DEFINICIÓN DEL PROBLEMA ................................................................ 17 1.3. OBJETIVO GENERAL .............................................................................. 18 1.4. OBJETIVOS ESPECÍFICOS ..................................................................... 18 1.5. JUSTIFICACIÓN ....................................................................................... 19 1.6. PLANTEAMIENTO DE LA HIPÓTESIS .................................................... 19 1.7. IDENTIFICACIÓN DE VARIABLES .......................................................... 20 1.8. PRESUPUESTO ....................................................................................... 21 1.9. CRONOGRAMA DE ACTIVIDADES DEL PROYECTO............................ 22 2. MARCO CONTEXTUAL .................................................................................. 23 2.1. DESCRIPCIÓN DEL CONTEXTO ............................................................ 23 2.2. ESTADO DEL ARTE................................................................................. 23 2.3. ORGANIZACIÓN QUE IMPACTARÁ EL PROYECTO ............................. 29 2.3.1. Tipo de organización .......................................................................... 29 2.3.2. Objeto social ...................................................................................... 29 2.3.3. Servicios ............................................................................................. 29 2.3.4. Organigrama general de un centro de entretenimiento ...................... 30 3. MARCO TEÓRICO .......................................................................................... 31 3.1. INTERFAZ DE COMUNICACIÓN ............................................................. 31 3.1.1. 3.2. Interfaz Bus Serial Universal (USB) ................................................... 31 MICROCONTROLADORES ..................................................................... 43 3.2.1. Gama de PICs .................................................................................... 45 3.2.2. Arquitecturas de los Pics .................................................................... 47 3.2.3. Registros ............................................................................................ 51 3.2.4. Contador de programas ..................................................................... 52 3.2.5. Puertos de entrada y salida E/S ......................................................... 52 3.2.6. Interrupciones .................................................................................... 52 3.2.7. Oscilador externo ............................................................................... 52 3.2.8. Temporizador o TIMER ...................................................................... 53 3.2.9. Programación en microcontroladores................................................. 54 3.2.10. Compilador PCW CCS para microcontroladores ............................ 58 3.2.11. Software de simulación de circuitos Proteus................................... 60 3.3. CONECTORES ........................................................................................ 61 3.3.1. RCA.................................................................................................... 61 3.3.2. HDMI .................................................................................................. 62 4. MODELO TEÓRICO ....................................................................................... 64 4.1. REQUERIMIENTOS PARA EL DESARROLLO DEL SOFTWARE .......... 64 4.2. SOLUCIÓN PROPUESTA ........................................................................ 64 4.3. DISEÑO DE LA TARJETA DE CONTROL ............................................... 65 4.4. COMPONENTES UTILIZADOS ................................................................ 68 4.4.1. PIC18F4550 ....................................................................................... 68 4.4.2. ULN2803 ............................................................................................ 70 4.4.3. Comunicación USB ............................................................................ 72 4.5. DESARROLLO DE LA TARJETA DE CONTROL ..................................... 73 4.6. DESARROLLO DEL FIRMWARE PARA EL PIC18F4550 ........................ 76 4.7. DESARROLLO DEL CIRCUITO IMPRESO.............................................. 81 4.7.1. Bloque de control ............................................................................... 82 4.7.2. Bloque de potencia............................................................................. 85 4.7.3. Bloque de switcheo ............................................................................ 87 4.8. EL SOFTWARE PARA EL PC .................................................................. 87 4.8.1. Requerimientos funcionales y no funcionales .................................... 88 4.8.2. Requerimientos del sistema ............................................................... 89 4.8.3. Caso de uso general del sistema ....................................................... 90 4.8.4. Diseño y desarrollo del software ........................................................ 90 4.8.5. Diseño de la base de datos ................................................................ 96 5. CONCRECIÓN DEL MODELO ....................................................................... 99 5.1. PRUEBAS DE RECONOCIMIENTO E INSTALACIÓN ............................ 99 5.2. PRUEBAS DE COMUNICACIÓN Y FUNCIONAMIENTO ...................... 103 5.3. PRUEBAS DE INTEGRACIÓN ............................................................... 105 6. CONCLUSIONES .......................................................................................... 109 7. RECOMENDACIONES ................................................................................. 111 BIBLIOGRAFÍA .................................................................................................... 112 LISTA DE TABLAS Pág. Tabla 1. Presupuesto del proyecto ........................................................................ 21 Tabla 2. Cronograma de actividades del proyecto ................................................. 22 Tabla 3. Codificación numérica y de color de los conductores del cable USB ....... 36 Tabla 4. Distribución de colores en RCA ............................................................... 62 Tabla 5. Tipos y rata de transferencia en USB ...................................................... 74 Tabla 6. Opciones de configuración del oscilador para la operación USB ............. 77 LISTA DE FIGURAS Pág. Figura 1. Organigrama de una organización dedicada al alquiler de consolas de videojuegos ............................................................................................................ 30 Figura 2. Conector TIPO A y TIPO B, con sus correspondientes ranuras de inserción ................................................................................................................ 34 Figura 3. Dimensiones en mm. de los conectores ................................................. 35 Figura 4. Sección de un cable USB ....................................................................... 36 Figura 5. Diagrama de pines de conector TIPO A y TIPO B .................................. 37 Figura 6. Flujo de comunicaciones en USB ........................................................... 42 Figura 7. Diagrama de un sistema microcontrolador. ............................................ 48 Figura 8. Arquitectura von Neumann. .................................................................... 48 Figura 9. Arquitectura de Harvard. ......................................................................... 49 Figura 10. Esquema de un Oscilador..................................................................... 53 Figura 11. Ejemplo de simulación de circuitos en ISIS Proteus ............................. 60 Figura 12. Ejemplo de diseño de circuitos impresos en ARES Proteus ................. 61 Figura 13. Conexión general del sistema de control y tarifación ............................ 67 Figura 14. Disposición de pines del microcontrolador PIC18F4550....................... 69 Figura 15. Diagrama interno del integrado ULN2803............................................. 70 Figura 16. Diagrama de una sección del integrado ULN2803 ............................... 71 Figura 17. Conexión de transistores Darlington ..................................................... 71 Figura 18. Conexión de pines en el conector USB ................................................ 73 Figura 19. Conexión del conector USB al PIC18F4550 ......................................... 73 Figura 20. Conexiones detalladas entre en puerto USB y el PIC18F4550 ............ 75 Figura 21. Conexiones detalladas con el ULN2803 ............................................... 75 Figura 22. Esquema simplificado de la tarjeta de control desarrollado en PROTEUS 7.6........................................................................................................ 76 Figura 23. Diagrama detallado de conexión del bloque de control. ....................... 83 Figura 24. Top Layer del bloque de control ........................................................... 84 Figura 25. Top Overlay del bloque de control ........................................................ 84 Figura 26. Diagrama detallado de conexión del bloque de potencia...................... 85 Figura 27. Top Overlay del bloque de potencia ..................................................... 86 Figura 28. Top Layer del bloque de potencia ......................................................... 86 Figura 29. Caso de uso general del software de control y tarifación...................... 90 Figura 30. Interfaz validar usuario.......................................................................... 91 Figura 31. Interfaz registrar usuario ....................................................................... 91 Figura 32. Interfaz asignar tiempo ......................................................................... 92 Figura 33. Interfaz cancelar tiempo........................................................................ 92 Figura 34. Interfaz consultar información ............................................................... 93 Figura 35. Interfaz reporte de venta ....................................................................... 93 Figura 36. Modelo relacional de la base de datos.................................................. 96 Figura 37. Reconocimiento del dispositivo por parte del PC .................................. 99 Figura 38. Solicitud de ubicación manual del driver del dispositivo ..................... 100 Figura 39. Ubicación manual del driver del dispositivo ........................................ 100 Figura 40. Selección manual del driver del dispositivo ........................................ 101 Figura 41. Instalación del driver del dispositivo ................................................... 101 Figura 42. Notificación de driver instalado correctamente ................................... 102 Figura 43. Reconocimiento del hardware en el administrador de dispositivos del PC ........................................................................................................................ 102 Figura 44. Transmisión de datos al microcontrolador .......................................... 104 Figura 45. Ejecución de tareas programadas en el microcontrolador .................. 104 Figura 46. Escenario de prueba de integracion ................................................... 105 Figura 47. Interconexión de los bloques de la tarjeta de control .......................... 106 Figura 48. Interconexión de la consola de videojuegos y la tarjeta de control ..... 106 Figura 49. Interconexión de todos los dispositivos............................................... 107 Figura 50. Activación de la consola en el software del PC .................................. 107 Figura 51. Verificación de la activación de la consola.......................................... 108 INTRODUCCIÓN En la actualidad los seres humanos buscan continuamente diferentes formas de diversión y entretenimiento ya que es prácticamente una necesidad que poseen tanto ricos como pobres, (ASSEL, 1999), a partir de esto se puede comprender porque la industria del entretenimiento obtiene tan altos márgenes de utilidad, pues no discrimina sexo, estrato socioeconómico ni lugar de nacimiento, debido a que es una necesidad innata en todo ser humano el poder tener un mínimo de recreación. En consecuencia se observa que existen diferentes formas en las que la industria del entretenimiento se manifiesta, como es el caso del cine, los deportes y por supuesto los videojuegos, este es un sector que presenta grandes crecimientos y se ha extendido prácticamente por todo el mundo incluso en países en vía de desarrollo, debido a que en el mercado compiten grandes empresas con altos presupuestos tales como SONY, MICROSOFT, NINTENDO, los cuales son creadores y distribuidores de videoconsolas. (aDeSe, 2009). Entendemos por videojuegos todo tipo de juego digital basado en la interacción de una o varias personas y un aparato electrónico, con independencia de su soporte (ROM interno, disco magnético u óptico, on-line) y plataforma tecnológica (máquina de bolsillo, videoconsola conectable al TV, teléfono móvil, máquina recreativa, microordenador, ordenador de mano, vídeo interactivo). (MARQUES PERE, 2001). En la actualidad las consolas de videojuegos tienen un papel importante en la recreación y aprovechamiento del tiempo libre para gran cantidad de niños y jóvenes, ya que a diferencia de las PCs no requieren gasto de horas de mantenimiento, reinstalación, resolución de problemas, remoción de virus y otras cuestiones. Debido a los altos precios de estos dispositivos combinados con los costos de cada videojuego se hace difícil su adquisición en los hogares de estratos medios y bajos. El interés de los jóvenes por la utilización de los videojuegos es evidente y se corrobora con sólo dar un vistazo al crecimiento de centros o salas de 15 videojuegos, donde se reúnen los jóvenes de manera individual o en grupos a jugar por horas. Como evidencia de esto solo en Bogotá la Cámara de Comercio registró durante los últimos tres años 3798 empresas en la categoría de “Otras actividades de esparcimiento", que corresponde a las salas de videojuegos. (ROMERO, 2007). Aprovechando esto, el proyecto será dirigido a este entorno en especial, ya que es un mercado que se expande rápidamente como medio de entretenimiento e interacción, dado que cada vez más los jóvenes prefieren acudir a dichos centros de entretenimiento a pasar su tiempo libre que tener acceso a un sistema de videojuegos propio por la escases de recursos y la rápida depreciación de los equipos por el avance de la tecnología en este campo. Así mismo cada usuario no tiene que preocuparse por el mantenimiento y reparación del los equipos si fuese necesario, ya que dicha operación le corresponde a la empresa. Con el fin de mejorar el control y la administración de los centros de entretenimiento que prestan el servicio de alquiler de consolas de videojuegos, este proyecto plantea diseñar y desarrollar un sistema que permita controlar y administrar el tiempo de uso de cada consola y llevar un reporte detallado y efectivo de las ventas generadas, con el propósito de optimizar el tiempo de uso de cada uno de estos dispositivos y realizar una tarificación eficiente de los servicios prestados, automatizando los métodos de conteo de tiempo y reporte de ventas. En este documento se presenta el diseño y construcción de un dispositivo electrónico para controlar el tiempo de uso de cada consola de videojuegos, utilizando un microcontrolador como parte central del circuito. Además de esto se plantea el desarrollo de una aplicación software que permite la administración y la comunicación con el dispositivo electrónico a través de una interfaz USB, que permite además de otras características, asignar el tiempo de alquiler de cada consola y almacenar en una base de datos los reportes de ventas generados. 16 1. FORMULACIÓN DEL PROYECTO 1.1. SITUACIÓN ACTUAL En la actualidad la mayoría de los centros de entretenimiento dedicados a la renta de consolas de videojuegos llevan una administración, control y tarificación totalmente manual. Cuando un usuario solicita la prestación del servicio, un operario encargado desarrolla las siguientes labores: Ubica al usuario en la consola deseada o para la cual es compatible el juego seleccionado. Enciende la consola y los demás dispositivos audiovisuales manualmente y solicita al usuario el tiempo que va a utilizar el servicio. El operario revisa periódicamente un cronometro o un reloj para determinar cuándo se agota el tiempo solicitado por el usuario y le informa a este. Realiza el cálculo manualmente de acuerdo a la tarifa establecida para determinar el precio que debe cancelar el usuario. Registra la venta en hojas de cálculo o cuadernos de contabilidad con la fecha, hora y saldo cancelado. 1.2. DEFINICIÓN DEL PROBLEMA El conteo del tiempo resulta ser rudimentario y poco exacto, ya que el operario debe estar revisando constantemente en un reloj el tiempo transcurrido de cada usuario que se encuentre utilizando el servicio en las consolas de videojuegos, para determinar cuándo culmina el tiempo asignado, lo que lleva a que el tiempo de uso de las consolas difiera con el tiempo real contratado y hace que el usuario se sienta insatisfecho con el servicio o que el centro de entretenimiento tenga perdidas por una mala contabilización y administración del tiempo. La tarificación se hace lenta e inefectiva, debido a que el cajero debe realizar el cálculo manual del dinero a cobrar, relacionando el tiempo de uso del servicio y la tarifa establecida por la empresa, provocando errores en las tarifas cobradas al usuario. 17 El reporte de ventas se hace manualmente estableciendo la fecha, tiempo, hora y saldo cancelado por cada usuario en formatos u hojas de cálculo. Para la consulta de ventas se debe hacer todo el proceso contable hasta el periodo fijado. Este proceso es lento, incompleto, inexacto y propenso a errores ya que el cajero se puede equivocar al momento de digitar los datos de cada venta o puede obviar u olvidar datos importantes en cada reporte generando desconfianza en las consultas de resultados de ventas de la empresa. 1.3. OBJETIVO GENERAL Diseñar y construir un dispositivo electrónico el cual asistido por una aplicación software permita administrar, controlar y facturar el servicio de renta o alquiler de consolas de videojuegos. 1.4. OBJETIVOS ESPECÍFICOS Conocer y analizar las variables que se presentan en el control y tarifación del servicio de alquiler de consolas de videojuegos. Buscar teorías o planteamientos que permitan solucionar los problemas de tarifación que presentan las salas de videojuegos Diseñar y construir un dispositivo electrónico que permita el control de las consolas de videojuegos de un centro de entretenimiento específico. Desarrollar una aplicación software que permita la comunicación con el dispositivo electrónico y origine la tarifación de cada consola de videojuegos. 18 1.5. JUSTIFICACIÓN El éxito en la prestación de servicios de entretenimiento enfocados a los videojuegos, está basado en las características de las videoconsolas y la capacidad de los videojuegos de recrear entornos y situaciones reales virtualmente. Esto ha llevado a que los centros de entretenimiento que prestan este servicio además de adquirir consolas de videojuegos con buenas características tecnológicas, requieran adoptar sistemas que les permitan controlar y tarificar de manera eficiente el servicio que se presta, sin dejar de lado el fin último que es brindar un ambiente de entretenimiento y recreación para los usuarios. La justificación de este proyecto radica en mejorar la gestión, control, asignación y tarifación del tiempo de uso de las videoconsolas, acelerando este proceso, al mostrar información detallada y exacta de ventas, generando menores retardos en la tarificación del servicio, automatizando actividades rutinarias y mejorando la calidad en la prestación del servicio. Por tal motivo se hace importante este proyecto con el fin de delegar tareas de rutina a una aplicación Software que en interacción con un dispositivo electrónico de control, administren eficientemente y tarifiquen de una manera exacta el tiempo de uso o alquiler de las videoconsolas, proporcionando rapidez y confiabilidad para los usuarios y la organización a la hora de prestar el servicio de entretenimiento. 1.6. PLANTEAMIENTO DE LA HIPÓTESIS A través del presente proyecto se pretende: Mejorar el sistema de control y tarificación en los centros de entretenimiento que ofrecen el servicio de alquiler de consolas de videojuegos. 19 Automatizar las actividades de asignación de tiempo, tarificación, generación de reportes y control de videoconsolas en las salas de videojuegos. Controlar de manera eficiente los servicios que presta la organización, experimentando una notable mejoría en tiempo y costos, ya que la administración del uso de las videoconsolas se realizará por medio de un dispositivo electrónico que interactúa con un software especializado. 1.7. IDENTIFICACIÓN DE VARIABLES Variables independientes Es aquella característica o propiedad que se supone ser la causa del fenómeno estudiado. En investigación experimental se llama así, a la variable que el investigador manipula (HAYMAN, 1991). Para el proyecto propuesto, las variables independientes son: Tiempo Costos Servicio de alquiler Variables dependientes En este proyecto se define como propiedad o característica que se trata de cambiar mediante la manipulación de la variable independiente (HAYMAN, 1991). La variable dependiente es el factor que es observado y medido para determinar el efecto de la variable independiente. Para el proyecto propuesto, las variables dependientes son: Eficiencia Tarifación Rentabilidad 20 1.8. PRESUPUESTO DESCRIPCIÓN CANTIDAD VALOR UNITARIO ($) VALOR TOTAL ($) Microcontrolador PIC18F4550 1 25000 25000 Integrado ULN2803 1 2000 2000 Regulador 7812 1 1000 1000 Regulador 7805 1 1000 1000 Relés 3 2000 6000 Conector USB 1 1500 1500 Cable USB 1 4000 4000 Fuente 12v 1 12000 12000 Conector para fuente 1 1500 1500 Resistencias 4 100 400 Diodos 3 150 450 Leds 3 150 450 Conector hembra RJ45 3 1500 4500 Capacitores 2 200 400 Capacitores cerámicos 2 300 600 Conectores VGA 3 2000 6000 Baquelas 2 5000 10000 Oscilador 1 2000 2000 Pulsador 2 500 1000 Protoboard 1 15000 15000 Cable USB 3 2000 6000 Programador de PICs 1 95000 95000 Papelería 1 70000 70000 Transporte 1 120000 120000 TOTAL Tabla 1. Presupuesto del proyecto 21 385800 1.9. CRONOGRAMA DE ACTIVIDADES DEL PROYECTO ABRIL MAYO JUNIO JULIO AGOSTO SEPTIEMBRE OCTUBRE NOV. ACTIVIDADES 1º 2º 3º 4º 1º 2º 3º 4º 1º 2º 3º 4º 1º 2º 3º 4º 1º 2º 3º 4º 1º 2º 3º 4º 1º 2º 3º 4º 1º 2º Etapa de investigación sobre el proyecto Planteamiento del problema y análisis de requerimientos Diseño del software de control Codificación del software se control y tarifación Diseño del circuito electrónico Simulación del circuito electrónico Diseño del PCB del circuito electrónico Montaje del circuito electrónico Pruebas de comunicación entre en software y el dispositivo integración del software y el dispositivo Corrección de fallas del sistema Construcción del documento escrito del proyecto Elaboración del manual de uso del sistema Tabla 2. Cronograma de actividades del proyecto 22 2. MARCO CONTEXTUAL 2.1. DESCRIPCIÓN DEL CONTEXTO El proyecto “sistema de control y tarificación de tiempo para consolas de videojuegos” se desarrolla para los centros de entretenimiento que presten el servicio de alquiler de consolas de videojuego. 2.2. ESTADO DEL ARTE Antes del planteamiento del proyecto, se realizaron indagaciones y consultas de mercado para conocer el desarrollo de sistemas de tarifación y control de consolas de videojuego para salas de entretenimiento en otras partes, tanto a nivel nacional como internacional. Se identifico que al menos a través de internet había poca información en referencia a estos desarrollos. La escases de empresas que le apuntaran a desarrollos para controlar el servicio de alquiler de videoconsolas impulso el planteamiento y desarrollo del presente proyecto. En el transcurso del desarrollo del proyecto se continuó indagando el mercado y se identifico un avance importante en este campo, varias empresas especialmente las que desarrollan aplicaciones para el control y tarifación de cibercafé o salas de internet, han implementado servicios de valor agregado en sus aplicaciones, incorporando módulos para el control de videoconsolas, algunas mas especializadas desarrollan la parte hardware, otras solo hacen los módulos software compatibles con dispositivos que vienen desarrollando otras empresas. Se nota que el servicio de alquiler de consolas de videojuegos ha tomado importancia para estas empresas, y han mostrado interés en apuntarle a este mercado. A continuación se describen los desarrollos que se han venido dando en este campo: 23 ControlGAME (Argentina) Se crea dentro del área de servicio técnico de Airon Argentina, empresa dedicada a la atención e instalación de cibercafés, salas de juegos, locutorios, con 8 años de experiencia en el rubro. A pedido particular de un cliente se fabrica en el año 2005 el primer bloqueador para consolas, este funcionaba con el software de gestión de cybers "cafesuite" y controlaba hasta 8 consolas debido a la limitación de cafesuite, de este bloqueador se fabricaron varias versiones, bloqueando los controles o bloqueando la señal de video, han sido implementados exitosamente, pero la dirección de Airon Argentina no estaba conforme con sus prestaciones, a pesar de que sus clientes estaban muy satisfechos con el bloqueador. (CONTROLGAME). Es así que se destina un sector exclusivo para la investigación y desarrollo de prototipos de un nuevo bloqueador que por lo menos soportara 32 consolas, e incrementara la seguridad y eficiencia de su antecesor. Por la parte de hardware en poco tiempo se creó el primer prototipo con todas las nuevas prestaciones, el inconveniente que se presentaba en ese momento era que software de gestión de cybers se elegiría para gestionarlo, "cafesuite" no tenia los requerimientos que Airon Argentina pretendía para su bloqueador, ya que solo soportaba 8 bloqueadores, y su seguridad en cuanto a consolas es muy frágil y fácil de saltear. En un primer momento se pensó en desarrollar un software para la gestión de consolas, pero luego de analizar varios software de gestión de cybers, se eligió a cyberplanetsoft, que es un software especializado en la administración de cybers. El Hardware ControlGAME es un bloqueador de consolas especialmente para cibercafés y salas de juegos. de juegos, desarrollado Este dispositivo puede bloquear consolas de juegos, tipo Playstation, PS2, PS3, XBOX, XBOX360, GAMECUBE, etc. 24 ControlGAME es ampliable y puede controlar hasta 96 consolas dependiendo del software que lo gestiona. Su instalación es muy sencilla, en pocos minutos puede tener el control total de sus consolas. ControlGAME se conecta al puerto paralelo de la PC que tiene el software de gestión de consolas y a este se conectan los bloqueadores de video o joystick. A través de cable UTP CAT. 5 o superior con conectores RJ45, idéntico al cableado de red Ethernet. Se comercializa en dos versiones, controlGAME 8x y controlGAME 16x. El Software (Argentina) CyberPlanet es un sistema integral de gestión de Cibercafés desarrollado y depurado a lo largo de varios años. Está cuidadosamente diseñado de manera que no haga falta recurrir a la ayuda. Está compuesto por un Módulo Cliente (CyberClient) que se instala en las pcs clientes y un Módulo Servidor (CyberPlanet) que administra y controla el uso de las PCs cliente. (CYBERPLANETSOFT). Además de las funciones de tarifación, control de usuarios y de PCs, el software incluye un modulo para el control de consolas, compatible con el sistema ControlGAME. La empresa mencionada anteriormente se dedica solo al desarrollo de la parte hardware del sistema, y los hace compatible con aplicaciones desarrolladas por otras empresas, especialmente con CyberPlanet que está ubicada en el país de Argentina al igual que la empresa desarrolladora del dispositivo. Alcsoft (Argentina) Es una empresa desarrolladora de software integrado para la gestión de Cibercafés y salas en red. Está ubicada en Argentina y además cuenta con 25 empresas aliadas para la distribución de su producto en otros países como Venezuela, Chile y México. (ALCSOFT). El Hardware El tarifador de consolas o controlador de consolas, es un componente electrónico que interactúa entre el software ALC Lan manager Server y las consolas. Con este se puede controlar a través del bloqueo del video o de los mandos (Joystick) la tarifación tanto Pre-Pago como Post Pago. Permite controlar cualquier consola con salidas RCA (video analógico) HDMI (Video de alta definición): PlaySation, PS2, PS3, XBOX, XBOX360, GAMECUBE, etc. Con respecto a la cantidad de consolas que se pueden controlar, no hay límite, pueden controlarse desde 8 consolas en adelante. La conexión es sencilla y tiene la siguiente configuración: Desde el PC sale por puerto SERIAL un cable hacia un concentrador, de ese concentrador salen un par de cables (Cable telefónico) hacia el primer controlador. Siempre desde el último controlador que se coloque puede anexarse el siguiente y así sucesivamente. Sería como tener varios Switch conectado el primero al segundo, el segundo al tercero y así sucesivamente. El Software Lan Manager Server es el software que permite realizar el control de acceso a los equipos, seguridad, tarifación, cobro e informes de caja rentabilizando al máximo su tiempo. Lan Manager es un software cliente / servidor, esto significa que requiere de un ordenador central donde se instalara la versión Servidor y luego en cada uno de los equipos del Cibercafé se instalara la versión cliente. Además de esto gestiona la comunicación a través del puerto serial con el dispositivo controlador de consolas. 26 La anterior empresa desarrolla el sistema completo, tanto software como hardware para el control y tarifación de las salas de videojuegos, su desarrollo ya se extiende a varios países de sur y centro América, es una de las pocas empresas que desarrolla el sistema completo. Desarrollo a nivel nacional Como se puede identificar, las empresas más importantes que están incursionando en este mercado son las establecidas en otros países, principalmente en Argentina, tomando como referencia la información encontrada a través de la web y aprovechando la presencia de estas empresas en este medio. Puede ser que además de estas empresas existan muchas otras que aun no hacen presencia en internet y que es difícil encontrar información por otro tipo de medios. En Colombia a través de las consultas realizadas se encontraron muchos avisos publicitarios relacionados con la venta de dispositivos electrónicos para controlar y tarifar el servicio de alquiler de consolas de videojuegos, en ciudades como Bogotá, Barrancabermeja y Medellín. Indagando sobre la procedencia de estos productos para conocer si son desarrollos a nivel nacional o productos importados, se identifica a través de las características técnicas de los dispositivos que son las mismas ofrecidas por las empresas antes mencionadas, lo que lleva a deducir que la mayoría de los dispositivos ofrecidos a nivel nacional son importaciones y no desarrollos originales en el país. En la ciudad de Bogotá se encuentra una empresa llamada Tecelcom Cabinas Ltda. Es una empresa dedicada al desarrollo de productos de tecnología en electrónica, con más de 4 años de experiencia en el desarrollo de productos de ingeniería. (TECELCOM). Está enfocada especialmente a la tarifación de cabinas telefónicas, y actualmente está incursionando en la tarifación de salas de videojuegos, ofreciendo su producto Tecelcom Videojuegos. 27 Telcecom Videojuegos Es un software desarrollado para la administración de consolas de videojuegos, posee las siguientes características: Es un sistema compatible con cualquier tipo de consola de videojuegos existente en el mercado actual y futuro (XBOX, NINTENDO64, PLAYSTATION1, PLAYSTATION2, XBOX360, ETC). Tarificación en modo prepago y en modo de tiempo libre. Interfaz amigable y diseñada para cualquier tipo de pantalla. Basado en productos Microsoft para funcionar sobre cualquier plataforma Microsoft Windows 95, 98, ME, NT, 2000, XP, Vista o Superior. Protección de cada usuario con contraseña propia. Parpadeo en el televisor para avisar al usuario que el tiempo está por terminar. Manejo de inventario y reportes Manejo de hasta 22 consolas de videojuegos simultáneamente. Tres niveles de seguridad para la administración del software dependiendo de si es administrador o empleado del negocio. La empresa Tecelcom en su página web ofrece el sistema completo de tarifación y control de consolas de videojuegos, tanto software como hardware. Se realizo una cotización del producto para identificar el tipo de hardware que implementa la solución y para conocer el precio del producto, comprobando lo siguiente: El hardware que se ofrece es el mismo que desarrolla la empresa ControlGAME, y tiene las mismas características técnicas, con lo cual se puede deducir que este producto es importado y no propiamente desarrollado por la empresa en cuestión. El software si es un desarrollo propio de la empresa y es integrado con el hardware importado. El costo del sistema completo maneja varios precios de acuerdo al número de consolas a controlar y se detallan a continuación: Kit para 4 consolas $ 349.000 Kit para 6 consolas $ 499.000 28 2.3. Kit para 10 consolas $ 799.000 Kit para 14 consolas $ 1.099.000 Kit para 18 consolas $ 1.499.000 ORGANIZACIÓN QUE IMPACTARÁ EL PROYECTO 2.3.1. Tipo de organización Salas o centros de entretenimiento dedicadas a la renta o alquiler de consolas de videojuegos. 2.3.2. Objeto social El proyecto se dirige a las empresas o centros de entretenimiento que tienen por objeto social la prestación de servicios de renta o alquiler de consolas de videojuegos, y que tienen como visión promover una cultura de entretenimiento utilizando productos actualizados y servicios dirigidos hacia el usuario, aprovechando la interacción con los videojuegos y generando un ambiente de diversión apropiado. 2.3.3. Servicios Empresas que ofrece los servicios de: Entretenimiento basado en videojuegos Interconexión en juegos virtuales a nivel local e internet Torneos en diferentes tipos de videojuegos 29 2.3.4. Organigrama general de un centro de entretenimiento „ Figura 1. Organigrama de una organización dedicada al alquiler de consolas de videojuegos 30 3. MARCO TEÓRICO 3.1. INTERFAZ DE COMUNICACIÓN 3.1.1. Interfaz Bus Serial Universal (USB) USB es una especificación de las empresas Compaq, Digital, IBM, Intel, Microsoft, NEC y Northern Telecom, que describe un canal serie que soporta una gran variedad de periféricos de media y baja velocidad, con soporte integral para transferencias en tiempo real (isócronas) como voz, audio y vídeo comprimido, y que permite mezclar dispositivos y aplicaciones isócronas y asíncronas. Entre los dispositivos USB más característicos tenemos teclados, ratones, scanners, impresoras, módems, placas de sonido, cámaras, mp3, etc. (MORENO, 2006). La arquitectura USB combina todas las ventajas de un estándar multiplataforma, incluyendo un costo inferior, una mayor compatibilidad y un número superior de periféricos disponibles. La implementación del USB elimina el uso de IRQ's, canales de DMA, etc. Así como la necesidad de abrir los gabinetes para instalar o quitar dispositivos. Los usuarios de PC's no tienen la necesidad de preocuparse sobre la correcta selección del puerto serie, la instalación de tarjetas de expansión o configurar los conmutadores DIP, jumpers o drivers. Cada día aparecen nuevas utilidades de mucha más potencia, con más posibilidades y mejor calidad gráfica, que hacen que las tareas que se realizan a diario requieran de más capacidad de rata de transmisión. Para que se puedan almacenar, transmitir o recibir dichas tareas, aparecen en el mercado periféricos y componentes de mayor capacidad, discos duros con más capacidad de almacenamiento, mejor calidad de video, procesadores rápidos, etc. pero también se necesita que la "vía" por la que se van a transmitir esos datos sea fiable y más rápida, de forma que se ajuste a los avances producidos. 31 Así surgió su evolución, USB 2.0, apodado USB de alta velocidad, con velocidades en este momento de hasta 480 Mb/seg, es decir, 40 veces más rápido que las conexiones mediante cables USB 1.1. USB 2.0 incorpora un nuevo modo de funcionamiento denominado high-speed (HS). Es compatible con dispositivos USB 1.1 y utiliza los mismos cables y conectores, sólo se necesitan nuevos hubs algo más sofisticados que los actuales, ya que tendrán que comunicarse tanto con dispositivos 2.0 como con los actuales 1.1 (FS y LS). Gracias a este incremento de velocidad de transferencia, USB puede competir con el actual FireWire (estándar IEEE 1394). FireWire nació en principio destinado para Mac y algunas cámaras digitales con una velocidad cercana a 400Mbit/s. En la actualidad se está introduciendo poco a poco en el PC y se espera que llegue a alcanzar una velocidad de 3,2Gb/s. 3.1.1.1. Especificaciones eléctricas La interfaz USB inicialmente contaba con dos velocidades de funcionamiento (USB 1.1): Low-Speed (1.5Mbps), y Full- Speed (12Mbps). (MORENO, 2006). Posteriormente, salió al mercado USB 2.0, totalmente compatible con USB 1.1, pero que además cuenta con modo High-Speed, llegando a tasas de transferencia de 480Mbps. USB utiliza un cable de 4 conductores, de los cuales 2 de ellos son de alimentación a los dispositivos, y los otros dos transmiten/reciben una señal de datos, en modo de tensión diferencial. Los conductores de alimentación se etiquetan como VBus y GND. Entregan una tensión continua de 5V y 500mA máximo. En función de las necesidades de alimentación eléctrica de los dispositivos, estos pueden tomar la alimentación de estas líneas, o bien tener una fuente de alimentación alternativa. (MORENO, 2006). Los conductores de transmisión/recepción de datos se etiquetan como D+ y D-. Como se ha mencionado anteriormente, el parámetro a medir es la tensión diferencial entre los dos hilos. 32 En modo High-Speed (480Mbps), cada hilo de tensión diferencial está conectado en sus extremos a una resistencia de pull-down, de valor 45ohms. Esta resistencia no es necesaria en los otros modos de velocidad. Los márgenes de tensión para los niveles lógicos son los siguientes: Nivel 1 diferencial: al menos 200 mV (D+) más positivo que (D-) Nivel 0 diferencial: al menos 200 mV (D-) más positivo que (D+) La comunicación es semiduplex, es decir, es bidireccional pero no se puede transmitir y recibir simultáneamente. En la transferencia de datos se utiliza codificación NRZI, que consiste en que la línea cambia de nivel si se transmite un 0 y no cambia si transmite un 1. Debido a la utilización de codificación NRZI, es muy fácil que transmisor y receptor se dé sincronicen tras el envío de varios „1‟ sucesivos; para solucionar esto se emplea el "bit stuffing", que consiste en la inserción de un cero tras la transmisión de 6 unos, para asegurar transiciones en la línea y permitir que el receptor se mantenga sincronizado. Los dispositivos disponen de transmisores diferenciales, receptores diferenciales y resistencias de terminación con los que pueden transmitir y detectar varios estados eléctricos distintos en la línea. El tipo de transmisores y receptores, así como las resistencias de terminación de los cables de datos difieren según la velocidad de transferencia del dispositivo (Low, Full o High Speed). (MORENO, 2006). En la interfaz USB se pueden distinguir distintos estados eléctricos en la línea: Transmisión/Recepción diferencial de bits: Estados DIFF0 y DIFF1, denominados también estados J y K. SE0 (Single-Ended 0): Ambas señales D+ y D- a 0V. Se utiliza para detectar la conexión/desconexión de dispositivos, para indicar el EOP (fin de paquete) y para generar reset. 33 IDLE: reposo o línea en alta impedancia, necesario para permitir transferencias semidúplex, detectar la conexión y desconexión de dispositivos y discriminar entre dispositivos FS y LS. SOP (principio de paquete) se indica mediante una transición IDLE a K. EOP (fin de paquete) se indica mediante una secuencia SE0 (2 bits) + J (1 bit) + IDLE. 3.1.1.2. Especificaciones mecánicas Conectores: Hay dos tipos de conectores USB: los de TIPO A y TIPO B, con sus correspondientes ranuras de inserción. (USB, 1999). Sus principales diferencias se encuentran en la forma y la distribución de los contactos. Todos los host-USB deben tener la ranura de inserción correspondiente al conector tipo A. Las ranuras tipo B se encuentran ubicadas en dispositivos USB tales como impresoras, módems, escaners, etc. Otro tipo de dispositivos USB, como pueden ser ratones y teclados, en los cuales uno de los extremos de los cables viene directamente soldado al dispositivo, cuenta únicamente con un conector tipo A en el otro extremo del cable, que será introducido en la ranura tipo A ubicada en el host USB (en este ejemplo el PC). Figura 2. Conector TIPO A y TIPO B, con sus correspondientes ranuras de inserción 34 Cables: USB requiere de un cable de 4 conductores: dos encargados de la alimentación a +5V y 500mA max. (VBus y GND), y dos cables para envío y recepción de datos en señal diferencial (D+ y D-). La sección de los conductores de alimentación varía entre 20 y 26 AWG, y la de los de la señal diferencial es 28AWG. En LS (low speed_1.5Mbps) no es obligatorio que los conductores de señal estén trenzados entre sí. En F/H-S (full/high-speed_12/480Mbps) si es obligatorio. Estos requerimientos influyen en la distribución espacial de los conductores en el interior del cable USB, así como el grosor y la longitud máxima de éste. Figura 3. Dimensiones en mm. de los conectores En los dispositivos LS la longitud de un tramo de cable no podrá exceder los 3 metros, y en dispositivos FS no podrá ser mayor de 5 metros. Se podrá hacer uso de alargadores, pero para ello será necesario ubicar un repetidor entre cada tramo. Tanto en FS como en LS los cables de alimentación (VBus y GND) nunca estarán trenzados. Obligatoriamente para ambos, el cable deberá contar con un 35 apantallamiento metálico de aluminio poliéster y también con un cable trenzado de cobre de sección 28AWG, para que dote de rigidez al cable final. Figura 4. Sección de un cable USB Además, los cables FS cuentan con un segundo apantallamiento, que consiste en una malla de cobre estañada alrededor de todo el cable. Finalmente, y como última capa, se encuentra la cubierta exterior de PVC. Conexión del cable a los conectores: La conexión de los cables a los pines de los conectores se observa en la Tabla. Tabla 3. Codificación numérica y de color de los conductores del cable USB 36 En la siguiente figura se puede observar la disposición y distribución de los pines tanto para el conector tipo A como para el conector tipo B Figura 5. Diagrama de pines de conector TIPO A y TIPO B 3.1.1.3. Tipos de dispositivos. Todos los dispositivos USB responden a un patrón. (AXELSON, 1999). Tienen los mismos elementos funcionales: Transceiver: Encargado de seleccionar la velocidad de comunicación del dispositivo (12 ó 1,5 Mbps). Function Interface Unit (FIU): Administración de datos basado en estado de colas FIFO y envío de interrupciones. FIFO‟s: El controlador tiene 8 buffers FIFO; 4 para transmisión y 4 para recepción. Serial Interface Engine (SIE): Trata la información y la serializa o de serializa. Además codifica en NRZI, controla CRC, maneja el protocolo de comunicación y la secuencia de paquetes. El sistema de bus USB consta de tres componentes principales: Controlador. Concentradores o hubs. Periféricos. Controlador. Reside dentro del PC y es responsable de las comunicaciones entre los periféricos USB y la CPU del PC. Es también responsable de la admisión de los periféricos dentro del bus, tanto si se detecta una conexión como una desconexión. Para cada periférico añadido, el controlador determina su tipo y le 37 asigna una dirección lógica para utilizarla siempre en las comunicaciones con el mismo. Si se producen errores durante la conexión, el controlador lo comunica a la CPU, que, a su vez, lo transmite al usuario. Una vez se ha producido la conexión correctamente, el controlador asigna al periférico los recursos del sistema que éste precise para su funcionamiento. El controlador también es responsable del control de flujo de datos entre el periférico y la CPU. Concentradores o hubs. Son distribuidores inteligentes de datos y alimentación, y hacen posible la conexión a un único puerto USB de 127 dispositivos. De una forma selectiva reparten datos y alimentación hacia sus puertas descendentes y permiten la comunicación hacia su puerta de retorno o ascendente. Los concentradores también permiten las comunicaciones desde el periférico hacia el PC, aceptando datos en las puertas descendentes y enviándolos hacia el PC por la puerta de retorno. (AXELSON, 1999). Además del controlador, el PC también contiene la concentradora raíz. Este es el primer concentrador de toda la cadena que permite a los datos y a la energía pasar a uno o dos conectores USB del PC, y de allí a los 127 periféricos que, como máximo, puede soportar el sistema. Esto es posible añadiendo concentradores adicionales. Periféricos. USB soporta periféricos de baja y media velocidad. Empleando dos velocidades para la transmisión de datos de 1,5 y 12 Mbps se consigue una utilización más eficiente de sus recursos. Los periféricos de baja velocidad tales como teclados, ratones no requieren 12 Mbps y empleando para ellos 1,5 Mbps, se puede dedicar más recursos del sistema a periféricos tales como monitores, impresoras, módems, scanner, equipos de audio, etc., que precisan de velocidades más altas para transmitir mayor volumen de datos o datos cuya dependencia temporal es más estricta. (AXELSON, 1999). 3.1.1.4. Tipos de transferencia de datos. El bus de comunicaciones USB soporta 6 tipos de transferencias de datos dependiendo del tipo de dispositivo y del ancho de banda requerido para la transferencia: (AXELSON, 1999). Transferencias asíncronas. Transferencias síncronas. 38 Transferencias isócronas. Transferencias control. Transferencias interrupción. Transferencias bulk. Transferencias asíncronas. En este modelo cabe entender que ambos equipos poseen relojes funcionando a la misma frecuencia, por lo cual, cuando uno de ellos desea transmitir, prepara un grupo de bits encabezados por un bit conocido como de arranque, un conjunto de 7 u 8 bits de datos, un bit de paridad (para control de errores), y uno o dos bits de parada. El primero de los bits enviados anuncia al receptor la llegada de los siguientes, y la recepción de los mismos es efectuada. El receptor conoce perfectamente cuántos bits le llegarán, y da por recibida la información cuando verifica la llegada de los bits de parada. Transferencias síncronas. En este tipo de transmisión, el sincronismo viaja en la misma señal, de esta forma la transmisión puede alcanzar distancias mucho mayores como también un mejor aprovechamiento de canal. En la transmisión asíncrona, los grupos de datos están compuestos por generalmente 10 bits, de los cuales 4 son de control. Evidentemente el rendimiento no es el mejor. En cambio, en la transmisión síncrona, los grupos de datos o paquetes están compuestos por 128 bytes, 1024 bytes o más, dependiendo de la calidad del canal de comunicaciones. De esta forma la señal puede viajar por muchos más kilómetros sin temor a perderse o no ser entendida por el receptor. Transferencias isócronas. Este tipo de transferencia sólo es utilizable por dispositivos FS (dispositivos de velocidad alta o media). Garantiza un acceso al bus USB con una latencia limitada, asegura una transmisión constante de los datos a través del puerto siempre y cuando se suministren datos, además en caso de que la entrega falle debido a errores no se intenta reenviar los datos. La información útil por paquete puede oscilar entre 1 y 1,023 bytes. En cada Trama se transfiere un paquete por cada conexión isócrona establecida. El sistema puede asignar como máximo el 90% del tiempo de trama para transferencias isócronas y de interrupción. En función de la cantidad de datos que se estén transmitiendo en un momento dado, en velocidad media, el porcentaje de 39 transmisión utilizado puede variar desde un 1% hasta un 69%, mientras que el porcentaje de velocidad alta varía entre un 1% y un 41%. Transferencias de control. Es el único tipo de transferencia que utiliza transmisión a base de mensajes, soporta por lo tanto comunicaciones de tipo configuración/comando/estado entre el software cliente y su función. Por lo tanto este tipo de transferencia está pensado para configurar, obtener información, y en general para manipular el estado de los dispositivos. El tamaño máximo de datos que se transmiten por el bus viene determinado por el dispositivo. El puerto USB puede estar ocupado durante la fase de envío de datos y la fase de estado, en esos casos se indica al ordenador que se encuentra ocupado, invitándole a intentarlo mas tarde. Si se recibe un mensaje de configuración y se encontraba en mitad de una transferencia de control, aborta la transferencia actual y pasa a la nueva que acaba de recibir. Normalmente no se inicia una nueva transferencia de control, hasta que no ha acabado la actual, si bien debido a problemas de transmisión, se puede considerar que se han producido errores y pasar a la siguiente. USB proporciona detección y recuperación, vía retransmisión, de errores en las transferencias de control. Detalles de las 3 transacciones: • Transacción de Configuración (Setup), en la que se envía al dispositivo un paquete que especifica la operación a ejecutar. Ocupa 8 bytes. • Cero o más Transacciones de Datos, en las que se transfieren los paquetes de datos en el sentido indicado por la transacción de configuración. La información útil por paquete puede ser de 8, 16, 32 ó 64 bytes para dispositivos FS, y de 8 bytes para dispositivos LS. • Transacción de Estado, en la que el receptor informa del estado final de la operación. Transferencias de interrupción. Aseguran una transacción (paquete) dentro de un periodo máximo (los dispositivos FS pueden solicitar entre 1 y 255 ms, y los LS entre 10 y 255 ms de periodo máximo de servicio). Este tipo de transferencia está diseñado para servicios que envían o reciben datos de forma infrecuente. Esta transferencia garantiza el máximo servicio para el puerto durante el periodo en el que envía. Incorpora detección de errores y retransmisión de datos. El tamaño de paquete de datos máximo es de 1024 bytes para alta velocidad, 64 bytes para velocidad media y 8 bytes para baja velocidad. 40 En ningún caso se precisa que los paquetes sean de tamaño máximo, es decir, no es necesario rellenar los paquetes que no alcancen el máximo. Cuando en una transferencia de interrupción se necesite transmitir más datos de los que permite el paquete máximo, todos los paquetes a excepción del último paquete deben de tener el tamaño máximo. De modo que la transmisión de un paquete se ha llevado a cabo cuando se ha recibido la cantidad exacta esperada o bien, se ha recibido un paquete que no alcanza el tamaño máximo. Transferencias bulk. Al igual que ocurre con las transferencias isócronas, este tipo de transferencias sólo son utilizables por dispositivos FS. La información útil por paquete puede ser de 8, 16, 32 ó 64 bytes. Está diseñado para dispositivos que necesitan transmitir grandes cantidades de datos en un momento determinado sin importar mucho el ancho de banda disponible en ese momento. Esta transferencia garantiza el acceso al USB con el ancho de banda disponible, además en caso de error se garantiza el reenvío de los datos. Por lo tanto este tipo de transferencia garantiza la entrega de los datos pero no un determinado ancho de banda o latencia. Se procesan por medio de un mecanismo "Good Effort", en el que el sistema aprovecha cualquier ancho de banda disponible y en el momento en que esté disponible. 3.1.1.5. Protocolo de comunicación. El protocolo de comunicaciones del bus USB entre el host y el dispositivo físico se realiza a través de tokens (testigos). De forma general toda función en principio está esperando a que el host le envíe un paquete, si este paquete es de tipo token entonces cambia el estado de la función iniciándose una transacción. También se debe de tener en cuenta, que cuando o bien el host, o bien una función se encuentran en un estado que no es el de reposo, aparecen los timeouts como otra causa de error. El controlador USB, que es el encargado de la comunicación entre los periféricos USB y la CPU del ordenador, va a ser el que transmita esos testigos con la dirección del dispositivo, los datos, etc. (USB, 1999). Arquitectura lógica y real: La arquitectura del sistema en la que se basa USB, se ilustra en la Figura. 41 Figura 6. Flujo de comunicaciones en USB El flujo de datos del bus USB desde un punto de vista lógico hay que entenderlo como una serie de endpoints, a su vez los endpoints se agrupan en conjuntos que dan lugar a interfaces, las cuales permiten controlar la función del dispositivo. Forma de transmisión: La forma en la que las secuencias de bits se transmiten en USB es la siguiente; primero se transmite el bit menos significativo, después el siguiente menos significativo y así hasta llegar al bit más significativo. Cuando se transmite una secuencia de bytes se realiza de la misma manera. 3.1.1.6. Configuraciones de sistemas. Si hay algo que hace de USB un bus revolucionario es que se basa en tecnología Plug & Play, gracias a la cual el ordenador es capaz de conocer que aparato es el qué ha sido conectado, detectando todo el dispositivo, aparte de saber el modo de la transferencia de datos, velocidad de la transmisión, y todos los parámetros que necesita conocer para poder comunicase con el dispositivo. Todo este proceso es realizado por el hardware del bus con apoyo software y es totalmente transparente 42 al usuario. Una vez detectado el dispositivo, el ordenador asigna una dirección USB única a cada aparato, con la que puede averiguar si éste es nuevo, o ya ha sido conectado alguna vez, y recoger la información necesaria para poder comunicarse con el terminal. Debido a que también existe un hub USB, el ordenador le asigna la dirección cero para reconocerlo. (FERNANDEZ, 2002). Cuando un dispositivo es retirado de un puerto USB, se desactiva dicho puerto y se le indica al dispositivo que está a punto de ser extraído del conector. Esta indicación es enviada por el Sistema de Software USB. Si el dispositivo a retirar es un hub USB, el Sistema Software USB lo desactiva y retoma el control del puerto. 3.2. MICROCONTROLADORES Al descubrir las ventajas que ofrecen los computadores, se dio un gran movimiento en cuanto al desarrollo de aplicaciones que siempre habían sido realizadas manualmente dando lugar a una nueva etapa de automatización, sin embargo una desventaja que cada vez se hacía más intensa fue el hecho de que una computadora siempre debería de disponer de una serie de dispositivos externos que muchas veces no eran necesarios. Un ejemplo de esto era la utilización de pantalla de video, cuando era suficiente con un LED o un Display, o el teclado y el ratón cuando era suficiente disponer de un único pulsante. (NAVARRO, 2005). Con base en las nuevas necesidades de las personas se da el origen del microcontrolador el cual es un circuito integrado o chip capaz de ejecutar un programa y que contiene muchas de las mismas cualidades que una computadora de escritorio, tales como la CPU, memoria de datos y programa, periféricos E/S y buses, pero no incluye ningún dispositivo de “comunicación con humanos”, como monitor, teclados o mouse. Sin embargo es necesario aclarar que no posee la misma capacidad que tiene un computador normal, a esto hace referencia a que posee muy poca memoria, son lentos, entre otras. Aún así poseen características únicas que hacen que ellos sean dispositivos muy populares hoy en día, una de ellas es su pequeño tamaño y que a pesar de no poseer las capacidades de un computador superan por mucho las exigencias del público. El microcontrolador tiene como objetivo ejecutar instrucciones, el conjunto de estas instrucciones se le llama programa. Estas instrucciones se almacenan en la 43 memoria de programa y cuando se leen se hace de manera secuencial. Las instrucciones son operaciones básicas, cómo sumar, restar, escribir en un puerto, activar un bit de un dato, entre otras. Son básicas pero si mezclamos estas operaciones se lograrán grandes aplicaciones. 3.2.1. Microcontrolador PIC (controlador de interfaz periférico) Los PIC son una familia de microcontroladores tipo RISC1 fabricados por Microchip2 Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument. Esta familia de microcontroladores ha tenido gran aceptación y desarrollo en los últimos años, gracias a que sus excelentes características, bajo coste, reducido consumo, pequeño tamaño, gran calidad, fiabilidad y abundancia de información, lo convierten en muy fácil, cómodo y rápido de utilizar. (MORTON, 2005). Las características más relevantes de los microcontroladores PIC son: La arquitectura del procesador sigue el modelo Harvard. Se aplica la técnica de segmentación ("pipe-line") en la ejecución de las instrucciones. El formato de todas las instrucciones tiene la misma longitud. Procesador RISC (Computador de Juego de Instrucciones Reducido). Arquitectura basada en un banco de registros. Prácticamente todos los PIC se caracterizan por poseer unos mismos recursos mínimos. Modelo de arquitectura cerrada y abierta. Diversidad de modelos de microcontroladores. Amplio margen de alimentación y corrientes de salida elevadas. Herramientas de soporte potentes y económicas. 1 RISC: Reduced Instruction Set Computer Microchip: es una empresa fabricante de microcontroladores, memorias y semiconductores analógicos, situada en Chandler, Arizona, EE. UU 2 44 3.2.1. Gama de PICs Existe una gran cantidad de aplicaciones que se pueden construir alrededor de los microcontroladores PIC, estas aplicaciones tienen diferentes exigencias en cuanto a los recursos y la cantidad de elementos externos que se van a utilizar, es por eso que la familia PIC se divide en cuatro gamas, que podemos llamar mini, baja, media y alta. Las principales diferencias entre estas gamas radica en el número de instrucciones y su longitud, el número de puertos y funciones, lo cual se refleja en el encapsulado, la complejidad interna y de programación, y en el número de aplicaciones, claro está entre más baja sea la gama el microcontrolador será más económico y con menos funcionalidades. (ARANGO & ARENAS, 2010). Gama mini: con encapsulado de 8 pines, tiene como principal característica su reducido tamaño. Se alimentan con un voltaje de corriente continua comprendido entre 2,5 V y 5,5 V, y consumen menos de 2 mA cuando trabajan a 5 V y 4 MHz. El formato de sus instrucciones puede ser de 12 o de 14 bits y su repertorio es de 33 o 35 instrucciones. (MORTON, 2005) . A pesar de tener solo 8 pines, se pueden destinar hasta 6 de ellos como E/S para los periféricos porque disponen de un oscilador interno R-C, lo cual es una de su principales características (los dos restantes corresponden a la alimentación) Los modelos 12C5xx pertenecen a esta gama, siendo el tamaño de las instrucciones de 12 bits; mientras que los 12C6xx son de la gama media y sus instrucciones tienen 14 bits. Los modelos 12F6xx poseen memoria Flash para el programa y EEPROM para los datos. Algunos modelos disponen de conversores Analógico/Digital de 8 bits incorporados. Gama baja o básica: consiste en una serie de PIC de recursos limitados, pero con una de la mejores relaciones coste/prestaciones de la familia. Sus versiones están encapsuladas con 18 y 28 patitas y pueden alimentarse a partir de una tensión de 2,5 V, lo que les hace ideales en las aplicaciones que funcionan con pilas teniendo en cuenta su bajo consumo (menos de 2 mA a 5 V y 4 MHz). Tienen un repertorio de 33 instrucciones cuyo formato consta de 12 bits. Al igual que todos los miembros de la familia PIC16/17, los componentes de la gama baja se caracterizan por poseer los siguientes recursos: Sistema “Power On Reset”, Perro guardián (Watchdog o WDT), Código de protección, etc. (MORTON, 2005) Gama media: es la más variada y completa de los PIC. Abarca modelos con 45 encapsulado desde 18 hasta 68 pines, cubriendo varias opciones que integran abundantes periféricos. Dentro de esta gama se halla el famoso PIC16F84, quizás el modelo más utilizado en la historia de los microcontroladores, aunque ya se lo considera obsoleto. (MORTON, 2005) En esta gama sus componentes añaden nuevas prestaciones a las que poseían los de la gama baja, haciéndoles más adecuados en las aplicaciones complejas. Poseen comparadores de magnitudes analógicas, convertidores A/D, puertos serie y diversos temporizadores. El repertorio de instrucciones es de 35, de 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. Encuadrado en la gama media también se halla la versión PIC14C000, que soporta el diseño de controladores inteligentes para cargadores de baterías, pilas pequeñas, fuentes de alimentación y UPS y cualquier sistema de adquisición y procesamiento de señales que requiera gestión de la energía de alimentación. Los PIC 14C000 admiten cualquier tecnología de las baterías como Li-Ion, NiMH, NiCd, Ph y Zinc. Gama alta: dispone de chips con 58 instrucciones de 16 bits en el repertorio y que disponen de un sistema de gestión de interrupciones vectorizadas muy potente. También incluyen variados controladores de periféricos, puertos de comunicación serie y paralelo con elementos externos, un multiplicador hardware de gran velocidad y mayores capacidades de memoria, que alcanza los 8 k palabras en la memoria de instrucciones y 454 bytes en la memoria de datos. 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, algunos pines comunican con el exterior las líneas de los buses de datos, direcciones y control, a las que se pueden conectar memorias o controladores de periféricos. Esta facultad obliga a estos componentes a tener un elevado número de pines, comprendido entre 40 y 84. 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. Esta gama se utiliza en aplicaciones muy especiales, con grandes requerimientos. (MORTON, 2005) 46 3.2.2. Arquitecturas de los Pics 3.2.2.1. Arquitecturas cerradas En esta arquitectura el microcontrolador tiene unos recursos específicos que no se pueden modificar de ninguna manera. Cada modelo de microcontrolador se construye con una determinada CPU, cierta capacidad de memoria de datos, cierto tipo y capacidad de memoria de instrucciones, un número de E/S y un conjunto de recursos auxiliares muy concreto. La aplicación a la que se destina debe encontrar en su estructura todo lo que precisa, de lo contrario no servirá en el objetivo de la aplicación. La empresa microchip que fabrica los microcontroladores PIC ha escogido principalmente este modelo de arquitectura. (ARANGO & ARENAS, 2010). 3.2.2.2. Arquitecturas abiertas En esta arquitectura el microcontrolador además de tener una estructura interna específica, permiten ampliaciones para emplear sus líneas de E/S para sacar al exterior los buses de datos, direcciones y control, con los que se posibilita la ampliación de la memoria y las E/S con circuitos integrados externos. (ARANGO & ARENAS, 2010). Microchip dispone de modelos PIC con arquitectura abierta, sin embargo, esta alternativa se escapa de la idea de un microcontrolador incrustado y se asemeja a la solución que emplean los clásicos microprocesadores. (MORTON, 2005). 3.2.2.3. Arquitecturas abiertas En esta arquitectura el microcontrolador además de tener una estructura interna específica, permiten ampliaciones para emplear sus líneas de E/S para sacar al exterior los buses de datos, direcciones y control, con los que se posibilita la ampliación de la memoria y las E/S con circuitos integrados externos. Este tipo de soluciones se asemeja a los clásicos microprocesadores. (ARANGO & ARENAS, 2010). 47 Otras de las ventajas a la hora de implementar un microcontrolador en un circuito hacen referencia a la reducción notable del número de componentes y, en consecuencia, disminuye el número de averías, el volumen y el peso de los equipos, entre otras. Un sistema con microcontrolador dispone de una memoria donde se almacena el programa que gobierna el funcionamiento del mismo que, una vez programado y configurado, sólo sirve para realizar la tarea asignada. Microcontrolador Dispositivo de Entrada Dispositivo de Salida Programa Figura 7. Diagrama de un sistema microcontrolador. En la figura se muestra el esquema de un sistema microcontrolador donde los dispositivos de entrada equivalen a tener un teclado, interruptor, sensor u otro y los dispositivos de salida hacen referencia a LEDs, parlante, interruptores de potencia, relés, luces, en fin una gran variedad de dispositivos que puedan imaginar. Debido a la necesidad de conseguir altos rendimientos en el procesamiento de estas instrucciones, se ha optado por emplear los procesadores con arquitectura Harvard en vez de los tradicionales que emplean una arquitectura de von Neumann. Esta última es identificaba porque la CPU se conectaba con una memoria única, donde se almacenaban los datos e instrucciones, a través de un sistema de buses. MEMORIA CPU Instrucciones y Datos Figura 8. Arquitectura von Neumann. En la arquitectura Harvard se divide la memoria de las instrucciones y datos, quedando de esta forma dos memorias totalmente independientes con su propio 48 sistema de bus para el acceso. Esta división, además de propiciar el paralelismo, permite la adecuación del tamaño de las palabras y los buses a los requerimientos específicos de las instrucciones y de los datos implementados en el microcontrolador. MEMORIA DE INSTRUCCIONES CPU MEMORIA DE DATOS Figura 9. Arquitectura de Harvard. Los microcontroladores modernos cuentan con un procesador de Arquitectura RISC, Computadora con Conjunto de Instrucciones Reducido, cuyas características principales son instrucciones de tamaño fijo y solo las instrucciones de carga y almacenamiento acceden a la memoria de datos. El microcontrolador está diseñado para que en su memoria de programa se almacene todas las instrucciones de control, las cuales deben estar grabadas permanentemente. Para tal propósito existen diferentes clases de memorias tales como la ROM3 con máscara, la EPROM4, OTP5, EEPROM6 y la FLASH. (ARANGO & ARENAS, 2010). Memoria ROM con máscara: Esta memoria se conoce simplemente como ROM y se caracteriza porque la información contenida en su interior se almacena durante su construcción y no se puede alterar. Son memorias ideales para almacenar microprogramas, sistemas operativos, tablas de conversión y caracteres. Memoria EPROM: Este tipo de memoria a diferencia de la ROM no se programa durante el proceso de fabricación, en vez de ello la programación la efectúa el usuario y la información se puede borrar y volver a grabar varias veces. 3 ROM: Read Only Memory EPROM: Erasable Programmable Read Only Memory 5 OTP: One Time Programmable 6 EEPROM: Electrical EPROM 4 49 Memoria OTP: Es una memoria no volátil, de sólo lectura y programable una sola vez por el usuario. La grabación se realiza 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 o serie muy pequeñas. Memoria EEPROM: Es una memoria de sólo lectura, programable y borrable eléctricamente a diferencia de la EPROM que ha de borrarse mediante rayos ultravioleta. Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un PC, y puede hacerse con el microcontrolador instalado en el circuito. Es muy cómoda y rápida la operación de grabado y la de borrado. Memoria FLASH: Es un memoria no volátil, de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero que suelen disponer de mayor capacidad. Son recomendables para aplicaciones en las que es necesario modificar el programa a lo largo de la vida del producto. Memoria STACK: Esta es una memoria interna dedicada y con un tamaño limitado, separada de la memoria de datos y de la de programa, la cual no es accesible al programador ya que es utilizada exclusivamente por el microcontrolador para guardar las direcciones de retorno de subrutinas e interrupciones. Estas direcciones son guardadas bajo el concepto de pila, es decir que el primer dato en entrar es el último en salir. Las posiciones en la pila son limitadas y sólo se pueden anidar dos niveles de subrutinas, en otras palabras, el programa principal puede llamar una subrutina y esta a su vez llama a otra subrutina, pero esta última no puede hacer mas llamados. Todo esto se hace para evitar el desbordamiento de la memoria del STACK. Los datos que manejan los programas varían continuamente, y esto exige que la memoria que los contiene deba ser de lectura y escritura, por lo que la memoria 50 RAM7 estática (SRAM8) es la más adecuada, aunque sea volátil. (ARANGO & ARENAS, 2010). Hay microcontroladores que disponen como memoria de datos una de lectura y escritura no volátil, del tipo EEPROM. De esta forma, un corte en el suministro de la alimentación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa. A excepción de los pines destinados para recibir la alimentación, el cristal de cuarzo, que regula la frecuencia de trabajo, y provocar el Reset, los pines restantes sirven para soportar la comunicación con los periféricos externos al microcontrolador. 3.2.3. Registros Los PICs utilizan una arquitectura basada en registros, es decir, todos los objetos del sistema cómo los puertos de E/S, temporizadores, posiciones de memoria, entre otros están implementados físicamente cómo registros. (ARANGO & ARENAS, 2010). Existen dos tipos de registros: Registros de propósito general: puertos de E/S, contadores, etc. Registros de propósito especial: registros de funcionamiento configuración. y Todos los registros se encuentran ubicados en una posición específica de la memoria. 7 8 RAM: Random Access Memory SRAM: Static Random Access Memory 51 3.2.4. Contador de programas Otro aspecto importante para resaltar es el contador de programas (PC) el cual contiene la dirección de la próxima instrucción a ejecutar y se incrementa de manera secuencial cuando cada instrucción es ejecutada. (ARANGO & ARENAS, 2010). Existen algunas instrucciones que pueden cambiar secuencia lineal de la ejecución, las cuales son conocidas como instrucciones de control, dentro de estas instrucciones se encuentran las GOTO y las CALL las cuales pueden hacer que se asigne un valor constante al PC logrando de este manera que el programa salte a cualquier dirección de la memoria. 3.2.5. Puertos de entrada y salida E/S Un aspecto esencial en los microcontroladores son los puertos E/S con los que se comunica con los dispositivos externos, tales como: pantallas LCD, teclados, servomotores, memorias externas, LEDs, pulsadores, switches, displays, entre otros. La cantidad de puertos depende de la gama del microcontrolador, así como también la gama define si estos puertos son análogos, digitales o multiplexados. (ARANGO & ARENAS, 2010). 3.2.6. Interrupciones Estas interrupciones hacen referencia a la detención del programa en un momento dado para realizar una rutina específica que atienda la causa de la interrupción. Cuando esta interrupción ha sido atendida en su totalidad se libera la subrutina y se vuelve al programa principal en el punto donde se detuvo. (ARANGO & ARENAS, 2010). 3.2.7. Oscilador externo Todo microcontrolador necesita de un circuito externo que le indique a qué velocidad debe funcionar. Este circuito se conoce cómo oscilador o reloj, el cual 52 juega un papel esencial en el buen funcionamiento del sistema. ARENAS, 2010). (ARANGO & Existen cuatro tipos de osciladores que pueden utilizar los microcontroladores: RC: Oscilador con resistencia y condensador. XT: Cristal de Cuarzo. HS: Cristal de alta velocidad. LP: Cristal para baja frecuencia y bajo consumo de potencia. Cuando se va a realizar la compilación del programa que será quemado en el microcontrolador es importante definir qué tipo de oscilador se va a utilizar y a que frecuencia va a trabajar. Generalmente se utilizan cristales de 4 MHz, internamente esta frecuencia se divide en 4, lo que hace que la frecuencia efectiva de trabajo sea de 1 MHz, por lo que cada instrucción se atenderá en un microsegundo. El cristal debe ir acompañado de dos condensadores y se conecta de la siguiente manera: Figura 10. Esquema de un Oscilador 3.2.8. Temporizador o TIMER Una exigencia de las aplicaciones de control es la regulación estricta de los tiempos de duran las diversas acciones que realiza el sistema. El dispositivo destinado a cumplir este objetivo es conocido cómo temporizador o timer, y consiste básicamente en un contador ascendente o descendente que determina 53 un tiempo determinado entre el valor que se le carga y el desbordamiento o paso por 0. (ARANGO & ARENAS, 2010). La cantidad de TIMERs o temporizadores, depende de la gama del microcontrolador que estamos manejando, por ejemplo la gama baja maneja dos y el resto de gamas puede manejar más temporizadores. Existen dos temporizadores básicos: Principal: Este timer se encarga del control de tiempos de las operaciones del sistema. Watchdog (Perro Guardián): Tiene a su cargo vigilar que el programa no se cuelgue y dejen de ejecutarse las instrucciones de manera secuencial cómo lo ha previsto el diseñador. Para lograrlo el perro guardián revisa la CPU cada cierto tiempo para verificar que todo esté corriendo normalmente, en caso de encontrar un bucle infinito o esperando un acontecimiento que no sucede, el perro guardián reinicializa el microcontrolador. 3.2.9. Programación en microcontroladores 3.2.9.1. Resumen de histórico de los lenguajes de programación 3.2.9.1.1. Código máquina. Primera generación de lenguajes El código máquina es el lenguaje de programación que entiende directamente la computadora o máquina. Este lenguaje de programación utiliza el alfabeto binario, es decir, el 0 y el 1. Con estos dos únicos dígitos, conocidos como bits, forma lo que se conoce como cadenas binarias (combinaciones de ceros y unos) son con las que se escriben las instrucciones que el microprocesador de la computadora entiende nuestras peticiones. Fue el primer lenguaje de programación. Este tipo de lenguaje de programación dejo de utilizarse por su gran dificultad. (ARANGO & ARENAS, 2010). 54 Sólo se ha utilizado por los programadores en los inicios de la informática. Su incomodidad de trabajo y por la facilidad para cometer errores hace que sea impensable para ser utilizado hoy en día. Pero cualquier programa de ordenador debe, finalmente, ser convertido a este código para que un ordenador pueda ejecutar las instrucciones de dicho programa. Un detalle a tener en cuenta es que el código máquina es distinto para cada tipo de procesador. Lo que hace que los programas en código máquina no sean portables entre distintas máquinas. 3.2.9.1.2. Lenguaje ensamblador. Segunda generación de lenguajes (2GL) En los años 40 se intentó concebir un lenguaje más simbólico que permitiera no tener que programar utilizando código máquina. Poco más tarde se ideó el lenguaje ensamblador, que es la traducción del código máquina a una forma más textual. Cada tipo de instrucción se asocia a una palabra nemotécnica (como SUM para sumar por ejemplo), de forma que cada palabra tiene traducción directa en el código máquina. (ARANGO & ARENAS, 2010). Tras escribir el programa en código ensamblador, un programa (llamado también ensamblador) se encargará de traducir el código ensamblador a código máquina. Esta traducción es rápida puesto que cada línea en ensamblador tiene equivalente directo en código máquina (en los lenguajes modernos no ocurre esto). La idea es la siguiente: si en el código máquina, el número binario 0000 significa sumar, y el número 0001 significa restar. Una instrucción máquina que sumara el número 8 (00001000 en binario) al número 16 (00010000 en binario) sería: 0000 00001000 00010000 Realmente no habría espacios en blanco, el ordenador entendería que los primeros cuatro BITS representan la instrucción y los 8 siguientes el primer número y los ocho siguientes el segundo número (suponiendo que los números ocupan 8 bits). Lógicamente trabajar de esta forma es muy complicado. Por eso se podría utilizar la siguiente traducción en ensamblador: SUM 8 16 55 Puesto que el ensamblador es una representación textual pero exacta del código máquina; cada programa sólo funcionará para la máquina en la que fue concebido el programa; es decir, no es portable. La ventaja de este lenguaje es que se puede controlar absolutamente el funcionamiento de la máquina, lo que permite crear programas muy eficientes. Lo malo es precisamente que hay que conocer muy bien el funcionamiento de la computadora para crear programas con esta técnica. Además las líneas requeridas para realizar una tarea se disparan ya que las instrucciones de la máquina son excesivamente simples. 3.2.9.1.3. Lenguajes de alto nivel. Lenguajes de tercera generación (3GL) Para evitar los problemas del ensamblador apareció la tercera generación de lenguajes de programación, la de los lenguajes de alto nivel. En este caso el código vale para cualquier máquina, son muy similares al lenguaje humano, pero deberá ser traducido mediante software especial que adaptará el código de alto nivel al código máquina correspondiente. Esta traducción es necesaria ya que el código en un lenguaje de alto nivel no se parece en absoluto al código máquina. (ARANGO & ARENAS, 2010). Tras varios intentos de representar lenguajes, en 1957 aparece el que se considera el primer lenguaje de alto nivel, el FORTRAN (FORmula TRANslation), lenguaje orientado a resolver fórmulas matemáticos. Poco a poco fueron evolucionando los lenguajes formando lenguajes cada vez mejores. Así en 1958 se crea LISP como lenguaje declarativo para expresiones matemáticas. En 1960 la conferencia CODASYL creó el COBOL como lenguaje de gestión. En 1963 creó PL/I el primer lenguaje que admitía la multitarea y la programación modular. BASIC se creó en el año 1964 como lenguaje de programación sencillo de aprender y ha sido, uno de los lenguajes más populares. En 1968 se crea LOGO para enseñar a programar a los niños. Pascal se creó con la misma idea académica pero siendo ejemplo de lenguaje estructurado para programadores avanzados. El creador del Pascal (Niklaus Wirdth) creó Modula en 1977 siendo un lenguaje estructurado para la programación de sistemas. 56 3.2.9.1.4. Lenguajes de cuarta generación (4GL) En los años 70 se empezó a utilizar éste término para hablar de lenguajes en los que apenas hay código y en su lugar aparecen indicaciones sobre qué es lo que el programa debe de obtener. Se consideraba que el lenguaje SQL (muy utilizado en las bases de datos) y sus derivados eran de cuarta generación. Los lenguajes de consulta de datos, creación de formularios, informes, son lenguajes de cuarto nivel. (ARANGO & ARENAS, 2010). Aparecieron con los sistemas de base de datos Actualmente se consideran lenguajes de éste tipo a aquellos lenguajes que se programan sin escribir casi código (lenguajes visuales), mientras que también se propone que éste nombre se reserve a los lenguajes orientados a objetos. 3.2.9.1.5. Lenguajes orientados a objetos En los 80 llegan los lenguajes preparados para la programación orientada a objetos todos procedentes de Simula (1964) considerado el primer lenguaje con facilidades de uso de objetos. De estos destacó inmediatamente C++. (ARANGO & ARENAS, 2010). A partir de C++ aparecieron numerosos lenguajes que convirtieron los lenguajes clásicos en lenguajes orientados a objetos (y además con mejoras en el entorno de programación, son los llamados lenguajes visuales): Visual Basic, Delphi (versión orientada a objetos de Pascal), Visual C++, entre otros. En 1995 aparece Java como lenguaje totalmente orientado a objetos y en el año 2000 aparece C# un lenguaje que toma la forma de trabajar de C++ y del propio Java. 57 3.2.10. Compilador PCW CCS para microcontroladores Es un compilador que permite escribir los programas en lenguaje C en vez de Assembler, con lo que se logra un menor tiempo de desarrollo, y facilidad en la programación. Contienen operadores estándar en lenguaje C bibliotecas de funciones que son específicas a los registros de los microcontroladores PIC, proporciona a los desarrolladores una herramienta poderosa para acceder a las funciones del dispositivo hardware desde el nivel del lenguaje C. CCS proporciona funciones integradas y bibliotecas de ejemplo para desarrollar rápidamente aplicaciones que incorpora tecnologías de vanguardia tales como táctil, inalámbricas, por cable, entre otras. (CCS, 2008). Algunas características son: (CCS, 2008) Al compilar genera un código máquina muy compacto y eficiente. Se integra perfectamente con MPLAB y otros simuladores/emuladores como PROTEUS para el proceso de depuración. Incluye una biblioteca muy completa de funciones pre compiladas para el acceso al hardware de los dispositivos (entrada/salida, temporizaciones, conversor A/D, transmisión RSS-232, bus I2C…., etc. Incorpora drivers para dispositivos externos, tales como pantallas LCD, teclados numéricos, memorias EEPROM, conversores A/D, relojes en tiempo real, etc.(los drivers son pequeños programas que sirven de interfaz entre los dispositivos hardware y nuestro programa). Permite insertar partes de código directamente en Ensamblador, manteniendo otras partes del programa en C. 3.2.10.1. Características del lenguaje C para este compilador El lenguaje C estándar es independiente de cualquier plataforma. Sin embargo, para la programación de microcontroladores es necesario disponer de determinados comandos que se refieran a partes específicas de su hardware, como el acceso a memoria, temporizadores, etc. Por este motivo, además de los comandos, funciones y datos del lenguaje ANSI C, el compilador PCW incluye 58 bibliotecas que incorporan determinados comandos que no son estándar, sino específicos para la familia de microcontroladores PIC. (CCS, 2008). 3.2.10.2. Utilidades adicionales El entorno PCW incluye, además del IDE y del compilador, una serie de utilidades adicionales con las que se amplían las posibilidades de éste, y que se encuentran en los menús View y Tools de la barra de menús, veamos algunas de ellas: Monitor del puerto serie: Consiste en un terminal que monitoriza la entrada y la salida del puerto serie del computador. Selección de dispositivos (Device Selection Tool): Esta utilidad consta de una base de datos con los dispositivos que puede programar el compilador, incluyendo todas sus características hardware, de manera que se puede emplear para buscar aquellos dispositivos que cumplan una serie de propiedades comunes. Editor de dispositivos (Device Editor): Este programa también emplea la base de datos de dispositivos, y permite editar los componentes para modificar sus características hardware, así como añadir nuevos dispositivos o eliminar algunos de ellos. Conversor numérico: Esta utilidad realiza conversiones entre los tipos de datos unsigned, signed, hex y float. Extracción de datos de calibrado: Esta opción permite leer los datos de calibración existentes en la memoria de programa de un determinado dispositivo. Estos datos contienen información particular de cada microcontrolador a su salida de fábrica, y se refieren a posibles problemas especiales que pudieran haber tenido lugar durante el desarrollo y fabricación. Mediante esta opción es posible leer estos datos y grabarlos en un fichero .H o .C que incorporará una directiva #ROM para dicho dispositivo, con lo que cada vez que se programe el microcontrolador se incluirán estos datos de calibrado. Desensamblador: Esta opción lee un fichero en Código máquina y lo traduce a su equivalente en Ensamblador, con lo que se podría insertar este código en un programa en C, mediante las directivas #ASM y #ENDASM. 59 3.2.11. Software de simulación de circuitos Proteus Proteus es un software de diseño electrónico desarrollado por Labcenter Electronics que consta de dos módulos: Ares e Isis y que incluye un tercer módulo opcional denominado Electra. (LABCENTER). ISIS: Mediante este programa podemos diseñar el circuito que deseemos con componentes muy variados, desde una simple resistencia hasta algún que otro microprocesador o microcontrolador, incluyendo fuentes de alimentación, generadores de señales y muchas otras prestaciones. Los diseños realizados en Isis pueden ser simulados en tiempo real. Una de estas prestaciones es VSM, una extensión de la aplicación con la cual podremos simular, en tiempo real, todas las características de varias familias de microcontroladores, introduciendo nosotros mismos el programa que queramos que lleven a cabo. Figura 11. Ejemplo de simulación de circuitos en ISIS Proteus ARES: Ares es la herramienta de construcción de rutas de Proteus, se utiliza para la fabricación de placas de circuito impreso, esta herramienta puede ser utilizada de manera manual o dejar que el propio programa trace las pistas, aunque aquí podemos también utilizar el tercer módulo, Electra (Electra Auto Router), el cual, una vez colocados los componentes trazará automáticamente las pistas realizando varias pasadas para optimizar el resultado. 60 Figura 12. Ejemplo de diseño de circuitos impresos en ARES Proteus 3.3. CONECTORES 3.3.1. RCA El conector RCA es un tipo de conector eléctrico común en el mercado audiovisual. El nombre "RCA" deriva de la Radio Corporation of America, que introdujo el diseño en los 1940. En muchas áreas ha sustituido al conector típico de audio (Jack), muy usado desde que los reproductores de casete se hicieron populares, en los años 1970. Ahora se encuentra en la mayoría de televisores y en otros equipos, como grabadores de vídeo o DVDs. (DIAZ, 2005). El conector macho tiene un polo en el centro (+), rodeado de un pequeño anillo metálico (-) (a veces con ranuras), que sobresale. El conector hembra tiene como polo central un agujero cubierto por otro aro de metal, más pequeño que el del macho para que éste se sujete sin problemas. Ambos conectores (macho y hembra) tienen una parte intermedia de plástico, que hace de Aislante eléctrico. Un problema del sistema RCA es que cada señal necesita su propio cable. Otros tipos de conectores son combinados, como el euro conector (SCART), usado exclusivamente en Europa. 61 La señal de los RCA no es balanceada por lo que corresponde generalmente a 10dBV. Esto hace que no se utilicen profesionalmente. Izquierda/Mono Blanco Derecho Rojo Center Verde Envolvente izquierdo Azul Envolvente derecho Gris Envolvente trasero izquierdo Castaño, café o marrón Envolvente trasero derecho Castaño claro Subwoofer Purpura Audio digital S/PDIF Naranja Video analógico Compuesto Amarillo Y Verde Pb Azul Pr Rojo R Rojo Audio analógico Video componente (YPbPr) por Video por G componente (RGB) Verde B Azul Tabla 4. Distribución de colores en RCA 3.3.2. HDMI High-Definition Multi-media Interface (HDMI) Interfaz multimedia de alta definición es una norma de audio y vídeo digital cifrado sin compresión apoyada por la industria para que sea el sustituto DRM del euro conector. HDMI provee un interfaz entre cualquier fuente DRM de audio y vídeo digital como podría ser un sintonizador TDT, un reproductor de Blu-ray, un ordenador (con Windows, Linux, 62 etc.) o un receptor A/V, y monitor de audio/vídeo digital compatible, como un televisor digital (DTV). (DIAZ, 2005). HDMI permite el uso de vídeo computarizado, mejorado o de alta definición, así como audio digital multicanal en un único cable. Es independiente de los varios estándares DTV como ATSC, DVB (-T,-S,-C), que no son más que encapsulaciones de datos MPEG. Tras ser enviados a un decodificador, se obtienen los datos de vídeo sin comprimir, pudiendo ser de alta definición. Estos datos se codifican en TMDS para ser transmitidos digitalmente por medio de HDMI. HDMI incluye también 8 canales de audio digital sin compresión. A partir de la versión 1.2, HDMI puede utilizar hasta 8 canales de audio de un bit. El audio de 309 bit es el usado en los Súper audio CDs. El conector estándar de HDMI tipo A tiene 19 pines. Se ha definido también una versión de mayor resolución -tipo B-, pero su uso aún no se ha generalizado. El tipo B tiene 29 pines, permitiendo llevar un canal de vídeo expandido para pantallas de alta resolución. El tipo B fue diseñado para resoluciones más altas que las del formato 1080p. El HDMI tipo A es compatible hacia atrás con un enlace simple DVI, usado por los monitores de ordenador y tarjetas gráficas modernas. Esto quiere decir que una fuente DVI puede conectarse a un monitor HDMI, o viceversa, por medio de un adaptador o cable adecuado, pero el audio y las características de control remoto HDMI no estarán disponibles. Además, sin el uso de HDCP, la calidad de vídeo y la resolución podrían ser degradadas artificialmente por la fuente de la señal para evitar al usuario final ver o, mayormente, copiar contenido protegido. El HDMI tipo B es, de forma similar, compatible hacia atrás con un enlace trial DVI. 63 4. MODELO TEÓRICO 4.1. REQUERIMIENTOS PARA EL DESARROLLO DEL SOFTWARE Contabilizar el tiempo exacto de uso del servicio. Tarificación del servicio de acuerdo al tiempo de uso y tarifas establecidas. Sistema de fácil manejo, manipulado por una sola persona. Llevar y almacenar un control de cada venta con fecha y hora. Bloqueo del servicio cuando se termine el tiempo contratado o cuando no se haga uso de este. Consultas de reportes en cualquier momento. Instalación física del dispositivo de control de las consolas de videojuegos. Establecer la seguridad apropiada en el aplicativo con el fin de evitar ingresos no autorizados. Establecer privilegios de usuario para el manejo de la aplicación. Selección e instalación de un motor de base de datos. Seleccionar e implementar una interface de comunicación entre la aplicación y el dispositivo que mejor se adapte a las necesidades. Disponer de un equipo de cómputo para la instalación del Software. 4.2. SOLUCIÓN PROPUESTA La necesidad de controlar y tarifar el tiempo de uso de las consolas de videojuegos y de obtener reportes de ventas en base a los requerimientos propuestos tiene como objetivo mejorar la técnica de conteo rudimentario que se presenta en muchos de estos centros de entretenimiento, llevando a varios aspectos importantes, eficiencia, confiabilidad y satisfacción por parte del usuario. Ya que el tiempo real transcurrido y el facturado seria el mismo, se eliminaría el factor humano en la asignación y control del tiempo de alquiler, el cálculo del saldo a cancelar seria automático y exacto, los reportes de ventas se realizaran a 64 cualquier hora del día y se aumentaría el grado de satisfacción del usuario en la prestación del servicio con la automatización de estos procesos. De acuerdo a esto la propuesta que se planteó como solución es la creación de un sistema integral compuesto por dos partes, una física (tarjeta de control) y una lógica (software para el control y tarifación del tiempo). En primer lugar se requiere la instalación de una tarjeta de control para realizar la activación y el bloqueo del servicio cuando inicie y culmine el tiempo de alquiler. El componente software permite la comunicación con la tarjeta de control, asigna tiempos de uso por consola, calcula el saldo a cancelar en base a la tarifa establecida y genera los reportes de ventas. El aplicativo tiene, entre otras, las siguientes opciones: Crear perfiles para cada empleado con diferentes restricciones y derechos de administración. Crear diferentes tarifas y bonos de acuerdo a las necesidades. Las terminales que no estén en uso pueden ser bloqueadas impidiendo el uso de las mismas sin autorización del operador. Permitir el alquiler de consolas en contador o tiempo fijo e intercambio de usuarios entre consolas. Informes totalmente dinámicos, con posibilidad de realizar búsquedas por fechas, terminales, operadores, etc. Gestión y consulta de caja diaria. 4.3. DISEÑO DE LA TARJETA DE CONTROL El diseño de la tarjeta de control para realizar la activación y el bloqueo del servicio cuando el inicie y culmine el tiempo de alquiler se baso en un microcontrolador PIC 18F4550 como cerebro central. El cual controla la lógica de funcionamiento de la tarjeta y es el encargado de comandar todos los componentes para llevar a cabo el bloqueo y desbloqueo del servicio de alquiler de las consolas de videojuegos a través del puerto USB. 65 El software (Firmware) es el encargado de administrar la tarjeta de control, ordenando cuando debe realizar las actividades programadas en el microcontrolador PIC, y la aplicación para el PC es la encargada de administrar los tiempos de alquiler, los usuarios del sistema, las tarifas y los reportes de ventas deducidas por el servicio de alquiler. El diseño del sistema se dividió en dos etapas: 1. Diseño del hardware. Esta etapa se enfocó en: Selección de la arquitectura a implementar. Selección de todos los componentes digitales a utilizar. Especificación de la interconexión de los componentes (esquemáticos). 2. Diseño del software. Esta etapa consistió en: Desarrollo del firmware (software a correr en el microcontrolador). Diseño del software a correr del lado del PC para controlar y manejar el firmware de la dispositivo y el servicio de alquiler de las consolas de videojuegos. Especificación del protocolo de comunicación a usar entre el firmware y el software. Estas etapas se desarrollaron de manera independiente, se hicieron las pruebas correspondientes y se acoplaron de manera que existiera relación entre ellas. En la siguiente figura se observa la forma de conexión general del sistema de control y tarifación de tiempo para consolas de videojuegos. 66 Figura 13. Conexión general del sistema de control y tarifación La tarjeta de control se conecta al PC utilizando el puerto USB, estableciendo un protocolo de comunicación entre el Firmware y el Software para la administración y control del microcontrolador PIC. La tarjeta de control se conecta al controlador de video que es el encargado de bloquear y desbloquear la señal de video que proviene de la consola de videojuegos al TV, para administrar el tiempo de alquiler de las consolas. Lo que se llevo a cabo fue la implementación de una comunicación bidireccional entre el PIC18F4550 y el software del PC vía USB 2.0, aprovechando que la serie de microcontroladores PIC18Fxx5x tienen entre sus recursos dicho tipo de comunicación, para dicho fin incluye dos formas de transmitir los datos por USB, la primera es la transmisión isócrona y la segunda es la transmisión Bulk, las cuales se explicaron anteriormente en el marco teórico del proyecto en la sección Interfaz USB. Para llevar a cabo dicha comunicación se decidió programar el modulo con protocolo Bulk. Se realizaron los protocolos necesarios para ambos extremos de esta línea de comunicación, de una parte el firmware para el PIC en CCS C, y de la otra el software del PC. Como intermediarios se utilizaron dos recursos que provee Microchip: El Driver para Windows y la DLL mpusbapi.dll. 67 Para el firmware se utilizaron como base los ejemplos y descriptores USB que trae el programa CCS C, adaptándolos a la necesidad del proyecto, fundamentalmente los archivos VID&PID, necesarios para reconocer el dispositivo USB al ser conectado al computador. En el apartado siguiente se describen los componentes utilizados para llevar a cabo el diseño de la parte Hardware. De la parte del PC se deben instalar los Drivers para Windows que ofrece Microchip, los cuales sirven de puente entre el software y el firmware. 4.4. COMPONENTES UTILIZADOS 4.4.1. PIC18F4550 Es un microcontrolador PIC de gama alta desarrollado por la Microchip, sus características principales son. (MICROCHIP): Memoria flash de 32Kbytes Memoria SRAM 2048 bytes Memoria EEPROM 256 bytes Máximo número de instrucciones simples 16384 Número de entradas/salidas 35 Numero de pines 40 Comparadores 2 Numero de temporizadores de 8 bits 1 Numero de temporizadores de 16 bits 3 Frecuencia de hasta 48 MHz con cristal externo Velocidad de CPU de 12 MIPS Soporta comunicación USB 1.0, Full Speed y 2.0 Soporta otras comunicaciones como SPI, SSP, USART. Las características funcionales que soporta para USB 2.0 son: Tasa de transferencia de hasta 12 Mbits Buffer USB de 1Kbyte Soporta modos de transferencia de control, Interrupción, Bulk e isincrona. Operación a 48 MHz 68 Disposición de pines del microcontrolador PIC 18F4550. (MICROCHIP): Figura 14. Disposición de pines del microcontrolador PIC18F4550 La selección de este dispositivo se realizó con base en las características principales que posee, determinando las necesidades que requiere el sistema propuesto y satisfaciéndolas con las funcionalidades que presta este dispositivo. Las principales características que se tuvieron en cuenta para escoger el microcontrolador PIC 18F4550 son: Soporta comunicación USB, desde la versión 1.0 hasta la 2.0. Soporta el modo de transferencia Bulk que nos permite mayor tasa de transferencia. Es un microcontrolador de gama alta con buenas características de memoria y procesamiento. Este microcontrolador es soportado por aplicaciones como CCS C que nos permite programar el Firmware en lenguaje C de alto nivel. Podemos aprovechar la cantidad de puertos de entrada/salida para agregar más dispositivos o funcionalidades externas. 69 Pertenece a la familia de microcontroladores PIC 18FXX5X que es utilizada en un gran número de aplicación utilizando el puerto USB, debido a esto se encuentra buena documentación y soporte. Es desarrollado por la Microchip que se caracteriza por documentar muy bien sus productos en los datasheet que coloca a disposición de los usuarios. 4.4.2. ULN2803 Es un circuito integrado ideal para ser empleado como interfaz entre las salidas de un PIC o cualquier integrante de las familias TTL o CMOS y dispositivos que necesiten una corriente más elevada para funcionar, como por ejemplo, un relé. Dentro del ULN2803 se encuentran 8 transistores NPN Darlington. Todas sus salidas son a colector abierto y se dispone de un diodo para evitar las corrientes inversas. El modelo ULN2803 está especialmente diseñado para ser compatible con entradas TTL. Figura 15. Diagrama interno del integrado ULN2803 Cada una de las 8 secciones que componen al ULN2803 puede verse en el siguiente diagrama: 70 Figura 16. Diagrama de una sección del integrado ULN2803 Se seleccionó este integrado ya que para el bloqueo y desbloqueo de la señal de video se utilizaran relés especiales para este tipo de señal. Para llevar a cabo este proceso se requiere de un modulo de potencia que genere mayor corriente y lleve a cabo la activación, la mejor opción es utilizar transistores tipo Darlington, que es una combinación de dos transistores bipolares en forma de cascada, con la finalidad de proporcionar una gran ganancia de corriente. Figura 17. Conexión de transistores Darlington El integrado ULN2803 cumple con estas características y además de esto en un solo componente, reduciendo el tamaño de la tarjeta de control y proporcionando hasta 8 salidas con las cuales podemos administrar el alquiler de hasta 8 consolas de videojuegos. 71 4.4.3. Comunicación USB Como se logra identificar en la información obtenida del estado del arte de sistemas de este tipo, se están utilizando puertos de comunicación como el serial (protocolo RSS-232) y el paralelo para establecer la comunicación entre la aplicación del PC y la tarjeta de control. Para otorgar un valor agregado al proyecto que se desarrolló, se seleccionó como interfaz de comunicación el puerto USB, que está tomando mucho auge en proyectos que requieren comunicación entre un dispositivo electrónico y un PC, ya que los demás puertos mencionados ya no son tan comunes en PCs y menos en computadoras portátiles. Además de lo anterior, para la selección de USB como interfaz de comunicación se tuvieron en cuenta las siguientes características: USB se basa en la tecnología Plug and Play, que permite conectar dispositivos a un PC y ser identificados por este sin realizar ninguna configuración. La Microchip empresa fabricante del microcontrolador PIC 18F4550 proporciona el driver que sirve de puente entre el PIC y el PC. Con este recurso solo se necesita conectar el dispositivo, instalar el driver proporcionado y cuando se conecte el dispositivo las siguientes veces el PC se reconoce automáticamente. Soporta tasas de transferencia de hasta 480 Mbits con la tecnología USB 2.0 Fácil manipulación y conexión con el dispositivo desarrollado, ya que solo intervienen 4 pines en la interfaz física, 2 de datos (D+, D-) y 2 de alimentación (VCC, GND). Se puede obtener la alimentación eléctrica directamente desde el PC si el dispositivo no requiere mucho consumo de corriente y su voltaje no supera los 5v con los pines de (VCC y GND). Los lenguajes de programación de alto nivel para computadoras y para microcontroladores, proporcionan rutinas y procedimientos para una fácil manipulación del puerto USB, simplificando la tarea a la hora de programar. 72 . Figura 18. Conexión de pines en el conector USB Figura 19. Conexión del conector USB al PIC18F4550 4.5. DESARROLLO DE LA TARJETA DE CONTROL En el desarrollo de la tarjeta de control del Hardware se tuvieron en cuenta las sugerencias de MICROCHIP para el correcto funcionamiento del microcontrolador con el módulo USB, se utilizó como oscilador un cristal de 20 MHz aprovechando que el microcontrolador tiene un circuito interno PLL que ajusta la frecuencia interna de oscilación a 4 MHz, la cual puede ser elevada a la frecuencia nominal de trabajo de 48 MHz con la ayuda del circuito interno de Post-scaler. 73 El protocolo de transmisión utilizado fue el tipo Bulk, se seleccionó por las ventajas que se mencionan en la siguiente grafica. Como se puede observar en la tabla, la rata de transferencia de datos máxima posible varía enormemente de acuerdo al tipo de transferencia y a la velocidad de bus. Tabla 5. Tipos y rata de transferencia en USB Como se puede apreciar en la tabla, a full speed el tipo de transferencia Bulk es el que ofrece la posibilidad de mayor rata de transferencia de datos. Mencionados anteriormente los componentes a utilizar, a continuación se muestra la conexión entre estos desarrollados en el software Proteus ISIS 7.6 SP0 y los valores de los componentes como resistencias, condensadores, osciladores y demás componentes necesarios para el correcto funcionamiento del hardware. 74 Figura 20. Conexiones detalladas entre en puerto USB y el PIC18F4550 Figura 21. Conexiones detalladas con el ULN2803 75 Figura 22. Esquema simplificado de la tarjeta de control desarrollado en PROTEUS 7.6 4.6. DESARROLLO DEL FIRMWARE PARA EL PIC18F4550 El firmware para el microcontrolador fue desarrollado en CCS C. El software para el desarrollo y compilación del firmware fue PCWH Compiler V4.023 Lo primero que se debe tener en cuenta para desarrollar el firmware de microcontrolador es la configuración de los fuses para el correcto funcionamiento del PIC. La palabra fuse viene a significar fusible. Hay ciertos aspectos del PIC que han de ser activados o desactivados mediante hardware a la hora de programarlo. Esto 76 quiere decir que no se pueden volver a cambiar hasta que el chip no se reprograme de nuevo. Como no se pueden cambiar, de ahí le viene que sea como un fusible, el cual han fundido intencionadamente para proteger el modo de funcionamiento del procesador. La selección de los fuses se realiza de acuerdo a los componentes externos al PIC que se conecten, a la tasa de transferencia que manejará y la velocidad de procesamiento. Para alcanzar la velocidad de funcionamiento requerida por USB se necesitan una frecuencia nominal de 48 MHz. El cristal seleccionado es de 20 Mhz, para alcanzar la velocidad requerida se debe hacer una cuidadosa selección de los fuses para activar el PLL interno del PIC y alcanzar la velocidad de trabajo. Para combinar el oscilador interno del PIC con el oscilador externo, es necesario realizar una correcta selección y configuración de fuses, para esto la hoja de datos del microcontrolador PIC18F4550 que proporciona MICROCHIP contiene en sus páginas 32 y 33 recomendaciones importantes para realizar correctamente la configuración. A continuación se muestra la configuración necesaria alcanzar la velocidad de trabajo requerida. Tabla 6. Opciones de configuración del oscilador para la operación USB En la primer columna (Input Oscillator Frequency) se selecciona el valor del cristal externo que utilizara la tarjeta de control, para este caso 20Mhz, en la última columna (Microcontroller Clock Frequency) seleccionamos la velocidad nominal de trabajo requerida, para el caso de USB 48MHz, y de acuerdo a esto aparecen los valores de configuración de los Fuses (HSPLL, PLL5, CPUDIV1). #fuses HSPLL y PLL5. La frecuencia de oscilación necesaria para el USB 2.0 es de 48 Mhz. Como se utilizó en el hardware un cristal de cuarzo de 20 Mhz se 77 necesita hacer uso del módulo PLL interno del PIC. Para ello se utiliza el fuse HSPLL. Como el módulo PLL requiere una oscilación de entrada de 4 Mhz se debe utilizar el divisor 1:5 indicado con el fuse PLL5 para obtener los 20:5 = 4 Mhz requeridos. USB_ENABLE_BULK y SIZE 32. Para activar el método de transferencia masiva mediante el USB se debe configurar los EndPoint de transmisión y recepción, USB_EP1_TX_ENABLE y USB_EP1_RX_ENABLE, indicándolo con la constante USB_ENABLE_BULK. Es imprescindible deshabilitar el método HID (Human Interface Device). El tamaño del buffer de transferencia se puede ajustar desde 1 a 32 bytes como máximo. Se estableció un tamaño de 5 bytes por envío o recepción de paquetes USB. #include PicUSB.h. En el fichero PicUSB.h, cargado con el correspondiente include, se definen las estructuras y parámetros necesarios para la conexión USB. main(). Las funciones usb_init(), usb_task(), usb_wait_for_enumeration(), usb_enumerated(), usb_kbhit(), usb_get_packet() y usb_put_packet() están desarrolladas en el driver que proporciona CCS C para el manejo del USB 2.0 y vienen definidas e implementadas en los includes pic18_usb.h, usb.c y usb.h que se pueden encontrar en el directorio ..\Drivers de la instalación de CCS C. usb_init(), usb_task() y usb_wait_for_enumeration() se utilizan solo para establecer la comunicación y se ejecutan únicamente tras un reset del microcontrolador. A partir de este punto sólo queda esperar a recibir un comando proveniente del PC. Esto se detecta con usb_kbhit() que al devolver true indicará que se tiene algo pendiente de recibir. Y se va a recoger mediante usb_get_packet() quedando disponible en recbuf. Para contestar se utiliza la función usb_put_packet(), en el que se envía con la instrucción usb_put_packet(1,envia,5,USB_DTS_TOGGLE); enviando el contenido correspondiente A continuación se muestra en código fuente en lenguaje C del firmware del microcontrolador. 78 #include <18F4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN #use delay(clock=48000000) #define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers #define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers #define USB_EP1_TX_SIZE 5 //size to allocate for the tx endpoint 1 buffer #define USB_EP1_RX_SIZE 5 //size to allocate for the rx endpoint 1 buffer ///////////////////////////////////////////////////////////////////////////// // // Include the CCS USB Libraries. See the comments at the top of these // files for more information // ///////////////////////////////////////////////////////////////////////////// #include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver #include <PicUSB.h> //Configuración del USB y los descriptores para este dispositivo #include <usb.c> //handles usb setup tokens and get descriptor reports #define CTR1 PIN_D0 //Controlador 1 #define CTR2 PIN_D1 //Controlador 2 #define CTR3 PIN_D2 //Controlador 3 #define CTR4 PIN_D3 //Controlador 4 #define CTR5 PIN_D4 //Controlador 5 #define CTR6 PIN_D5 //Controlador 6 #define CTR7 PIN_D6 //Controlador 7 #define CTR8 PIN_D7 //Controlador 8 #define CTR_ON output_high #define CTR_OFF output_low #define comando recibe[0] #define param1 recibe[1] #define param2 recibe[2] #define param3 recibe[3] #define param4 recibe[4] #define eco envía[0]// Hace un eco del comando recibido #define result1 envía[1] #define result2 envía[2] #define result3 envía[3] #define result4 envía[4] void main(void) { int8 recibe[5]; int8 envia[5]; //declaramos variables CTR_OFF(CTR1); CTR_OFF(CTR2); CTR_OFF(CTR3); CTR_OFF(CTR4); CTR_OFF(CTR5); 79 CTR_OFF(CTR6); CTR_OFF(CTR7); CTR_OFF(CTR8); //Apagamos los controladores usb_init(); //inicializamos el USB usb_task(); //habilita periferico usb e interrupciones usb_wait_for_enumeration(); //esperamos hasta que el PicUSB sea configurado por el host while (TRUE) { if(usb_enumerated()) //si el PicUSB está configurado { if (usb_kbhit(1)) //si el endpoint de salida contiene datos del host { usb_get_packet(1, recibe, 5); //recibe el paquete de tamaño 5 bytes del EP1 y almacenamos en recibe eco = comando; //Regresa el comando recibido result1 = param1*2; result2 = param2*2; result3 = param3*2; result4 = param4*2; switch (comando) { case 1:// Enciende controlador 1 CTR_ON(CTR1); break; case 2:// Enciende controlador 2 CTR_ON(CTR2); break; case 3:// Enciende controlador 3 CTR_ON(CTR3); break; case 4:// Enciende controlador 4 CTR_ON(CTR4); break; case 5:// Enciende controlador 5 CTR_ON(CTR5); break; case 6:// Enciende controlador 6 CTR_ON(CTR6); break; case 7:// Enciende controlador 7 CTR_ON(CTR7); break; case 8:// Enciende controlador 8 CTR_ON(CTR8); break; case 9:// Apaga controlador 1 CTR_OFF(CTR1); break; case 10:// Apaga controlador 2 CTR_OFF(CTR2); break; case 11:// Apaga controlador 3 CTR_OFF(CTR3); 80 break; case 12:// Apaga controlador 4 CTR_OFF(CTR4); break; case 13:// Apaga controlador 5 CTR_OFF(CTR5); break; case 14:// Apaga controlador 6 CTR_OFF(CTR6); break; case 15:// Apaga controlador 7 CTR_OFF(CTR7); break; case 16:// Apaga controlador 8 CTR_OFF(CTR8); break; } usb_put_packet(1, envía, 5, USB_DTS_TOGGLE); //enviamos el paquete de tamaño 5 bytes del EP1 al PC }// Fin if (usb_kbhit(1)) }// Fin if(usb_enumerated()) }// Fin while (TRUE) } 4.7. DESARROLLO DEL CIRCUITO IMPRESO Para el desarrollo del circuito impreso se usó el software Proteus ARES 7.6 SP0. El cual a partir del esquemático permite diseñar los diagramas para el circuito impreso. Los diagramas desarrollados fueron: Top Layer Top Overlay El circuito impreso se divide en tres bloques: Bloque de control Bloque de potencia Bloque de switcheo 81 4.7.1. Bloque de control Incluye componentes como el microcontrolador, puerto USB, oscilador y fuente de alimentación. Los puertos A, B, C y E del microcontrolador se dejaron con regletas tipo SIP para que el usuario los use de acuerdo a sus requerimientos. El puerto D se dejó habilitado para la conexión con la etapa de potencia del circuito. La tarjeta está diseñada para ser alimentada con una fuente externa, el bloque de control se alimenta con un voltaje de 5v y la etapa de potencia a 12v. Otra opción era alimentar el bloque de control a través del puerto USB, este método se descartó, ya que se necesitan dos voltajes de alimentación 5v y 12v, y el puerto USB solo ofrece 5v, y dependiendo de consumo del circuito algunas Board de PC no pueden garantizar el voltaje y la corriente mínima para el correcto funcionamiento del hardware. En caso que el usuario requiera reiniciar el hardware o el sistema se bloquee, el circuito cuenta con un pulsador de RESET. A continuación se presentan los esquemas del circuito impreso para el bloque de control. 82 Figura 23. Diagrama detallado de conexión del bloque de control. 83 Figura 24. Top Layer del bloque de control Figura 25. Top Overlay del bloque de control 84 4.7.2. Bloque de potencia Incluye como componente principal el integrado ULN2803 que es un circuito integrado que posee una serie de transistores Darlington en cascada. En esta etapa se amplifica la corriente de la fuente para garantizar la activación de los relés encargados del switcheo en la siguiente etapa. Para esta etapa el voltaje de alimentación utilizado es de 12v, y solo se utilizarón 3 de los 8 pines disponibles del integrado, ya que se pretende controlar mínimo 3 consolas de videojuegos con este prototipo hardware. Para la comunicación con la etapa de switcheo se utilizaron conectores RJ11, comúnmente utilizados para líneas telefónicas, con el fin de instalar la siguiente etapa en el lugar de ubicación de la consola de videojuegos. A continuación se presentan los esquemas del circuito impreso para el bloque de control. Figura 26. Diagrama detallado de conexión del bloque de potencia 85 Figura 27. Top Overlay del bloque de potencia Figura 28. Top Layer del bloque de potencia 86 4.7.3. Bloque de switcheo Se compone básicamente de un relé permanentemente abierto y de dos conectores RCA. Este bloque es el encargado de bloquear y desbloquear la señal de video entre la consola de videojuegos y el televisor. Cuando al relé llega la alimentación eléctrica, este cierra el circuito dejando pasar la señal de video y la bloquea cuando el bloque de potencia suspende la alimentación eléctrica. La calidad de la señal de video no se ve afectado por el paso a través del relé según las pruebas realizadas. 4.8. EL SOFTWARE PARA EL PC El software encargado de administrar el dispositivo hardware se desarrolló utilizando Microsoft Visual C++ Express Edition, que es un entorno de desarrollo integrado (IDE) para lenguajes de programación C, C++ y C# y está especialmente diseñado para el desarrollo y depuración de código escrito para las API's de Microsoft Windows, DirectX y la tecnología Microsoft .NET Framework. La versión Express Edition es gratuita y se puede descargar desde el sitio de Microsoft. La aplicación se codifico en C# (Sharp) que es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET, similar al de Java aunque incluye mejoras derivadas de otros lenguajes (entre ellos Delphi). La selección del IDE de desarrollo y del lenguaje de programación se realizó teniendo en cuenta los siguientes aspectos: Ofrece funcionalidades de alto nivel e incorpora elementos gráficos que simplifican la tarea de generación de código fuente y el diseño de interfaces. Es orientado a objetos lo que permite desarrollar unidades modulares y reutilizables. Incorpora una serie de librerías que permiten una fácil manipulación de los puertos de entrada y salida del PC. 87 Permite usar con suma facilidad la plataforma de sistemas Windows, dado que tiene acceso prácticamente total a la API de Windows, incluidas librerías actuales. El código en C Sharp es fácilmente migrable a otros lenguajes. Fácilmente extensible mediante librerías DLL y componentes ActiveX de otros lenguajes. Es un entorno perfecto para realizar pequeños prototipos rápidos de ideas. Para el diseño y desarrollo de la aplicación se plantearon los siguientes requisitos: 4.8.1. Requerimientos funcionales y no funcionales Funcionales Registrar usuarios del sistema en la base de datos Registrar consolas de videojuegos en la base de datos Registrar tarifas en la base de datos Validar usuarios Asignar privilegios según la clase de usuario Asignar tiempo de uso a cada consola de videojuegos Cancelar tiempo de uso a cada consola de videojuegos Calcular saldo a cancelar Generar reporte de venta en la base de datos Consultar información Bloquear consola de videojuegos Desbloquear consola de videojuegos Interacción con un dispositivo electrónico a través de una interface de comunicación. No funcionales Sistema de fácil manejo y entrenamiento por parte de los usuarios El sistema manipulado por una sola persona. El sistema debe arrojar mensajes de error claros con el fin de identificar de forma fácil el problema. 88 El sistema debe estar disponible al 100% o a un valor muy cercano a este durante el horario de trabajo. El sistema debe permitir en un futuro el desarrollo de nuevas funcionalidades o al contrario, eliminar funcionalidades después de su puesta en marcha. El sistema debe contar con un manual de uso básico. El sistema debe ser de fácil instalación y funcionar sobre plataformas Windows 4.8.2. Requerimientos del sistema Del sistema El sistema debe contar con un dispositivo electrónico que controle directamente el bloqueo y desbloqueo de las consolas de videojuegos. El sistema debe contar con un motor de base de datos MySQL. El sistema debe tener por lo menos un puerto de entrada y salida (E/S) tipo USB, para la comunicación con el dispositivo electrónico. Sistema operativo Windows con características mínimas de procesador y memoria RAM. Procesador: 800 MHz, Memoria RAM: 256 Megas 89 4.8.3. Caso de uso general del sistema Figura 29. Caso de uso general del software de control y tarifación 4.8.4. Diseño y desarrollo del software A continuación se presenta algunas de las interfaces desarrolladas para cumplir con los requisitos funcionales de la aplicación. 90 Validar usuario Figura 30. Interfaz validar usuario Registrar usuario Figura 31. Interfaz registrar usuario 91 Asignar tiempo Figura 32. Interfaz asignar tiempo Cancelar tiempo Figura 33. Interfaz cancelar tiempo 92 Consultar información Figura 34. Interfaz consultar información Figura 35. Interfaz reporte de venta 93 Para la comunicación entre la aplicación y el firmware del PIC18F4550 se utilizó la librería MPUSBAPI.DLL proporcionada por la MICROCHIP, creada para una mayor facilidad en desarrollo de aplicaciones basadas en el bus USB, la cual proporciona las funciones de acceso al puerto USB con un microcontrolador de la familia PIC18Fxx5x. Esta librería es válida para los lenguajes C, Delphi y VB. La librería MPUSBAPI.dll ofrece funciones como: MPUSBGETDLLVERSION(VOID) Lee el nivel de revisión del MPUSAPI.dll. Es un nivel de revisión de 32bits. Esta función no devuelve la versión del código, no realiza nada con el USB. Devuelve la versión de la DLL en formato hexadecimal de 32bits. MPUSBGetDLLVersion() MPUSBGETDEVICECOUNT(PVID_PID) Devuelve el número de dispositivo con VID_PID asignado. pVID_PID: Input: cadena de caracteres del número de identificación asignado. MPUSBGetDeviceCount(vid_pid) MPUSBOPEN(INSTANCE, PVID_PID, PEP, DWDIR, DWRESERVED) Devuelve el acceso al pipe del Endpoint con el VID_PID asignado. MPUSBOpen(0, vid_pid, out_pipe, MP_WRITE, 0) MPUSBREAD(HANDLE, PDATA, DWLEN, PLENGTH, DWMILLISECONDS) handle: Input: Identifica la pipe del Endpoint que se va a leer. La pipe unida tiene que crearse con el atributo de acceso MP_READ. pData: Output: Puntero al buffer que recibe el dato leído de la pipe. dwLen: Input: Especifica el número de bytes que hay que leer de la pipe. pLenght: Output: Puntero al número de bytes leídos. MPUSBRead pone este valor a cero antes de cualquier lectura o de chequear un error. dwMilliseconds: Input: Especifica el intervalo de time-out en milisegundos. La función vuelve si transcurre el intervalo aunque no se complete la operación. Si dwMilliseconds=0, la función comprueba los datos de la pipe y vuelve 94 inmediatamente. Si dwMilliseconds es infinito, el intervalo de time-out nunca termina. MPUSBRead(myInPipe, VarPtr(s(0)), DatosDeseados, Datos, 1000) MPUSBWRITE(HANDLE, PDATA, DWLEN, PLENGTH, DWMILLISECONDS) handle: Input: Identifica la pipe del Endpoint que se va a escribir. La pipe unida tiene que crearse con el atributo de acceso MP_WRITE. pData: Output: Puntero al buffer que contiene los datos que se van a escribir en la pipe. dwLen: Input: Especifica el número de bytes que se van a escribir en la pipe. pLenght: Output: Puntero al número de bytes que se escriben al llamar esta función. MPUSBWrite pone este valor a cero antes de cualquier lectura o de chequear un error. dwMilliseconds: Input: Especifica el intervalo de time-out en milisegundos. La función vuelve si transcurre el intervalo aunque no se complete la operación. Si dwMilliseconds=0, la función comprueba los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de time-out nunca termina. MPUSBWrite(myOutPipe, VarPtr(SendData(0)), bytes, VarPtr(bytes), 1000) MPUSBREADINT(HANDLE, PDATA, DWLEN, PLENGTH, DWMILLISECONDS) handle: Input: Identifica la pipe del Endpoint que se va a leer. La pipe unida tiene que crearse con el atributo de acceso MP_READ. pData: Output: Puntero al buffer que recibe el dato leído de la pipe. dwLen: Input: Especifica el número de bytes que hay que leer de la pipe. pLenght: Output: Puntero al número de bytes leídos. MPUSBRead pone este valor a cero antes de cualquier lectura o de chequear un error. dwMilliseconds: Input: Especifica el intervalo de time-out en milisegundos. La función vuelve si transcurre el intervalo aunque no se complete la operación. Si dwMilliseconds=0, la función comprueba los datos de la pipe y vuelve 95 inmediatamente. Si dwMilliseconds es infinito, el intervalo de time-out nunca termina. MPUSBReadInt(myOutPipe, VarPtr(SendData(0)), bytes, VarPtr(bytes), 1000) MPUSBCLOSE(HANDLE) Cierra una determinada unión. handle: Input: Identifica la pipe del Endpoint que se va a cerrar. MPUSBClose (myOutPipe) 4.8.5. Diseño de la base de datos 4.8.5.1. Modelo relacional de datos Figura 36. Modelo relacional de la base de datos 96 4.8.5.2. Modelo físico de datos -- phpMyAdmin SQL Dump -- version 2.6.4-pl4 -- http://www.phpmyadmin.net --- Servidor: localhost -- Tiempo de generación: 28-10-2010 a las 13:26:38 -- Versión del servidor: 5.0.16 -- Versión de PHP: 5.1.1 --- Base de datos: `ciberconsolas` --- ---------------------------------------------------------- Estructura de tabla para la tabla `consola` -CREATE TABLE `consola` ( `id_consola` int(11) NOT NULL, `nombre_consola` varchar(20) NOT NULL, PRIMARY KEY (`id_consola`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; --- Estructura de tabla para la tabla `reporte` -CREATE TABLE `reporte` ( `id_reporte` int(11) NOT NULL auto_increment, `consola_id_consola` int(11) NOT NULL, `tarifa_id_tarifa` int(11) NOT NULL, `fecha` datetime default NULL, `tiempo_inicio` varchar(15) default NULL, `tiempo_fin` varchar(15) default NULL, `tiempo_asignado` time default NULL, `tiempo_uso` time default NULL, `valor` float default NULL, PRIMARY KEY (`id_reporte`), KEY `consola_id_consola` (`consola_id_consola`), KEY `tarifa_id_tarifa` (`tarifa_id_tarifa`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ; --- Estructura de tabla para la tabla `tarifa` -CREATE TABLE `tarifa` ( `id_tarifa` int(11) NOT NULL auto_increment, `nombre_tarifa` varchar(20) NOT NULL, PRIMARY KEY (`id_tarifa`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ; 97 --- Estructura de tabla para la tabla `tarifapersonalizada` -CREATE TABLE `tarifapersonalizada` ( `id_tarifapersonalizada` int(11) NOT NULL auto_increment, `tarifa_id_tarifa` int(11) NOT NULL, `tiempo_tarifapersonalizada` time NOT NULL default '00:00:00', `valor_tarifapersonalizada` float NOT NULL, PRIMARY KEY (`id_tarifapersonalizada`), KEY `tarifa_id_tarifa` (`tarifa_id_tarifa`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; --- Estructura de tabla para la tabla `usuario` -CREATE TABLE `usuario` ( `id_usuario` int(11) NOT NULL auto_increment, `nombre_usuario` varchar(25) NOT NULL, `password_usuario` varchar(20) NOT NULL, `privilegios_usuario` varchar(12) NOT NULL, PRIMARY KEY (`id_usuario`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; 98 5. CONCRECIÓN DEL MODELO 5.1. PRUEBAS DE RECONOCIMIENTO E INSTALACIÓN El primer paso para realizar la comunicación entre el dispositivo hardware y el software del PC es la instalación del driver para Windows que provee la Microchip para la implementación de comunicación con la tecnología USB. El driver le permite al sistema operativo interactuar con la tarjeta de control. Ejecución La prueba realizada para verificar el reconocimiento y la instalación de la tarjeta de control en un PC portátil con sistema Operativo Windows Vista Home 32 bits, consta de las siguientes actividades: Conectar el dispositivo hardware a un puerto USB del PC. Figura 37. Reconocimiento del dispositivo por parte del PC Luego de realizar este procedimiento el sistema operativo detecta un nuevo dispositivo conectado. El microcontrolador envía al PC sus datos de identificación (VID y PID) que básicamente corresponde al número y nombre del dispositivo. 99 Una vez reconocido el dispositivo con el nombre de “J1M PicUSB” el sistema operativo realiza una búsqueda dentro de su galería de drivers de los archivos necesarios para la instalación del dispositivo. Como es un dispositivo nuevo el sistema operativo no encuentra un driver apropiado por lo que solicita al usuario una ubicación e instalación manual de este, presentando lo siguiente: Figura 38. Solicitud de ubicación manual del driver del dispositivo Figura 39. Ubicación manual del driver del dispositivo 100 Lo siguiente es localizar la carpeta con los archivos del driver en el PC Figura 40. Selección manual del driver del dispositivo El sistema operativo verifica los archivos contenidos en la carpeta y determina si corresponden al dispositivo conectado para iniciar la instalación automática de estos. Figura 41. Instalación del driver del dispositivo 101 Luego de finalizado el proceso de instalación del driver, el sistema operativo notifica la correcta instalación de este Figura 42. Notificación de driver instalado correctamente Se verifica en el administrador de dispositivos de Windows que se haya identificado la tarjeta de control como un dispositivo más del sistema. Figura 43. Reconocimiento del hardware en el administrador de dispositivos del PC 102 En este momento el dispositivo está listo y correctamente configurado para realizar la comunicación con el software del PC. Este procedimiento se realiza la primer ves que se conecta el dispositivo al PC, para la próxima vez que se conecte el dispositivo el sistema operativo lo reconocerá automáticamente utilizando la tecnología Plug and Play. Solo será necesario repetir el procedimiento si se realiza la desinstalación del dispositivo o si se conecta a un puerto USB diferente al utilizado en la primera conexión. 5.2. PRUEBAS DE COMUNICACIÓN Y FUNCIONAMIENTO Después de instalado y configurado el dispositivo en el PC se procede a realizar las primeras pruebas de comunicación. Para llevar a cabo esta prueba se desarrolló una aplicación rápida de prueba en Microsoft Visual C++ Express Edition la cual verifica la conexión con el dispositivo y envía una cadena de datos con un tamaño de 5 Bytes al microcontrolador. Ejecución: Con el botón “Nro. De Dispositivo” se comprueba si el dispositivo esta correctamente conectado y configurado. En los campos de la columna izquierda se ingresa en primer lugar el numero de PIN (N+1) del microcontrolador correspondiente al puerto D, que se desea activar, los demás campos con datos numéricas de cualquier valor, y se presiona “Transmite” 103 Figura 44. Transmisión de datos al microcontrolador Cada Byte es almacenado en una casilla del vector de datos definido en el Firmware de PIC, el primer Byte indica el numero el numero del PIN (N-1) del puerto D del microcontrolador que debe activarse, y cada uno de los 4 Bytes restantes se multiplica por 2. El Firmware activa el PIN correspondiente y hace un eco del primer Byte y envía el resultado de la multiplicación de cada uno de los 4 Bytes al software de prueba de PC y de despliegan en la columna derecha de la imagen anterior. Figura 45. Ejecución de tareas programadas en el microcontrolador 104 Con la prueba anterior se verificó la correcta comunicación bidireccional entre el software de prueba del PC y el firmware del microcontrolador PIC18F4550. 5.3. PRUEBAS DE INTEGRACIÓN Para la realización de esta prueba se utilizaron los siguientes dispositivos: Un PC con el software de control y tarifación y conexión USB El bloque de control El bloque de potencia El bloque de switcheo Una consola de videojuegos Un televisor Una fuente de alimentación Se montó el siguiente escenario: Figura 46. Escenario de prueba de integracion 105 Ejecución: La primera actividad fue realizar la interconexión entre los tres bloques que componen el dispositivo y comprobar la conectividad entre estos. Figura 47. Interconexión de los bloques de la tarjeta de control Luego se realizó la conexión en el bloque de switcheo del cable RCA proveniente de la consola de videojuegos, y el otro extremo al TV. Y después la conexión a través del puerto USB entre el dispositivo y el PC, obteniendo el siguiente escenario de prueba. Figura 48. Interconexión de la consola de videojuegos y la tarjeta de control 106 Figura 49. Interconexión de todos los dispositivos Puesto en funcionamiento el dispositivo, se puede observar que se mantiene bloqueada la señal de video hasta que el software del PC no active la consola de videojuegos. A través del software de control y tarifación se activo el servicio de alquiler de la consola de videojuegos desbloqueando la señal de video entre la consola y el TV por el tiempo asignado en el software. Figura 50. Activación de la consola en el software del PC 107 Figura 51. Verificación de la activación de la consola Culminado el tiempo de alquiler programado en el software del PC, la consola de videojuego queda nuevamente bloqueada hasta que se active de nuevo el servicio. Con las imágenes anteriores se puede verificar que el dispositivo cumple su función de bloquear y desbloquear la consola de videojuegos a través de la señal de video de acuerdo al tiempo de alquiler programado en el software de control y tarifación instalado en el PC. 108 6. CONCLUSIONES Utilizando el microcontrolador PIC18F4550 es posible implementar una comunicación satisfactoria entre la tarjeta de control y el software del PC haciendo uso de la tecnología USB. Se hace más práctico utilizar la tecnología USB en comparación con la serial y paralela en proyecto desarrollado, ya que ofrece mayores tasas de transferencia y su conexión es más fácil gracias a la tecnología Plug and Play. Se desarrolló el firmware del microcontrolador utilizando el lenguaje de programación de alto nivel CCS C con el software PCWH Compiler, ya que este ofrece todas la librerías necesarias para el manejo del PIC18Fxx5x y la comunicación USB haciendo más fácil la tarea de programación. Se implementó una comunicación bidireccional masiva, bulk transfers, entre el PIC18F4550 y el Software del PC vía USB 2.0 a full speed; ya que esta configuración es la que ofrece mayor rata de transferencia de datos. Para trabajar el módulo USB del microcontrolador en Full Speed se requiere de una frecuencia de oscilación de 48 Mhz, esto no implica que sea necesario usar un cristal de este valor, debido a que en la etapa de investigación se encontró que es posible ajustar la frecuencia de oscilación mediante el postscaler del microcontrolador. Se desarrolló el Software del PC utilizando el leguaje de programación orientado a objetos C Sharp, que permite la reutilización y extensión de código fuente, facilita la creación de prototipos y programas visuales, agiliza el desarrollo del Software y permite abstracción, relacionando el sistema con el mundo real. La utilización de IDE (Entornos de Desarrollo Integrado) se convierte en una herramienta práctica para la codificación de aplicaciones Software para PC, ya que simplifica el proceso de generación de código fuente y diseño de interfaces. 109 En los recursos que ofrece la empresa Microchip (Driver y librería MPUSBAPI.dll) es posible encontrar las funciones y rutinas necesarias para realizar la sincronización y comunicación satisfactoria vía USB. Debido a que la sintaxis del los códigos de programación en lenguaje C Sharp se deriva de C/C++ y utiliza el modelo de objetos de la plataforma.NET la programación se reduce sustancialmente y se hace más simple y entendible. La utilización de la plataforma .NET de Microsoft para el desarrollo del componente Software del PC facilita la programación a la hora de utilizar los puertos de entrada/salida bajo sistemas Windows. En el desarrollo de este proyecto se analizaron las características técnicas de los dispositivos que se encuentran actualmente en el mercado, y se implementaron las que más se adaptan al sistema, proporcionando una diferencia significativa con estos al utilizar un sistema de comunicación a través del puerto USB. Se determino que a través de un sistema computacional integrando software y hardware es posible dar solución a los problemas de control y tarifación en los centros dedicados a la renta de consolas de videojuegos. 110 7. RECOMENDACIONES Para el correcto funcionamiento del dispositivo se debe tener en cuenta la versión del sistema operativo Windows para instalar el Driver correspondiente. El sistema permite controlar las señales de video a través de conectores RCA, común en la mayoría de las consolas de videojuegos, si se desea controlar otro tipo de sistema como el HDMI, solo se debe reemplazar el modulo de Swicheo del dispositivo. Para la correcta programación del microcontrolador se debe leer y estudiar la hoja de datos (Datasheet) del dispositivo. Se debe tener en cuenta que para utilizar la tecnología USB el microcontrolador debe trabajar a una frecuencia de oscilación de 48Mhz El proceso de instalación del Driver se debe efectuar la primera vez que se conecta el dispositivo al PC o cuando se cambia de puerto USB. Si se desea ampliar la funcionalidad del dispositivo electrónico, solo es necesario reprogramar el microcontrolador, y utilizar los puertos disponibles por medio de las regletas tipo SIP de modulo de control. Se recomienda realizar primero la conexión de la fuente de alimentación al dispositivo y luego la conexión USB para garantizar el reconocimiento de este en el PC. Se recomienda alimentar eléctricamente el hardware con una fuente de 12 a 18 voltios, con una corriente de entre 1 y 2 amperios. 111 BIBLIOGRAFÍA aDeSe, A. E. (2009). Datos de la industria: Anuario 2009. Obtenido de http://www.adese.es./pdf/Anuario2009aDeSe.pdf ALCSOFT. (s.f.). Controlador de consolas. Recuperado el Julio de 2010, de http://www.alcsoft.com.ar/ ANDERSON, D. (1997). USB System Architecture. Pearson Educaction Corporate Sales Division. ARANGO, P. C., & ARENAS, C. P. (2010). Proyecto de grado “Sistema de control y monitoreo en tiempo real de procedimientos remotos”. PEREIRA, RISARALDA, COLOMBIA. ASSEL, H. (1999). Comportamiento del consumidor. Mexico: 6ed. AXELSON, J. (1999). USB complete. Lakeview Reserch 1ed. CCS, C. (2008). Manual de referencia CCS Compiler. Obtenido de http://www.ccsinfo.com/downloads/ccs_c_manual.pdf CONTROLGAME. (s.f.). Tarifador de consolas de juegos. Recuperado el Julio de 2010, de http://www.controlgame.com.ar/empresa/empresa.html CYBERPLANETSOFT. (s.f.). Gestion de CyberCafe. Recuperado el julio de 2010, de http://www.cyberplanetsoft.com/descripcion.asp DIAZ MIRANDA, J. (2005). Conectores RCA y HDMI. Recuperado el Junio de 2010, de http://www.tuelectronica.es/radio-ytelevision/sonido/conectores-de-audio.html FERNANDEZ, R. (2002). IEEE1394 y USB 2.0. Obtenido de http://www.idg.es/dealerworld/IEEE-1394-y-USB-2.0/seccion-/articulo135527 HAYMAN, J. (1991). Investigacion y educacion. 112 HERRERA PEREZ, E. (2004). Comunicaciones y ruido digital. Mexico: Comunicaciones II. HUANG, H. W. PIC Microcontroller: An Introduction to Software and Hardware Interfacing. LABCENTER. (s.f.). Professional PCB Design and Simulation. Recuperado el Agosto de 2010, de www.labcenter.com MARQUES PERE, G. (2001). Los videojuegos: Las claves del éxito. Obtenido de http://peremarques.pangea.org MICROCHIP. (s.f.). USB Firmware Users Guide. PIC18F2455/2550/4455/4550 DataSheet. Obtenido de http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en0103 00 MORENO PEREZ, M. (2006). Bus de comunicaciones USB. Obtenido de http://www.sec.upm.es MORTON, J. (2005). The PIC Microcontroller, Your Personal Introductory Course (Vol. III). Newnes. NAVARRO GALVEZ, J. (Febrero de 2005). Tesis “Control de un módulo bluetooth mediante microcontrolador”. RODRIGUEZ DURAN, L. (2007). El Gran Libro del PC Interno. España: 1ed. ROMERO ACOSTA, A. I., DELGADO RINCON, J. A., & RODRIGUEZ NIÑO, J. A. (2006). Tesis "Diseño y construccion de una tarjeta de adquisicion de datos basado en un microcontrolador PIC bajo el principio de instrumentacion virtual con interfaz USB". Bogota. ROMERO, D. (2007). Construcción de significados frente a los contenidos violentos de los videojuegos en niños de 11 a 14 años. Bogota. STALLINGS, W. (1999). Comunicaciones y redes de computadoras. 5ed. TECELCOM. (s.f.). Tecelcom Videojuegos. Recuperado el Octubre de 2010, de http://web.tecelcom.com/ 113 USB. (1999). USB Mass Storage Class Bulk-Only Transport. Revision 1.031. WEITZENFELD, A. (2002). Ingenieria del software orientada a objetos. Mexico: Itam. 114