WTV020-SD

El WTV020 es un módulo de sonido con el cual por ejemplo tu podrás crear frases a partir de palabras grabadas en una memoria SD, o quizás hacer un reloj que diga la hora.

Características:

  • Soporta memorias SD de hasta 1GB.
  • Soporta memorias flash SPI de hasta 64Mb.
  • Soporta archivos con formato de 4 bits ADCPM.
  • Sampling Rate de 6 KHz a 36 KHz para formatos de voz .ad4
  • Sampling Rate de 6 KHz a 16 KHz para formatos de voz .wav
  • 16 bit DAC.
  • Salida de Audio PWM.
  • Key mode.
  • MP3 Mode.
  • Two Line Serial Mode.
  • Los archivos se pueden copiar a la SD directamente de la PC.
  • Voltaje de trabajo 2.7V a 3.5V.
  • Corriente de consumo en modo inactivo de 3uA.

Los modos Key y MP3 pueden ser fácilmente implementados ya que solo se necesitan pulsadores, pero para el modo Two Line Serial es necesario trabajar con un microcontrolador y es en este modo en el que nos centraremos. Debido a que no existe este protocolo de comunicación implementado en el ATmega16 (y no sé si esté implementado en algún uC) lo que nos queda es implementar este protocolo, para esto nos vamos al datasheet para ver el diagrama de tiempos del protocolo de comunicación.

Como vemos, se necesitan tres pines para poder implementar este protocolo y además notemos que todos estos pines empiezan en valor High.

RESET: Iniciar el módulo con un pulso de 5 mS y luego esperamos 300 mS antes de enviar datos.
CLK: Antes de enviar datos tenemos que esperar 2 mS y luego el ancho de pulso de la señal CLK debe ser de 200 uS, el dato será escrito con cada flanco de subida.
DATA: El bit del dato debe ser colocado cuando la señal del CLK está en nivel bajo.

*La modificación que es necesaria para el correcto funcionamiento del módulo es reducir ese ancho de pulso de la señal CLK de 200 uS a 50 uS y además esperar 20 mS para enviar el siguiente dato.*

Para el envío de las instrucciones de Play, Pause, Stop o elegir el nivel de volumen (admite 8 niveles) se utiliza la siguiente tabla.

Por ejemplo si queremos dar la orden de play enviamos la siguiente cadena de bits 1111111111111110 (FFFE). Por defecto el volumen está colocado a nivel cero.

Los datos deben tener 16 bits, este módulo puede reproducir hasta 512 archivos, en el caso que se quiera reproducir el archivo 001, se debe enviar la siguiente cadena de bits 0000000000000001.

Para que los archivos puedan ser reproducidos de la memoria SD es necesario tenerlos en formato .ad4. Para esto instalamos el programa USBRecorder y en la pantalla principal seleccionamos la opción de Local Files, colocamos el Sample Rate a 32000 y seleccionamos el tipo de archivo que queremos convertir, en mi caso son archivos.mp3

Luego ubicamos la carpeta donde están los archivos que deseamos convertir, seleccionamos los archivos y presionamos el botón Encode.

Cuando termine de convertir, vamos a la carpeta donde se encontraban los archivos que se querían convertir.

Ahora renombramos los archivos con la numeración adecuada a nuestras necesidades.

Para el uso del módulo usaremos la libreria “WTV020SD”, primero se define puerto que usaremos:

define DI PB0

define CLK PB1

define RST PB2

define WTV20_PORT PORTB

define WTV20_DDR DDRB

Las funciones de la librería son:

WTV20_begin(): Inicia el módulo.
WTV20_reset(): Envía el Reset inicial del módulo.
WTV20_send(): Envía la orden al módulo.

Ejemplo:

Descargas: