Hoy empezamos una serie de tutoriales sobre audio y reconocimiento de voz con Arduino. Formarán parte del proyecto de darle a mi robot Orugas mas personalidad. En la última parte veremos a Orugas siendo comandado mediante voz y respondiendo a nuestras órdenes vocales con su propia voz robótica. Realmente impresionante pero muy sencillo gracias a Arduino y los dos módulos que veremos.
Hoy os enseñaré como gracias al primero, el SOMO 14D podéis fácilmente añadir audio a vuestros proyectos. Y así poder crear robots parlanchines, proyectos musicales, avisos acústicos e infinidad de posibilidades.
¡No os perdáis el tutorial que comienza después del salto!
Hablemos primero del módulo con el que jugaremos hoy. Se trata de un circuito de la marca 4D Systems (famosa por sus pantallas) que nos permitirá reproducir archivos de audio con solo conectar un pequeño altavoz de 8 Ohmios. De hecho, es capaz de funcionar sin nada más. Lo alimentamos con un par de pilas de 1.5V y colocándole tres pulsadores y ya tenemos control total sobre la reproducción del audio. Incluso posee una salida de línea de audio que podemos utilizar en un amplificador externo u otro equipo.
También podemos controlarlo con 4 pines digitales desde nuestro Arduino, aunque si andamos escasos de pines podemos seguir controlándolo con solo dos pines.
Posee un zócalo para tarjetas MicroSD que es donde introduciremos nuestros archivos de audio para poder reproducirlos.
Veamos los pasos para poder controlar el modulo desde Arduino:
Montaje
Primero conectaremos el módulo a nuestro Arduino.
El módulo trabaja con alimentación de 3V por lo que es muy importante tener cuidado al montarlo ya que si lo alimentamos con los 5 voltios, lo dañaremos. Además como las entradas y salidas del SOMO14D son de 3V debemos colocar resistencias de 470 Ohmnios para adaptar los niveles a las salidas del Arduino que son como sabéis de 5v.
Podemos colocar lo cuatro pines que conectamos al Arduino en cualquiera de los pines digitales, siempre que cambiemos en el código la definición de los mismos.
El led nos permitira saber visualmente cuando si encuentra reproduciendo o no, estado que podemos consultar desde Arduino por el pin BUSY, que para eso está.
Conversion de archivos
Ahora convertiremos los archivos que queremos reproducir. Podéis saltaros este paso si vais a utilizar los sonidos de ejemplo que encontraréis en la sección de enlaces.
Primero prepararemos nuestros archivos de audio, renombrándolos ya que deben estar con el formato "0.mp3", "1.mp3"... "511.mp3" etc para que el sean reconocidos. Podremos utilizar un maximo de 512 archivos.
Una vez los tengamos listos utilizaremos el programa conversor (enlaces), con el que podemos convertir archivos wav o mp3.
Para realizar la conversion, abrimos nuestra carpeta y seleccionamos el tipo de archivo de audio del que partimos. Seleccionamos la frecuencia de muestreo (la más alta soportada es 32000), y finalmente presionamos "Encode".
Nos creará los archivos para nuestro dispositivo, que tendrán extension ".ad4".
Preparacion de la MicroSD
Preparamos nuestra tarjeta formateándola en FAT16. La MicroSD no debe tener una capacidad superior a 2GB (no sería una MicroSD sino una MicroSDHC) ya que corremos el riesgo de que el módulo no la detecte. Una vez formateada copiamos nuestros archivos ".ad4" a la trajeta sin meterlos en ninguna carpeta, directamente en la raiz de la MicroSD. Por último introducimos la tarjeta en el módulo.
Código Arduino
Programamos nuestro Arduino con el código de ejemplo.
Una vez programado ya tendremos nuestro Arduino reproduciendo la primera (la "0.ad4") pista de audio.
El código contiene el protocolo para comunicarse con el SOMO14D en múltiples funciones. Este código que unicamente reproduce una pista de audio utiliza solo una linea para darle la orden de reproducción.
PlaySong(0);
También podemos:
-Pausar o retomar la reproducción
pausePlay();
-Reproducir la siguiente pista de audio
nextPlay();
-Parar la reproducción
stopPlay()
-Incrementar o decrementar el volumen
incVol(); decVol();
-Resetear el módulo
Reset();
-Reproducir todas las pistas de audio consecutivamente
CycleSongs();
Muy sencillo e intuitivo. También os dejo un ejemplo mas completo en el que podemos controlar el circuito desde la terminal serie de nuestro ordenador mediante comandos para ver todas estas posibilidades.
A continuación del vídeo de montaje en el que también os muestro como montarlo de manera independiente. Espero que os guste.
¡Hasta el próximo Bricotuto!