Firmado digitalmente por Universidad Tecnológica de Querétaro Nombre de reconocimiento (DN): cn=Universidad Tecnológica de Querétaro, o=Universidad Tecnológica de Querétaro, ou, email=webmaster@uteq.edu.mx, c=MX Fecha: 2012.02.09 15:36:54 -06'00' Universidad Tecnológica de Querétaro Caja de pruebas USB Memoria Que como parte de los requisitos para obtener El título de TÉCNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA ÁREA AUTOMATIZACIÓN PRESENTA MARIA JOSÉ GONZÁLEZ ARREOLA Asesor de la UTEQ Ing. Jesús Ricardo Tapia Santiago de Querétaro, Qro. Asesor de la Empresa Ing. Juan Carlos Enríquez Fernández Febrero de 2012 Resumen El presente proyecto se desarrollo en el área de soporte técnico de la empresa SOFTELLIGENCE. Consistió en la creación de una interfaz USB, diseñada para el control de pruebas en diademas telefónicas con puerto USB. El propósito de dicha interfaz es probar el correcto funcionamiento de las diademas USB médiate la caja de pruebas diseñada para dicha labor. La solución está conformada por un hardware libre (Arduino UNO) basado en un microcontrolador ATMEGA328, el cual está dirigido a aplicaciones que únicamente van a poder ejecutar el rol de esclavo en la comunicación USB. Se realizó la programación (Firmware) de esta tarjeta para la comunicación con el Host Shield USB. Todos los elementos funcionan en conjunto de tal forma que da una respuesta integral a la problemática. Entre las principales contribuciones de este proyecto se destacan el desarrollo de la programación. El sistema creado para la caja de pruebas brindara una mayor rapidez de servicio en el diagnostico de la diademas telefónicas .Esto asegura al cliente la confianza en las diademas. 2 ABSTRACT This Project was developed in the Softelligence technical support department. It consisted in the creation of an USB interface designed for telephonic diadems with USB port. The Interface purpose is to test each one of the devices trough the test box designed for it. The solution is formed by a free hardware (Arduino UNO) based on a microcontroller ATMEGA328, which is only for slave applications during the USB communication. This programming (firmware) is required for the communication with the host shield. All the elements work together for a complete answer to the problem. Programming development is the most important among the contributions of this project. This whole new system will provide a faster diagnosis of the devices for the company. In this way the client can be sure of the quality of the product. 3 Dedicatoria A Dios, por brindarme la oportunidad y la dicha de la vida, al brindarme los medios necesarios para continuar mi formación como profesionista, y siendo un apoyo incondicional para lograrlo ya que sin él no hubiera podido. A mis padres y hermano, quienes me acompañaron en lo largo del camino brindándome la fuerza necesaria para continuar, así mismo ayudándome a lo que fuera posible, contribuyendo incondicionalmente a lograr mis metas y objetivos propuestos, dándome consejos y orientación. A los profesores, que me acompañaron durante este largo camino brindándome siempre su orientación con profesionalismo ético en la adquisición de conocimientos y afianzado mi formación. 4 INDICE Página Resumen 2 Abstract 3 Dedicatorias 4 Índice 5 I. INTRODUCCION 8 II. ANTECEDENTES 9 III.JUSTIFICACIÓN 9 IV OBJETIVOS 10 V. ALCANCES 10 VI. FUNDAMENTACIÓN TEÓRICA 11 6.1 Protocolo USB 12 6.2 Interfaz Física 13 6.3 Transferencia 15 6.4 Descriptores 5 16 6.5 Enumeración 17 6.6 Jerarquía de clases 17 6.7 Funcionamiento 18 6.8 Proceso de comunicación vía USB 19 6.9 Arduino 22 6.10 C-Media 108 23 6.11 Max 3421E 26 6.12 Host Shield USB 27 VII. PLAN DE ACTIVIDADES 28 7.1 Secuencia de Actividades 29 7.2 Diagrama de Gantt 30 VIII. RECURSOS MATERIALES Y HUMANOS 31 IX. DESARROLLO DEL PROYECTO 32 9.1 USB 35 9.2 Arduino 37 6 X. RESULTADOS OBTENIDOS 44 XI. ANÁLISIS DE RIESGOS 45 XII. CONCLUSIONES 46 XIII. RECOMENDACIONES 48 XIV. REFERENCIAS BIBLIOGRÁFICAS 58 GLOSARIO 50 7 I. INTRODUCCIÓN El trabajo consiste en el reporte de las actividades realizadas en torno a la creación de una interface USB, para la creación de la caja de pruebas la cual se utilizara para obtener el diagnostico de las diademas telefónicas con puerto USB. Al realizar este proyecto se plantean sus antecedentes, mencionando las necesidades por las cuales surge el proyecto, así como su definición, objetivo, alcance y una propuesta del plan de trabajo, donde se explica la manera en la que se llevan a cabo todas las actividades referentes al proyecto. Dicho proyecto tiene como referencia una fundamentación teórica en donde se establece el protocolo de comunicación, funcionamiento de dispositivos y lógicas de control con las cuales opera. Durante el desarrollo se dará un seguimiento profundo de la evolución del proyecto, explicando de manera minuciosa todas las partes que lo componen, para una mejor comprensión. 8 II. ANTECEDENTES En la empresa Accutone, se tiene una caja de pruebas donde se verifica si las diademas telefónicas están en óptimas condiciones. Cabe mencionar que antes de tener la caja de prueba, los encargados de soporte técnico, tenían que invadir el espacio del cliente; dicho de otra manera tenían que ocupar sus teléfonos y comprobarles que el producto estaba en perfectas condiciones; la cual es una situación muy incómoda para el cliente y el vendedor. Dada esta necesidad fue que se creó la caja de pruebas donde se puede ver si hay continuidad en los cables estándar; si los componentes de las diademas telefónicas sirven correctamente, lo que son los controles de micrófono y volumen, la bocina y el micrófono. La caja de pruebas que se tenía no era compatible con la nueva gama de diademas con puerto USB. Hacía falta colocar la interface USB en la caja para probar si funcionan las diademas USB y no invadir el espacio del cliente. III. JUSTIFICACIÓN La empresa Accutone se encarga de proveer diademas telefónicas de calidad. Para comprobarle al cliente que nuestro producto sirve y es el mejor en el mercado, se tuvo que hacer una caja de pruebas para la gran gama de diademas. Recientemente se diseño una gama de diademas con puerto USB las cuales, para probar que funcionan y están en perfectas condiciones, se tuvo la necesidad de crear una nueva caja de pruebas para verificación de las mismas. Para esto era necesario implementar una interface USB la cual se realizó a través de este proyecto. 9 Fue importante terminar esta interface para no invadir el espacio del cliente y que el cliente y el proveedor no se sintieran incómodos en el momento en que se pruebe el producto. Otro beneficio que se contempló fue, facilitar el trabajo al área de soporte técnico al identificar cual era la falla en el producto. Con esto se ahorra tiempo y material. IV. OBJETIVOS Sustituir la PC por la caja de pruebas con puerto USB, y así facilitar las labores en el área de soporte técnico. Ahorrar tiempos de prueba de las diademas de 10 minutos a 7 minutos con la caja de pruebas. Ahorro de energia eléctrica al 50%. V. ALCANCES Dentro del plan general del desarrollo del departamento de soporte técnico, este proyecto fue de gran importancia ya que es vital para verificación de las diademas con puerto USB y así facilitar de trabajo en identificar el problema de las diademas de esta nueva gama. 10 Con este proyecto se buscó tener una mejor herramienta de trabajo en el área de soporte técnico, pues se deseaba sustituir la computadora por algo más ligero y práctico como un microcontrolador. Con esto se ahorra espacio y así se puede dar un mejor servicio y al mismo tiempo tener una mejor relación con el cliente, por tanto. Se le demostró al cliente que la diadema es la mejor en el mercado, este prototipo ayudaría a comprobar la fiabilidad de las diademas. Y se le demostraría que el producto que se está ofreciendo está en perfectas condiciones, sin la necesidad de ocupar su computadora o su equipo telefónico. Otra ventaja de la caja de pruebas es la facilidad de uso para el cliente y el personal. VI. Fundamentación teórica Para la elaboración de este proyecto se requirió información referente al protocolo USB, para comprender cada uno de los procedimientos que conforman la comunicación. De igual manera es abordada la información de las funciones y librerías utilizadas para crear la programación de lenguaje C y finalmente es anexada información referente al modo de funcionamiento del microcontrolador utilizado. 11 6.1 Protocolo USB El USB es un estándar que define un bus utilizado para conectar periféricos a la PC. La principal característica que tiene es que la conexión es muy sencilla, ya que utiliza un único conector para conectar a través de un bus serie todos los dispositivos. En él se definen los conectores y los cables, una topología especial tipo estrella para conectar hasta 127 dispositivos y protocolos que permiten la detección y configuración automática de los dispositivos conectados. USB soporta dos tasas de transferencia diferentes, una baja de 1,5 Mbps para la conexión de dispositivos lentos de bajo costo (joysticks, ratones) y otra alta de hasta 12 Mbps para la conexión de dispositivos que requieren un mayor ancho de banda (discos o CD-ROMs). Este estándar define una topología de conexión en estrella, tal como se muestra en la figura 6.1, por medio de la incorporación de un concentrador (Hub) conectado en serie. Un Hub tiene la misión de ampliar el número de dispositivos que se pueden conectar al bus. Son concentradores cableados que permiten la conexión simultánea de múltiples dispositivos y lo más importante es que se pueden concatenar entre sí ampliando la cantidad de puertos disponible para los periféricos. El Hub detecta cuándo un periférico es conectado o desconectado de uno de sus puertos, notificándolo de inmediato al controlador de USB. También realiza funciones de acoplamiento de las velocidades de los dispositivos más lentos. Existe una gran variedad de dispositivos USB que se conectan todos al mismo bus. La característica más importante es que todos ellos utilizan el mismo tipo de cable y de conector y se conectan de la misma forma tan sencilla. El servidor (Host) decide qué dispositivo puede acceder al bus. 12 Figura 6.1 Topología tipo estrella Desde el punto de vista lógico un dispositivo (comúnmente llamado función) posee un conjunto de puntos de acceso (endpoints), los que le permiten enviar y recibir datos. Un conjunto de los puntos de acceso (endpoints) forma parte de concepto de mayor abstracción llamado interfaz y es el que va a especificar cuáles son las características de comunicación de un dispositivo. 6.2 Interfaz física A nivel eléctrico, el cable USB transfiere la información y la alimentación sobre 4 hilos, como se puede apreciar en la Figura 6.2.1 13 Figura 6.2.1 Diagrama eléctrico del cable USB. Se usa un tipo de conector A (Figura 6.2.2). Este conector esta polarizado (sólo pueden insertarse en una posición) y utilizan sistemas de presión para sujetarse. Figura 6.2.2 Conector USB tipo A. Los de tipo A utilizan la hembra en el sistema anfitrión, y suelen usarse en dispositivos en los que la conexión es permanente (por ejemplo, ratones y teclados). En general el conector hembra A está en el lado del Host (PC) o de los Hub. 14 6.3Transferencias La interfaz USB está diseñada para manejar distintos tipos de periféricos con una gran variedad de requerimientos como lo son la frecuencia de transferencia, tiempo de respuesta y corrección de errores. El estándar define cuatro tipos de transferencias las que manejan diferentes necesidades. De esta manera los dispositivos pueden utilizar los tipos de transferencias que mejor se adecuen para sus propósitos. Las transferencias de control, son las únicas que tienen funciones definidas por la especificación USB. Permiten al Host leer información acerca del dispositivo, asignarle una dirección, seleccionar configuraciones y otras características. También pueden enviar pedidos específicos del vendedor. Todos los dispositivos USB deben soportar este tipo de transferencias. Las transferencias masivas están pensadas para situaciones donde la latencia de las transferencias no es crítica, como enviar un archivo a una impresora, recibir datos de un scanner, o acceder a un archivo en un disco. Para estas aplicaciones son llamativas las transferencias rápidas pero los datos pueden esperar si es necesario. Si el bus está muy ocupado, las transferencias masivas son retardadas, pero si el bus está libre son muy rápidas. Sólo los dispositivos full speed y high speed pueden hacer transferencias masivas. Las transferencias por interrupción (interrupt) son para dispositivos que deben tener la atención del host o dispositivos periódicamente. Aparte de las transferencias de control, son la única forma de transferir datos para los dispositivos de baja velocidad (low-speed). El teclado y ratón (mouse) utilizan este tipo de transferencias para enviar información. 15 Las transferencias isochronous tienen un tiempo de envío garantizado, pero no poseen control de errores. Son usadas para transmitir datos multimedia en aplicaciones de tiempo real. Es el único tipo de transferencia que no soporta retransmisión de datos recibidos con error. Sólo los dispositivos full speed y high speed pueden utilizarlas. 6.4 Descriptores Los descriptores USB son estructuras de datos, o bloques de información con formato, que le permiten al Host aprender acerca de un dispositivo. Cada descriptor contiene información acerca del dispositivo como un todo o un elemento del dispositivo como puede verse en la figura 6.4. Todos los dispositivos USB deben responder a pedidos para los descriptores USB estándar. 6.4Jerarquía de Descriptores 16 6.5 Enumeración Antes de que las aplicaciones puedan comunicarse con un dispositivo, el Host necesita aprender acerca de los dispositivos y asignarle un dispositivo de manejo (driver). La enumeración es el intercambio de información que acompaña a estas tareas. El proceso incluye asignación de una dirección para el dispositivo, lectura de descriptores desde el dispositivo, asignación y carga dispositivo de manejo (driver), y selección de una configuración que especifique los requerimientos de consumo de energía, endpoint y otras características. El dispositivo luego está listo para transferir datos usando cualquiera de los endpoints asignados en su configuración. 6.6 Jerarquía de clases Cuando un grupo de dispositivos o interfaz comparten muchos atributos o proveen o requieren de servicios similares, tienen sentido definir los atributos y servicios en una especificación de clase. Como es el caso de las clases de interfaz hombre – máquina (HID) que define dispositivos de interacción con una persona como lo son teclados, ratones, joysticks, etc. o la clase de instrumentos musicales de interfaz digital (musical instrument digital interface o MIDI) que define instrumentos. Los sistemas operativos pueden proveer drivers para las clases en común, eliminando la necesidad de que los vendedores de dispositivos tengan que proveer los drivers para los dispositivos en esas clases. Cuando un dispositivo en una clase soportada tiene una característica única o habilidades no incluidas en el driver, se puede proveer un driver de filtro para mantener las características agregadas y las habilidades, en lugar de escribir un driver completo. Una especificación de clase puede definir valores para los ítems 17 en los descriptores estándar, como también descriptores de clase específica (class-specific). 6.7 Funcionamiento Los dispositivos tienen asociados canales lógicos unidireccionales, llamados pipes, que conectan al Host con una entidad lógica en el dispositivo llamada endpoint. Los datos son enviados en paquetes de largo variable. Típicamente estos paquetes son de 64, 128 o más bytes. El endpoint y sus respectivos pipes, son numerados del 0 al 15 en cada dirección, por lo cual un dispositivo puede tener hasta 32 endpoint (16 de entrada y 16 de salida). La dirección se considera siempre desde el punto de vista del Host. Así un endpoint de salida será un canal que transmite datos desde el Host al dispositivo. Un endpoint solo puede tener una única dirección. El endpoint 0 (en ambas direcciones) está reservado para el control del bus. Figura 6.7.1 18 Figura 6.7.1 Comunicación virtual entre un dispositivo y el Host Cuando un dispositivo es conectado al bus USB, el Host le asigna una dirección única de siete bits (mediante el proceso de enumeración) que es utilizada luego en la comunicación para identificar el dispositivo. Luego, el Host consulta continuamente a los dispositivos para ver si tienen algo para enviar, de manera que ningún dispositivo puede enviar datos sin la solicitud previa explícita del Host. Para acceder a un endpoint se utiliza una configuración jerárquica de la siguiente manera: un dispositivo (llamado función) conectado al bus tiene un único descriptor de dispositivo, quien a su vez tiene uno (o varios) descriptores de configuración. Estos últimos guardan generalmente el estado del dispositivo (Ej: activo, suspendida, ahorro de energía, etc). Cada descriptor de configuración tiene uno (o más) descriptores de interfaz. Y éstos últimos finalmente son los que contienen los endpoint, que a su vez pueden ser reutilizados entre varias interfaz (y distintas configuraciones) como muestra la figura 6.7.1 19 6.8 Proceso de comunicación vía USB La comunicación vía USB es de tipo Plug and Play para el usuario, sin embargo, detrás de ese simple paso se encuentra todo un proceso de identificación para el dispositivo. Dicho proceso se puede separar en tres fases las cuales se encuentran dentro del programa del microcontrolador (Firmware), Figura 6.8.1. Figura 6.8.1 Etapas del proceso de comunicación. 1ª. Fase (USB Bus Reset): Cuando el dispositivo se conecta al puerto del Host, este lo detecta y provoca una interrupción de reset para que el dispositivo configure los registros y punteros necesarios y para que se pueda proceder a la enumeración. En esta fase el programa debe habilitar y configurar el Endpoint 0 para recibir y contestar a transacciones de tipo Setup, e inicializar todas las variables que posteriormente se utilizarán. Esto se realiza dentro de la rutina de servicio de la interrupción Bus Reset. 20 2ª Fase (Proceso de Enumeración): Esta fase se produce cuando el dispositivo es conectado al Bus y después de la fase de Bus Reset. El Host debe reunir la información necesaria para que el sistema identifique al dispositivo, configure el tipo de comunicación que se producirá entre ambos y encuentre al driver que tiene que utilizar para establecer ésa comunicación. El proceso consiste primero, en asignar una dirección al dispositivo y segundo, el Host envía una serie de peticiones para que el dispositivo mande información con el fin de establecer la comunicación. La información que debe mandar el dispositivo se estructura en registros o descriptores que configuran al dispositivo, son transmitidos mediante transferencia de control y siempre usando el Endpoint 0. Estos descriptores son los siguientes: Dispositivo descriptor: contiene información básica del dispositivo como puede ser número de serie, clase de dispositivo, etc. Configuración descriptor: contiene información sobre las capacidades y funciones del dispositivo, tipo de alimentación de energía que soporta. Interfaz descriptor: contiene información sobre el número de Endpoints que soporta y el protocolo utilizado. Clase de descriptor: determina la clase del dispositivo. 21 Punto final descriptor: excepto para el Endpoint 0, cada Endpoint debe ser configurado. La configuración de cada Endpoint consiste en el número de Endpoint, dirección de sus comunicaciones (IN, OUT) y número de bytes que transmite. Con estos descriptores y otros del sistema operativo (Windows), el Host debe encontrar el driver que necesita para comunicarse con el dispositivo. Para localizar este driver, Windows debe tener cargado un archivo especial de texto llamado INF que dice al sistema qué driver debe utilizar. Para realizar este proceso de enumeración se deberán cargar en el programa, el código de los descriptores, habilitar y configurar la interrupción del Endpoint 0 para aceptar transacciones de tipo Setup, saber qué tipo de reporte ha solicitado en cada caso el Host y mandarlo por el Endpoint 0. 3ª Fase (Gestión del dispositivo y de las comunicaciones): Después de las dos fases anteriores en las que se configura y se establece la comunicación con el host, se pasa a la tercera fase que es la que realmente se centra en gestionar la funcionalidad para la que se ha diseñado el dispositivo. 6.9 Arduino Arduino UNO como se muestra en la figura 6.9.1 es una plataforma de hardware libre, basada en una placa con un microcontrolador ATMega328 de la marca Atmel el cual que lleva precargado un bootloader (cargador de arranque, 22 es un programa sencillo que cubre las funciones básicas de un sistema operativo y que permite el uso casi inmediato de la placa y un entorno de desarrollo), diseñada para facilitar el uso de la electrónica en proyectos multidisciplinarios. Lo que hace práctico a esta placa es su sencillez y su bajo costo que permite desarrollar múltiples diseños. Figura 6.9.1 Arduino UNO 6.10 C-Media 108 El circuito integrado CM108 es una solución de audio con interfaz USB de muy bajo costo cuyo diseño se ha basado en un único chip, conteniendo en su interior todos los módulos analógicos esenciales incluyendo un doble convertidor digital-analógico y etapa de potencia para auriculares, un PLL, un pre-amplificador 23 para una entrada analógica, regulador de 3.3 V, así como un transceptor USB. Figura 6.10. Figura 6.10 Diagrama de C-Media 108 Este chip es muy usado en aplicaciones para convertir muy fácilmente cualquier PC u ordenador portátil en un sistema de sonido y también para hacer llamadas por Internet por VoIP (Skype, Messenger, etc.). 24 Muchas de las características de este chip son programables bien con puentes o bien a través de una EEPROM externa. Además los ajustes de audio pueden ser más fácilmente controlados por unas patillas específicas del chip. A continuación se destacan algunas características de este chip: Encapsulado de 48 patas. Configuración de ancho de banda cero para relevar el ancho de banda del bus USB cuando esta esté inactivo. Patilla de mute en grabación con patilla de salida para LED de indicación de estado. Interfaz externo en EEPROM para datos de fabricantes como USB VID, numero de serie. Función de escritura en EEPROM por especificación del consumidor. 4 patillas de GPIO con interfaz de lectura/escritura vía interfaz HID Patillas para configurar la tensión de salida (3.5 V o 2.5 V). Patilla para configurar el modo de ahorro de energía (100 mA o 500 mA, alimentado por el propio Bus USB o autoalimentado). Función de Mute. Integrado de alto rendimiento DAC de audio de 16 Bits amplificador de auriculares de teléfono. Función de reducción de ruido. Convertidor analógico/digital (ADC) de 16 Bits con preamplificador. Reguladores de 5 V y 3.3 V. 25 con 6.11 Max 3421E El MAX3421E como se muestra en la figura 6.11.1 es un periférico USB, controlador de Host. Contiene la lógica digital y los circuitos analógicos necesarios para implementar un USB de alta velocidad periférica o un Host compatible con la especificación USB full y low-speed. Tiene interconstruido un transceptor de velocidad plena que ofrece una protección electrostática (ESD) de ± 15 kV y una conexión y desconexión USB programable. Un SIE interno (máquina de interfaz serie), maneja detalles de protocolo USB de bajo nivel tales como verificación de error y reintentos de bus. El MAX3421E opera utilizando un conjunto de registros acezados por una interfaz SPI (Serial Peripheral Interface o bus serie de interfaz periférica) que opera hasta 26 MHz. Cualquier SPI maestro (microprocesador, ASIC, DSP, etc.) puede agregar funcionalidad USB utilizando la interfaz simple de tres o cuatro alambres. Figura 6.11.1 MAX3421E 26 6.12 Host Shield USB La placa Host Shield USB contiene toda la lógica digital y los circuitos analógicos necesarios para implementar un periférico USB de alta velocidad y sirve como controlador de Host con el Arduino UNO. Esto significa que se puede utilizar su interfaz con Arduino UNO y el control de cualquier dispositivo USB. Una interfaz serie de cuatro pines es empleada para comunicarse con el chip controlador del Host, por lo que el blindaje (shield) se conecta con el Arduino UNO mediante los pines SPI (D10-13) al MAX3421E. Un conector hembra USB tipo A está conectado a este integrado y suministra los 5 V que cualquier puerto USB brindaría. El shield toma su energía del pin Vin del Arduino. Esta alimentación es regulada a 5 V y 3.3 V. Todas las señales SPI son enviadas a través de un convertidor hex que las disminuye a 3.3V. Figura 6.12 USB Host Shield 27 VII. Plan de actividades Para comenzar a desarrollar el proyecto se hizo una secuencia de actividades por semana, con el objetivo de entregar en tiempo y forma el proyecto de estadía. A continuación se mencionarán las tareas realizadas durante el periodo de estadía: 7.1 Secuencia de actividades 1 Antecedentes de proyecto 2 Analisis de proyecto 3 Plan de trabajo 4 Definicion de objetivos y alcances 5 Estructura de la diadema 6 Investigación del arduino 7 Investigación del Host Shield USB 8 Investigación del microcontrolador Atmega 328-PU 9 Investigación de la C-Media 108 10 Investigación del CI MAX3421E 11 Práctica con el software 12 Lista y cotizacion de material 13 Compra de materiales 28 14 Prueba del software 15 Programa de un dispositivo HID en arduino 16 Programa HID en arduino para la comunicación de la diadema17 Realizacion de documentación del proyecto 18 Entrega del proyecto 7.2 Diagrama de Gantt. Con el fin de tener un aprovechamiento óptimo de tiempos se realizó un diagrama de Gantt expresado en semanas como se muestra en la secuencia de actividades las cuales se distribuyen para poder llegar a la parte final de este proyecto. 29 Figura 7.2 Diagrama De Gantt 30 VIII. Recursos materiales y humanos A continuación en la Tabla 8.1 se muestran los materiales y herramientas utilizados para el proyecto. Tabla 8.1 Materiales y Equipos 31 IX. Desarrollo del proyecto El proyecto comienza con la identificación de la diadema USB y su estructura. Esta es una diadema de alto rendimiento la cual está diseñada para comunicaciones de voz sobre IP profesionales ya sea chat por medio de Skype o cualquier software propietario. La diadema cuenta con audífonos de 40 mm que son capaces de ofrecer la más alta calidad en reproducción de audio que requieren alta fidelidad; también está equipada con un micrófono de diadema los cuales, como su nombre lo indica, se adhieren a la cabeza como una diadema cualquiera, lo que permite al usuario mayor comodidad para realizar otras actividades. Figura 9.1 Diadema telefónica 32 Ahora que las capacidades de sonido son una parte estándar de las computadoras, los micrófonos se están volviendo cada vez más importantes como dispositivos de entrada, por lo cual es necesario realizar una prueba de sonido a dicho dispositivo. Esto se realiza mediante la caja de pruebas para verificar su buen funcionamiento. A continuación se muestra un diagrama de la conversión que se tiene que realizar para la decodificación de una señal de audio. Figura 9.2 Diagrama de conversión 33 La diadema también cuenta con un control de mandos, (Figura 9.3 Control de mandos) el cual tiene diferente funciones visualizándose en el tono de un led como: Modo espera (luz verde fija): el dispositivo se encuentra en modo de espera listo para enviar o recibir datos de voz. Modo de operación (luz verde intermitente): el dispositivo esta operando, datos de voz se están enviando y/o transmitiendo datos. Modo espera (luz ámbar fija): el dispositivo esta en modo espera pero el micrófono esta mudo, por lo que no se trasmiten datos de voz. Modo operativo (luz ámbar intermitente): el dispositivo esta en operación pero el micrófono esta mudo. El dispositivo puede recibir datos mas no transmitir. 34 Figura 9.3 Control de mandos Sabiendo esto se comenzó con la investigación referente al protocolo USB, en donde se adquieren los conocimientos para comprender el modo de funcionamiento de dicha comunicación, seguido de la investigación referente al microcontrolador y el arduino ya que este cuenta con una placa de montaje que es el Host Shield USB a utilizar para conocer sus características y funciones. 9.1 USB USB fue diseñado expresamente para proporcionar las características más requeridas por los usuarios, las principales son: Una interfaz para muchos dispositivos: USB es lo suficientemente versátil para ser utilizable con una variedad de periféricos. En lugar de tener un 35 tipo de conector diferente para cada dispositivo y tener un soporte para cada hardware, en USB una interfaz sirve para todos. Configuración automática para clases conocidas: Cuando un usuario conecta un dispositivo USB, el sistema operativo detecta el periférico y carga el software apropiado. Si una clase desconocida se conecta, los sistemas operativos como Windows advierten al usuario para insertar un disco con el driver, pero aparte de eso, la instalación es automática. Fácil de manejar: La implementación del USB elimina el uso de IRQ’s y canales de DMA. Así como la necesidad de abrir los gabinetes para instalar o quitar dispositivos. El usuario no tiene la necesidad de preocuparse sobre la correcta selección del puerto serie, la instalación de tarjetas de expansión o configurar del jumper de la placa madre. Un PC típicamente tiene cuatro o más puertos USB los cuales son ampliables a través de Hubs. Simple conexión: Los conectores del cable USB son como una llave, así que no es posible poder conectar incorrectamente el dispositivo. El largo puede llegar hasta los 5 metros. Con Hubs, un dispositivo puede llegar hasta los 30 metros de distancia desde el host base. Los conectores USB son pequeños y compactos en contraste a los típicos RS-232 y conectores paralelos. En resumen USB usa únicamente un solo tipo de conector para cualquier tipo de 36 dispositivo, más allá de la función que cumplan. Para asegurar la buena operación, la especificación USB incluye requisitos eléctricos que todos los cables y los conectores deben incorporar. Conexión en caliente: USB permite conectar y desconectar un dispositivo cuando se requiera, no importando si los sistemas están energizados. No requiere alimentación externa: La interfaz USB incluye suministro de energía a través de la línea de tierra y los + 5 V nominal entregado por el computador o el Hub. Un dispositivo puede tomar hasta máximo 500 mA a través del bus. Por lo contrario, los dispositivos que usan interfaz en el cual requieran más corriente, pueden incluir un suministro de energía dentro del dispositivo o usar un suministro externo. 9.2 Arduino Para empezar a familiarizarnos con Arduino empezamos los primeros contactos con el hardware y software. Nos indica cómo instalar el entorno de desarrollo (IDE) y los drivers FTDI (Future Technology Devices International), fabricante de los microcontroladores que lleva Arduino, así como la configuración entre la placa Arduino y la PC (asignación de puertos) y la 37 velocidad a la que la placa y el PC se comunican. Son los primeros pasos que permiten verificar el correcto funcionamiento de todos los componentes básicos de la placa (hardware y software). Una vez completados estos primeros pasos realizamos diversos tutoriales para profundizar en el funcionamiento de Arduino, también disponibles. El primer tutorial permite conocer el procedimiento de uso de la placa y del software asociado. El primer ejercicio que realizamos es el de “Blink”, en el que hacemos parpadear un LED. La placa la conectamos la PC por USB y grabamos el programa, que se encuentra en lenguaje C, desde el software Arduino al procesador, le damos al botón de ejecutar y el LED que hemos colocado como indica la Figura 9.2.1 empezará a parpadear (Figura 9.2.1 Esquema placa Arduino + LED). Figura 9.2.1 Esquema placa Arduino + LED 38 A la hora de utilizar el software “Arduino” debemos tener en cuenta el puerto en el que se encuentra el nodo. Lo verificamos en el Administrador de Dispositivos, en el panel de control. También debe seleccionarse la placa correspondiente en la barra de herramientas (Tools Board), que en este caso es la “Arduino UNO Atmega328”. Para cargar el programa deseado pulsamos el botón de Upload to I/O Board, tras encenderse los Led´s RX y TX aparece el mensaje “Lista la compilacion” (Done compiling ) Para la programación de este microcontrolador se utilizó el programador Arduino el cual maneja una programación en lenguaje C. Para mejor comprensión de este programa se realizaron varias prácticas con los ejemplos que contiene el programador Arduino. Para mejor comprensión del funcionamiento de necesario comprender primeramente la la placa arduino es configuración básica de su microcontrolador utilizado dentro de dicha placa. En la siguiente figura 9.2.2 se muestra dicha configuración 39 Figura 9.2.2 Configuración del microcontrolador ATmega328 Como se muestra en la figura 9.2.2 para el funcionamiento del microcontrolador es necesaria una alimentación de entrada de 5 V de corriente directa, además de un arreglo a la entrada del pin de reinicia (reset) que cuenta con una resistencia y un botón pulsador utilizado para reiniciar el microcontrolador. También se cuenta con un cristal de cuarzo que realiza los ciclos de reloj útiles para el microcontrolador. 40 Sabiendo la configuración del microcontrolador que utilizada el Arduino se procedió a verificar la comunicación de Arduino UNO y la tablilla Host Shield USB tal como se muestra en la figura 9.2.3 Figura 9.2.3 Comunicación de Host Shield USB y Arduino UNO Para esto se realizaron distintas pruebas para la comunicación con la programación del mouse (ratón de computadora) las cuales confirman el buen funcionamiento de la comunicación de ellas. Una vez comprobado la comunicación de las placas se prosiguió a realizar la programación para la comunicación con la diadema USB. 41 Para realizar la programación se toma en cuenta los descriptores del integrado de audio C-Media 108 los cuales son muy importantes para el reconocimiento de la diadema USB y el control de mandos . Figura 9.2.4 Figura 9.2.4 Comunicación de Host Shield USB con Arduino UNO Después de haber realizado las pruebas pertinentes con la diadema USB se comenzó a diseñar la caja de pruebas donde se monto todo el dispositivo quedando tal y como se muestra en la siguiente figura 9.2.5 42 Figura 9.2.5 Caja de pruebas de diadema La caja de pruebas consta de un puerto de comunicación USB destinado a conectar la diadema telefónica con el sistema que contiene al microcontrolador. Este sistema verifica que el control de mandos de la diadema que son el control de micrófono, control de volumen y los Quick disconnect (QD), se encuentren en buen estado por lo que el indicador de “Activity” se encenderá al activarse alguno de ellos. De esta forma se logra diagnosticar el estado de las diademas. 43 X. RESULTADOS OBTENIDOS El proyecto no se pudo completar debido a fallas de comunicación entre el sistema conformado por el Arduino UNO y la tablilla Host Shield USB, y la diadema telefónica USB, la cual cuenta con un integrado de audio C-Media 108 mencionado anteriormente. Primeramente se realizaron pruebas para verificar la comunicación entre Arduino UNO y la tablilla Host Shield USB, la cual se confirmo con buen funcionamiento, por medio de la programación del mouse (ratón de computadora). De igual modo se revisó la diadema USB y a su vez el control de mandos, las cuales se probaron con la computadora por medio del programa Skype y con estas pruebas se confirmó su buen funcionamiento. Sabiendo esto se prosiguió a probar la diadema USB con las tablillas Arduino UNO y Host Shield USB mediante la programación realizada para dicha comunicación. Al conectar la diadema USB con la tablilla del Host Shield USB y está a su vez conectada con el Arduino UNO, nos dimos cuenta que la diadema no era detectada y una forma de probar que funciona es con el control de mando el cual cuanta con un led que enciende telefónica. 44 al ser reconocida la diadema Al ver las fallas que presentaba se decidió buscar más información enfocada al proceso de la comunicación de cada uno de los dispositivos utilizados. La diadema USB al ser probada con el programa SKYPE el sonido o la voz la transfiere en un formato de sonido como MP3. Por medio de este formato los reconoce y manda el sonido a la diadema. En el sistema de Arduino no hay forma de recibir ni enviar sonido MP3. El Arduino es un dispositivo que solo cuenta con entradas analógicas y digitales sin formato y la manera que se trabajó para sacar un tono del dispositivo fué mediante la programación de un PWM, en el cual se modula la frecuencia del tono. Para comprobar la programación, se conecta directamente una bocina a las entradas del Arduino. Después de una revisión ardua y de asesorías constantes se concluyó que el tipo el dispositivo Arduino UNO y la tablilla Host Shield USB no son las adecuadas para realizar la comunicación con la diadema telefónica USB. Sin embargo dicho proyecto no se puede descartar debido a la vasta información impartida atreves de este reporte la cual servirá para usar otros dispositivos los cuales hagan posible la realización de la caja de pruebas para las diademas USB. 45 XI. Análisis de riesgo Los riesgos que se tuvieron para la realización de este proyecto, es la falta de conocimientos del programa de Arduino. Otro riesgo que surgió fue la falta de conocimientos del Host Shield USB. Otra de las barreras que se tuvo para obtener buenos resultados fue que era muy poco tiempo para terminar un proyecto de este tipo. XII. Conclusiones Al cursar mi estadía en las instalaciones de Softelligence tuve la oportunidad de poner en práctica los conocimientos obtenidos en las aulas y laboratorios de la universidad siendo de gran ayuda todos los consejos obtenidos de los profesores. El desarrollo de este trabajo planteó un desafío grande en cuanto a la programación de un microcontrolador con el cual no estaba familiarizada y una tarjeta totalmente desconocida. Mediante un esfuerzo de investigación y experimentación se logro llegar a la conclusión de que dicho sistema de microcontrolador no serviría para este proyecto. Sin embargo el trabajo realizado permitió conocer mejor las capacidades de 46 muchos dispositivos eléctricos y electrónicos tales como el microcontrolador Atmega 328 y la tablilla Host Shield USB. Este tipo de proyectos generan una gran seguridad en la persona que los desarrolla, tanto así que, en mi caso, me han surgido las ganas de alimentarme de nuevas técnicas y formas de trabajar con nuevos componentes electrónicos utilizados para desarrollo de proyectos, como los microcontroladores ATMEL. Cuando se implementa cualquier diseño, es conveniente informarse bien, utilizando las recomendaciones e información del fabricante (especialmente las hojas de datos) lo que permitirá aplicar de manera conveniente y optima el microcontrolador adecuado; de esa forma se evitan problemas en la implementación. Para el buen uso de cualquier dispositivo se sugiere usar las pulseras antiestáticas para evitar que los componentes se dañen. Es aconsejable utilizar un microcontrolador con el cual se esté familiarizado, tenga un bajo costo y sea fácil su conexión de pines pues el microcontrolador utilizado en este proyecto requiere de una tablilla de desarrollo para su programación y funcionamiento. 47 XIII. Recomendaciones Es recomendable analizar el proyecto antes de proponerlo, analizar sus pros y contras para así saber si es alcanzable. Se recomienda buscar un dispositivo los cuales sean capaces de soportar dicha comunicación con la diadema telefónica USB. En la empresa se manejan distintos tipos de cables. Pero la configuración de cada cable es diferente. La recomendación seria hacer una caja de pruebas, para los cables. XIV. Referencias bibliográficas F. Loarca, Es. Timo Rei Lee, Arduino Programming Notebook año 2011, ISBN: 3-XX-51928402-Y Brian W. Evans, , no hay editorial, 2008. Tony Olsson, David Gaetano, Jonas Odhner, Samson Wiklund, Open Software, sin editorial, 2008. Banzi, Massimo. Getting Started with Arduino. Editorial O´Reilly Media/Make, Estados Unidos,2009. ISBN 978-0-596-15551-3 USB System Architecture USB 2.0, Addison Wesley. 2001 48 Referencias electrónicas [1] Información obtenida de la página electrónica www.aeromodelismovirtual.com/showthread.php?t=2691 [2] Información obtenida de la página electrónica http://arduinox.blogspot.com/ [3] Información obtenida de la página electrónica www.circuitsathome.com/mcu/bluetooth-code-for-arduino-usb-host [4] Información obtenida de la página electrónica www.superrobotica.com/s310425.htm [5] Información obtenida de la página electrónica www.circuitsathome.com/communicating-arduino-with-hid-devices-part-1 [6] Información obtenida de la página electrónica www.circuitsathome.com/category/mcu/usb. [7] Información obtenida de la página electrónica www.circuitsathome.com/ [8] Información obtenida de la página electrónica 49 accutone.com.mx/pdf/Diadema_VoIP_USB400.pdf Glosario Firmware: programa lógico para el microcontrolador. Hardware: corresponde a todas las partes físicas y tangibles de una computadora. Led: diodo emisor de luz (Light emitting diode), es un dispositivo semiconductor que emite luz cuando es polarizado directamente. Microcontrolador: es un circuito integrado o un chip que incluye en su interior las tres unidades funcionales de una computadora: unidad central de procesamiento, memoria y unidades de entrada/salida. Setup: significa estructuración. Se trata de un pequeño programa (con una interfaz básica para el usuario), integrado en la memoria ROM, el cual no necesita del sistema operativo de la máquina para funcionar; en él se puede acceder de manera inmediata al encender el equipo. Tiene la finalidad de configurar ciertos parámetros importantes que posteriormente serán funcionales al sistema operativo (dar de alta y baja unidades de disco, prioridad 50 de la unidad de inicio y velocidad del microprocesador entre otras), además de contener datos del fabricante de la tarjeta principal y de la memoria ROM. PCB: circuito impreso (Printed Circuit Board), es un medio para sostener mecánicamente y conectar eléctricamente componentes electrónicos, a través de rutas o pistas de material conductor, grabados en hojas de cobre laminadas sobre un sustrato no conductor, comúnmente baquelita o fibra de vidrio PWM (Modulación por anchura de pulso): es una técnica de modulación en la que se modifica el ciclo de trabajo de una señal periódica Software: equipamiento lógico o soporte lógico de una computadora digital; comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas especificas. Plug & Play: Los dispositivos son detectados automáticamente por el sistema operativo, el cuál carga los drivers correspondientes para el funcionamiento del dispositivo. USB: Bus serie universal, tecnología de conexión. DRIVERS: Programas o software, que es capaz de controlar un dispositivo, para su correcto funcionamiento. HUBS: dispositivo que permite la conexión de otros dispositivos a la vez, dado por sus numerosas entradas o puertas. 51 BUS: Circuito de interconexión eléctrica para transmitir información. BYTE: Conjunto de 8 bits. Representa un carácter en lenguaje binario. BIT: Dígito binario, unidad mínima de información de los dos estados 0/1. Abreviación de Binary Digit que puede ser 0 o 1. Es la unidad básica de almacenamiento y proceso de una computadora. 8 bits = 1 byte. IRQ: Canal de interrupción. Línea directa entre el microprocesador y la tarjeta periférica para que ésta solicite atención del CPU. ISA: Arquitectura de 16 bits para tarjetas y dispositivos PROTOCOLO: Conjunto de reglas establecidas para fijar la forma en que se realizan las transacciones. Control: Modo utilizado para realizar configuraciones: existe siempre sobre el Punto terminal 0 (EndPoint 0). Todos los dispositivos USB deben soportar este tipo de transferencia. 7Los datos de control sirven para configurar el periférico en el momento de conectarse al USB. Algunos drivers específicos pueden utilizar este enlace para transmitir su propia información de control. Este enlace 52 no tiene pérdida de datos, puesto que los dispositivos de detección de recuperación de errores están activos a nivel USB. Masivo (Bulk): Este modo se utiliza para la transmisión de importantes cantidades de información. Como el tipo control, este enlace no tiene pérdida de datos. Este tipo de transferencia es útil cuando la razón de transferencia no es crítica como por ejemplo, él envió de un archivo a imprimir o la recepción de datos desde un escáner. En estas aplicaciones, la transferencia es rápida, pero puede espera si fuera necesario. Solo los dispositivos de media y alta velocidad utilizan este tipo de transferencia. Interrupción (Interrupt): modo utilizado para transmisiones de pequeños paquetes, rápidos, orientados a percepciones humanas (ratón, punteros). Este tipo de transferencia son para dispositivos que deben recibir atención periódicamente y lo utilizan los dispositivos de baja velocidad. Este tipo de transmisión garantiza la transferencia de pequeñas cantidades de datos. El tiempo de respuesta no puede ser inferior al valor especificado por la interfaz. El ratón o cualquier otro dispositivo apuntador es una aplicación típica de este modo de transmisión. Flujo en tiempo real (Isochronous): modo utilizado para la transmisión de audio o video comprimido. Este tipo de transmisión funciona en tiempo real. Este es el modo de mayor prioridad. La transmisión de la voz es un ejemplo de esta aplicación. Si ésta no se transmite correctamente, pueden llegar a oírse parásitos (glich) y la aplicación puede detectar ciertos errores de los llamados underruns. 53 La enumeración: es cuando se conecta un dispositivo USB a la PC se produce el Proceso de Enumeración, el cual consiste en que el host le pregunta al dispositivo que se presente y le diga cuáles son sus parámetros El proceso de enumeración: es inicializado por el host cuando detecta que un nuevo dispositivo que ha sido adjuntado al Bus. El host le asigna una dirección al dispositivo adjuntado al bus y habilita su configuración permitiendo la transferencia de datos sobre el bus. 54