Tabla de contenido:

Medidor VU analógico habilitado para Bluetooth: 6 pasos
Medidor VU analógico habilitado para Bluetooth: 6 pasos

Video: Medidor VU analógico habilitado para Bluetooth: 6 pasos

Video: Medidor VU analógico habilitado para Bluetooth: 6 pasos
Video: Receptor de Audio Bluetooth Salida 3.5, adaptador bluetooth, transmisor bluetooth, receptor wireless 2024, Noviembre
Anonim
Medidor VU analógico habilitado para Bluetooth
Medidor VU analógico habilitado para Bluetooth

Este fue mi proyecto para una de mis clases universitarias llamada SMP. Como usamos la placa de desarrollo STM32F103RB, basé mi proyecto en esto, comenzando con un simple medidor de VU. Luego agregué algunas características adicionales como soporte Bluetooth para transmitir valores desde el ADC a una aplicación de Android para crear un gráfico de dB simple.

Paso 1: componentes utilizados

  • Placa de desarrollo STM32F103RB
  • Módulo bluetooth HC-05 zs040
  • Panel de medidor de VU analógico (enlace)
  • Micrófono electret
  • Amplificador operacional cuádruple LM324N
  • 2 transistores TIP120
  • 3 diodos 1N4148
  • Varios condensadores y resistencias.

Aunque puede conducir este circuito fuera del riel de 5 V de la placa, también utilicé una fuente de alimentación externa de 5 V.

Paso 2: seguidor de sobre

Seguidor de sobre
Seguidor de sobre
Seguidor de sobre
Seguidor de sobre

La pieza principal de este diseño es el seguidor de envolvente que toma la señal del micrófono electret y emite un voltaje proporcional a la amplitud de la señal del micrófono.

La señal sin procesar del micrófono se pasa primero a través de un amplificador con una ganancia de 150.

Luego, la señal pasa a través del seguidor de envolvente real, que debería emitir solo las partes de la señal positiva.

La última parte es restar el voltaje de compensación de 1,65 V de la salida del seguidor de envolvente para proporcionar una señal de 0 V para ausencia de sonido, 1,65 V para sonido medio y 3,3 V para sonido fuerte que debería ser compatible con el integrado. ADC del tablero.

Este seguidor de sobre se implementa a partir de esta gran respuesta de StackExchange.

Paso 3: PWM para el medidor analógico

Para poner en marcha la aguja del medidor, configuré el temporizador TIM4 de la placa del microcontrolador con una frecuencia de alrededor de 500 Hz.

Al probar sucesivamente diferentes ciclos de trabajo, me establecí con algunos valores que fueron suficientes para que la aguja pasara de 0 a 100.

Detallaré el proceso de mostrar un valor exacto en el siguiente paso aplicando algunas matemáticas.

Paso 4: Calibración del micrófono

Calibración de micrófono
Calibración de micrófono
Calibración de micrófono
Calibración de micrófono

Habiendo terminado el seguidor de envolvente, escribí un código simple para usar el ADC y verifiqué que el valor de lectura cambia de acuerdo con el volumen dentro de la habitación.

Para "traducir" este valor en una lectura real de dB, utilicé un generador de tonos en línea con una frecuencia de 550 Hz y mi Android para proporcionar una lectura de referencia.

Tracé esos valores y utilicé la herramienta Curve Fit de MatLAB para obtener una función que mapea las lecturas de ADC a aproximaciones reales de los niveles de dB (o al menos lo suficientemente cerca de las lecturas de mi teléfono).

Podemos ver que esto sigue la escala logarítmica del micrófono.

También hice lo mismo para asignar la posición de la aguja a los valores de PWM. Reuní esos valores aumentando el valor de PWM en 10 sucesivamente hasta que la necesidad golpeó la lectura en su escala.

Combinando esas 2 funciones obtuve una manera fácil de mostrar la lectura del ADC a un valor real en el indicador del medidor.

Paso 5: aplicación de Android

La aplicación está utilizando esta biblioteca genial para comunicarse a través de la serie Bluetooth para intercambiar información de bytes.

La principal advertencia de este sistema es que la longitud máxima de palabra enviada a través de Bluetooth es de 8 bits y el valor de ADC se representa como 12 bits. Para superar este problema, divido un valor ADC en 2 valores separados de 6 bits (MSB y LSB) y los 2 bits restantes se utilizan para identificar el tipo de mensaje (MSB, LSB, CHK).

Por lo tanto, para un solo valor de ADC que queremos transmitir, dividimos el valor real en 2 mensajes. Para comprobar la integridad de esos mensajes, envié un tercer mensaje con el XOR de los 2 primeros mensajes.

Después de verificar la integridad del valor, podemos aplicar la misma función para obtener el nivel de dB y trazarlo en nuestro gráfico en vivo.

Paso 6: Resumen

Si bien la parte del microcontrolador de este proyecto funciona bastante bien al mostrar el volumen dentro de una habitación, encontré algunos problemas al enviar datos a través de Bluetooth debido a la pérdida de paquetes.

El código fuente de este proyecto se puede encontrar aquí:

  • Aplicación complementaria de Android: repositorio
  • Código del microcontrolador - repo

Siéntase libre de contribuir si lo encuentra útil de alguna manera.

Recomendado: