Robotica Facil. Robots, kits, circuitos, sensores, motores, etc.. Robot Multifuncional SR1 Robótica Fácil
 
Página Principal  Ayuda Ver Carrito Catálogo
Kits Robots Circuitos electrónicos Sensores robotica Motores y servos para robots
Ruedas y Orugas Soportes y accesorios Tornillos y herrajes Programas
Cámaras y minicamaras Trasnmisores y emisores de vídeo Fuentes de Alimentación Electrónica
Varios Novedades Proyectos Tutoriales
SINTETIZADOR DE VOZ I2C PARA ROBOT SP03 S310230

SINTETIZADOR DE VOZ I2C PARA ROBOT SP03. Clic para ampliar

Circuito sintetizador de voz capaz de convertir en sonidos cualquier texto de forma ilimitada que se le envíe por el puerto serie rs232, o bien mediante un bus I2C. El circuito sintetizador también es capaz de almacenar hasta 30 frases con un máximo total de 1925 caracteres. Puede funcionar bajo el control de un bus I2C, un interfaz serie rs2332 a 38400 baudios o bien puerto de entrada paralelo de 5 pines. El circuito de tan solo 40 x 40 mm incluye un amplificador de audio de 325 mW y un altavoz, por lo que tan solo es necesario la alimentación y las conexiones de control para su funcionamiento. Alimentación 5V, 35 mA en reposo y 100 mA activo. Utiliza el circuito sintetizador Winbond WTS701EM/T, En versión inglesa.

ATENCION ESTA PAGINA ES UNA TRADUCCION DE LA PAGINA ORIGINAL DEL FABRICANTE Y CONTIENE TODA LA DOCUMENTACION EXISTENTE SOBRE EL MODULO SINTETIZADOR DE VOZ SP03.

La comunidad robótica ha estado sin un sintetizador de voz de bajo coste desde hace mucho tiempo. Con la desaparición del popular chip SP256-AL2, que era capaz de reproducir 256 fonemas diferentes, solo quedaron en el mercado soluciones multichip hasta la aparición del procesador Winbond WTS701. Este integrado no solo incluye el chip sintetizador, sino que además incluye un procesador capaz de reproducir texto con unas características y calidad francamente buenas, siendo el único inconveniente para el aficionado, el encapsulado en un chip de 56 patitas en formato TSOP con un espaciado entre patillas de tan solo 0,5 mm.

El módulo sintetizador de voz SP03, incluye un amplificador de audio, un regulador de tensión de 3 voltios con conversión a 5V, un procesador PIC encargado de facilitar las comunicación con el procesador central, un altavoz de 40 mm y el chip sintetizador WTS701. Para facilitar la conexión con exterior se incluye un bus I2C, un puerto serie rs232 y una bus paralelo capaz de reproducir hasta 30 frases diferentes. Hay disponible un programa para PC llamado SP03.EXE capaz de enviar y reproducir las 30 frases en el módulo sintetizador. También existen varios ejemplos de utilización del módulo sintetizador con varios micro controladores.

Conexiones del módulo sintetizador de voz SP03

Hay dos hileras de conexiones en el circuito dependiendo del tipo de puerto que se quiera emplear. La alimentación de 5V puede ser aplicada en cualquiera de las dos, por lo que el otro conector puede quedar libre.

Conexiones del módulo SP03

Conector PL1 interfaz serie/I2C
+5V - Alimentación de 5V 100 mA
SDA - Conexión SDA del bus I2C
SCL - Conexión SCL del bus I2C
No Connect - No conectar esta patita
GND - Conexión de 0V. Masa
Spare - Pin sin asignar. No conectar
GND - Conexión de 0V. Masa
RS232 Rx - Se conecta al pin TX del PC.
RS232 Tx -Se conecta al pin RX del PC.
Conector PL2 interfaz paralelo
+5V - Alimentación de 5V 100mA.
Status - Esta alto mientras habla.
Sel 4 -Estas cinco entradas binarias
Sel 3 -seleccionan cual de
Sel 2 -las 30 frases se reproduce
Sel 1 -
Sel 0 -
GND - Entrada de 0 voltios. Masa

Comunicaciones serie RS232

Para usar el puerto serie para controlar el módulo sintetizador de voz Sp03, solo hacen falta tres conexiones y la alimentación. La entrada RX del módulo deberá conectarse a la salida TX (pin 3 del conector DB9) del PC, y el pin TX del módulo al pin RX(pin 2 del conector DB9) del PC. La línea de masa (0 voltios) del módulo tiene que ser conectada a la masa del PC (pin 5 del conector DB9). La alimentación de 5 V no se muestra en la foto. Las propiedades de la conexión son 38400 baudios, 8 bits de datos, sin paridad y 2 bits de parada.

Comandos RS232

Hay 33 comandos que pueden enviarse por el puerto serie hasta el módulo SP3. Treinta de estas ordenes (ordenes de la 1 a la 30) son utilizadas para reproducir una de las 30 frases almacenadas previamente con solo un enviar un byte al módulo. Cuando el sintetizador termina de decir la frase, devuelve el comando de vuelta al PC indicando que ha terminado. No enviar mas ordenes al módulo mientras esta hablando ya que serán ignorados. Cuando el módulo devuelve la orden de vuelta, indica que ya esta listo para recibir la siguiente instrucción.

Comando 128 (0x80) 

Este comando se utiliza para sintetizar una línea de texto. La orden va seguida de 3 bytes de control, la frase con el texto a reproducir y finalmente el carácter 0x00 (NULO). Los tres bytes de control son el volumen, el tono y la velocidad. Cada byte enviado es devuelto por el módulo como indicación del reconocimiento del mismo. Es importante no enviar un nuevo byte hasta que el módulo no ha devuelto el byte anterior. EL bufer de texto del PIC es de 85 bytes y como hay un total de 4 bytes de control y sincronización, quedan un total de 81 bytes, que es el limite de caracteres que puede tener la frase enviada para su reproducción. A continuación se muestra una tabla con la secuencia para reproducir "Hello" a pleno volumen y con una velocidad y tono medio.

Orden transmitida al módulo SP03     Byte devuelto por módulo SP03
Comando 0x80     0x01
Máximo Volumen 0x00     0x00
Tono de la síntesis 0x04     0x04
Velocidad de la voz 0x02     0x02
Texto 'H'     'H'
Texto 'e'     'e'
Texto 'l'     'l'
Texto 'l'     'l'
Texto 'o'     'o'
NULO 0x00     0x00
El módulo reproduce el texto     0x00 indica que el texto esta cargado en el módulo.

Comando 129 (0x81)

Este comando se utiliza para leer el registro de estado del WTS701. Cuando el módulo recibe esta orden, devuelve el byte de menor peso, seguido del byte de mayor peso correspondientes a registro de estado del integrado. Esto se utiliza para saber cuando el sintetizador ha terminado de hablar. Si lo desea puede consultar la hoja de características del WTS701 para ampliar información acerca de los bytes del registro de estado. Un ejemplo de como se hace en C seria:

do {  
    SerOut(0x81);  // Envía la orden 129
    sts = SerIn(); // Recibe el byte bajo
    sts += SerIn()<<8; // Recibe el byte alto
    sts &= 0x8003; // Filtra los bits a comprobar
}while(sts != 0x8001);  // y repite mientras esta hablando

Comando 130 (0x82) 

Este comando se utiliza en el programa SP03.EXE para descargar las 30 frases predefinidas en la memoria flash del PIC. No utilice este comando, ya que el texto es enviado en un formato comprimido especial.

El resto de comandos o bytes enviados serán ignorados.

Comunicación por Bus I2C

Junto con la Alimentación de 5V, el bus I2C solamente requiere de las conexiones SDA y SCL para su funcionamiento. El módulo no incluye las resistencias de polarización del bus, por lo que estas deben ser situadas en cualquier parte del mismo. Lo mas normal es situarlas en el bus master y así sirven para todos los módulos que se conecten al bus. Como valores orientativos se pueden utilizar dos resistencias de 4k7 para velocidades de 100 KHZ y 1k8 si se sube hasta los 400KHZ. Para mayores velocidades, es necesario separar cada byte enviado por el bus I2C con un retardo de 40 uS con el fin de dar tiempo al procesador para transferir el byte recibido al bufer. Haciendo esto, se han obtenido velocidades de hasta 1 MHZ con el módulo sintetizador de voz SP03.

El protocolo empleado para comunicarse con el módulo SP03 por el bus I2C, es el mismo empleado con las conocidas EEPROM del tipo 24c04 y similares. El módulo SP03 tiene solo dos registros, el de comandos y el del numero de revisión. Para leer este ultimo, primero hay que enviar el bit de inicio, la dirección del módulo (0xC4) con el bit de escritura/lectura puesto a cero y a continuación el numero de registro que se desea leer (0X01). A continuación se vuelven a enviar el bit de inicio y la dirección del módulo con el bit escritura/lectura puesto a 1 (0XC5). Después se lee un byte que es el numero de revisión del software del PIC, seguido del bit de parada.

Registro    Función
0   Registro de Comando
1   Numero de Revisión del software

Todos los comandos y el texto a reproducir, han de ser enviados al registro de comandos. Hay un total de 32 comandos validos tal y como se muestran a continuación.

Comando     Acción
NOP (0x00)     No hace nada
SPKPRE 1 a 30, o (0x01 a 0x1E)     Habla la frase predefinida
SPKBUF 64 o 0x40     Reproduce el texto del buffer

El comando es seguido por el texto que se desea sintetizar. Se puede mandar cualquier texto de cualquier tamaño que no supere lo 85 bytes. Se pueden enviar varias secuencias de comandos NOP al bufer antes de enviar el comando SPKBUF. El bufer es vaciado después de enviar un comando SPKPRE o SPKBUF. El formato para el texto es el mismo que el empleado en protocolo serie rs232, es decir 3 bytes de control seguidos del texto y al final el carácter 0 (0X00). Una vez enviado el texto, este puede ser reproducido enviando el comando SPKBUF. Hay que tener en cuenta que el tamaño total del bufer del PIC es de 85 bytes, por lo que si descontamos los 4 bytes de control quedan un total de 81 caracteres para el texto. La secuencia para reproducir la palabra 'Hello' desde el bus I2C es la siguiente:

Comando     Acción
Bit de inicio   Inicia protocolo I2C
0xC4    Dirección I2C del SP03
0x00    Registro de comandos del SP03
0x00    Comando NOP
0x00    Volumen (Max.)
0x05    Velocidad
0x03   Tono
'H' (0x48)    Texto
'e' (0x65)    Texto
'l' (0x6C)    Texto
'l' (0x6C)    Texto
'o' (0x6F)    Texto
0x00    NULO
Stop Bit   Fin de la Secuencia

Fíjese que no hay comando 'decir este texto' como en el caso del interfaz rs232. Si desea decir una frase suelta, debe enviar el comando NOP seguido por el texto y después en otra transacción I2C el comando SPKBUF en si mismo.

Para comprobar cuando el módulo SP03 ha terminado de hablar, puede leer el registro de comando. Mientras esta reproduciendo, el valor del registro es el del comando que inicio al síntesis (comandos del 1 al 30) o bien el valor 64 (0X40). El valor es puesto a cero cuando el módulo termina de hablar y esta preparado para la próxima frase.

Puede encontrar algunos ejemplos de como usar el bus I2C con algunos procesadores aquí.

Comunicación por puerto paralelo

El conector PL2 se utiliza para reproducir una de las 30 frases predefinidas exclusivamente, no pudiendo en este caso enviar texto para su síntesis. Para decir cualquiera de las 30 frases, basta con aplicar el valor binario del numero de frase a las entradas SEL4 - SEL0. Los números 0 y 31 no se usan y no reproducen nada. Las entradas cuentan con resistencias de polarización, por lo que pueden dejarse desconectadas si no se utilizan. Cuando la CPU reconoce la entrada en los pines SEL4 - SEL0, pone el bit de la salida STATUS a 1 para indicar que esta ocupado y reproduce la frase. Una vez que el bit de estado esta a 1 la entrada de los pines SEL4 a SEL0 pueden ser quitadas y volver al valor 0 o 31 antes de que el módulo termine de hablar, porque si no la frase será repetida. La salida del pin STATUS se pone en estado lógico bajo (0) cuando el módulo SP03 ha terminado de hablar.

Encendido

Al encender el módulo, este reproduce de forma automática la frase numero 1 por lo que si no desea que esto ocurra, no almacene nada como frase numero 1.

Programa de Configuración SP03.EXE

El programa de configuración se puede descargar aquí y es valido únicamente para PC.

La primera vez que ejecuta el programa, tiene que seleccionar el puerto COM1 o COM2 que quiere utilizar. Este será recordado la próxima vez que ejecute el programa. Con la ayuda del programa, se pueden almacenar 30 frases repartidas en 6 paginas de 5 frases cada una. Presionando sobre los botones PageUP y PageDW se cambia de pagina. Debajo de las 5 frases hay una línea en la que se muestra el estado y tres botones deslizantes que sirven para cambiar el volumen, el tono y la velocidad. Si bien el volumen y la velocidad funcionan de una forma uniforme, el tono tiene un funcionamiento algo mas extraño, pero es debido al funcionamiento interno del chip WTS701. Una vez que se ha escrito y probados todas las frases, pueden ser almacenadas en la memoria flash del PIC16F872 con solo pulsar el botón Program.

El funcionamiento del programa es bastante sencillo. Basta con escribir algo en una de las líneas de texto y continuación pulsar el botón Test que se encuentra al lado. Las palabras escritas podrán ser reproducidas por el módulo inmediatamente. Al pulsar el botón de 'Test' se almacena y se utilizan los valores de volumen, velocidad y tono de los respectivos controles al reproducir la frase. Pulsando el botón 'Set' se reproduce la frase, usando los valores de velocidad, etc que se guardaron la ultima vez que se pulso el botón 'Test'. De esta forma se pueden tener diferentes valores de velocidad, tono y volumen para cada una de las 30 frases. Una vez terminado de preparar todas las frases solamente hay que pulsar el botón 'Program' para que estas sean comprimidas y enviadas a la memoria del procesador PIC. Cuando la programación termine se mostrara el siguiente mensaje:

Fíjese que una vez programadas las frases, los botones de 'Test' ya no están activos, quedando solamente los de 'Set' para reproducir directamente las frases sin mas cambios. Para activar de nuevo los botones de Test, basta con hacer clic sobre cualquiera de las zonas de edición de texto.

Dimensiones y orificio de instalación

Ejemplos

Se ofrece a continuación un ejemplo de como conectar el módulo sintetizador de voz SP03 a un Basic Stamp 2.

La línea SDA se conecta al pin P8 (patita 13) y la línea SCL al pin P9 (patita 14) del Basic Stamp 2P. Estas son las líneas usadas por el BS2P para los comandos I2CIN y I2COUT. El regulador de tensión interno del BS2P no es valido para alimentar el módulo SP03, por lo que es recomendable utilizar un regulador de 5V externo. Este ejemplo esta basado en la utilización de un Basic stamp 2P con una revisión C o posterior de firmware.

El esquema del montaje es el siguiente:

En el esquema se emplean 2 resistencias de 4k7 para polarización de las líneas SCL y SDA, tal y como recomienda Parallax.

Software

Se muestra a continuación el software usado para controlar el sintetizador de voz. Una sola línea es todo lo que hace falta para hacer que el módulo reproduzca alguna de las 30 frases pregrabadas. EL código del programa puede ser descargado aquí.

'{$STAMP BS2p}

'***********************************************************
'**                                                       **
'**         Rutinas I2C para el Basic Stamp BS2p          **
'**       Controlando el Sintetizador de Voz SP03r        **
'**                                                       **
'**             Copyright 2002 - Devantech Ltd            **
'**     Prohibido el uso Comercial de este programa       **
'**     Solo para uso privado y educacional               **
'**                                                       **
'**      Escrito por by Gerald Coe - Agosto 2002          **
'**                                                       **
'***********************************************************

SCL   con 9 ' I2C clock
SDA   con 8 ' I2C data
NOP   con 0 ' Comando de No Operacion

status varbyte

Main:
' A continuación se muestra lo sencillo que es usar el BS2p con el módulo sintetizador,
' Una sola línea de programa es suficiente para reproducir una de las 30
' frases pregrabadas. El ejemplo reproduce la frase numero 21.

  gosub wait4shutup ' Espera a que termine de reproducir la ultima frase
  i2cout SDA, $c4, 0, [21] ' Reproduce la frase numero 21 y limpia el bufer interno

' También puede enviar su propio texto para que el módulo lo reproduzca.
' El primer byte de datos es el comando. En este caso NOP es suficiente. 
' cargar el bufer. El segundo valor es el volumen que trabaja invertido - 0 es 
' el máximo y 7 el mínimo. El tercer valor es el tono (0-7) que lo mejor es probar y
' ver cual es el mejor. El cuarto byte es la velocidad (0-3) siendo 3 el mas rápido.
' Luego se pone el texto a hablar entre comillas y finalmente
' el 0 (NULL).

  gosub wait4shutup ' espera a que termine la ultima frase
  i2cout SDA, $c4, 0, [NOP, 0,5,3, "Hello Gerry, How are u today", 0]

' Lo anterior carga el bufer interno. Ahora hay que mandar el comando 
' reproduce la frase que se acaba de cargar.

  i2cout SDA, $c4, 0, [$40] 'Habla y limpia el bufer

' También puede cargar el bufer con múltiples pequeños fragmentos.
' Hasta un total de 85 bytes pueden ser almacenados en el bufer interno del SP03.
' 81 caracteres mas el volumen, el tono la velocidad y el carácter NULL.

  gosub wait4shutup ' espera a que termine la ultima frase
  i2cout SDA, $c4, 0, [NOP, 0,5,3, "This is a test on how"]
  i2cout SDA, $c4, 0, [NOP, "to send a message as"]
  i2cout SDA, $c4, 0, [NOP, "a number of smaller pieces", 0]
  i2cout SDA, $c4, 0, [$40] ' Speak the phrase.

' Y esto es todo.
' Lo que sigue completa el programa para que se pueda ejecutar.

forever: goto forever

wait4shutup:
  i2cin SDA, $c4, 0, [status]
  if status>0 then wait4shutup
  return
 

 

Haga clic en el botón COMPRAR para añadir este producto a su carrito de la compra.

56,94-Euros.
IVA no incluido
AÑADIR AL CARRITO DE LA COMPRA

66,05-Euros.
IVA incluido

SINTETIZADOR DE VOZ I2C PARA ROBOT SP03

Vea mas productos de esta categoría en:

Circuitos de Interface de entradas y salidas

Ir a la Página Principal de www.SuperRobotica.com

Actualizada el 18/02/2010 © 2002 - 2010 INTPLUS ®. Todos los derechos reservados