Proyecto Visualizador de espectro de audio de 32 bandas
Autor: Shajeeb
Descripción del proyecto:
Este proyecto consiste en crear un analizador/visualizador de espectro de frecuencia de audio (musical) de 32 bandas usando Arduino. Este proyecto es interesante para estudiantes y entusiastas del audio, que tenga conocimientos básicos de componentes electrónicos, Arduino y programación en C. Los componentes utilizados en este proyecto son artículos de bajo costo y son fáciles de armar.
Componentes que utilizarás en este proyecto:
- Arduino nano o uno (probé con nano y uno, también debe funcionar con otros modelos) - 1 unidad
- Matriz LED de 32 x 8 - 1 unidad
- Interruptor de botón pulsador - 1 unidad
- Condensador 100nf - 2 unidades
- Resistencia de 5 kilo ohmios - 3 unidades
- Resistencia de 10 kilo ohmios - 1 unidad
- Resistencia de 100 kilo ohmios - 2 unidades
- Fuente de alimentación de 5 voltios (suministro USB es suficiente)
Los valores de resistencias no son muy estrictos, puedes elegir cualquier valor cercano, únicamente debes asegurarte de que R1 y R2 (consulte el esquema) tengan el mismo valor.
Características principales:
- Nota: para cargar el código necesitarás descargar las bibliotecas "arduinoFFT" y "MD_MAX72xx" desde el IDE de Arduino
- Los canales izquierdo y derecho de la señal de audio se mezclan para que no se pierda ningún ritmo
- El prototipo usa una matriz LED de 32x8, este se puede cambiar con facilidad si es necesario
- El audio se puede alimentar desde la salida de auriculares o desde la salida de línea del sistema de música/amplificador
Esquemático
La fuente de alimentación a la placa Arduino se puede proporcionar desde el puerto USB o desde el cargador de 5v. Para la pantalla LED, la energía se alimenta desde un pin de 5v en la placa Arduino. Los diferentes voltajes mencionados en el esquema son aproximados y pueden variar ligeramente en su sistema.
Descripción:
La placa Arduino (ATmega328P) tiene incorporado un convertidor analógico a digital (ADC) que se utiliza aquí para convertir la señal de audio de entrada en muestras digitales. El ADC está configurado para muestrear la señal de entrada con una frecuencia de reloj de 38,46 khz. Esto se logra configurando el preescalador ADC a 32. La frecuencia de muestreo de 38.64Khz significa que las muestras digitales pueden reproducir una frecuencia de entrada de hasta 19.32Kz (teorema de Nyquist), lo cual es lo suficientemente bueno para las señales de audio.
Como mencioné al principio, el propósito de este proyecto es mostrar el espectro de frecuencias de la señal de audio musical. Por lo tanto, los canales de audio izquierdo y derecho se mezclan y se alimentan a la entrada analógica A0 del ADC. Puede usar un cable divisor de audio para poder enviar la misma música simultáneamente al analizador de espectro y a otro amplificador (si es necesario).
ADC está configurado para usar voltaje de referencia externo. En este proyecto, el voltaje de referencia se deriva de la fuente de voltaje estabilizado de 3,3 V en la placa Arduino. Como la señal analógica oscila por encima y por debajo del nivel de voltaje cero, necesitamos una polarización de CC en la entrada analógica del ADC. Esto asegura que la salida del ADC no se recorte en los ciclos negativos de la señal de entrada. El mismo voltaje estabilizado de 3.3v se divide con dos resistencias R1 y R2 y luego se alimenta a la entrada analógica para la polarización de CC. Con esta polarización de CC, el ADC producirá 512 en la salida incluso si la señal de entrada está desconectada. Más adelante en el código, este 512, que es causado por la polarización de CC, se resta para que la lectura represente la variación real de la señal de entrada.
La biblioteca ArduinoFFT es el corazón del código que traduce la señal analógica de entrada en espectro de frecuencia. Encontré que esta biblioteca es fácil de usar y produjo la mejor salida precisa para este proyecto. Prototype está configurado para hacer 64 muestras y hace FFT con esas muestras. La biblioteca ArduinoFFT puede hacer FFT de muestras entre 16 y 128, esto se puede configurar en el programa. Pero la biblioteca arduinoFFT es lenta para el cálculo con 128 muestras, por lo tanto, me quedo con el mejor más alto de 64 muestras.
La pantalla utilizada en este proyecto es una matriz LED de 32 columnas x 8 filas. La biblioteca MD_MAX72xx hizo que la parte de control de la pantalla fuera muy fácil. Esta biblioteca proporciona una función para encender/apagar cualquier cantidad de LED en una columna que se utiliza en este programa. La amplitud de cada banda de frecuencia se asigna entre 0 y 8, según la amplitud, se enciende el número correspondiente de LED en cada columna.
Hay cinco modos de visualización disponibles en este programa, que básicamente se logran encendiendo/apagando los LED en diferentes posiciones en cada columna. Puede modificar/crear diferentes patrones fácilmente. Aquí se utiliza un botón pulsador para cambiar el modo de visualización. Con cada pulsación, el patrón de visualización se mueve al siguiente y finalmente se restablece al modo predeterminado. El botón pulsador está conectado a una de las entradas digitales y esa entrada se escanea después de cada ronda de actualización de la pantalla.
Conexión de entrada:
Hay varias formas de alimentar la entrada de audio en este analizador de espectro. Puede tomar la salida de audio llamada LÍNEA de su sistema de sonido. Otra opción es obtener audio desde la salida de auriculares del móvil/sistema de música. No sugiero usar otro micrófono para recibir audio, ya que el nivel de la señal y la respuesta de frecuencia dependerán de muchos factores.
Aquí hay un diagrama de muestra para conectar la salida LINE del amplificador/sistema de música al analizador de espectro.
A continuación se muestra un diagrama de muestra para conectar la salida de auriculares de un sistema móvil/de música al analizador de espectro. Cuando conecte un cable a la salida de auriculares, no saldrá ningún sonido del sistema de música/móvil. Por lo tanto, es posible que deba dividir el audio y usar otro amplificador si desea escuchar el audio junto con la visualización.
Deja un comentario