Arquitectura de Computadores Proyecto: SmartMusic Entrega 2 Grupo G11 4 de Octubre de 2009 Integrantes: Pablo Alcayaga Tomás Arriagada Felipe Balbontı́n Gabriel Diéguez Javier Espinoza Sebastián Vicencio 1 Índice 1. Introducción 3 2. Diseño del dispositivo 2.1. Componentes utilizados . . . . . . 2.2. Diagrama del circuito . . . . . . . 2.3. Implementación del dispositivo . . 2.3.1. Dispositivos análogos . . . . 2.3.2. Display LCD . . . . . . . . 2.3.3. Pulsadores . . . . . . . . . 2.3.4. PIC . . . . . . . . . . . . . 2.3.5. MAX232 y Conexión Serial 2.3.6. Elementos Adicionales . . . 4 4 4 5 5 7 8 9 9 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Anexos 11 3.1. Anexo 1: Diagrama de flujo circuito LEDs . . . . . . . . . . . . . . . . . . . . . . . . 11 Índice de figuras 1. 2. 3. 4. Diagrama Diagrama Diagrama Diagrama de Placa Controladora Conexiones Externas . del Max232 . . . . . . de flujo LEDs . . . . . . . . . . . . . . . . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 9 12 1. Introducción En diversas ocasiones y circunstancias, se desea reproducir música. Ésta puede ser música ambiental, para acompañar una junta social, o música de algún género particular para deleitarse escuchándola. Lamentablemente, muchas veces ocurre que esta música no es la adecuada al estado de ánimo del lugar. En muchas ocasiones, el nivel de ruido disminuye, pero la música se mantiene fuerte, dificultando la comunicación. En otras, el género de la música no es el adecuado para las circunstancias. Lo anterior causa que alguien deba encargarse de controlar constantemente la reproducción musical. Para solucionar el problema antes mencionado, en este proyecto semestral se desarrollará un dispositivo que controlará la reproducción musical de un computador. Este dispositivo consiste en un microcontrolador, el que estará conectado a un computador y tendrá dos sensores: uno medirá el nivel de ruido en el ambiente y el otro el nivel de luminosidad del mismo. Ambos sensores entregarán tres posibles niveles de ruido o luminosidad, lo cual genera 9 combinaciones distintas. La combinación presente en el ambiente será enviada al computador, en el cual se estará ejecutando un software diseñado para comunicarse con el dispositivo (además del software de reproducción de la música). Éste elegirá una de entre 9 listas de reproducción distintas con su respectivo volumen, las que podrán ser configuradas por el usuario. De esta forma, el dispositivo controlará de manera automática la música reproducida en cierto lugar ajustándola a las condiciones ambientales. Adicionalmente al control automático de la música, el dispositivo también permitirá comenzar y detener la reproducción junto con adelantar y retroceder de canción. Esto será a través de 3 botones puestos en el dispositivo: uno de play/pause, uno de forward y un último de backward. Además, el usuario podrá programar un timer el cual tiene el tiempo en que el dispositivo pueda iniciar o detener automáticamente la reproducción. Esto se realiza con un botón, el cual al oprimirlo una vez, incrementará el tiempo de espera en una cantidad predefinida. Si se mantiene el botón oprimido por más de 3 segundos, se reestablecerá el tiempo de espera a 0. Por último, el dispositivo posee una pantalla LCD la cual permitirá mostrar el nombre de la canción reproducida, en conjunto con el tiempo actual del timer. Los requerimientos mı́nimos que debe cumplir el dispositivo son los siguientes: Entradas y salidas digitales (DIO), para comunicarse con otros componentes digitales. Entrada análoga: para comunicarse con un sensor análogo. Comunicación bajo algún protocolo standard e.g. RS232, USB, I2C. Módulo ADC/PWM: para convertir la señal entregada por el sensor análogo y utilizarla en el dispositivo. Interrupciones programables. 3 Timer interno programable. 2. Diseño del dispositivo En esta sección se describirá el circuito que hace posible el funcionamiento de nuestro sistema. Este dispositivo consiste en una placa controladora conectada a componentes que permiten sensar el ambiente, a elementos de interfaz de usuario y a un computador. 2.1. Componentes utilizados Los componentes utilizados se presentarán en la siguiente tabla. Nombre Microcontrolador PIC MAX232 16x2 Character LCD Sensor de Luz Sensor de sonidos Pulsadores 2.2. Código Detalles PIC16F877A datasheet MAX232 datasheet Pantalla: GDM1602K. Interfaz: HD44780 ZX-LDR Pantalla: datasheet Interfaz: datasheet datasheet ZX-Sound SP-1116 datasheet - Uso Permite ejecutar las instrucciones asociadas a cambios en la luminosidad, el ruido del ambiente y el input del usuario. Permite conectar el PIC con el puerto serial. Muestra información de la canción actual y del estado del timer. Se conecta a través del chip HD44780 el cual simplifica la interfaz. Detecta los niveles de luminosidad del ambiente. Detecta el nivel de ruido ambiental. Botones de play/pause, backward, forward, timer. Diagrama del circuito Se presentará el diseño del circuito en dos diagramas. Primero se muestra el diagrama de la placa controladora con todas las conexiones posibles (Figura: 1). Luego se muestra un segundo diagrama con las conexiones de los dispositivos externos a la placa (Figura: 2). No se mostraron ambos diseños en el mismo diagrama por motivos de orden. Es importante recalcar que las dos entradas análogas (sensores de sonido y luminosidad) son representadas por dos potenciómetros por motivos de simulación. Esto se puede hacer ya que ambos sensores entregan un voltaje de entre 0V y 5V (como será explicado en la sección de implementación), al igual que un potenciómetro. 4 12 10 1 Q1 11 9 7 5 3 1 VCC 8 C5 22pF 6 4 2 13 14 15 16 17 18 19 20 RA0/AN0 RA1/AN1 RA2/AN2 RA3/AN3 RA4/T0CKI RA5/AN4 RE0/RD#/AN5 RE1/WR#/AN6 RE2/CS#/AN7 30 C7 PSP7/RD7 PSP6/RD6 29 OSC1/CLKIN PSP5/RD5 0.01uF OSC2/CLKOUT PSP4/RD4 RC0/T1OSO RX/RC7 RC1/T1OSI TX/RC6 RC2/CCP1 SDO/RC5 RC3/SCK SDI/RC4 RD0/PSP0 RD3/PSP3 RD1/PSP1 RD2/PSP2 VSS 31 12 SV4 PIC16F877P 6 5 4 3 2 1 8 6 4 2 1 2 3 4 28 27 26 25 24 23 22 21 SV1 GND SV9 GND 1 VCC 16 14 12 10 8 6 4 2 15 13 11 9 7 5 3 1 2 3 4 5 6 7 8 C1 1uF C2 1uF 1 SV7 C1- 4 C2+ 5 C2- J1 VCC GND SV5 C3 C1+ 3 11 10 12 9 GND 1uF IC2 VCC 7 5 3 1 6 4 2 GND R2 R3 R4 R5 R6 R7 R8 R9 SV8 40 39 38 37 36 35 34 33 V+ 2 V- 6 VCC SV3 2 3 4 5 6 7 8 9 10 PGD/RB7 PGC/RB6 RB5 RB4 PGM/RB3 RB2 RB1 INT/RB0 16 17 15 13 11 9 7 5 3 1 2 18 16 GND VCC 14 12 10 8 6 22pF 4 2 GND SV6C6 MCLR#/THV 1uF C4 T1IN T1OUT T2IN T2OUT R1OUT R1IN R2OUT R2IN 14 7 13 8 VCC C9 1 SV2 IC2P GND GND VDD 15uF GND 32 11 IC1 1 2 3 4 5 6 7 8 9 15 SV11-2 3 GND MAX232 5 4 3 2 1 GND VO GND 5 3 1 VI 2 0.33uF 1 1 2 3 4 SV10 C8 VCC IC3 7805T SV11-1 VCC 1 R1 2 VCC GND S1 3 4 JP1 1 3 2 4 GND GND Figura 1: Diagrama de Placa Controladora 2.3. Implementación del dispositivo A continuación se explicará como se conectarán los distintos dispositivos, su configuración y la forma en que serán utilizados. 04-10-2009 21:34:04 D:\UC\VI Semestre\IIC2342 - Arquitectura de Computadores\Proyecto\pic.sch (Sheet: 1/1) 2.3.1. Dispositivos análogos Nuestro sistema utiliza dispositivos análogos para capturar información del ambiente; en particular, las intensidades sonora y lumı́nica. Estos dispositivos generan un voltaje cuyo valor fluctúa entre 0V y 5V, representando la intensidad capturada. Posteriormente, esta intensidad es convertida a un valor entre 0 y 127 (decimal) utilizando el módulo ADC del PIC. Para realizar la conversión análogo/digital se deben configurar los registros ADCON0 y ADCON1 del PIC. El primero controla el módulo conversor análogo a digital A/D y el segundo configura las funciones de los pines del puerto A (para utilizarlos como análogo o digital). La configuración debe permitir que se reciba primero el voltaje correspondiente a la intensidad sonora para luego convertirlo a binario y almacenarlo en memoria. Posteriormente se repite el proceso para la intensidad lumı́nica. En este caso, el registro ADCON1 indica que los pines donde se capturan las intensidades deben ser de lectura análoga y el registro ADCON0 coordinará el proceso de conversión, indicando cual es el pin sobre el cual se realizará la conversión y la señal de inicio para ésta. Los dispositivos análogos a utilizar son: 1. Sensor de sonido (ZX-Sound ) 5 RV1 U1 13 14 ZX-Sound 2 3 4 5 6 7 1k RV2 8 9 10 ZX-LDR 1 1k RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RC0/T1OSO/T1CKI RE0/AN5/RD RC1/T1OSI/CCP2 RE1/AN6/WR RC2/CCP1 RE2/AN7/CS RC3/SCK/SCL RC4/SDI/SDA MCLR/Vpp/THV RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 1k 1k 1k 1k 11 12 10 9 U2 1 3 C1+ C1- T1IN R1OUT T2IN R2OUT T1OUT R1IN T2OUT R2IN VS+ VS- C2+ C2- 4 5 14 13 7 8 2 6 MAX232 PIC16F877A 7 8 9 10 11 12 13 14 RS RW E 4 5 6 1 2 3 VSS VDD VEE LCD 16X2 D0 D1 D2 D3 D4 D5 D6 D7 GDM1602K Utiliza la interfaz HD44780 OSC1/CLKIN OSC2/CLKOUT Figura 2: Diagrama Conexiones Externas Código: ZX-Sound Descripción: Este dispositivo detecta la intensidad sonora del ambiente y genera un voltaje correspondiente cuyo valor fluctúa entre 0V y 5V. Requisitos asociados: ADC/PWM para la conversión analógica digital del voltaje entregado por el componente. Conexión al PIC: Puerto AN0 para leer el voltaje generado desde el componente. 2. Sensor de luminosidad (ZX-LDR) Código: ZX-LDR Descripción: Este dispositivo detecta la intensidad lumı́nica del ambiente y genera un voltaje correspondiente cuyo valor fluctúa entre 0V y 5V. Requisitos asociados: ADC/PWM para la conversión analógica digital del voltaje entregado por el componente. Conexión al PIC: Puerto AN1 para leer el voltaje generado desde el componente. 6 En base al valor convertido de las intensidades se han definido tres niveles de intensidad1 : Baja: Entre 0 y 42 Media: Entre 42 y 85 Alta: Entre 85 y 127 Tal como se mencionó anteriormente, estos niveles permiten al sistema decidir cuál es la siguiente lista de reproducción y el volumen de ésta. 2.3.2. Display LCD Código: GDM1602K Descripción: Display de 16 x 2 caracteres (2 lı́neas de hasta 16 caracteres). Dispone de once pines para la comunicación con el PIC y utiliza el chip HD44780 para su configuración y escritura. Requisitos asociados: Entrada/Salida DIO Bidireccional. PIC envı́a instrucciones al display y éste a su vez notifica a través del RS/Flag al PIC acerca de la completitud de la instrucción. Conexión al PIC: Pines del display (D7,D6,D5,D4,RS,RW,E) conectados al Puerto D del PIC (RD7,RD6,RD5,RD4,RD3,RD2,RD1). Este dispositivo es utilizado con el fin de mostrar información sobre la canción actual que se está reproduciendo en el computador conectado al dispositivo. Además indica el valor actual del timer que permite detener o iniciar automáticamente la reproducción de música. Este display posee once pines configuración: RS/Flag, Read/Write, Enable y Datos (D0 A D7). De todas formas ofrece la posibilidad de ser configurado y utilizado haciendo uso de siete pines, para lo cual es necesario enviar dos valores consecutivos por instrucción. En particular, hemos optado por la segunda opción a fin de utilizar una menor cantidad de pines en el PIC, y porque no tenı́amos la cantidad suficiente de pines en un mismo puerto para enviar la instrucción completa (de 11 bits de largo). Las palabras de operación serán enviadas desde el Puerto D del PIC, para lo cual debemos configurar el registro TRISD de tal forma que los pines RD4, RD5, RD6 Y RD7 sean de salida digital. El proceso de escritura es guiado por las instrucciones enviadas desde el PIC y consiste en la siguiente secuencia: 1. Inicializar el display, conectándolo a la fuente de voltaje y activando Enable. 2. Configurar el display para recibir operaciones de 4 bits y utilizar ambas lı́neas. 1 Estos valores están sujetos a cambios futuros al calibrar los dispositivos. 7 3. Prender el cursor e iniciar el modo bajo el cual éste se mueve automáticamente cada vez que se escribe una instrucción en la memoria DDRAM. En la práctica, esto es cada vez que ingresamos la instrucción para escribir un caracter. 4. Escribir datos en la memoria DDRAM. Este es el paso en el cual indicamos el caracter a imprimir en pantalla. 5. Continuar escribiendo datos hasta completar la lı́nea y saltar a la siguiente lı́nea. 6. Continuar escribiendo hasta terminar de imprimir el nombre de la canción y el estado del timer. 7. Resetear el cursor, indicándole que vuelva a la posición inicial (a fin de sobreescribir los datos mostrados en pantalla cuando cambie la canción) 2.3.3. Pulsadores Descripción: Botones que entregan un voltaje alto (5V) cuando detectan una pulsación. Requisitos asociados: Entrada DIO en el PIC e interrupciones. Conexión al PIC: Los cuatro botones a utilizar están conectados a pines del puerto B, cuyos cambios puede ser detectados para lanzar una interrupción (RB4, RB5, RB6 Y RB7) Nuestro sistema utiliza cuatro pulsadores (pushbuttons) para controlar la reproducción de música y el timer del dispositivo: play/pause, backward, forward, timer. Cada vez que uno de estos es pulsado, se envı́a un voltaje positivo al PIC. Para leer estas señales como una entrada digital, se debe configurar el registro TRISB de tal forma que los pines asociados a los botones sean de input digital. Además de leer el Puerto B como entradas digitales, se deben activar las interrupciones al pulsarse un botón. Para ésto configuramos el registro INTCON indicándole que permita realizar interrupciones (activando el bit GIE de INTCON) y que éstas ocurran cada vez que se detectan cambios en los pines RB4 a RB7 (activando el bit RBIE de INTCON). Cada vez que el usuario pulse un botón, se ejecutará una interrupción la cual deberá llevar a la ejecución de una subrutina. Esta subrutina se encarga de leer cuál fue el botón pulsado y en función de éste determina la próxima acción del sistema (Iniciar/Detener, Próxima canción, Canción anterior, Activar Timer). En caso de que se pulse el botón de Activar Timer, se deberá habilitar la interrupción de Timer (activando el bit TOIE de INTCON) y en la subrutina se deberá asignar el tiempo en el cual se activará la interrupción. El tiempo se determina a partir de la cantidad de veces que el usuario pulsó el botón de Activar Timer (por cada pulsación se incrementa el tiempo en una cantidad predefinida). Después de cierta cantidad de pulsaciones se deshabilitará la interrupción de Timer, a fin de que el sistema no cambie su estado actual transcurrido cierto tiempo (es decir, no se iniciará/detendrá automáticamente la reproducción de música). 8 Figura 3: Diagrama del Max232 2.3.4. PIC Código: PIC16F877A Timers: 2 x 8-bit, 1 x 16-bit ADC: 8 ch, 10-bit Cristal (externo) de 20 Mhz Permite controlar los diferentes componentes que componen el sistema. La forma en que será utilizado ha sido explicada en la descripción de la implementación y uso de los diferentes componentes. 2.3.5. MAX232 y Conexión Serial Descripción: El MAX232 tiene como función convertir las señales del puerto serial RS-232 a TTL para ser usadas por el PIC y viceversa. Tiene 16 pines que pueden verse en la figura 3. Requisitos asociados: Comunicación bidireccional con PC. Conexión al PIC: Pines T1IN y R2OUT del MAX232 a los pines RC6 y RC7 del PIC respectivamente (ver cuadro 1). El puerto serial se usará tanto para cargar nuestro programa, como para comunicarnos con el PC para enviar la información del nivel de reproducción actual y para recibir el tı́tulo de la canción. Para el detalle de conexión de todos sus pines, ver cuadro 1. 2.3.6. Elementos Adicionales Regulador de voltaje El regulador de voltaje nos permite mantener un voltaje controlado para los componentes. 9 Pin C1+ VS+ C1- C2+ C2- VS- T2OUT R2IN R2OUT T2IN T1IN R1OUT R1IN T1OUT GND Vcc Descripción Conexion a un condensador necesaria para su funcionamiento Voltaje de salida positivo (15-0.3[V]). Se conecta un condensador (1uF) Conexion a un condensador (1uF) necesaria para su funcionamiento Conexion a un condensador (1uF) necesaria para su funcionamiento Conexion a un condensador (1uF) necesaria para su funcionamiento Voltaje de salida negativo (0.3 15[V]) Se conecta un condensador (1uF) Salida EIA-232 Entrada EIA-232 2 Salida TTL/CMOS Entrada TTL/CMOS Entrada TTL/CMOS Salida TTL/CMOS Entrada EIA-232 1 Salida EIA-232 Cable a tierra Entrada de corriente continua. Entre 4.5 y 5.5 [V] Conexión C1- Tierra C1+ C2- C2+ Tierra No Conectado No Conectado No Conectado No Conectado Pic16F877A (RC6) Pic16F877A (RC7) Puerto serial Puerto serial Tierra Fuente de poder Cuadro 1: Descripción de los pines max232 10 3. 3.1. Anexos Anexo 1: Diagrama de flujo circuito LEDs 11 Figura 4: Diagrama de flujo LEDs 12