Pages: [1]   Go Down
Author Topic: Arduino con micrófono y altavoz  (Read 1294 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 18
Why does 2+2 = 5986?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¡Saludos!

estoy intentando construir algun tipo de conversor de voz con Arduino sin usar la Wave Shield. Pero para empezar me gustaría conseguir hacer sonar un pequeño altavoz con un micrófono
a través de Arduino, de momento sin mucho éxito.

Para empezar, he conectado mi micrófono (concretamente: https://www.sparkfun.com/products/9964) a un pin analógico de arduino, y el altavoz a otro, de manera que la señal que recibe del micrófono la escribe en el pin analógico del altavoz (analogRead() y analogWrite() ). El resultado son unos ruidos que más o menos coinciden con lo que recibe el micro pero totalmente distorsionados. También he intentado amplificar la señal con un pequeño amplificador casero (siguiendo este esquema: http://sci-toys.com/scitoys/scitoys/computers/solderless/1_watt_audio_amplifier.jpg), y tampoco ha funcionado. Y no es problema del micro ya que he conseguido conectarlo a una mesa de mezclas y altavoces externos y funciona bien.

Me gustaría que alguien me dijera qué es lo que hago mal, si es problema de hardware, y qué debería hacer.

¡Gracias de antemano!
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
podrías concretar algo sobre cómo acometes esa conversión a nivel de programación.
Para reproducir archivos de audio de una SD y que se oigan en un altavoz, yo utilizo una librería llamada TMRpcm, y me va muy bien para producir mensajes de voz con arduino.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
Why does 2+2 = 5986?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

¡Saludos!

Mi intención sería reproducir el sonido que recibe el micrófono en directo, no uno pregrabado en una SD. ¿La TMRpcm me permitiría hacerlo?

En cuánto al código utilizado, es éste:

Code:
int val; //valor analógico de la entrada del micrófono

void setup(){
 
 Serial.begin(9600); //iniciamos el serial para saber el valor de entrada del micro
 
}

void loop(){
 
 val = analogRead(A0);
 Serial.println(val);
 analogWrite(A1, val); //escribimos el valor del micro en el pin del altavoz
   
}

El resultado es un ruido de fondo constante, además de reproducir el sonido que detecta el micrófono, pero completamente distorsionado y, en el caso de la voz, ininteligible.

¿Qué debería hacer? ¿Debo construir un amplificador para el altavoz/micro? ¿Es problema de código?

¡Muchas gracias por tu tiempo!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
Why does 2+2 = 5986?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

También intenté otro sistema utilizando la librería PCM, a partir de un ejemplo que encontré (http://hlt.media.mit.edu/?p=1963).

Mi intención era que el micrófono guardara los valores dentro de un array, y que el altavoz sonara de acuerdo con los valores almacenados. No funcionó bien, sólo se oía un ruido de fondo. El código con mis modificaciones era éste, lo adjunto por si acaso aunque dudo que sirva de mucho:

Code:
#include <PCM.h> //incluimos la libreria PCM
int val; //valor analogico de entrada para el micro

unsigned char sample[] = {0};//array de valores para el speaker

void setup()
{
 
}

void loop()
{
  val = analogRead(A0);
  sample[0] = val; //asignamos val al primer espacio del array
  startPlayback(sample, sizeof(sample));//funcion para hacer sonar el speaker
 
}
Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola,
tendrías que hacer un muestreo de la señal del micrófono: para la librería que te mencioné viene bien una frecuencia de 16kHz y 8 bit de resolución.
Sobre muestreo con Arduino tienes un hilo interesante
http://forum.arduino.cc/index.php?topic=68855.0
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
Why does 2+2 = 5986?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok. Siento no haber contestado antes. Aún no lo he intentado, pero muchas gracias por el aporte. En cuánto tenga un momento voy a intentarlo.

¡Gracias de nuevo!
Logged

Pages: [1]   Go Up
Jump to: