Icono del sitio ELECTROALL

Como reproducir músicas o sonidos con arduino

SÍGUENOS

YouTube
YouTube
Instagram
Instagram
GitHub
GitHub
INTRODUCCIÓN

Alguna vez te has preguntado será posible reproducir sonidos, músicas y grabaciones con arduino?, la repuesta es SÍ, hoy en día gracias a los distintos tipos de comunicación que tiene las tarjetas de Arduino es posible interactuar con varios dispositivos. Para este proyecto usaremos el módulo SD LVC125A, este dispositivo se puede usar para almacenar datos de temperatura, Humedad, luz, para mostrar imágenes, etc, etc. En esta oportunidad lo usaremos para reproducir sonidos, grabaciones y músicas.

MODULO SD (lvc125A)

Antes que nada, tenemos que tener en cuenta que todos los dispositivos requieren una comunicación determinada, desde lo más simple hasta lo más complejo. El módulo que se va a usar en este proyecto tiene la comunicación ICSP (Programación Serial En Circuito), lo cual comprende los pines de MOSI, MISO, SCK. Una vez identificado la comunicación específica ahora se tendrá que buscar un µC. Para este episodio usaremos las tarjetas de arduino que cuyo µC es de la familia ATmel.

Por otro lado en el módulo SD se observa 2 dispositivos extras diferente a la tarjeta SD.

REGULADOR DE VOLTAJE (AMS 1117 5.0); Este dispositivo regula el voltaje de 5 a 3.3V, este nivel de voltaje de 3.3V es indispensable porque la tarjeta    SD  trabaja como esta caída de tensión, de lo contrario terminaría quemándose.
CI LVC125, de igual manera este dispositivo se encarga de reducir el voltaje de las señales de 5V de µC a 3.3V para la tarjeta SD.

NOTA IMPORTANTE!!

Seguramente en un inicio pensaste copiar músicas, sonidos o grabaciones en formato mp3 como normalmente se suele hacer. Si se realiza de esa manera no podremos reproducir ningún tipo de sonido, esto se debe a que el µC de arduino no está diseñado propiamente para reproducir música ni nada por el estilo y que ademas de ello los archivos en formato .mp3 es demasiado pesado  para el microcontrolador. Sin embargo, existen varios tipos de formatos que pesan menos, tal es el caso del formato .WAV. Entonces para este proyecto es necesario convertir los sonidos que están en .mp3 al formato .WAV.

En internet se puede encontrar varios tipos de convertidores de formatos. Para convertir los formatos a .WAV se tiene que tener en cuenta algunas características:

    • Formato                        =  .WAV
    • Velocidad de muestreo = 16000hz
    • Profundidad de bits      = 8bits
    • Canales                          = mono

DESCARGAR AUDIOS DE PRUEBA

CONEXIONES
FUNCIONAMIENTO

Vamos a simular que nuestro proyecto está instalado en un control de parking de autos, donde uno de pulsadores controla el ingreso y el otro controla las salidas de los autos, cuyo estacionamiento solo puede alojar un máximo de 10 autos. 
Entonces nuestro parlante emite sonidos correspondientes de acuerdo al conteo respectivo y cuando llega a 10 emite un sonido (parqueo lleno).

Por otro lado, cabe mencionar que CI TDA7073 es un  amplificador de sonido, cuya función es amplificar la señal que sale del pin 9 del arduino y de esa manera podemos escuchar un sonido decente en el speaker.

CODIGO
#include <SD.h>                //incuimos las librerás necesarias
#include <SPI.h>              
#include <TMRpcm.h> //DESCARGAR LIBRERÍA: https://github.com/TMRh20/TMRpcm

#define SD_ChipSelectPin 4  // Seleccion del dispositivo SD
TMRpcm Audio;  

const int  pulsador_asc = 2;    // pin 2 como entrada para el contador de pulsos 
                                   // ascendentes
const int  pulsador_des = 3;  

//VARIABLES PARA EL CONTADOR ASCENDIENTE
// estas variables si puede ser cambiado
int contador            = 0;   // contador para el numero de veces presinados
int estado_pulsador_asc = 0;         // estado actual del pulsador
int lastButtonState_asc = 1;     // estado anterior del pulsador

//VARIABLES PARA EL CONTADOR DESCENDIENTE
// estas variables si puede ser cambiado

int estado_pulsador_des = 0;         // estado actual del pulsador
int lastButtonState_des = 1;         // estado anterior del pulsador
int ult_audio=0;            

void setup(){

  pinMode(pulsador_asc, INPUT_PULLUP); //Resistencia de pullup interna
  pinMode(pulsador_des, INPUT_PULLUP); //Resistencia de pullup interna

  if (!SD.begin(SD_ChipSelectPin)) {  //iniciamos la com con la SD respectivo
        return;  
  }
  Audio.speakerPin = 9; //Salida para el auido
  Audio.quality(1); 
  Audio.setVolume(5); 
}

void loop(){  
  estado_pulsador_asc = digitalRead(pulsador_asc);
  estado_pulsador_des = digitalRead(pulsador_des);

  if (estado_pulsador_asc != lastButtonState_asc) {
    if (estado_pulsador_asc == HIGH) {
      contador++;
      delay(100);
    } 
  }
 lastButtonState_asc  = estado_pulsador_asc;
   // comparar el estado del botón a su estado anterior
  if (estado_pulsador_des != lastButtonState_des ) {
    // si el estado fue cambiado, decrementa el conteo
    if (estado_pulsador_des == HIGH) {
      // si el estado actual es alto, entonces 
      // que pase de off a on:
      contador--;
      delay(100);
    } 
  }

  lastButtonState_des  = estado_pulsador_des;

  if(contador != ult_audio){
   switch(contador)
   {
            case 1: Audio.play("1.wav"); 
      break;
            case 2: Audio.play("2.wav"); 
      break;
            case 3: Audio.play("3.wav");
      break;
            case 4: Audio.play("4.wav");
      break;
            case 5: Audio.play("5.wav");
      break;
            case 6: Audio.play("6.wav");
      break;
            case 7: Audio.play("7.wav");
      break;
            case 8: Audio.play("8.wav");
      break;
            case 9: Audio.play("9.wav");
      break;
            case 10: Audio.play("10.wav");delay(1000);Audio.play("parqueo.wav");

      break;

   }
   ult_audio = contador;
  }    

}

 

SÍGUENOS

YouTube
YouTube
Instagram
Instagram
GitHub
GitHub
Salir de la versión móvil