Índice:

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

Vídeo: Medidor VU analógico habilitado para Bluetooth: 6 etapas

Vídeo: Medidor VU analógico habilitado para Bluetooth: 6 etapas
Vídeo: Como adaptar bluetooth a cualquier equipo de sonido 2024, Dezembro
Anonim
Medidor VU analógico habilitado para Bluetooth
Medidor VU analógico habilitado para Bluetooth

Este foi o meu projeto para uma das minhas aulas na universidade chamada SMP. Como usamos a placa de desenvolvimento STM32F103RB, baseei meu projeto nisso, partindo de um medidor VU simples. Em seguida, adicionei alguns recursos extras, como suporte a Bluetooth para transmitir valores do ADC para um aplicativo Android para criar um gráfico dB simples.

Etapa 1: Componentes usados

  • Placa de desenvolvimento STM32F103RB
  • Módulo bluetooth HC-05 zs040
  • Painel do medidor VU analógico (link)
  • Microfone de eletreto
  • LM324N quádruplo op-amp
  • 2 transistores TIP120
  • 3 diodos 1N4148
  • Vários capacitores e resistores

Embora você possa dirigir este circuito fora do barramento de 5 V da placa, eu também usei uma fonte de alimentação externa de 5 V.

Etapa 2: seguidor de envelope

Envelope Follower
Envelope Follower
Envelope Follower
Envelope Follower

A peça principal desse projeto é o seguidor de envelope, que recebe o sinal do microfone de eletreto e emite uma tensão proporcional à amplitude do sinal do microfone.

O sinal bruto do microfone é primeiro passado por um amplificador com ganho de 150.

O sinal é então passado através do seguidor de envelope real, que deve produzir apenas as partes positivas do sinal.

A última parte é subtrair a tensão de deslocamento de 1,65 V da saída do seguidor de envelope para fornecer um sinal de 0 V para nenhum som, 1,65 V para som médio e 3,3 V para som alto que deve ser compatível com o integrado ADC do conselho.

Este seguidor de envelope é implementado a partir desta ótima resposta StackExchange.

Etapa 3: PWM para o medidor analógico

Para acertar o ponteiro do medidor, configurei o temporizador TIM4 da placa do microcontrolador com uma frequência de cerca de 500 Hz.

Tentando sucessivamente diferentes ciclos de trabalho, estabeleci alguns valores que foram suficientes para fazer o ponteiro ir de 0 a 100.

Vou detalhar o processo de exibição de um valor exato na próxima etapa, aplicando alguns cálculos matemáticos.

Etapa 4: calibração do microfone

Calibração de Microfone
Calibração de Microfone
Calibração de Microfone
Calibração de Microfone

Depois de terminar o seguidor de envelope, escrevi um código simples para usar o ADC e verifiquei se o valor lido realmente muda de acordo com o volume dentro da sala.

Para "traduzir" esse valor em uma leitura real de dB, usei um gerador de tons online com frequência de 550 Hz e meu Android para fornecer uma leitura de referência.

Plotei esses valores e usei a ferramenta Curve Fit do MatLAB para obter uma função que mapeia as leituras do ADC para aproximações reais dos níveis de dB (ou pelo menos perto o suficiente das leituras do meu telefone).

Podemos ver que isso segue a escala logarítmica do microfone.

Eu também fiz a mesma coisa para mapear a posição da agulha para valores PWM. Eu reuni esses valores incrementando o valor PWM em 10 sucessivamente até que a necessidade atingisse a leitura em sua escala.

Combinando essas 2 funções, obtive uma maneira fácil de exibir a leitura do ADC para um valor real no indicador de medidor.

Etapa 5: aplicativo Android

O aplicativo está usando esta biblioteca legal para se comunicar via Bluetooth serial para trocar informações de byte.

A principal advertência desse sistema é que o comprimento máximo da palavra enviada por Bluetooth é de 8 bits e o valor ADC é representado como 12 bits. Para superar esse problema, divido um valor ADC em 2 valores separados de 6 bits (MSB e LSB) com os 2 bits restantes usados para identificar o tipo de mensagem (MSB, LSB, CHK).

Portanto, para um único valor ADC que queremos transmitir, dividimos o valor real em 2 mensagens. Para verificar a integridade dessas mensagens, enviei uma terceira mensagem com o XOR das 2 primeiras mensagens.

Depois que a integridade do valor é verificada, podemos aplicar a mesma função para obter o nível de dB e plotá-lo em nosso gráfico ao vivo.

Etapa 6: Resumo

Embora eu, a parte do microcontrolador deste projeto, funcione muito bem exibindo o volume dentro de uma sala, encontrei alguns problemas ao enviar dados por Bluetooth devido à perda de pacotes.

O código-fonte deste projeto pode ser encontrado aqui:

  • Aplicativo complementar Android - repo
  • Código do microcontrolador - repo

Sinta-se à vontade para contribuir se achar isso útil de alguma forma.

Recomendado: