Cómo obtener audio de un sensor para un Arduino [cerrado]

0

Estoy trabajando en un proyecto Arduino que requiere grabación de sonido que se está reproduciendo y parpadeo de tiras de LED para acompañar todo lo que se esté reproduciendo en el aire. Actualmente estoy usando un sensor llamado KY-038 pero no estoy seguro de cómo obtener audio de él o si es parejo es posible obtener audio real de él en lugar de solo volumen. Básicamente, lo que quiero es algo de ayuda para obtener el sensor correcto y una guía o algunas instrucciones sobre cómo puedo convertir los datos del sensor en algo que interpreto en un Arduino.

    
pregunta Tyler H

3 respuestas

2

El detector de audio que ha elegido no es viable para las necesidades de su proyecto. El KY-038 es un sensor muy simple (se muestra a continuación). Sin preamplificación a la salida analógica. El potenciómetro principal ajusta el umbral para el detector de nivel, aunque también tiene un efecto de ganancia para el micrófono Electret (que tiene un FET incorporado). Desafortunadamente, la ganancia y la impedancia de salida del Electret están vinculadas, y esto lo convierte en un candidato muy pobre para proporcionar una buena entrada de audio al Arduino A / D sin un previo / amplificador externo.

ElamplificadoroperacionalenelKY-038esun LM393 y si examine el esquema en detalle para ver que puede convertir el circuito en un amplificador analógico con un ajuste de compensación ... sin embargo, no es ideal. Ponga una resistencia de 50k Ohm de A0 a tierra y 100k Ohm de D0 a A0. Luego puede ajustar el potenciómetro para obtener 2.5 V en la salida D0 y usarlo como señal analógica.

No te recomiendo que hagas esto, pero te recomendaría que compres un módulo de micrófono / amplificador de audio más adecuado ($ 2-3) como el que venden muchos proveedores de Ebay basado en el MAX4466 . ¡El control de volumen realmente funciona en este módulo y tiene una sensibilidad bastante razonable!

Suponiendo que pueda obtener el audio que necesita, proporcione una conversión que le permita comprender que tanto la amplitud como los componentes de frecuencia se pueden hacer mejor implementando una FFT en el Arduino. Si esta es su primera incursión en FFT, le recomiendo que use un proyecto de pelota rebotadora como el que proporcionó por Adafruit . Esto utiliza el mismo amplificador de micrófono basado en MAX4466 y puede representar un buen punto de partida para que aprenda.

Si desea utilizar su propio código FFT y A / D, deberá poder ejecutar su A / D con un alto índice de conversión continua. No recomiendo que vaya por encima de la tasa máxima de conversión de 9.6kHz que obtiene en el Arduino. El teorema de Nyquist dice que a esa velocidad de muestreo de 9.6 kHz, el componente de frecuencia más alto que puede resolver es 4.8kHz.
Si este ancho de banda no es suficiente para usted, deberá aumentar la tasa de conversión A / D modificando el registro ADCSRA. El valor predeterminado para el A / D es 128 por defecto, puede leer el Hoja de datos de ATMega328 28.9.2 para obtener más información. Cuanto mayor sea la tasa de conversión, más problemas tendrá con el ruido y esto afectará la cantidad de bits en los que puede confiar para la amplitud.

El último comentario es que en la pregunta que dices que quieres grabar el audio. Esto implica que cuando lo reproduzcas quieres entenderlo. ... otra razón más para abandonar el KY-038 y obtener un mejor módulo de micrófono / preamplificador con buena ganancia y linealidad.

    
respondido por el Jack Creasey
0

Lo que quieres se llama un micrófono . Esos emiten pequeñas señales aproximadamente proporcionales a la presión sonora instantánea.

Micrófonos típicos emitidos desde menos de un mV a unos pocos mV. Por lo tanto, debe amplificar la salida bruta del micrófono en aproximadamente 1000. No es tan difícil hacerlo con dos etapas opamp, cada una con una amplificación de aproximadamente 32.

AC acopla el resultado a la salida de un divisor de resistencia que hace que la mitad de la tensión de alimentación de su microcontrolador. Luego alimente este voltaje en una entrada A / D. El resto es firmware.

Si solo te importa el volumen del sonido, no el sonido real, puedes hacer la detección de volumen en un circuito analógico y enviar el resultado a la entrada A / D. La ventaja de esto es que puede muestrear el A / D a una tasa mucho menor.

Aún así, solo muestrear el A / D a, digamos, 50 kHz, luego hacer todo después de eso en firmware es un enfoque razonable. Incluso si solo deseaba un volumen con un ancho de banda de hasta 20 Hz, eso se puede hacer en el firmware desde la secuencia de muestra de 50 kHz.

    
respondido por el Olin Lathrop
0

Para cambiar los colores con la frecuencia, debe dividir la señal de audio en varias bandas de frecuencia (3?) y hacer que cada banda controle un color diferente. Para hacer esto, necesita 3 filtros de paso de banda paralelos, por ejemplo, uno sintonizado a las frecuencias de bajos que controlan los LED rojos , uno en medio controlando el verde y otro en alto controlando el azul (si asumimos que tiene una tira RGB). Sin embargo, estoy bastante seguro de que la salida analógica de su sensor no puede controlar esto y sospecho que necesita algo de amplificación o búfer en la ruta de su señal. Luego, puede obtener estas 3 salidas para sus entradas analógicas o para las bases de los transistores que controlan la corriente de los LED.

    
respondido por el Schizomorph

Lea otras preguntas en las etiquetas