Universidad Tecnológica de Querétaro

Anuncio
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 protected], 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
Descargar